docs: add batch 2 health route fix PRD

This commit is contained in:
Ubuntu
2026-05-16 14:49:56 +08:00
parent 0e3528683b
commit 9129903672

View File

@@ -0,0 +1,149 @@
# PRD: App Factory + Config 统一重构PR1 Batch 2 收尾修复)
## 背景
PR1 Batch 2 已完成大部分 shared app/config 接入工作,当前远端代码提交为:
- `6d94b08``Refactor all apps to use shared config and app factory`
本轮复查发现:
- shared/regression 相关测试可通过
- 五个服务已基本接入 shared config/app factory
- 但仍存在一个**明确且已被源码证实的问题**
`home/src/routes/pages.py` 中的 `/health` 路由**仍然保留**,与 Batch 2 目标不一致。
这意味着 `/health` 的统一归口尚未真正完成。
---
## 问题定义
### 现状
根据当前代码状态:
`home/src/routes/pages.py` 仍包含:
```python
@router.get("/health")
async def health_check() -> dict:
from shared.health import build_health_response
return build_health_response("home.ephron.ren")
```
而 Batch 2 的目标是:
- `/health` 由 shared app factory 统一提供
- 不在服务自己的 pages route 中重复定义
### 为什么这是问题
即使当前没有立刻引发测试失败,它仍然会造成以下风险:
1. **所有权不清晰**
`health` 到底由 factory 管,还是由 `home/pages.py` 管,不再明确。
2. **行为漂移风险**
后续若 app factory 的 `/health` 响应结构升级,而 `home/pages.py` 保持旧实现,`home` 会成为唯一例外。
3. **违背 PR1 Batch 2 的设计目标**
这次重构的目标之一就是把通用 app 端点统一到 shared app factory。
4. **后续测试契约难统一**
当测试开始断言“所有服务 health 由 shared app factory 提供”时,`home` 会成为特例。
---
## 修复目标
完成这次收尾修复后,应满足:
1. `home/src/routes/pages.py` 不再定义 `/health`
2. `home``/health` 只由 `shared.app_factory.create_service_app(...)` 提供
3. `home` 的 health 响应结构与其他服务统一
4. 不影响:
- `/`
- `/logout`
- `/robots.txt`
`home/pages.py` 中其他路由
---
## 最小修复方案
### 修改文件
- `home/src/routes/pages.py`
### 具体修改
删除以下代码块:
```python
@router.get("/health")
async def health_check() -> dict:
"""健康检查端点"""
from shared.health import build_health_response
return build_health_response("home.ephron.ren")
```
### 不要做的事
- 不要在这次修复里顺手改 `home/src/main.py`
- 不要顺手调整 app factory
- 不要顺手改 `robots.txt` / `logout` / 首页逻辑
- 不要扩大到 import 结构清理
本次修复应该是**最小闭环**:只解决 `/health` 重复归口问题。
---
## 验证要求
### 一、回归测试
至少执行:
```bash
python -m pytest tests/test_security_hardening.py tests/test_frontend_backend_reuse_contract.py -q
```
预期:
- 测试继续通过
### 二、行为验证
如可本地启动,额外验证:
```bash
python main.py --reload
```
手动检查:
- `home` 服务仍能正常启动
- `GET /health` 仍返回正常 health 响应
- `GET /``GET /robots.txt``GET /logout` 不受影响
### 三、契约确认
修复后,应能明确说:
> `home` 的 `/health` 已与其他服务一样,由 shared app factory 统一提供。
---
## 完成定义
本收尾修复完成后,必须满足:
- [ ] `home/src/routes/pages.py` 中已删除 `/health`
- [ ] `home``/health` 由 shared app factory 统一提供
- [ ] 回归测试通过
- [ ] 不引入其他额外结构性改动
---
## 备注
这不是一个大 PR而是 **PR1 Batch 2 的收尾修正**
建议提交信息:
```bash
git commit -m "fix(home): remove duplicate health route after app factory migration"
```
这样后续复查时,意图会非常清晰。