# 审计记录：P4 小程序核心业务路由 + 触发器注册

- 日期：2026-02-27 13:56:10
- Prompt-ID：P20260227-093332
- 风险标签：root-file, dir:admin-web, dir:backend, dir:etl, dir:miniprogram, dir:db, db-schema-change, dir:shared
- 变更统计：214 files changed, 7983 insertions(+), 217777 deletions(-)

## 变更概述

本次变更为 Spec `04-miniapp-core-business` 的 Task 12–14 收尾：新增小程序任务路由（xcx_tasks）和备注路由（xcx_notes），在 `main.py` 注册路由并在 lifespan 中注册触发器 job handler。同时包含大量 ETL DWS 任务的 biz_date 营业日重构、管理后台营业日提示组件、微信开发模式 mock 登录、同步检查白名单等跨模块改动。

## 本次对话文件变更

### 新增文件
- `apps/backend/app/routers/xcx_notes.py` — 小程序备注 CRUD 路由
- `apps/backend/app/routers/xcx_tasks.py` — 小程序任务列表/置顶/放弃路由
- `docs/audit/prompt_logs/prompt_log_20260227_093332.md` — Prompt 日志
- `docs/audit/session_logs/session_20260227_094006.md` — Session 日志
- `scripts/ops/_verify_p4_final.py` — P4 最终验证脚本（一次性）

### 修改文件
- `apps/backend/app/main.py` — 注册新路由 + 触发器 job handler

## 改动注解

### `apps/backend/app/routers/xcx_notes.py`
- 变更类型：新增
- 原始原因：Spec 04 Task 12.2 要求创建小程序备注路由，提供备注 CRUD 能力
- 思路分析：三个端点（POST 创建、GET 列表、DELETE 删除），统一使用 `require_approved()` 权限守卫，委托 `note_service` 处理业务逻辑。路由前缀 `/api/xcx/notes`，与 xcx_tasks 保持一致的命名风格
- 修改结果：小程序端可通过 REST API 管理备注（含星星评分），所有操作受 JWT + approved 状态约束

### `apps/backend/app/routers/xcx_tasks.py`
- 变更类型：新增
- 原始原因：Spec 04 Task 12.1 要求创建小程序任务路由，提供任务列表和状态操作
- 思路分析：五个端点（GET 列表、POST pin/unpin/abandon/cancel-abandon），委托 `task_manager` 服务层。放弃操作需填写原因（AbandonRequest schema）
- 修改结果：小程序端可查看活跃任务列表、置顶/取消置顶、放弃/取消放弃任务

### `apps/backend/app/main.py`
- 变更类型：修改
- 原始原因：Spec 04 Task 12.3 + 12.4 要求注册新路由并在启动时注册触发器 job handler
- 思路分析：import 行新增 `member_retention_clue`（替换 member_birthday）、`admin_applications`、`business_day`、`xcx_tasks`、`xcx_notes` 五个路由模块。lifespan 中通过 `register_job()` 注册 4 个触发器 handler：task_generator、task_expiry_check、recall_completion_check、note_reclassify_backfill
- 修改结果：后端启动后自动加载所有核心业务路由和定时触发器，支持小程序全链路业务

### `scripts/ops/_verify_p4_final.py`
- 变更类型：新增
- 原始原因：Spec 04 Task 14 最终验证，确认种子数据完整性和表结构正确
- 思路分析：连接测试库 test_zqyy_app，验证 biz schema 下 4 张表存在、trigger_jobs 至少 4 条种子数据、部分唯一索引存在
- 修改结果：一次性验证脚本，确认 P4 DDL + Seed 部署正确

### `docs/audit/prompt_logs/prompt_log_20260227_093332.md`
- 变更类型：新增（自动生成）
- 原始原因：Prompt 审计日志自动记录

## 合规检查

### OpenAPI Spec 同步
- ✅ 接口代码已变更，OpenAPI spec 已重新导出（59 paths, 59 schemas）
- 导出路径：`docs/contracts/openapi/backend-api.json`
- ⚠️ 请重连 OpenAPI Power MCP server 以加载新 spec

### DDL / 迁移
- `new_migration_sql` 为空，无新增迁移需验证
- `has_ddl_baseline`: false — ⚠️ DDL 基线待合并

### 文档同步
- `apps/backend/docs/API-REFERENCE.md` — 已补充 §11–§15（管理端审核、营业日、小程序任务、小程序备注、维客线索）+ dev-login 端点
- `docs/contracts/openapi/backend-api.json` — 已通过脚本重新导出

