# ECR-008 **Title:** 运营内容配置 Ops-C(首页宫格 CRUD · 测评上下架) **Status:** Closed **Date:** 2026-08-07 **Approved:** 2026-08-07(Human) **Closed:** 2026-08-07(Reviewer · Approve + ess-validate review PASS) **Change Level:** L2(新能力;栈与分层不变) ## Change 1. Active Feature Spec:`.ai/product/feature-spec/ops-content.md`(Ops-C) 2. 表 `home_tools` + migration `000014_ops_content`(种子=现网宫格) 3. User:`GET /api/v1/home/tools`(DeviceAuth,仅 enabled) 4. Admin:`GET|PUT /api/v1/admin/home/tools`;`GET /api/v1/admin/scales`;`PATCH /api/v1/admin/scales/:id` 5. `user-h5`:首页宫格改为 API 优先 + 静态回退 6. `admin-h5`:侧栏「内容」页(宫格 + 测评) 7. 变更写 `admin_audit_logs` ## Motivation 首页 12 宫格与测评可见性写死/仅靠库改;运营无法自助调入口与上下架。 ## Scope ### Allowed - 上列 Spec / 表 / API / H5 / admin「内容」 - path/icon 白名单;审计 - OpenAPI · ERD · feature-map §7 ### Forbidden(Non-goals) - 首页 Feeds CMS · 探索目录全量 CMS · 量表题目编辑器 - 外链/上传图标 · Ops-D/E · UGC ## Risk | Risk | Mitigation | |------|------------| | 错误 path 打穿站外 | 仅允许以 `/` 开头的站内相对路径,长度上限 | | 空宫格 | PUT 校验至少 1 个 enabled;或允许空但 H5 回退静态 | | icon 非法 | 服务端白名单对齐 `HomeToolIconName` | | 误下架全量表 | PATCH 单条;审计可追溯 | ## Acceptance Criteria - [x] Spec `ops-content.md` §验收通过 - [x] Integration:PUT tools → GET home/tools;PATCH scale draft → ListPublished 不含 - [x] `go test` · `build:h5` · `build:admin` 绿 - [x] OpenAPI / TRACEABILITY / STATE / TEST_REPORT / CODE_REVIEW - [x] `python3 scripts/ess-validate.py --phase review --ecr ECR-008`(PASS) - [x] Docs + CHANGELOG - [x] Reviewer Closed(STATE · TRACEABILITY) ## Rollback - 关 admin 路由;H5 回退静态 catalog - down migration(非生产可) ## Risk Review - Path: N/A ## Linked - Feature Spec: `.ai/product/feature-spec/ops-content.md` - PRODUCT / ENGINEERING / BACKEND_DESIGN / HANDOFF / TASK / STATE:同号前缀 - 前序:ECR-006 Ops-A · ECR-007 Ops-B