Files
Neo-ZQYY/docs/audit/changes/2026-02-26__retention-clue-refactor.md
Neo 14a12342b5 chore(audit): 补追 96 份未入仓审计孤本 — 覆盖 2026-02-26 ~ 2026-04-08
这些审计记录原本堆积在 docs/audit/changes/changes/ 嵌套误产物目录下(由开发机迁移
79d3c2e 前后的不明批量操作产生)。由于同期 .gitignore 屏蔽了 docs/audit/ 全目录,
它们从未入过 git 任何分支 history。删除即永久丢失。

按 docs/specs/audit-gap-recovery/tasks.md 阶段 1 执行,将全部 96 份 D 类孤本
(主目录无同名、git history 亦无记录)复制到 docs/audit/changes/ 主目录入仓。

涵盖主题: P1-P18 全栈集成 / 多模块累积变更 / ETL bug 修复 / 业务日切 /
   召回与任务引擎改造 / 租户管理与审批 / 董事会财务 / 客户与助教详情 /
   DDL 基线合并 / Kiro 到 Claude Code 迁移

阶段 2(B 类内容漂移 1 份)和阶段 4(嵌套目录删除)独立推进。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 06:35:42 +08:00

114 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 审计记录维客线索重构member_birthday_manual → member_retention_clue
- 日期2026-02-26 13:09:41
- Prompt-ID`P20260226-130447`(追加审计,前序 Prompt`P20260226-120858`
- 风险标签:`root-file`, `dir:backend`, `dir:etl`, `dir:db`, `db-schema-change`
- 变更统计139 files changed, 6211 insertions(+), 216484 deletions(-)
## 变更概述
将原"助教手动补录会员生日"单一功能表 `member_birthday_manual` 重构为通用"维客线索"表 `member_retention_clue`,采用"大类 + 摘要 + 详情"三层结构,覆盖六个维度(客户基础信息、消费习惯、玩法偏好、促销偏好、社交关系、重要反馈)。生日信息不再单独建表,作为"客户基础信息"大类下的一条线索记录。
本次 PromptP20260226-130447需求在租户管理后台列出每个客户的所有维客线索标签、摘要、提供人、备注原文支持修改、删除、隐藏操作。
### 影响范围
| 子系统 | 影响 |
|--------|------|
| 后端 API | `member_birthday` 路由替换为 `member_retention_clue`,新增 POST/GET/DELETE 三个端点 |
| ETL DWS | `member_consumption_task``member_visit_task` 移除 FDW 生日补录读取及 fallback 逻辑 |
| FDW | 外部表从 `fdw_app.member_birthday_manual` 重构为 `fdw_app.member_retention_clue` |
| DB 迁移 | 删除 `member_birthday_manual`,新建 `member_retention_clue`(含 CHECK 约束 + 3 索引) |
| DDL 基线 | `zqyy_app__public.sql``fdw.sql` 已同步更新 |
## 本次对话文件变更session_diff
### 新增文件
- `docs/audit/prompt_logs/prompt_log_20260226_130447.md`
### 修改文件
- `NeoZQYY.code-workspace`
- `docs/h5_ui/pages/customer-detail.html`
## DDL / 迁移检查
- 迁移脚本:`db/zqyy_app/migrations/2026-02-26__refactor_birthday_to_retention_clue.sql`
- `compliance.new_migration_sql`:空(迁移已在变更文件列表中但未被 compliance prescan 标记为待执行)
- ⚠️ DDL 基线待合并(`has_ddl_baseline: false`
- BD 手册已创建:`docs/database/BD_Manual_member_retention_clue.md`
## DB 文档对账
`reasons``db-schema-change`,需执行全量对账。
- ⚠️ 无法自动连接测试库TEST_DB_DSN执行 `information_schema` 全量查询(当前环境无 pg power MCP 可用)
- 已有文档 `docs/database/BD_Manual_member_retention_clue.md` 内容与迁移脚本一致,表结构、约束、索引均已记录
- 待手动对账:用户需在测试库执行验证 SQL 确认表结构与文档一致,或在 pg power 可用时重新触发审计
## 改动注解
### `apps/backend/app/main.py`
- 变更类型:修改
- 原始原因:维客线索重构,需将后端路由注册从 `member_birthday` 切换到 `member_retention_clue`
- 思路分析:仅修改 import 和 `include_router` 调用,最小化入口文件改动;同步更新 CHANGE 注释标记
- 修改结果:后端启动时加载新的维客线索路由模块,旧生日路由不再注册
### `apps/backend/app/routers/member_retention_clue.py`
- 变更类型:新增
- 原始原因:替代原 `member_birthday` 路由,提供维客线索的 CRUD 接口
- 思路分析提供三个端点POST 提交线索INSERT、GET 按会员查询倒序、DELETE 删除单条。使用 `get_connection()` 直连业务库,事务手动管理
- 修改结果:新增 `/api/retention-clue` 系列接口,支持多大类线索的增删查
### `apps/backend/app/schemas/member_retention_clue.py`
- 变更类型:新增
- 原始原因:为维客线索接口定义请求/响应 Pydantic 模型
- 思路分析:定义 `ClueCategory` 枚举6 个大类)、`RetentionClueSubmit`(提交请求)、`RetentionClueOut`(返回模型),字段约束与数据库 CHECK 一致
- 修改结果:后端接口具备完整的输入校验和输出序列化能力
### `apps/etl/connectors/feiqiu/tasks/dws/member_consumption_task.py`
- 变更类型:修改
- 原始原因:维客线索重构后,生日不再通过 FDW 从业务库补录ETL 侧需移除相关逻辑
- 思路分析:删除 `sql_with_fdw`(含 COALESCE 子查询)和 `sql_fallback`(降级查询),合并为单一 `sql` 直接读取 `dim_member.birthday`;移除 try/except FDW 降级逻辑和 rollback 处理
- 修改结果:会员消费汇总任务的会员信息提取简化为单次查询,消除 FDW 依赖和降级复杂度(-51 行)
### `apps/etl/connectors/feiqiu/tasks/dws/member_visit_task.py`
- 变更类型:修改
- 原始原因:同 member_consumption_task移除 FDW 生日补录读取
- 思路分析:同样删除双 SQL + try/except 降级模式,简化为单一查询
- 修改结果:会员到店汇总任务的会员信息提取简化,消除 FDW 依赖(-49 行)
### `db/fdw/setup_fdw_reverse.sql`
- 变更类型:修改
- 原始原因FDW 外部表需从 `member_birthday_manual` 重构为 `member_retention_clue`
- 思路分析:更新外部表列定义(移除 `birthday_value`/`source`,新增 `category`/`summary`/`detail`),更新 OPTIONS 指向新表名,精简注释和验证 SQL
- 修改结果:生产环境 FDW 反向映射指向新的维客线索表
### `db/fdw/setup_fdw_reverse_test.sql`
- 变更类型:修改
- 原始原因:测试环境 FDW 配置需与生产环境同步
- 思路分析:与 `setup_fdw_reverse.sql` 保持一致,仅目标库为 `test_zqyy_app`
- 修改结果:测试环境 FDW 反向映射同步更新
### `db/zqyy_app/migrations/2026-02-26__refactor_birthday_to_retention_clue.sql`
- 变更类型:新增
- 原始原因:需要数据库迁移脚本完成表结构重构
- 思路分析:事务内先 DROP 旧表再 CREATE 新表幂等设计IF EXISTS / IF NOT EXISTS新表含 CHECK 约束限制 category 枚举值3 个索引覆盖常用查询模式
- 修改结果:执行后 `member_birthday_manual` 被删除,`member_retention_clue` 就绪
### `docs/h5_ui/pages/customer-detail.html`
- 变更类型修改session_diff.modified
- 简要注解H5 客户详情页面调整,配合维客线索功能的前端展示
### `NeoZQYY.code-workspace`
- 变更类型修改session_diff.modified
- 简要注解:工作区配置文件更新
## Prompt 溯源
```
- [P20260226-130447] 2026-02-26 13:04:47 +0800
- summary: 依旧保留回访任务完成的判定新增:租户管理后台,列出每个客户的所有维客线索,标签 摘要 提供人 备注原文等字段。支持修改,删除,隐藏的操作。
```
> 本次 prompt 在维客线索重构基础上,进一步要求管理后台支持线索的列表展示与管理操作。