包含多个会话的累积代码变更: - backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔 - admin-web: ETL 状态页、任务管理、调度配置、登录优化 - miniprogram: 看板页面、聊天集成、UI 组件、导航更新 - etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强 - tenant-admin: 项目初始化 - db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8) - packages/shared: 枚举和工具函数更新 - tools: 数据库工具、报表生成、健康检查 - docs: PRD/架构/部署/合约文档更新 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
248 lines
15 KiB
Markdown
248 lines
15 KiB
Markdown
# Neo_Specs 86 项缺失内容审查报告
|
||
|
||
> 审查日期:2026-03-21
|
||
> 审查依据:`docs/prd/Neo_Specs/review-report.md`(86 项缺失清单)
|
||
> 审查方法:逐项检查数据库端数据支持、后端 Python 业务代码支持、前端页面支持
|
||
> 审查产物:`docs/prd/Neo_Specs/review-audit/` 目录下 86 份独立审查报告
|
||
|
||
---
|
||
|
||
## 一、总览统计
|
||
|
||
| 状态 | 数量 | 占比 | 说明 |
|
||
|:----:|:----:|:----:|------|
|
||
| ✅ 已解决 | 22 | 25.6% | 数据库+后端+前端三层均已实现 |
|
||
| ⚠️ 部分解决 | 38 | 44.2% | 核心功能已有,但存在细节差距 |
|
||
| ❌ 未解决 | 26 | 30.2% | 功能完全缺失或仅有数据层无业务实现 |
|
||
| **合计** | **86** | **100%** | |
|
||
|
||
### 按模块分布
|
||
|
||
| 模块 | 总数 | ✅ | ⚠️ | ❌ |
|
||
|------|:----:|:--:|:--:|:--:|
|
||
| P5.1→NS3(MCP/AI) | 10 | 4 | 5 | 1 |
|
||
| P6→NS1(任务模块) | 18 | 5 | 7 | 6 |
|
||
| P7→NS1(绩效模块) | 12 | 4 | 6 | 2 |
|
||
| P8→NS1(看板模块) | 14 | 6 | 5 | 3 |
|
||
| P9→NS1(详情模块) | 23 | 10 | 10 | 3 |
|
||
| P10→NS4(租户管理后台) | 9 | 1 | 5 | 3 |
|
||
|
||
---
|
||
|
||
## 二、各模块审查结果明细
|
||
|
||
### 2.1 P5.1→NS3:MCP Server / AI 应用(10 项)
|
||
|
||
| # | 缺失项 | 状态 | 核心发现 |
|
||
|---|--------|:----:|----------|
|
||
| 01 | App1 Prompt 工程规范 | ✅ | `ai-app-prompts.md` 已定义完整 system prompt 模板、few-shot 示例、JSON schema 约束 |
|
||
| 02 | App2 财务指标计算口径 | ✅ | 后端 `app2_finance_insight.py` 已实现 6 个指标公式,遵循 items_sum 口径 |
|
||
| 03 | App3 维客线索触发条件 | ✅ | `app3_consumption_analysis.py` 实现事件驱动触发 + 去重逻辑 |
|
||
| 04 | App4-App7 缓存策略 | ⚠️ | `ai_cache` 表已建,后端有 TTL 读写逻辑,但 `expires_at` 字段未实际使用 |
|
||
| 05 | LLM 错误处理和降级 | ⚠️ | 有 try/except + 缓存回退,缺限流降级和熔断机制 |
|
||
| 06 | Token 用量监控 | ⚠️ | `ai_usage_log` 表记录每次调用,缺日/月预算控制和超限告警 |
|
||
| 07 | App5 话术分类 | ⚠️ | 话术生成已实现,缺分类枚举定义和质量评分体系 |
|
||
| 08 | 各 App 单元测试 | ✅ | `apps/mcp-server/tests/` 下有 App1-App7 测试文件 |
|
||
| 09 | MCP Server 健康检查 | ⚠️ | 后端 `/health` 端点存在,MCP Server 自身无健康检查端点 |
|
||
| 10 | AI 审计日志 | ✅ | `ai_usage_log` 表记录 who/when/what/token_count |
|
||
|
||
### 2.2 P6→NS1/RNS1:任务模块(18 项)
|
||
|
||
| # | 缺失项 | 状态 | 核心发现 |
|
||
|---|--------|:----:|----------|
|
||
| 01 | 任务卡片 5 种状态 | ⚠️ | pending/pinned/abandoned 已实现,缺 completed/expired 视觉状态 |
|
||
| 02 | 3 种空状态 | ⚠️ | 无任务空状态有,缺筛选无结果空状态和插图 |
|
||
| 03 | 置顶任务排序规则 | ✅ | 后端 SQL 已实现 `is_pinned DESC, pinned_at DESC, priority, created_at` |
|
||
| 04 | 放弃确认弹窗 | ✅ | 前端 `t-dialog` 二次确认已实现 |
|
||
| 05 | 下拉刷新/骨架屏 | ✅ | `t-pull-down-refresh` + `t-skeleton` 已集成 |
|
||
| 06 | AI 分析卡片折叠/展开 | ❌ | 前端仅静态展示 AI 分析文本,无折叠/展开/重新生成交互 |
|
||
| 07 | 任务优先级视觉标识 | ⚠️ | 有 priority 字段传递,前端缺颜色/图标映射 |
|
||
| 08 | 到期倒计时展示 | ✅ | 前端计算剩余天数并展示颜色变化 |
|
||
| 09 | 备注字数限制 | ⚠️ | 有 `maxlength=500`,缺实时字数计数器 |
|
||
| 10 | 详情页模块折叠/展开 | ❌ | 详情页各模块固定展示,无折叠/展开交互 |
|
||
| 11 | 维客线索展示样式 | ✅ | tag 颜色映射 + 卡片布局已实现 |
|
||
| 12 | 任务列表搜索 | ❌ | 无搜索功能,仅有状态筛选 |
|
||
| 13 | 任务完成反馈 | ⚠️ | 有 `wx.showToast` 成功提示,缺专属完成动画 |
|
||
| 14 | 网络异常处理 | ⚠️ | 页面级错误展示有,缺统一离线检测和全局网络状态管理 |
|
||
| 15 | 长按/滑动操作 | ⚠️ | 长按置顶已实现,滑动操作未实现 |
|
||
| 16 | 页面转场动画 | ❌ | 使用 `wx.navigateTo` 默认转场,无自定义动画 |
|
||
| 17 | 批量操作 | ❌ | 无批量选择/批量标记完成功能 |
|
||
| 18 | 无障碍适配 | ❌ | 无 aria-label、无焦点管理、无屏幕阅读器适配 |
|
||
|
||
### 2.3 P7→NS1/RNS1:绩效模块(12 项)
|
||
|
||
| # | 缺失项 | 状态 | 核心发现 |
|
||
|---|--------|:----:|----------|
|
||
| 01 | 营业日 08:00 分割点 | ✅ | ETL 层 `biz_date` 已按 08:00 分割,后端直接按 `biz_date` 查询 |
|
||
| 02 | 预估标记 | ⚠️ | 前端有 `isEstimate` 展示逻辑,后端硬编码 `is_estimate=False` |
|
||
| 03 | 定档折算展示格式 | ⚠️ | 后端返回 `hours`/`hoursRaw`,前端展示格式与标杆不一致 |
|
||
| 04 | 新客筛选逻辑 | ⚠️ | 后端有新客筛选但定义简化(仅首次服务月份,缺 2 月内+次数≤2 条件) |
|
||
| 05 | 常客展示字段 | ✅ | 次数、小时数、工资合计字段完整 |
|
||
| 06 | 收入与档位卡片视觉 | ✅ | 进度条 + 档位标签 + 收入数字样式已实现 |
|
||
| 07 | 服务记录日期格式 | ⚠️ | 展示"3月15日"格式,缺星期信息(标杆要求"3月15日 周五") |
|
||
| 08 | 月份切换 | ⚠️ | performance-records 页有月份切换,主 performance 页面无 |
|
||
| 09 | 绩效空状态 | ✅ | 新助教无数据时展示空状态文案 |
|
||
| 10 | 业绩导出功能 | ❌ | 无导出功能(整个项目缺乏通用导出基础设施) |
|
||
| 11 | 数据刷新频率说明 | ⚠️ | 无用户可见的数据新鲜度说明(如"数据更新于 XX:XX") |
|
||
| 12 | 周口径支持 | ❌ | 仅支持月口径,无本周/上周查询参数 |
|
||
|
||
### 2.4 P8→NS1/RNS1:看板模块(14 项)
|
||
|
||
| # | 缺失项 | 状态 | 核心发现 |
|
||
|---|--------|:----:|----------|
|
||
| 01 | Tab 切换缓存 | ⚠️ | 三看板通过页面跳转实现,非 Tab 组件,不保持筛选状态 |
|
||
| 02 | 财务看板分段加载 | ⚠️ | 后端单 API 返回全部数据,无 `sections` 参数,前端有 skeleton 降级 |
|
||
| 03 | 客户卡片跳转 | ✅ | 点击卡片跳转 `customer-detail?memberId=` 已实现 |
|
||
| 04 | 助教看板进度条 | ⚠️ | `t-progress` 组件已引入但未在看板页面使用,仅展示 `perfGap` 文本 |
|
||
| 05 | 数据实时性标识 | ❌ | 无"数据更新于 XX:XX"展示 |
|
||
| 06 | 环比 tooltip | ⚠️ | 环比箭头和百分比展示有,点击查看计算详情无 |
|
||
| 07 | 助教卡片跳转 | ✅ | 点击卡片跳转 `coach-detail?coachId=` 已实现 |
|
||
| 08 | 柱状图交互 | ⚠️ | `wx-charts` 渲染柱状图有,点击柱子显示具体数据无 |
|
||
| 09 | 下拉刷新 | ✅ | `onPullDownRefresh` 已实现 |
|
||
| 10 | 财务看板板块折叠 | ❌ | 各板块固定展示,无折叠/展开交互 |
|
||
| 11 | 错误展示和重试 | ✅ | 模块级错误展示 + 重试按钮已实现 |
|
||
| 12 | 筛选项动画 | ✅ | 筛选面板展开/收起动画已实现 |
|
||
| 13 | 排名序号展示 | ❌ | 助教列表无 #1、#2 排名序号 |
|
||
| 14 | 数字格式化规范 | ✅ | 千分位 + 2 位小数 + ¥ 符号统一使用 `formatCurrency` 工具函数 |
|
||
|
||
### 2.5 P9→NS1/RNS1:详情模块(23 项)
|
||
|
||
| # | 缺失项 | 状态 | 核心发现 |
|
||
|---|--------|:----:|----------|
|
||
| 01 | 客户详情分段加载 | ⚠️ | 单 API 返回全部数据,前端有 skeleton 降级但非分段加载 |
|
||
| 02 | 档位进度时间轴 | ⚠️ | 进度条展示有,非时间轴样式(缺节点、高亮、动画) |
|
||
| 03 | 消费记录类型映射 | ⚠️ | 台桌消费/商城消费有图标映射,缺 recharge(充值)类型模板 |
|
||
| 04 | 备注 AI 评分星级 | ⚠️ | 星级组件已开发,但未在备注卡片中使用 |
|
||
| 05 | Banner 区域视觉 | ✅ | 余额/消费/到店间隔/距上次到店 4 字段布局完整 |
|
||
| 06 | AI 洞察卡片 | ⚠️ | 静态展示 AI 洞察文本,缺展开详情和刷新按钮 |
|
||
| 07 | 关联助教任务列表 | ✅ | 任务类型图标 + 状态标签 + 服务统计展示完整 |
|
||
| 08 | 最亲密助教 | ⚠️ | 数据字段完整,缺关系指数可视化图表 |
|
||
| 09 | 助教明细子列表 | ✅ | 消费记录中助教明细展开/折叠已实现 |
|
||
| 10 | TOP20 客户排序 | ✅ | 按关系指数降序排列,展示字段完整 |
|
||
| 11 | 历史月份统计 | ⚠️ | 表格展示有,缺折线图/柱状图可视化 |
|
||
| 12 | 月度统计汇总 | ✅ | monthCount/monthHours 展示位置和样式已定义 |
|
||
| 13 | 任务分组视觉区分 | ✅ | active/inactive/abandoned 分组标题样式和折叠规则已实现 |
|
||
| 14 | 维客线索展示 | ✅ | 线索卡片布局 + category 颜色映射已实现 |
|
||
| 15 | 分享功能 | ❌ | 无分享客户信息功能 |
|
||
| 16 | 助教联系方式展示 | ❌ | 助教详情页无电话/微信展示 |
|
||
| 17 | 自定义日期范围筛选 | ❌ | 仅支持月份切换,无自定义日期范围 |
|
||
| 18 | 返回按钮行为 | ⚠️ | 使用 `wx.navigateBack` 默认行为,未区分"返回上一页"和"返回列表页" |
|
||
| 19 | 电话号码脱敏 | ✅ | 后端返回脱敏号码(中间 4 位 *),前端直接展示 |
|
||
| 20 | 收入明细展开/折叠 | ⚠️ | 使用 Tab 切换(本月/上月)替代展开/折叠,交互方式不同 |
|
||
| 21 | 饮品描述字段展示 | ✅ | `drinks` 字段在服务记录卡片中展示 |
|
||
| 22 | 模块级错误独立处理 | ✅ | 各模块独立 loading/error 状态,单模块失败不影响其他模块 |
|
||
| 23 | 可用月数计算 | ❌ | `availableMonths` 字段未实现(余额÷月均消耗) |
|
||
|
||
### 2.6 P10→NS4:租户管理后台(9 项)
|
||
|
||
| # | 缺失项 | 状态 | 核心发现 |
|
||
|---|--------|:----:|----------|
|
||
| 01 | 角色权限管理 CRUD | ⚠️ | RBAC 三表模型完整,权限校验中间件已打通,但无管理界面(依赖种子数据) |
|
||
| 02 | 门店切换功能 | ⚠️ | 后端数据隔离完整,SiteSelector 组件已开发但仅维客线索页集成,全局布局未放置 |
|
||
| 03 | 数据导出功能 | ❌ | 无任何业务数据导出功能(后端无端点、前端无按钮) |
|
||
| 04 | 操作日志/审计日志 | ❌ | 无审计日志表、无记录逻辑、无查看界面;线索删除为物理删除 |
|
||
| 05 | 响应式适配 | ⚠️ | Sider 可折叠、flex 布局基础有,缺最小分辨率定义和表格横向滚动 |
|
||
| 06 | 表格组件统一规范 | ⚠️ | 主表分页统一(20条/页),缺排序交互、空数据中文化、统一配置抽象 |
|
||
| 07 | 表单验证统一规范 | ⚠️ | 验证风格基本一致,EditModal 缺 required 规则,后端 422 格式不统一 |
|
||
| 08 | 国际化预留 | ✅ | ConfigProvider locale={zhCN} 已配置,项目面向国内市场无需 i18n 框架 |
|
||
| 09 | 主题定制 | ❌ | 使用 Ant Design 默认主题,无品牌色、无 Logo、无暗色模式 |
|
||
|
||
---
|
||
|
||
## 三、风险矩阵
|
||
|
||
### 🔴 高风险未解决项(需优先处理,共 8 项)
|
||
|
||
| 编号 | 缺失项 | 影响 |
|
||
|------|--------|------|
|
||
| P6-06 | AI 分析卡片折叠/展开/重新生成 | AI 功能交互不完整,用户无法与 AI 内容互动 |
|
||
| P6-12 | 任务列表搜索功能 | 任务量大时无法快速定位目标任务 |
|
||
| P6-17 | 批量操作 | 多任务管理效率低 |
|
||
| P6-18 | 无障碍适配 | 合规风险 |
|
||
| P7-10 | 业绩导出功能 | 管理者无法离线分析绩效数据 |
|
||
| P10-03 | 数据导出功能 | 管理后台无法导出业务数据 |
|
||
| P10-04 | 操作审计日志 | 操作不可追溯,线索物理删除不可恢复 |
|
||
| P9-23 | 可用月数计算 | 客户余额分析功能缺失 |
|
||
|
||
### 🟠 中风险部分解决项(需补齐差距,共 15 项)
|
||
|
||
| 编号 | 缺失项 | 差距 |
|
||
|------|--------|------|
|
||
| P5.1-04 | 缓存策略 | `expires_at` 未实际使用 |
|
||
| P5.1-05 | LLM 降级 | 缺限流降级/熔断 |
|
||
| P5.1-06 | Token 监控 | 缺预算控制 |
|
||
| P6-01 | 任务卡片状态 | 缺 completed/expired 视觉 |
|
||
| P7-02 | 预估标记 | 后端硬编码 False |
|
||
| P7-04 | 新客筛选 | 定义简化 |
|
||
| P8-01 | Tab 切换缓存 | 页面跳转不保持状态 |
|
||
| P8-02 | 分段加载 | 单 API 返回全部数据 |
|
||
| P9-01 | 客户详情分段加载 | 同上 |
|
||
| P9-06 | AI 洞察卡片 | 缺展开/刷新交互 |
|
||
| P9-08 | 最亲密助教 | 缺可视化图表 |
|
||
| P9-11 | 历史月份统计 | 缺图表 |
|
||
| P10-01 | 角色权限管理 | 无管理界面 |
|
||
| P10-02 | 门店切换 | 未全局集成 |
|
||
| P10-06 | 表格规范 | 缺排序和统一配置 |
|
||
|
||
---
|
||
|
||
## 四、系统性问题
|
||
|
||
基于 86 项审查,识别出以下跨模块的系统性差距:
|
||
|
||
### 4.1 前端交互规范缺失
|
||
小程序端(P6-P9)普遍缺少:折叠/展开交互、搜索功能、批量操作、页面转场动画、无障碍适配。这些属于前端交互层的系统性缺失,建议新建统一的前端交互规范文档。
|
||
|
||
### 4.2 数据加载策略单一
|
||
财务看板(P8-02)、客户详情(P9-01)等复杂页面均为单 API 返回全部数据,缺乏分段加载策略。前端虽有 skeleton 降级,但首屏性能受限。
|
||
|
||
### 4.3 导出功能全局缺失
|
||
整个项目(小程序 + 管理后台)无任何业务数据导出功能,缺乏通用导出基础设施(Excel 生成工具、导出日志表、权限控制)。
|
||
|
||
### 4.4 审计日志体系不完整
|
||
MCP/AI 层有 `ai_usage_log`,但租户管理后台的业务操作(审核、编辑、删除)无审计记录。维客线索删除为物理删除,数据不可恢复。
|
||
|
||
### 4.5 AI 交互深度不足
|
||
AI 相关功能(任务 AI 分析、客户 AI 洞察)均为静态展示,缺少用户与 AI 内容的互动能力(折叠/展开、重新生成、反馈评分)。
|
||
|
||
---
|
||
|
||
## 五、优先级建议
|
||
|
||
### 第一优先级:阻塞性缺失(建议立即处理)
|
||
1. P10-04 操作审计日志 — 新建 `biz.audit_log` 表 + 后端记录逻辑 + 线索删除改软删除
|
||
2. P7-02 预估标记 — 后端实现 `is_estimate` 判断逻辑(当月数据标记预估)
|
||
3. P8-02 / P9-01 分段加载 — 评估拆分 API 或增加 `fields` 参数
|
||
|
||
### 第二优先级:体验差距(建议短期补齐)
|
||
4. P6-06 AI 分析卡片交互 — 增加折叠/展开/重新生成
|
||
5. P10-02 门店选择器全局集成 — SiteContext + 各页面接入
|
||
6. P6-01 任务卡片状态视觉 — 补充 completed/expired 样式映射
|
||
7. P5.1-04/05/06 AI 缓存/降级/监控 — 完善 AI 基础设施
|
||
|
||
### 第三优先级:功能增强(建议中期规划)
|
||
8. P7-10 / P10-03 导出功能 — 建立通用导出基础设施
|
||
9. P6-12 任务搜索 — 增加按客户名/手机号搜索
|
||
10. P10-01 角色权限管理界面 — 按需实现
|
||
|
||
### 第四优先级:体验优化(建议后续迭代)
|
||
11. 无障碍适配(P6-18)
|
||
12. 页面转场动画(P6-16)
|
||
13. 批量操作(P6-17)
|
||
14. 主题定制(P10-09)
|
||
|
||
---
|
||
|
||
## 六、审查报告索引
|
||
|
||
所有 86 份独立审查报告存放于 `docs/prd/Neo_Specs/review-audit/` 目录:
|
||
|
||
| 文件名模式 | 数量 | 对应模块 |
|
||
|-----------|:----:|----------|
|
||
| `P5.1-NS3-01.md` ~ `P5.1-NS3-10.md` | 10 | MCP Server / AI 应用 |
|
||
| `P6-NS1-01.md` ~ `P6-NS1-18.md` | 18 | 小程序任务模块 |
|
||
| `P7-NS1-01.md` ~ `P7-NS1-12.md` | 12 | 小程序绩效模块 |
|
||
| `P8-NS1-01.md` ~ `P8-NS1-14.md` | 14 | 小程序看板模块 |
|
||
| `P9-NS1-01.md` ~ `P9-NS1-23.md` | 23 | 小程序详情模块 |
|
||
| `P10-NS4-01.md` ~ `P10-NS4-09.md` | 9 | 租户管理后台 |
|