feat(ECR-022): CrisisCare CrisisPolicy 只读并 Closed

新增 crisis_policies、admin.crisis.read、列表/试匹配 API 与 admin-h5「危机」页;禁 CrisisEvent 写/UGC/真支付。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-08 01:28:45 +08:00
co-authored by Cursor
parent 4b5e5bc63d
commit de224184a6
33 changed files with 746 additions and 6 deletions
+1 -1
View File
@@ -36,7 +36,7 @@
| Analytics_OpsB | GrowthInsights / UserIntelligence(read) | Shipped Ops-B |
| Ops_Content | ExploreConfig (partial) | Shipped Ops-C |
| Account_Risk | AccountLifecycle | Spec via ECR-013BIdentity_Profile owns UserStatus |
| Content_Safety | ContentSafety · CrisisCare | ContentSafety **ECR-019**FilterRule);CrisisCare Draft |
| Content_Safety | ContentSafety · CrisisCare | ContentSafety **ECR-019**CrisisCare **ECR-022**CrisisPolicy 只读) |
| Ask_Ops | AskOperations · AICoreConfig | AskOperations **ECR-017/020**AICoreConfig **ECR-021**SystemPrompt 只读) |
| Ops_CMS_NoUGC | OpsCMS | Draft |
| Community | — | **Forbidden** |
+1 -1
View File
@@ -30,7 +30,7 @@ Status: `Draft`
| AnalyticsSession / Event | Analytics_OpsB | GrowthInsights | 已存在 Ops-B |
| FilterRule | Content_Safety | ContentSafety | **ECR-019** 只读 + evaluate |
| ModerationCase | Content_Safety | ContentSafety | 后置 |
| CrisisEvent / CrisisPolicy | Content_Safety | CrisisCare | 后置 |
| CrisisEvent / CrisisPolicy | Content_Safety | CrisisCare | **ECR-022** CrisisPolicy 只读;CrisisEvent 后置 |
| SystemPrompt / Knowledge* / ToolDefinition | Ask_Ops | AICoreConfig | **ECR-021** SystemPrompt 只读;Knowledge/Tools 后置 |
| AskSessionView / QualityFeedback | Ask_Ops | AskOperations | **ECR-017** AskSessionView**ECR-020** QualityFeedback |
| Banner / FeedSlot | Ops_CMS_NoUGC | OpsCMS | 后置 |
+1 -1
View File
@@ -235,7 +235,7 @@ UI **不出现「塔罗」**。禁止神谕吉凶、恐吓话术。
| Phase A `[Ops]` | 登录 · 用户/订单查询 · 会员授予 · 审计 · `apps/admin-h5`ECR-006 Closed |
| Phase B `[Ops]` | 行为分析:自有埋点 + 管理端「数据」看板(**ECR-007 Closed** · Spec `ops-analytics.md` |
| Phase C `[Ops]` | 内容:首页宫格 CRUD · 测评上下架(**ECR-008 Closed** · Spec `ops-content.md` |
| Phase D+ | **Contract-First****ECR-013A…020 Closed** → **ECR-021** AICoreConfigLoop)。`docs/WAVE0/LOOP_AUTHORIZATION.md`。 |
| Phase D+ | **Contract-First****ECR-013A…021 Closed** → **ECR-022** CrisisCareLoop)。`docs/WAVE0/LOOP_AUTHORIZATION.md`。 |
| 排除 | **UGC / 社区广场**M10.2)仍 `[No]`;真支付最后 |
不计入 P1 Complete;不进入五 Tab。
+1
View File
@@ -31,6 +31,7 @@
| [ops-content-safety.md](ops-content-safety.md) | 内容安全 ContentSafety | §7 | `admin-h5` `/safety` · `GET /admin/content-safety/*` | Ops-D · **ECR-019 Closed** |
| [ops-quality-feedback.md](ops-quality-feedback.md) | 问答质量反馈 QualityFeedback | §7 | `admin-h5` `/ask` · `GET/POST /admin/ask/feedback*` | Ops-D · **ECR-020 Closed** |
| [ops-ai-core-config.md](ops-ai-core-config.md) | AI 核心配置 AICoreConfig | §7 | `admin-h5` `/ai` · `GET /admin/ai/system-prompts*` | Ops-D · **ECR-021 Closed** |
| [ops-crisis-care.md](ops-crisis-care.md) | 危机关怀 CrisisCare | §7 | `admin-h5` `/crisis` · `GET /admin/crisis/policies*` | Ops-D · **ECR-022 Closed** |
新功能:复制 `_TEMPLATE.md` → 填满 → 在本表登记 → 再编码。
+2 -1
View File
@@ -218,6 +218,7 @@ Phase A 可先 `console`/本地;不挡验收。
| **LECR-019 Closed** | ContentSafety FilterRule — Spec `ops-content-safety.md` |
| **MECR-020 Closed** | QualityFeedback — Spec `ops-quality-feedback.md` |
| **NECR-021 Closed** | AICoreConfig SystemPrompt — Spec `ops-ai-core-config.md` |
| 后置 | CrisisCare / Knowledge·Tools 写面(Loop 续跑) |
| **OECR-022 Closed** | CrisisCare CrisisPolicy — Spec `ops-crisis-care.md` |
| 后置 | Knowledge·Tools 写面 / CrisisEvent / 真支付(Loop 续跑) |
| D | 订单筛选 · 展示价 · 退款只读(另开 ECR) |
| 后置 | 封禁加深(Account_Risk)· 推送占位 |
@@ -0,0 +1,42 @@
# Feature Spec: CrisisCare · CrisisPolicyOps · ECR-022
> Status: `Active`Loop continuous · **ECR-022 Closed**
> Parent: WAVE0-FROZEN · Predecessor: ECR-021 Closed
> Capability: `CrisisCare` · BC: `Content_Safety`
> 授权:`docs/WAVE0/LOOP_AUTHORIZATION.md`
## Non-goals
CrisisEvent 入库工单 · InterventionOutcome · 策略在线编辑 · 医疗诊断结论 · UGC · 真支付 · 用户侧硬熔断上线
## L2 Domain
| 概念 | 语义 |
|------|------|
| `CrisisPolicy` | code 唯一;severity ∈ {high,critical}action ∈ {escalate,block,show_helpline}helpline_text 可选;本切片只读 |
## L3 API
| Method | Path | 权限 | 语义 |
|--------|------|------|------|
| GET | `/admin/crisis/policies` | `admin.crisis.read` | 列表 |
| GET | `/admin/crisis/policies/:id` | 同上 | 详情 |
| POST | `/admin/crisis/evaluate` | 同上 | 试匹配(不写 CrisisEvent |
## Migration
`000023``crisis_policies` + 种子 + 授予权限
## L4 AC
| ID | Then |
|----|------|
| AC-F-01 | list 含 system 种子 ≥1 |
| AC-F-02 | evaluate 命中 pattern → matches 非空 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 无 Admin → 401 |
| AC-S-02 | 无 crisis.read → 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | evaluate 不写 Audit/Event |
contract_diff: `docs/CONTRACT_DIFF/ECR-022.yaml`