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

3.7 KiB
Raw Blame History

PRD: App Factory + Config 统一重构PR1 Batch 2 收尾修复)

背景

PR1 Batch 2 已完成大部分 shared app/config 接入工作,当前远端代码提交为:

  • 6d94b08Refactor 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 中重复定义

为什么这是问题

即使当前没有立刻引发测试失败,它仍然会造成以下风险:

  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.txthome/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.txtGET /logout 不受影响

三、契约确认

修复后,应能明确说:

home/health 已与其他服务一样,由 shared app factory 统一提供。


完成定义

本收尾修复完成后,必须满足:

  • home/src/routes/pages.py 中已删除 /health
  • home/health 由 shared app factory 统一提供
  • 回归测试通过
  • 不引入其他额外结构性改动

备注

这不是一个大 PR而是 PR1 Batch 2 的收尾修正

建议提交信息:

git commit -m "fix(home): remove duplicate health route after app factory migration"

这样后续复查时,意图会非常清晰。