Files
ephron-ren-prd/prd-app-factory-config-unification-batch2-fix-health.md
2026-05-16 14:49:56 +08:00

149 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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"
```
这样后续复查时,意图会非常清晰。