|
| 1 | +<!-- |
| 2 | + Pull Request Template — DevPath |
| 3 | + -------------------------------- |
| 4 | + Delete sections that do not apply. |
| 5 | + Every section marked [required] must be completed before review begins. |
| 6 | + PRs with empty required sections will be returned without review. |
| 7 | +--> |
| 8 | + |
| 9 | +## Summary [required] |
| 10 | + |
| 11 | +<!-- One paragraph explaining what this PR does and why. --> |
| 12 | +<!-- Do not just repeat the commit message or the issue title. --> |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | +## Related Issue [required] |
| 17 | + |
| 18 | +<!-- Every PR must link to an open issue. --> |
| 19 | +<!-- If no issue exists, open one before submitting this PR. --> |
| 20 | + |
| 21 | +Closes # |
| 22 | + |
| 23 | +## Type of Change [required] |
| 24 | + |
| 25 | +<!-- Check all that apply. --> |
| 26 | + |
| 27 | +- [ ] Bug fix — resolves a broken behaviour |
| 28 | +- [ ] Feature — adds new functionality |
| 29 | +- [ ] Data — adds new projects to `data/projects.json` |
| 30 | +- [ ] Documentation — updates docs, README, or code comments only |
| 31 | +- [ ] Style — CSS or visual changes only, no logic change |
| 32 | +- [ ] Refactor — restructures code without changing behaviour |
| 33 | +- [ ] Test — adds or updates tests |
| 34 | + |
| 35 | +## What Was Changed [required] |
| 36 | + |
| 37 | +<!-- List every file you modified and briefly explain why. --> |
| 38 | +<!-- Do not list files you only read. --> |
| 39 | + |
| 40 | +| File | Change made | |
| 41 | +|------|-------------| |
| 42 | +| `utils/recommender.py` | Added `clear_cache()` function | |
| 43 | +| `tests/test_basic.py` | Added test for cache invalidation | |
| 44 | + |
| 45 | +## How to Test This PR [required] |
| 46 | + |
| 47 | +<!-- Exact steps a reviewer can follow to verify your change works. --> |
| 48 | +<!-- "It works on my machine" is not sufficient. --> |
| 49 | + |
| 50 | +1. Clone this branch: `git checkout your-branch-name` |
| 51 | +2. Install dependencies: `pip install -r requirements.txt` |
| 52 | +3. Run the app: `python app.py` |
| 53 | +4. Open http://127.0.0.1:5000 and... |
| 54 | +5. Run the tests: `python tests/test_basic.py` |
| 55 | + |
| 56 | +Expected test output: |
| 57 | +``` |
| 58 | +27 passed, 0 failed out of 27 tests |
| 59 | +``` |
| 60 | + |
| 61 | +## Test Results [required] |
| 62 | + |
| 63 | +<!-- Paste the full output of python tests/test_basic.py --> |
| 64 | + |
| 65 | +``` |
| 66 | +paste output here |
| 67 | +``` |
| 68 | + |
| 69 | +## Screenshots (if UI change) |
| 70 | + |
| 71 | +<!-- Before and after screenshots for any visual change. --> |
| 72 | +<!-- Remove this section if your PR has no visual change. --> |
| 73 | + |
| 74 | +| Before | After | |
| 75 | +|--------|-------| |
| 76 | +| screenshot | screenshot | |
| 77 | + |
| 78 | +## Self-Review Checklist [required] |
| 79 | + |
| 80 | +<!-- Complete every item before requesting review. --> |
| 81 | +<!-- Do not submit a PR you would not approve yourself. --> |
| 82 | + |
| 83 | +- [ ] I have read [CONTRIBUTING.md](../CONTRIBUTING.md) and followed all guidelines |
| 84 | +- [ ] My branch name follows the convention: `feat/`, `fix/`, `docs/`, `data/`, `style/`, `test/` |
| 85 | +- [ ] I have run `python tests/test_basic.py` and all 27 tests pass |
| 86 | +- [ ] I have run `flake8 .` locally and there are no errors |
| 87 | +- [ ] I have not introduced any `print()` or `console.log()` debug statements |
| 88 | +- [ ] Every new function I wrote has a docstring |
| 89 | +- [ ] I have not modified files outside the scope of the linked issue |
| 90 | +- [ ] If I changed the UI, I tested it at 375px (mobile) and 1280px (desktop) |
| 91 | +- [ ] If I added a project to the dataset, it has all required JSON fields |
| 92 | + |
| 93 | +## Notes for Reviewer |
| 94 | + |
| 95 | +<!-- Anything you want the reviewer to pay particular attention to. --> |
| 96 | +<!-- Or "None" if there is nothing unusual. --> |
| 97 | + |
| 98 | + |
0 commit comments