3.7 KiB
3.7 KiB
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 仍包含:
@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 中重复定义
为什么这是问题
即使当前没有立刻引发测试失败,它仍然会造成以下风险:
-
所有权不清晰
health到底由 factory 管,还是由home/pages.py管,不再明确。 -
行为漂移风险 后续若 app factory 的
/health响应结构升级,而home/pages.py保持旧实现,home会成为唯一例外。 -
违背 PR1 Batch 2 的设计目标 这次重构的目标之一就是把通用 app 端点统一到 shared app factory。
-
后续测试契约难统一 当测试开始断言“所有服务 health 由 shared app factory 提供”时,
home会成为特例。
修复目标
完成这次收尾修复后,应满足:
home/src/routes/pages.py不再定义/healthhome的/health只由shared.app_factory.create_service_app(...)提供home的 health 响应结构与其他服务统一- 不影响:
//logout/robots.txt等home/pages.py中其他路由
最小修复方案
修改文件
home/src/routes/pages.py
具体修改
删除以下代码块:
@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 重复归口问题。
验证要求
一、回归测试
至少执行:
python -m pytest tests/test_security_hardening.py tests/test_frontend_backend_reuse_contract.py -q
预期:
- 测试继续通过
二、行为验证
如可本地启动,额外验证:
python main.py --reload
手动检查:
home服务仍能正常启动GET /health仍返回正常 health 响应GET /、GET /robots.txt、GET /logout不受影响
三、契约确认
修复后,应能明确说:
home的/health已与其他服务一样,由 shared app factory 统一提供。
完成定义
本收尾修复完成后,必须满足:
home/src/routes/pages.py中已删除/healthhome的/health由 shared app factory 统一提供- 回归测试通过
- 不引入其他额外结构性改动
备注
这不是一个大 PR,而是 PR1 Batch 2 的收尾修正。
建议提交信息:
git commit -m "fix(home): remove duplicate health route after app factory migration"
这样后续复查时,意图会非常清晰。