Files
digital-psychology/docs/HANDOFF/ECR-001-implementation-plan.md
jackyu66gitandCursor 19d3cd5945 refactor(ECR-001): 接入 ESS 并完成结构对齐 Phase A–E
绑定 ESS 双轨治理,拆分超大 H5 页与 Go 引擎,抽出 membership 服务,
并将 star/fortune 重命名为 outlook(JSON 双写兼容);同时修复 /psy API 代理与首页 + 菜单层级。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 17:51:40 +08:00

2.7 KiB
Raw Permalink Blame History

Implementation Plan: ECR-001

Author: Architect Agent
For: Engineer Agent

Scope reminder

Allowed / Forbiddendocs/ECR/ECR-001-structural-realignment.md
默认:无用户可见行为变更。

Steps(按序;每步独立 PR + Task)

Phase A — Governance docs(可 Architect 收尾 / Engineer 轻触)

  1. 确认 ADR-0007 已存在且 Profile 已指向双轨。
  2. 更新 LEGACY.md + CLAUDE.md Legacy 段:标明静态 css/js/pages/yuxingu.html 已删除;勿再扩展。
  3. 同步 .ai/architecture/go-services.md标注 membership/order 当前寄居于 report(实现前真相),并写「目标态」指向 Phase C。

Phase B — H5 拆页(优先)

  1. HomePage.vue:抽入口九宫格、推荐区、档案摘要 → components/composables。
  2. SynastryPage.vue:图表 / 表单 / 结果区拆分。
  3. 其余超标页按 ENGINEERING_SPEC 优先级逐个拆。
  4. 每页:npm run build:h5;相关 vitest;必要时 e2e 主路径。

Phase C — Go membership/order 抽出

  1. 新建 internal/service/membership(含 GetMembership / 配额相关从 report 迁入的用例)。
  2. Order 创建迁入 membership 或独立 order 包(二选一,Prefermembership 内 order 若文件仍 <400)。
  3. ReportHandler 改为依赖新 service;路由注册不变。
  4. go test ./... + internal/integration Membership。

Phase D — Engine 拆文件

  1. relation/engine.go 按纯函数/段落拆多文件(同包)。
  2. star 过大文件同类处理。
  3. 引擎单测全绿;禁止改 golden 输出除非测试本有误。

Phase E — 另立 ECR-002(本计划仅占位)

fortune 包名 / lucky 字段卫生 → 不在本父 ECR 编码。

Phase F — packages 补强

  1. 对照 proto/openapi.yaml@yuxingu/types
  2. sdk 缺方法补齐;H5 只经 client。

Files likely touched

Phase Paths
A LEGACY.md · CLAUDE.md · .ai/architecture/go-services.md · .ai/adr/0007-*
B apps/user-h5/src/pages/* · components/* · composables/*
C apps/api/internal/service/report/* · service/membership/* · handler/report.go · httpserver wire
D apps/api/internal/relation/* · star/*
F packages/types · packages/sdk · apps/user-h5/src/api

Tests to add

  • 搬移/抽函数处:保留或增加表驱动单测
  • Phase C:集成测试不得删减
  • Phase B:优先现有 PortraitPage.spec.ts 模式补关键页 smoke(若拆出纯函数)

Out of scope

  • 真支付、新功能、微服务、换栈、Phase E 字段破坏性变更

Risks

见 ECR Risk 表。Engineer 遇「必须改行为才能编译」→ ,回 Architect 开子 ECR。