# BD-2026-013 — Curated scale bank (explore) Status: Approved **ECR:** ECR-013 **Date:** 2026-08-13 **Change Level:** L2 **Risk:** Low–Med(题量大 · 文案非诊断) ## Backend Change Boundary ### In - Package `internal/scalebank`(embed `curated.json` · Catalog/Category/Get/ScoreSum/QuestionID) - `service/scale`:bank slug Get/Submit/LatestResult;`EnsurePublished` stub 行 - `handler/scale`:`/scale-bank/*` - `repository.ScaleRepo.EnsurePublished` ### Out - 新业务表存题目全文(题目仅 embed)· 临床类 · Admin 题库 CMS ## Module | Module | Change | |--------|--------| | scalebank | embed A 集 · 稳定 QuestionID | | scale service | bank 分支计分 BuildResult + disclaimer | | scale handler | catalog / category | | OpenAPI | 上述路径 | ## Data flow ```text H5 /explore → GET scale-bank/catalog H5 /explore/bank/:key → GET scale-bank/categories/:key H5 /scales/:slug → Get(bank|db) → optional GET result → POST result Submit bank → EnsurePublished → ScoreSum → BuildResult → SaveResult ``` ## API | Method | Path | Notes | |--------|------|-------| | GET | `/api/v1/scale-bank/catalog` | featured + categories | | GET | `/api/v1/scale-bank/categories/:key` | category + items | | GET/POST | `/api/v1/scales/:slug` / `.../result` | bank slug 同契约 | ## Migration NO(`EnsurePublished` upsert `scales` 元数据行;题目不入库) ## Test - unit:`scalebank` catalog/featured icons unique - integration:`TestScaleBankResultRoundtrip`(sm1) - H5:ScalePage latest result(含 bank slug) ## Rollback - 下线路由 + 回退 Explore UI;已写 `scale_results` 可保留 ## Failure - 未知 category → 40402 - 无结果 → 40411 - 无 Self profile → 提交 400