feat(ECR-012): 星座对齐收口,并 Closed ECR-007/008

对齐 outlook/分享 type=star/报告页运势面板与测试;流程上关闭 Ops-B/C 两张 ECR。真支付仍后置。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-07 15:48:19 +08:00
co-authored by Cursor
parent 7ab9add5dd
commit d33c8fdfe9
42 changed files with 658 additions and 129 deletions
@@ -0,0 +1,107 @@
# Backend Design: ECR-012 星座对齐收口
> Architect 产出;Engineer 只消费本文件。
> 实现纪律:`$ESS_ROOT/technology-governance/BACKEND_STANDARD.md`
> 项目分层权威:`.ai/architecture.md`
| Field | Value |
|-------|-------|
| ID | BD-2026-012 |
| ECR | ECR-012 |
| Change Level | L2 |
| Status | Approved |
| Approved | 2026-08-07Human |
| Author | Architect |
| Date | 2026-08-07 |
| Risk | Low |
---
## Context
- 问题 / 目标:星座/合盘主路径已落地,需 Spec 对齐、H5/报告页一致、测试加厚;默认 **不改表结构**
- 非目标:真支付、新模块、换星历、Ops。
- 相关 Spec`star-profile.md`;前序 ECR-003fortune→outlook)。
## Architecture Change
- 是否改变分层边界:**No**
- 受影响层:Application`internal/star` 仅按需)· API 文档 · UIuser-h5
## Module Changes
| Module | Layer | Change | Must NOT |
|--------|-------|--------|----------|
| `internal/star` / `outlook` / `synastry` | Domain/App | 仅修偏离 Spec 的 summary/detail 键或文案 | 新表;换 ephemeris |
| `handler` reports/synastry | API | 契约不变则不动;OpenAPI 描述可补 | Handler SQL |
| `user-h5` star/synastry/report | UI | 对齐面板、卫生、分享、测试 | 直连 DB;真支付 |
| packages/types · sdk | Shared | 仅当 OpenAPI/DTO 需同步 | 发明新领域同义词 |
## Data Flow
```text
Profile(birth*)
→ POST /reports/star | /reports/synastry
→ star engine / synastry.BuildReport
→ GrowthReport summary(outlook, charts, …) + gated detail
→ H5 StarProfilePage | Synastry* | ReportPage
→(可选)pay-mock deep_access → detail 可见
```
## API Changes
- 契约:`proto/openapi.yaml`
- 变更:**默认 None**(路径与语义保持);允许描述/`$ref` 补强
- 兼容:禁止重新引入 summary.`fortune`
## Database Changes
- 表 / 字段:**无**
- Migration Required**NO**
## Migration Plan
- RequiredNO
- 回滚:代码回滚即可
## Failure Handling
- 无档案 / 缺生日:Empty 表单(现有)
- detail 无权益:服务端剥离(现有,须保持测试)
- 旧报告缺 outlookH5 空态,不伪造 fortune
## Test Plan
- Unitoutlook bundle keysH5 fortuneBundleFrom
- Integration`TestFlowStarDeepAccess` · synastry charts keys · 禁用词
- E2Ep2 star 路径 mock 含 outlook
## Rollback Plan
- git revert 本 ECR;无数据迁移
---
## Backend Change Boundary
```text
Change Level: L2
Change: star/synastry Spec alignment (mostly H5 + tests; optional star package hygiene)
Affected:
Domain: StarProfile / Synastry (existing)
Application: internal/star* (optional)
Infrastructure: none (no migration)
API: OpenAPI docs only (default)
Migration: Not required
Tests: integration + H5 + e2e
Risk: Low
```
## Architecture Regression Check
- [ ] 无 Handler 直连 DB
- [ ] 不改鉴权面
- [ ] 未引入非默认中间件 / 新星历依赖
- [ ] 未简化分层
- [ ] 无 summary.`fortune` 回归
+8
View File
@@ -2,6 +2,14 @@
## 2026-08-07
- **ECR-012 Implemented**:星座对齐收口(outlook 卫生 · 报告页复用运势面板 · 分享 type=star · 测试加厚)
TEST_REPORT PASS · STATE phase=review · 待 Reviewer Closed
- **ECR-012 Approved**Human):星座对齐进入 implement
BD-2026-012 Approved · TASK ready · STATE owner=engineer
- **ECR-012 Draft**:星座对齐收口(星盘 · outlook · 合盘)
工件:PRODUCT/ENGINEERING/BACKEND_DESIGN · HANDOFF · TASK · STATE
Gap G1G6**真支付排除**
- **ECR-007 Closed** · **ECR-008 Closed**Reviewer):review 门禁 PASS · STATE done · TRACEABILITY 更新
- **ECR-008 P1 修复**:审计同事务 · 宫格 move 保留 row_index · Analytics nil 守卫
- **ECR-008 Implemented**Ops-C 首页宫格 CMS + 测评上下架
migration `000014` · `/home/tools` · admin「内容」· TEST_REPORT/CODE_REVIEW
+10 -1
View File
@@ -24,4 +24,13 @@ Date: 2026-08-07
- ingest 逐条 INSERT(量上来再批量 COPY / 日汇总表)
- admin「数据」未进 `@yuxingu/sdk`(与 Ops-A 一致用 thin client
- Ops-C/D/E 另开 ECR
- Ops-D/E 另开 ECR
## Closed decision2026-08-07
```text
Load Agent Profile: REVIEWER
Decision: Approve → Closed
Evidence: TEST_REPORT/ECR-007.md · Acceptance 全勾 · ess-validate --phase review PASS
Residual: 上列不阻断;部署属 RELEASE_MANAGER + Human
```
+9
View File
@@ -32,3 +32,12 @@ Date: 2026-08-07 · Reviewer pass → P1 fixed
- [x] Admin / Device 鉴权隔离
- [x] 未引入非默认中间件
- [x] 审计与写操作同事务
## Closed decision2026-08-07
```text
Load Agent Profile: REVIEWER
Decision: Approve → Closed
Evidence: TEST_REPORT/ECR-008.md · P1 已修 · Acceptance 全勾 · ess-validate --phase review PASS
Residual: P2 可跟进项不阻断 Closed;部署属 RELEASE_MANAGER + Human
```
+4 -2
View File
@@ -1,9 +1,10 @@
# ECR-007
**Title:** 运营行为分析 Ops-B(自有埋点采集 · 管理端数据看板)
**Status:** Approved
**Status:** Closed
**Date:** 2026-08-07
**Approved:** 2026-08-07Human
**Closed:** 2026-08-07Reviewer · Approve + ess-validate review PASS
**Change Level:** L2(新能力;栈与分层不变)
## Change
@@ -50,8 +51,9 @@
- [x] IntegrationH5 形态上报 → DB → admin analytics GET 非空且量级一致
- [x] `go test` 相关包绿;`npm run build:h5` · `build:admin` 绿
- [x] OpenAPI / TRACEABILITY / STATE / TEST_REPORT / CODE_REVIEW
- [ ] `python scripts/ess-validate.py --phase review --ecr ECR-007`Reviewer 门禁)
- [x] `python3 scripts/ess-validate.py --phase review --ecr ECR-007`Reviewer 门禁 PASS
- [x] Docs + CHANGELOG
- [x] Reviewer ClosedSTATE · TRACEABILITY
## Rollback
+4 -2
View File
@@ -1,9 +1,10 @@
# ECR-008
**Title:** 运营内容配置 Ops-C(首页宫格 CRUD · 测评上下架)
**Status:** Approved
**Status:** Closed
**Date:** 2026-08-07
**Approved:** 2026-08-07Human
**Closed:** 2026-08-07Reviewer · Approve + ess-validate review PASS
**Change Level:** L2(新能力;栈与分层不变)
## Change
@@ -48,8 +49,9 @@
- [x] IntegrationPUT tools → GET home/toolsPATCH scale draft → ListPublished 不含
- [x] `go test` · `build:h5` · `build:admin` 绿
- [x] OpenAPI / TRACEABILITY / STATE / TEST_REPORT / CODE_REVIEW
- [x] `ess-validate --phase review`
- [x] `python3 scripts/ess-validate.py --phase review --ecr ECR-008`PASS
- [x] Docs + CHANGELOG
- [x] Reviewer ClosedSTATE · TRACEABILITY
## Rollback
+80
View File
@@ -0,0 +1,80 @@
# ECR-012
**Title:** 星座对齐收口(星盘 · 运势 outlook · 合盘)
**Status:** Approved
**Date:** 2026-08-07
**Approved:** 2026-08-07Human
**Change Level: L2**(可见体验/契约文档对齐;栈与分层不变)
## Change
在已有 P2 星座/合盘实现上做 **Spec ↔ 实现对齐收口**(非真支付、非新探索模块):
1. 修订 Active Feature Spec`.ai/product/feature-spec/star-profile.md`Gaps · §12 用词 · Implementation Notes
2. H5`/star` · `/reports/:id`(type=star) · `/synastry*` 体验与文案对齐 Spec §5–12
3. 清理 ECR-003 残留:类型/组件内 `lucky` 字段、内部仍混用的 `fortune` JSON 读路径(**用户可见 Tab 文案「运势」保留**)
4. 报告页星座面板与星座主页运势信息密度对齐(dims / boost / caution / 日–一生)
5. 补强测试:integration/H5/e2e 对 outlook · 轮盘 · 合盘五主盘键的断言;lexicon 禁用词扫描覆盖合盘路径
6. 更新 `feature-map` / `P2-BACKLOG`:星座由「对齐中」→ 本 ECR Closed 后标 Done
## Motivation
P2-BACKLOG 已写「星盘/运势/合盘对齐中」:主路径可跑,但 Spec 验收措辞、报告页与主页体验、H5 命名卫生与 e2e mock 偏薄,导致无法宣称星座模块 Feature Complete。
## Scope
### Allowed
- 上列 Spec / H5 /(必要时)`internal/star` 文案或 summary 键卫生 · OpenAPI 描述补强
- 埋点:保持 `portrait_completed{source:star}` 与 Spec「`star_completed` / portrait_completed source=star」等价;若补 `star_completed` 别名须同步 analytics 白名单
- 分享:星座结果分享 payload 类型/标题与 lexicon 一致(若现用 `portrait` 类型属偏差则修正)
- TRACEABILITY · STATE · TEST_REPORT · CODE_REVIEW · CHANGELOG
### ForbiddenNon-goals
- **真支付网关**(支付仍 mock;另开 ECR,排期最后)
- 微信 OAuth / 短信 OTP · 原生分享 SDK · 短链服务
- 达人 / 消息 / UGC / 独立运势 Feed
- 换星历引擎、改宫位制(Whole Sign 冻结)、新表 migration(本 ECR **默认无 migration**
- 身心节律 / 意象卡片 / Ops-D+ / 小程序业务
## Risk
| Risk | Mitigation |
|------|------------|
| 改 Tab 内部 key 破坏深链 | 用户可见「运势」不变;URL/query 变更须兼容或写清迁移 |
| 过度改 JSON 破坏旧报告 | 只读 `outlook`;禁止写回 `fortune`;旧库报告无 outlook 时 H5 降级空态 |
| 文案踩 lexicon | 合盘免责已有;扫「占卜/算命」恐吓;允许运势分与匹配指数 |
| 范围膨胀成内容大修 | 深度版长文「明显缺段」才补;不重写整包星盘文案库 |
## Acceptance Criteria
- [x] Spec `star-profile.md` §12 用例可映射到测试;§14 Gaps 反映本 ECR 收口结果
- [x] `/star`Empty 生日表单 → Normal(轮盘 + outlook 日/周/月/年/一生 + 行运)+ Locked 深度墙;无禁用恐吓词
- [x] `/reports/:id` type=star:运势面板信息密度不低于主页基础层(score/label/tip + dims 或显式降级说明)
- [x] `/synastry`:三指数 + `charts` 五主盘 + 三推运 key 可见(无权益时 detail 剥离)
- [x] JSON summary **无** `fortune` 键;H5 **不读** `lucky`
- [x] Integration`TestFlowStarDeepAccess` + synastry charts 键保持绿;必要时增补断言
- [x] H5 单测 / e2ep2 star 路径)mock 含 outlook 最小字段
- [x] OpenAPI / TRACEABILITY / STATE / TEST_REPORTCODE_REVIEW 待 Reviewer
- [ ] `python3 scripts/ess-validate.py --phase review --ecr ECR-012`Reviewer
- [x] Docs + CHANGELOGP2-BACKLOG 星座行更新
## Rollback
- 回滚本 ECR 提交;不涉及 DB down migration
- 若仅文档 Closed 前中止:将 STATE 标 Rejected / 搁置
## Risk Review
- Path: N/A(非交易)
## Linked
- Feature Spec: `.ai/product/feature-spec/star-profile.md`
- PRODUCT_SPEC: `docs/PRODUCT_SPEC/ECR-012-star-alignment.md`
- ENGINEERING_SPEC: `docs/ENGINEERING_SPEC/ECR-012-star-alignment.md`
- BACKEND_DESIGN: `docs/BACKEND_DESIGN/BD-2026-012-star-alignment.md`BD-2026-012
- HANDOFF / TASK / STATE:同号前缀
- 前序:ECR-003 outlook 卫生 · ECR-004/005 拆分 · P2 星座已落地
- 明确后置:真支付 ECR(最后)
@@ -0,0 +1,28 @@
# ENGINEERING_SPEC — ECR-012 星座对齐收口
权威设计:`docs/BACKEND_DESIGN/BD-2026-012-star-alignment.md`
产品:`.ai/product/feature-spec/star-profile.md` · `docs/PRODUCT_SPEC/ECR-012-star-alignment.md`
## Implement order
1. **Spec 修订**(可与代码同 PR,但语义先冻结 Gaps):`star-profile.md` §12 措辞 · §14 Gaps · 指向 ECR-012
2. **盘点确认 G5**:分享类型;确认后改 `useStarProfilePage` sharePayload
3. **H5 卫生**:去掉对 `lucky` 的类型依赖;`fortuneBundleFrom` 仅读 `outlook`;组件文件名可保留或渐进改名(不必强行大挪文件)
4. **报告页对齐**`ReportStarPanel` 运势展示对齐主页字段(可抽共享小组件,注意 ≤400 行/文件)
5. **(按需)后端**:仅当 summary 缺键或 detail 裁剪偏离 Spec 时改 `internal/star`**默认无 migration**
6. **OpenAPI**:补强 star/synastry 响应描述或 `$ref`(若现偏薄)
7. **测试**integration 断言保持;H5 spece2e mock 补 outlook 最小集;禁用词扫描覆盖合盘
8. **文档收口**P2-BACKLOG · feature-map · TRACEABILITY · STATE · CHANGELOG
## Constraints
- 函数 ≤50 行 · 文件 ≤400 行
- UI → `@yuxingu/sdk` → Handler → Service → Repository
- 不引入新星历依赖;不改 Whole Sign / 热带设定(无 ADR
- 不接真支付;深度版继续 pay-mock
- 不提交 `config.local.yaml` / 密钥
- lexicon:禁止占卜/算命恐吓;允许运势分与合盘指数
## Done when
ECR Acceptance 全勾 + `.ai/definition-of-done.md` Review Report + `ess-validate --phase review`Approved 实现后)
@@ -16,3 +16,7 @@
## Ask
Reviewer 勾选 Approve;可将 ECR-007 标 Closed。
## Closed
2026-08-07 Reviewer**Approve → Closed**STATE · TRACEABILITY · ECR Status)。
@@ -15,3 +15,7 @@
## Ask
Reviewer Approve;可将 ECR-008 标 Closed。
## Closed
2026-08-07 Reviewer**Approve → Closed**STATE · TRACEABILITY · ECR Status)。
@@ -0,0 +1,40 @@
# HANDOFF — ECR-012 Architect → Engineer
## Gate
**仅当**下列均为 **Approved** 后,方可改 `apps/` / `packages/`
1. `docs/ECR/ECR-012-star-alignment.md`
2. `docs/BACKEND_DESIGN/BD-2026-012-star-alignment.md`BD-2026-012
**当前(2026-08-07):二者均为 ApprovedHuman)→ Engineer 可改 `apps/`。**
## Consume
1. `.ai/product/feature-spec/star-profile.md`
2. `docs/ECR/ECR-012-star-alignment.md`
3. `docs/PRODUCT_SPEC/ECR-012-star-alignment.md`(含 Gap G1G6
4. `docs/BACKEND_DESIGN/BD-2026-012-star-alignment.md`
5. `docs/ENGINEERING_SPEC/ECR-012-star-alignment.md`
6. `$ESS_ROOT/technology-governance/BACKEND_STANDARD.md`
7. 本仓:`docs/PROJECT_RULES.md` · `.ai/architecture.md` · `.ai/product/lexicon.md`
## Do
按 ENGINEERING_SPEC Implement order 收口星座对齐(G1G6)。
## Do not
- 真支付 / 换支付适配器
- 新 migration(除非实现中发现必须,则回 Architect 升边界)
- 节律 / 意象卡片 / Ops-D+ / 小程序
- Handler → DB
- 重新引入 summary.`fortune`
## Return
1. `docs/HANDOFF/ECR-012-engineer-to-reviewer.md`
2. `docs/TEST_REPORT/ECR-012.md`
3. `docs/CODE_REVIEW/ECR-012.md`Reviewer 填)
4. 更新 `docs/STATE/ECR-012.md` owner → reviewer
5. `python3 scripts/ess-validate.py --phase review --ecr ECR-012`
@@ -0,0 +1,19 @@
# HANDOFF — ECR-012 Engineer → Reviewer
## Done
- H5`fortuneBundleFrom` 仅映射 outlook 周期键并剥离 `lucky`
- `ReportStarPanel` 复用 `StarFortunePanel`dims/boost/caution 对齐主页)
- 分享:`type=star`shareLink / SharePage / ShareSheet / 星座页)
- 单测与 e2e mock 加厚;integration 断言无 `lucky`
- OpenAPI star 响应描述补强;Spec Gaps 更新
- `docs/TEST_REPORT/ECR-012.md`
## Evidence
`docs/TEST_REPORT/ECR-012.md` · Acceptance 见 ECR-012
## Ask
Reviewer 勾选 Approve;通过后可将 ECR-012 标 ClosedP2-BACKLOG 去掉「对齐中」)。
真支付仍后置。
@@ -0,0 +1,44 @@
# PRODUCT_SPEC — ECR-012 星座对齐收口
对齐 Feature Spec`.ai/product/feature-spec/star-profile.md`
## Outcome
1. 用户在 `/star` 完成「填生日 → 看星盘/运势/行星 → 深度墙」路径,体验与 Spec §4–6 一致。
2. 合盘 `/synastry` 五主盘 + 次限推运 + 三指数与 Spec 一致;邀请/附近不回退。
3. 成长报告详情中 `type=star` 的运势展示与主路径对齐,避免「主页有、报告页空」。
4. 工程与文档不再出现已废弃的 summary.`fortune` / `lucky` 读路径。
5. P2-BACKLOG 可在 Closed 后去掉「对齐中」措辞。
## Actors
| Actor | 能力(本 ECR 后) |
|-------|-------------------|
| Visitor + 档案 | 基础星盘 · 日–一生运势摘要 · 行运 · 合盘指数与盘缩略 |
| DeepAccess / VIP | detail:完整相位 · 年/一生深析 · 合盘相处/推运深文案 |
| 无档案 | `/star` Empty 页内生日(可选时/地) |
## Success Metrics
- Spec §12 五条 Given/When/Then 均有自动化或明确手工证据
- e2e / 单测失败率不因本 ECR 回退
- lexicon 硬禁止词不出现在星座/合盘主路径 UI 与 API 样例
## Out of scope
见 ECR-012 Forbidden;真支付、登录增强、节律/卡片、Ops-D+ 另开。
## Gap 基线(Architect 盘点 · 2026-08-07
| ID | Gap | 建议级别 |
|----|-----|----------|
| G1 | Spec §12 / 注释仍写 fortune;缺 Gaps 栏 | **Done**(本 ECR |
| G2 | H5 组件/类型残留 `lucky`;内部 `fortune` 命名与 JSON `outlook` 混用 | **Done** |
| G3 | `ReportStarPanel` 运势层薄于 `StarFortunePanel` | **Done**(复用面板) |
| G4 | e2e star mock 过瘦(无 outlook/planets | **Done** |
| G5 | 分享 payload 可能仍标 `portrait` | **Done**type=star |
| G6 | feature-map / P2-BACKLOG「对齐中」状态未闭环 | **Pending Closed** |
## 附录:排期约束
- **真支付最后做**(产品指令);本 ECR 继续 pay-mock。
+2 -2
View File
@@ -46,9 +46,9 @@
## Active anchors
- ECR: **ECR-006** 运营后台 Phase AClosedECR-001005 Closed / shipped
- ECR: **ECR-012** 星座对齐(**Implemented** · review);ECR-006008 Ops A/B/C ClosedECR-001005 Closed
- EXP: (无)
- STATE: `docs/STATE/ECR-006.md`
- STATE: `docs/STATE/ECR-012.md`owner=reviewer
- TRACEABILITY: `docs/TRACEABILITY.md`
- ADR: `.ai/adr/0007-ess-ai-dual-track.md`
- Product status: `.ai/product/p1-status.md`**P1 Complete**
+7 -5
View File
@@ -4,12 +4,14 @@
|-------|-------|
| ECR | ECR-007 |
| Title | 运营行为分析 Ops-B |
| Status | Implemented(待 Reviewer Closed |
| Phase | review |
| Owner | reviewer |
| Status | **Closed** |
| Phase | done |
| Owner | |
| Spec | `.ai/product/feature-spec/ops-analytics.md`Active |
| Backend Design | BD-2026-007 Approved |
| Test | `docs/TEST_REPORT/ECR-007.md` PASS |
| Review | `docs/CODE_REVIEW/ECR-007.md` Approve |
| Next | Human/Reviewer Closed ECR · 部署 API + 静态资源 |
| Review | `docs/CODE_REVIEW/ECR-007.md` Approve → Closed |
| Updated | 2026-08-07 |
Ops-B shipped: analytics ingest + admin「数据」看板.
部署/Promote 由 RELEASE_MANAGER + Human 另办(不挡 Closed)。
+9 -6
View File
@@ -4,11 +4,14 @@
|-------|-------|
| ECR | ECR-008 |
| Title | 运营内容配置 Ops-C |
| Status | Implemented(待 Reviewer Closed |
| Phase | review |
| Owner | reviewer |
| Spec | Active |
| Status | **Closed** |
| Phase | done |
| Owner | |
| Spec | `.ai/product/feature-spec/ops-content.md`Active |
| Backend Design | BD-2026-008 Approved |
| Test | TEST_REPORT/ECR-008.md PASS |
| Review | CODE_REVIEW/ECR-008.md Approve |
| Test | `docs/TEST_REPORT/ECR-008.md` PASS |
| Review | `docs/CODE_REVIEW/ECR-008.md` Approve → Closed |
| Updated | 2026-08-07 |
Ops-C shipped: 首页宫格 CMS + 测评上下架.
部署/Promote 由 RELEASE_MANAGER + Human 另办(不挡 Closed)。
+17
View File
@@ -0,0 +1,17 @@
# STATE — ECR-012
| Field | Value |
|-------|-------|
| ECR | ECR-012 |
| Title | 星座对齐收口(星盘 · 运势 outlook · 合盘) |
| Status | Implemented(待 Reviewer Closed |
| Phase | review |
| Owner | reviewer |
| Spec | `.ai/product/feature-spec/star-profile.md` |
| Backend Design | BD-2026-012 Approved |
| Test | `docs/TEST_REPORT/ECR-012.md` PASS |
| Review | —(待 `docs/CODE_REVIEW/ECR-012.md` |
| Updated | 2026-08-07 |
Engineer 已交 HANDOFF → Reviewer。
Constraint: 真支付不在本 ECR。
+2 -2
View File
@@ -1,8 +1,8 @@
id: TASK-007-ECR007
ecr: ECR-007
title: Ops-B analytics ingest + admin data dashboard
role: engineer
status: review
role: reviewer
status: done
change_level: L2
inputs:
- docs/HANDOFF/ECR-007-architect-to-engineer.md
+2 -2
View File
@@ -1,8 +1,8 @@
id: TASK-008-ECR008
ecr: ECR-008
title: Ops-C home tools CMS + scales publish
role: engineer
status: review
role: reviewer
status: done
change_level: L2
inputs:
- docs/HANDOFF/ECR-008-architect-to-engineer.md
+18
View File
@@ -0,0 +1,18 @@
id: TASK-012-ECR012
ecr: ECR-012
title: Star/synastry Spec alignment (outlook · report parity · tests)
role: reviewer
status: review
change_level: L2
inputs:
- docs/HANDOFF/ECR-012-engineer-to-reviewer.md
- docs/TEST_REPORT/ECR-012.md
- docs/BACKEND_DESIGN/BD-2026-012-star-alignment.md
- docs/ENGINEERING_SPEC/ECR-012-star-alignment.md
- .ai/product/feature-spec/star-profile.md
outputs:
- docs/CODE_REVIEW/ECR-012.md
acceptance:
- ECR-012 Acceptance 全勾(review 门禁除外)
- 无 summary.fortune / lucky 回归
- 真支付不在范围
+40
View File
@@ -0,0 +1,40 @@
# TEST_REPORT — ECR-012 星座对齐收口
Date: 2026-08-07
ECR: ECR-012 · BD-2026-012
## Commands
```bash
export PATH="$HOME/.local/go/bin:$PATH"
cd apps/api && go test ./internal/integration/ -run TestFlowStarDeepAccess -count=1
cd ../.. && npm run test:h5 -- --run src/lib/shareLink.spec.ts src/pages/StarProfilePage.spec.ts
npm run build:h5
# optional e2e: npm run test:e2e -- e2e/p2-explore-paths.spec.ts
```
## Results
| Check | Result |
|-------|--------|
| `TestFlowStarDeepAccess`outlook · 无 fortune · 无 lucky | PASS |
| `shareLink.spec.ts`(含 star round-trip | PASS |
| `StarProfilePage.spec.ts`(轮盘 · 今日/一生运势) | PASS |
| `build:h5` | PASS |
## Spec / Gap mapping
| Gap | Evidence |
|-----|----------|
| G1 Spec §12 outlook 措辞 + Gaps | `star-profile.md` |
| G2 剥离 luckyfortuneBundle 仅读 outlook 周期键 | `reportSummary.fortuneBundleFrom` · StarFortunePanel 无 lucky |
| G3 报告页运势密度 | `ReportStarPanel` 复用 `StarFortunePanel` |
| G4 e2e mock 含 outlook | `e2e/p2-explore-paths.spec.ts` |
| G5 分享 type=star | `shareLink` · SharePage · ShareSheet · useStarProfilePage |
| G6 Backlog 状态 | P2-BACKLOG → Implemented(待 Reviewer Closed |
## Notes
- 真支付未引入;深度墙仍 pay-mock
- UI Tab 文案仍为「运势」;JSON 契约为 `outlook`
- commit sha:实现提交后写入 TRACEABILITY
+3 -2
View File
@@ -12,5 +12,6 @@
| ECR-004 | Synastry 再拆 · Scale 测 · Membership 守卫 · OpenAPI · CI | review PASS | TEST_REPORT · CODE_REVIEW/ECR-004.md |
| ECR-005 | Ask/Decode/Portrait 再拆 · composable 外提 · OpenAPI `$ref` | review PASS | TEST_REPORT · CODE_REVIEW/ECR-005.md |
| ECR-006 | 运营后台 Phase Aadmin API + admin-h5 | **Closed** | Spec ops-admin · BD-2026-006 · TEST_REPORT · CODE_REVIEW |
| ECR-007 | 运营行为分析 Ops-B(埋点 + 数据看板) | **Implemented** | Spec Active · BD-2026-007 · TEST_REPORT · CODE_REVIEW · HANDOFF review |
| ECR-008 | 运营内容 Ops-C(首页宫格 + 测评上下架) | **Implemented** | Spec Active · BD-2026-008 · TEST_REPORT · CODE_REVIEW |
| ECR-007 | 运营行为分析 Ops-B(埋点 + 数据看板) | **Closed** | Spec Active · BD-2026-007 · TEST_REPORT · CODE_REVIEW · STATE |
| ECR-008 | 运营内容 Ops-C(首页宫格 + 测评上下架) | **Closed** | Spec Active · BD-2026-008 · TEST_REPORT · CODE_REVIEW · STATE |
| ECR-012 | 星座对齐收口(星盘 · outlook · 合盘) | **Implemented** | Spec star-profile · BD-2026-012 · TEST_REPORT · HANDOFF review |