Phase 2 review: append fix verification results

This commit is contained in:
ila
2026-07-06 23:09:30 +08:00
parent 714d218eb2
commit 7fea89216d
+48
View File
@@ -120,3 +120,51 @@ Phase 2 **暂不达标**。
.venv/bin/python3.12.exe manage.py makemigrations --check --dry-run .venv/bin/python3.12.exe manage.py makemigrations --check --dry-run
.venv/bin/python3.12.exe manage.py test .venv/bin/python3.12.exe manage.py test
``` ```
## 2026-07-06 修复复查
复查对象:提交 `714d218 Phase 2 评审修复: P0 min_score+&q=500 (ORM→list 顺序) + P1 场景分页(20/page) + P2 文档同步 + 36 tests`
复查结论:原 Phase 2 阻断问题 **已达标**,Phase 2 当前可视为通过复查。
### 复查结果
| 原问题 | 状态 | 证据 |
| --- | --- | --- |
| P0:项目列表 `min_score + q` 组合筛选会 500 | 已达标 | `ProjectIndexPage.get_context()` 先执行 `q` ORM 过滤,再做 `min_score` Python 过滤;`/projects/?min_score=18&q=Django` 复测返回 200。 |
| P1:场景页未实现分页 | 已达标 | `ScenarioPage.get_context()` 已使用 `Paginator(projects, 20)`;`scenario_page.html` 已渲染分页控件;新增 21 条项目分页测试。 |
| P2:`docs/current-state.md` 测试数量已过期 | 已达标 | 当前快照已更新为 31 个测试基线;修复后实际测试为 36 个。 |
| P2:文章列表实现偏薄 | 可接受 | 该项原本非阻断,当前未要求扩展;仍满足 T-206 最低验收。 |
### 代码核对
- `core/models.py:32` 至 `core/models.py:46`:场景页项目列表已分页,非法页码和越界页码回退第一页。
- `core/models.py:151` 至 `core/models.py:168`:项目列表筛选顺序已调整,`q` 不再在 list 上调用 `.filter()`。
- `core/templates/core/scenario_page.html:26` 至 `core/templates/core/scenario_page.html:36`:场景页已展示分页导航。
- `core/tests.py:78` 至 `core/tests.py:116`:新增场景页分页测试。
- `core/tests.py:178` 至 `core/tests.py:190`:新增组合筛选与空状态测试。
### 复查验证命令
已执行:
```bash
.venv/bin/python3.12.exe manage.py check
.venv/bin/python3.12.exe manage.py makemigrations --check --dry-run
.venv/bin/python3.12.exe manage.py test
.venv/bin/python3.12.exe manage.py shell -c "from django.test import Client; from core.models import ScenarioPage,SkeletonProjectPage,ArticlePage; c=Client(raise_request_exception=False); scenario=ScenarioPage.objects.live().first(); paths=['/projects/?min_score=18&q=Django','/projects/?language=python&framework=django&min_score=18&q=Django','/projects/?language=go&framework=django&min_score=18', scenario.url, scenario.url+'?page=2', scenario.url+'?page=abc']; print('counts', ScenarioPage.objects.live().count(), SkeletonProjectPage.objects.live().count(), ArticlePage.objects.live().count()); [print(p, c.get(p).status_code) for p in paths]"
```
结果摘要:
- `manage.py check`:0 error,9 个 treebeard/Wagtail 兼容 warning。
- `makemigrations --check --dry-run`:No changes detected。
- `manage.py test`:36 tests passed。
- seed 数据:3 个 live 场景、5 个 live 项目、2 篇 live 文章。
- URL 复测:
- `/projects/?min_score=18&q=Django`:200
- `/projects/?language=python&framework=django&min_score=18&q=Django`:200
- `/projects/?language=go&framework=django&min_score=18`:200
- `/scenarios/modern-desktop-app-templates/`:200
- `/scenarios/modern-desktop-app-templates/?page=2`:200
- `/scenarios/modern-desktop-app-templates/?page=abc`:200