# 变更审计记录：P5 AI 集成需求审视 — 7 项歧义修补 + category 枚举对齐

| 字段 | 值 |
|------|-----|
| 日期 | 2026-03-08 03:01:14 |
| Prompt-ID | P20260308-023933 |
| Session-ID | — |
| Session 路径 | — |

## 操作摘要

对 P5 小程序 AI 集成需求（`P5-miniapp-ai-integration.md`）进行全面审视，修补 7 项歧义并对齐 category 枚举值。核心变更：
1. 分类标签枚举统一：`客户基础信息` → `客户基础`，`促销接受` → `促销偏好`
2. 调用链改为严格串行：消费事件 → 应用3 → 应用8 → 应用7；应用4 等待应用8完成
3. 应用4 缓存不存在保底方案：reference 传空对象，Prompt 标注"暂无历史线索"
4. emoji 不需要单独字段，拼接在 summary 前面存储
5. 应用8 → member_retention_clue 字段映射表
6. 应用2 调度机制：ETL 调度器、08:00 后首次任务、8 次独立调用
7. 应用1 对话历史：时间倒序、20/页懒加载、不可删除、每次新建
8. 所有 8 个应用首条 Prompt 加入 current_time（精确到秒）
9. ai_cache target_id 约定表

同步执行了 `member_retention_clue.category` CHECK 约束的 DDL 迁移，将 `客户基础信息` 更新为 `客户基础`，已在 test_zqyy_app 验证通过。

## 变更文件清单

| 文件 | 变更类型 | 说明 |
|------|---------|------|
| `docs/prd/specs/P5-miniapp-ai-integration.md` | 修改 | P5 spec 大量补充：两阶段交付策略、8 应用详细设计、调用链时序、Prompt 数据结构、字段映射 |
| `db/zqyy_app/migrations/2026-03-08__align_retention_clue_category_enum.sql` | 新增 | 迁移脚本：category CHECK 约束枚举对齐 |
| `docs/database/ddl/zqyy_app__public.sql` | 修改 | DDL 基线同步：添加 chk_retention_clue_category CHECK 约束（6 个枚举值） |
| `docs/prd/ai-app-prompts.md` | 修改 | Prompt 文档枚举同步：应用6/8 `促销接受` → `促销偏好` |
| `scripts/ops/_run_migration_align_category.py` | 新增 | 一次性迁移执行脚本（已完成使命） |

## DB Schema 变更详情

### member_retention_clue.category CHECK 约束

- 旧枚举值：`客户基础信息`、消费习惯、玩法偏好、促销偏好、社交关系、重要反馈
- 新枚举值：`客户基础`、消费习惯、玩法偏好、促销偏好、社交关系、重要反馈
- 变更原因：P5 spec 评审决定统一为短名称，与 AI 应用 Prompt 枚举值一致
- 已有数据：`category='客户基础信息'` 的行已 UPDATE 为 `客户基础`
- 迁移状态：✅ 已在 test_zqyy_app 执行成功
- DDL 基线：✅ `docs/database/ddl/zqyy_app__public.sql` 已同步

### 验证结果

- `category='客户基础信息'` 残留行数 = 0 ✅
- CHECK 约束 `chk_retention_clue_category` 包含 `客户基础`（非 `客户基础信息`）✅

## 影响范围

- **数据库**：test_zqyy_app.member_retention_clue 表 CHECK 约束已更新
- **后端 API**：`POST /api/retention-clue` 的 category 校验需在开发时对齐新枚举
- **AI 应用**：百炼平台 8 个应用的 System Prompt 中枚举值需同步更新
- **前端**：无直接影响（枚举值由后端/AI 返回）
- **ETL**：无影响

## 回滚策略

- DDL：迁移脚本中包含回滚 SQL（恢复 `客户基础信息` 枚举值）
- 文档：`git revert` 即可

## 改动注解

### `docs/prd/specs/P5-miniapp-ai-integration.md`
- 变更类型：修改
- 原始原因：P5 AI 集成需求在首次编写时存在多处歧义和未定义行为，需要在开发前逐项审视并补齐
- 思路分析：采用"两阶段交付策略"（P5-A 搭骨架 + P5-B 随页面细化 Prompt），避免在页面 API 未开发前强行猜测 Prompt 结构。调用链从并行改为串行，确保数据一致性。补充了所有 8 个应用的首条 Prompt JSON 结构、返回格式、字段映射、缓存策略等关键设计细节
- 修改结果：P5 spec 从概要级提升为可执行级，7 项歧义全部闭环，开发团队可直接按 spec 实施

### `db/zqyy_app/migrations/2026-03-08__align_retention_clue_category_enum.sql`
- 变更类型：新增
- 原始原因：P5 spec 评审决定将 `客户基础信息` 缩短为 `客户基础`，需同步更新数据库 CHECK 约束
- 思路分析：幂等迁移脚本，先 UPDATE 已有数据再 DROP/ADD 约束，包含回滚 SQL 和 4 条验证 SQL
- 修改结果：test_zqyy_app 中 member_retention_clue 表的 category 枚举已对齐，正式库待部署时执行

### `docs/database/ddl/zqyy_app__public.sql`
- 变更类型：修改
- 原始原因：DDL 基线需与实际数据库结构保持同步
- 思路分析：直接在 DDL 基线中更新 CHECK 约束定义
- 修改结果：DDL 基线反映最新的 6 个枚举值

### `docs/prd/ai-app-prompts.md`
- 变更类型：修改
- 原始原因：Prompt 文档中应用6/8 的分类标签使用了旧名称 `促销接受`，需对齐为 `促销偏好`
- 思路分析：全文搜索替换，确保所有应用的枚举值一致
- 修改结果：Prompt 文档与 P5 spec、数据库 CHECK 约束三方枚举值完全一致

### `scripts/ops/_run_migration_align_category.py`
- 变更类型：新增
- 原始原因：需要一个安全的一次性脚本在测试库执行迁移
- 思路分析：强制校验 DSN 指向 test_zqyy_app，执行后自动验证结果
- 修改结果：迁移已成功执行，脚本完成使命
