chore(audit): 2026-04-20 历史批次预审 + 文档同步 + .gitignore 修正

- 新增 docs/audit/changes/2026-04-20__historical-batch-pre-audit.md
  157 文件分批盘点审计(7 条主线 + 10 项高/中风险 + 2 份迁移 SQL DDL 清单)
- 补追 docs/audit/changes/2026-04-15__meituan-settle-core-sync.md
  原审计产物因 .gitignore 屏蔽长期未入仓,本次一并追回
- 刷新 docs/audit/audit_dashboard.md(33 条审计记录)
- .gitignore 白名单放行 docs/audit/changes/*.md 与 audit_dashboard.md
  同时屏蔽 changes/changes/ 嵌套误产物目录
- 新增 docs/specs/audit-gap-recovery/tasks.md
  扫描嵌套目录发现 96 份 D 类孤本(从未入过 git history),
  生成独立 PRD 供单开任务清理与补追
- 文档同步(高风险项):
  - apps/backend/docs/API-REFERENCE.md (+69)
  - apps/miniprogram/README.md (+50)
  - apps/etl/connectors/feiqiu/docs/architecture/data_flow.md (+52/-2)
  - apps/etl/connectors/feiqiu/docs/architecture/system_overview.md (+5/-3)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Neo
2026-04-20 06:32:58 +08:00
parent 2a7a5d68aa
commit 80bda9b991
9 changed files with 914 additions and 366 deletions

View File

@@ -89,6 +89,7 @@ apps/miniprogram/
| `pages/customer-detail/customer-detail` | 客户详情页(完整档案 + AI 洞察 + 维客线索) | |
| `pages/customer-service-records/customer-service-records` | 客户服务记录页(按日期分组的消费记录) | |
| `pages/coach-detail/coach-detail` | 助教详情页(业绩数据 + 客户列表) | |
| `pages/coach-service-records/coach-service-records` | 助教业绩明细页(管理者视角,查看指定助教的业绩明细) | |
| `pages/chat/chat` | AI 对话页SSE 流式输出,按上下文进入对话) | |
| `pages/chat-history/chat-history` | 对话历史列表页 | |
| `pages/dev-tools/dev-tools` | 开发调试面板(仅 develop 环境,通过 dev-fab 浮动按钮进入) | |
@@ -118,6 +119,50 @@ apps/miniprogram/
| service-record-card | `components/service-record-card/` | 服务记录单项卡片 |
| star-rating | `components/star-rating/` | 星级评分组件 |
## 业绩明细双视角
业绩明细存在两个严格隔离的页面,职责互不交叉:
- `performance-records`(助教自查)
- 视角:当前登录用户(无需 coachId
- 权限:无需额外守卫
- 点击单条记录:跳 `task-detail?taskId=xxx`(关注任务)
- `coach-service-records`(管理者查看)
- 视角指定助教coachId 必传(来自 URL query
- 权限:`view_board_coach`
- 点击单条记录:跳 `customer-detail?memberId=xxx`(关注客户)
coach-service-records 页面约定:
- 入口:`coach-detail` 页面的"查看更多"按钮
- `onShow` 必须通过 `checkPageAccess('view_board_coach')` 守卫
- 数据源:
- Banner`fetchCoachBanner(coachId)` 轻量接口
- 记录:`fetchPerformanceRecords({ year, month, coachId, page, pageSize })`
- 源码:`miniprogram/pages/coach-service-records/*`
## 共享工具
业绩进度条动画参数与计算逻辑的单一源头:`miniprogram/utils/perf-progress.ts`。被 `task-list.ts``coach-detail.ts` 共同使用,避免双份漂移。
导出清单:
- 常量:`SHINE_SPEED``SPARK_DELAY_MS``SPARK_DUR_MS``NEXT_LOOP_DELAY_MS``SHINE_WIDTH_RPX`
- 类型:`TickItem` 接口
- 函数:`calcShineDur``buildTicks``buildProgressBarData`
新建同类动画参数或档位刻度逻辑时,统一落在此文件,禁止在页面脚本内就地写常量。
## 数据规范
### 散客标记isScattered
后端判定规则:`member_id <= 0` 时在响应字段上标记 `isScattered = true`,标识该条记录为散客(无会员档案)。
涉及页面:`coach-detail``performance-records``coach-service-records``customer-detail`
前端渲染约定:为承载散客信息的节点追加 CSS 类 `--scattered`,以置灰方式区分于实名会员;散客条目不提供跳转到 `customer-detail` 的入口。
## 后端 API 集成
### API 地址配置
@@ -210,6 +255,11 @@ POST /api/xcx-auth/login → 重新登录获取完整令牌(含 site_id + ro
| `/api/xcx/chat/messages` | GET | 通过上下文查消息 |
| `/api/xcx/chat/stream` | POST | SSE 流式对话 |
### services/api.ts 近期新增
- `fetchCoachBanner(coachId: number)` — 轻量助教 banner 数据,供 `coach-service-records` 顶部卡片复用
- `fetchPerformanceRecords({ year, month, page, pageSize, coachId? })` — 新增可选 `coachId` 参数;不传为助教自查视角(后端以当前登录用户过滤),传入则为管理者查看视角(后端按权限码 `view_board_coach` 分流校验)
> 完整接口契约见 [`docs/miniprogram-dev/API-contract.md`](../../docs/miniprogram-dev/API-contract.md)
> 后端 API 参考见 [`apps/backend/docs/API-REFERENCE.md`](../backend/docs/API-REFERENCE.md)