feat(ECR-012–016): 合规、题库、时辰刷新、头像、MBTI OEJTS 与埋点
落地输入合规、探索题库、报告日/时辰刷新、账号头像、OEJTS 量表,并补齐 H5 埋点与 Admin 漏斗;同步 ESS 工件、切至自建 Git、清理 GitHub Actions。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# HANDOFF — ECR-012 Architect → Engineer
|
||||
|
||||
**Date:** 2026-08-12
|
||||
**ECR:** ECR-012(**Approved**)
|
||||
**BD:** BD-2026-012 Approved
|
||||
|
||||
## Task interpretation
|
||||
|
||||
用户自由文字统一合规闸门:后端 `textsafe` 权威;H5 `@yuxingu/utils` 镜像即时提示;错误码 **40060**。
|
||||
|
||||
## Load
|
||||
|
||||
1. `docs/ECR/ECR-012-input-compliance.md`
|
||||
2. `docs/BACKEND_DESIGN/BD-2026-012-input-compliance.md`
|
||||
3. Spec:`.ai/product/feature-spec/input-compliance.md`
|
||||
4. `docs/PROJECT_RULES.md` · `.ai/definition-of-done.md`
|
||||
|
||||
## Ordered plan
|
||||
|
||||
1. 实现 `internal/textsafe` + 单测
|
||||
2. 挂接 auth / profile / ask / companion / growth / synastry(及 mood note 若在 Spec)
|
||||
3. Handler:`ErrRejected` → 40060
|
||||
4. utils + 关键表单即时错误
|
||||
5. OpenAPI 注明 40060 · TEST_REPORT · HANDOFF→reviewer
|
||||
|
||||
## Smoke checklist
|
||||
|
||||
- [ ] 违规昵称 / ask / note → 40060
|
||||
- [ ] 合法中文名通过
|
||||
- [ ] 前端至少昵称/问答/档案名有即时错误
|
||||
|
||||
## Owner
|
||||
|
||||
`STATE.owner = engineer`
|
||||
@@ -0,0 +1,26 @@
|
||||
# HANDOFF — ECR-012 Engineer → Reviewer
|
||||
|
||||
**From:** Engineer
|
||||
**To:** Reviewer
|
||||
**Date:** 2026-08-13
|
||||
**ECR:** ECR-012
|
||||
|
||||
## Delivered
|
||||
|
||||
- Spec `input-compliance.md` Active
|
||||
- `apps/api/internal/textsafe/` + unit tests
|
||||
- Wired services/handlers → **40060**
|
||||
- `@yuxingu/utils` `validateUserText` + 关键 H5 表单
|
||||
- `docs/TEST_REPORT/ECR-012.md` PASS
|
||||
- `docs/BACKEND_DESIGN/BD-2026-012-input-compliance.md`
|
||||
|
||||
## Verify
|
||||
|
||||
```bash
|
||||
cd apps/api && go test ./internal/textsafe/ -count=1
|
||||
# 可选:对本机 API 复跑 TEST_REPORT 用例表
|
||||
```
|
||||
|
||||
## Owner next
|
||||
|
||||
`STATE.owner = reviewer`
|
||||
@@ -0,0 +1,28 @@
|
||||
# HANDOFF — ECR-013 Architect → Engineer
|
||||
|
||||
**Date:** 2026-08-13
|
||||
**ECR:** ECR-013(**Approved**)
|
||||
**BD:** BD-2026-013 Approved
|
||||
|
||||
## Task interpretation
|
||||
|
||||
落地探索 curated 题库 A 集:目录 API · 作答/结果回看 · H5 宫格/分类 · OpenAPI · 图标去重 · 探索返回。
|
||||
|
||||
## Load
|
||||
|
||||
1. `docs/ECR/ECR-013-scale-bank-explore.md`
|
||||
2. `docs/BACKEND_DESIGN/BD-2026-013-scale-bank-explore.md`
|
||||
3. Spec `explore-test.md`
|
||||
4. `.ai/definition-of-done.md`
|
||||
|
||||
## Ordered plan
|
||||
|
||||
1. 核对 scalebank embed 与 R13 范围(无临床)
|
||||
2. OpenAPI 补 `/scale-bank/*`
|
||||
3. 抽取 H5 图标 allowlist;确认 R8/R14
|
||||
4. 单测 + integration + vitest
|
||||
5. TEST_REPORT · HANDOFF→reviewer · STATE
|
||||
|
||||
## Owner
|
||||
|
||||
`STATE.owner = engineer`
|
||||
@@ -0,0 +1,27 @@
|
||||
# HANDOFF — ECR-013 Engineer → Reviewer
|
||||
|
||||
**From:** Engineer
|
||||
**To:** Reviewer
|
||||
**Date:** 2026-08-13
|
||||
**ECR:** ECR-013
|
||||
|
||||
## Delivered
|
||||
|
||||
- scalebank curated A 集 · catalog/category API · bank Get/Submit/Latest
|
||||
- H5 Explore 精选/分类 · R8/R14 · 独立图标 · 探索返回
|
||||
- 重构:`lib/homeToolIconName.ts`(类型 + resolve)
|
||||
- OpenAPI `/scale-bank/*`
|
||||
- TEST_REPORT/ECR-013.md
|
||||
|
||||
## Verify
|
||||
|
||||
```bash
|
||||
export ESS_ROOT=/Users/jack/Project/skills/engineering-spec-system
|
||||
cd apps/api && go test ./internal/scalebank/ ./internal/integration/ -run 'TestCatalogCuratedASet|TestScaleBankResultRoundtrip' -count=1
|
||||
cd ../user-h5 && npx vitest run src/pages/ScalePage.spec.ts
|
||||
cd ../.. && python scripts/ess-validate.py --phase coding --ecr ECR-013
|
||||
```
|
||||
|
||||
## Owner next
|
||||
|
||||
`STATE.owner = reviewer`
|
||||
@@ -0,0 +1,21 @@
|
||||
# HANDOFF — ECR-013 Implementation Report
|
||||
|
||||
**ECR:** ECR-013
|
||||
**Date:** 2026-08-13
|
||||
|
||||
## Summary
|
||||
|
||||
落地探索 curated 题库(非临床 A 集):embed 目录、作答落库、二次进入只看结果/重测、探索 UI 与返回、OpenAPI。
|
||||
|
||||
## Key paths
|
||||
|
||||
| Area | Path |
|
||||
|------|------|
|
||||
| Bank | `apps/api/internal/scalebank/` |
|
||||
| Service | `apps/api/internal/service/scale/service.go` |
|
||||
| H5 | `ExplorePage.vue` · `ExploreBankCategoryPage.vue` · `useScalePage.ts` |
|
||||
| Icons | `lib/homeToolIconName.ts` · `HomeToolIcon.vue` |
|
||||
|
||||
## Deviations
|
||||
|
||||
无(相对 BD-2026-013)
|
||||
@@ -0,0 +1,27 @@
|
||||
# HANDOFF — ECR-014 Architect → Engineer
|
||||
|
||||
**Date:** 2026-08-13
|
||||
**ECR:** ECR-014(**Approved** · **Retrospective: true**)
|
||||
**BD:** BD-2026-014 Approved
|
||||
|
||||
## Task interpretation
|
||||
|
||||
将后台时效字段与前端 `scheduleRefresh` / `useHomeDailyTips` / star·rhythm 静默刷新对齐;补 OpenAPI;跑测。
|
||||
**禁止**顺手头像 / 题库。
|
||||
|
||||
## Load
|
||||
|
||||
1. `docs/ECR/ECR-014-temporal-refresh.md`
|
||||
2. `docs/BACKEND_DESIGN/BD-2026-014-temporal-refresh.md`
|
||||
3. Spec:`home` · `star-profile` · `life-rhythm`
|
||||
|
||||
## Ordered plan
|
||||
|
||||
1. 确认 migration `000023` 可应用;Tips repo 已注入 router
|
||||
2. OpenAPI:HomeDailyTips / report summary `as_of`+`valid_until` 契约写清
|
||||
3. `go test` home + report temporal
|
||||
4. TEST_REPORT · HANDOFF→reviewer · 更新 STATE/TRACE/CHANGELOG
|
||||
|
||||
## Owner
|
||||
|
||||
`STATE.owner = engineer`
|
||||
@@ -0,0 +1,29 @@
|
||||
# HANDOFF — ECR-014 Engineer → Reviewer
|
||||
|
||||
**From:** Engineer
|
||||
**To:** Reviewer
|
||||
**Date:** 2026-08-13
|
||||
**ECR:** ECR-014
|
||||
**Retrospective:** true
|
||||
|
||||
## Delivered
|
||||
|
||||
- Architect 包已存在;本阶段补齐 OpenAPI 契约(HomeDailyTips envelope · GrowthReport summary 时效说明)
|
||||
- 确认 migration `000023` / Tips 注入 / temporal refresh 已接线
|
||||
- `go test` home + report PASS · TEST_REPORT
|
||||
|
||||
## Out of this ECR
|
||||
|
||||
头像(Spec account-auth R9 已有,须另开 ECR-015)· scalebank(ECR-013)· textsafe(ECR-012)
|
||||
|
||||
## Verify
|
||||
|
||||
```bash
|
||||
export ESS_ROOT=/Users/jack/Project/skills/engineering-spec-system
|
||||
cd apps/api && go test ./internal/service/home/ ./internal/service/report/ -count=1
|
||||
cd ../.. && python scripts/ess-validate.py --phase coding --ecr ECR-014
|
||||
```
|
||||
|
||||
## Owner next
|
||||
|
||||
`STATE.owner = reviewer`
|
||||
@@ -0,0 +1,35 @@
|
||||
# HANDOFF — ECR-015 Architect → Engineer
|
||||
|
||||
**Date:** 2026-08-13
|
||||
**ECR:** ECR-015(**Approved** · **Retrospective: true**)
|
||||
**BD:** BD-2026-015 Approved
|
||||
|
||||
## Task interpretation
|
||||
|
||||
收口头像:确认 migration/接线/OpenAPI/H5/SDK 与 Spec R9 一致;补缺测与 TEST_REPORT;不扩 Scope。
|
||||
|
||||
## Load
|
||||
|
||||
1. `docs/ECR/ECR-015-account-avatar.md`
|
||||
2. `docs/BACKEND_DESIGN/BD-2026-015-account-avatar.md`
|
||||
3. Spec `account-auth.md` R9
|
||||
4. `.ai/definition-of-done.md`
|
||||
|
||||
## Ordered plan
|
||||
|
||||
1. 确认 `000018` 已应用;`users.avatar_url` 可读
|
||||
2. 核对 UploadAvatar · MediaHandler · avatar.Store/ResolveAbs
|
||||
3. 补 `internal/avatar` 单测(大小/类型/路径穿越)若缺
|
||||
4. OpenAPI / SDK / MinePage 默认图路径核对
|
||||
5. TEST_REPORT · HANDOFF→reviewer · STATE
|
||||
|
||||
## Smoke checklist
|
||||
|
||||
- [ ] 登录后「我的」上传 JPG <2MB → 头像更新
|
||||
- [ ] WebP/PNG OK;>2MB 或 exe 失败文案可读
|
||||
- [ ] 未设置头像显示 default-avatar
|
||||
- [ ] 新标签打开 `/api/v1/media/avatars/...` 可见图
|
||||
|
||||
## Owner
|
||||
|
||||
`STATE.owner = engineer`
|
||||
@@ -0,0 +1,26 @@
|
||||
# HANDOFF — ECR-015 Engineer → Reviewer
|
||||
|
||||
**From:** Engineer
|
||||
**To:** Reviewer
|
||||
**Date:** 2026-08-13
|
||||
**ECR:** ECR-015
|
||||
**Retrospective:** true
|
||||
|
||||
## Delivered
|
||||
|
||||
- 核对 Spec R9 接线(migration / auth / media / H5 / SDK)
|
||||
- 新增 `internal/avatar/store_test.go`(穿越 · 类型 · 大小 · 覆盖写)
|
||||
- OpenAPI 补错误码与路径约束说明
|
||||
- TEST_REPORT
|
||||
|
||||
## Verify
|
||||
|
||||
```bash
|
||||
export ESS_ROOT=/Users/jack/Project/skills/engineering-spec-system
|
||||
cd apps/api && go test ./internal/avatar/ -count=1
|
||||
cd ../.. && python scripts/ess-validate.py --phase coding --ecr ECR-015
|
||||
```
|
||||
|
||||
## Owner next
|
||||
|
||||
`STATE.owner = reviewer`
|
||||
@@ -0,0 +1,5 @@
|
||||
# HANDOFF — ECR-016 Architect → Engineer
|
||||
|
||||
**ECR:** ECR-016 Approved · RETRO
|
||||
核对 migrations 已应用 · go test scale · OpenAPI 会员锁说明若缺则补 · TEST_REPORT → reviewer。
|
||||
`STATE.owner=engineer`
|
||||
@@ -0,0 +1,3 @@
|
||||
# HANDOFF — ECR-016 Engineer → Reviewer
|
||||
|
||||
核对 DB 题量 · scale 单测 PASS · OpenAPI 会员锁。请 CODE_REVIEW 记 Retro。
|
||||
Reference in New Issue
Block a user