这些审计记录原本堆积在 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>
6.4 KiB
6.4 KiB
变更审计记录:助教看板和客户看板懒加载(分页加载)
| 字段 | 值 |
|---|---|
| 日期 | 2026-03-29 05:49:50 |
| Prompt-ID | P20260329-054800 |
操作摘要
为助教看板(BOARD-1)和客户看板(BOARD-2)添加懒加载(分页加载)功能。后端 get_coach_board 新增 page/page_size 参数和内存分页逻辑,CoachBoardResponse 新增 total/page/page_size 字段。前端两个看板页面新增分页状态管理(currentPage/pageSize/totalCount/hasMore/isLoadingMore)、onReachBottom 触底加载、筛选变更时重置分页,以及加载更多/已加载全部的 UI 提示。
改动注解
apps/backend/app/schemas/xcx_board.py
- 变更类型:修改
- 原始原因:后端需要返回分页元数据,前端才能判断是否还有更多数据
- 思路分析:在
CoachBoardResponse中新增total、page、page_size三个字段,与客户看板CustomerBoardResponse保持一致的分页响应结构。同时本次 diff 包含了之前的 AreaFilterEnum 重建(7→9 项)、OverviewPanel 现金流字段 Optional 化、RevenuePanel/CashflowPanel 环比字段扩展等财务看板改动 - 修改结果:助教看板响应现在携带分页信息,前端可据此判断 hasMore 状态
apps/backend/app/routers/xcx_board.py
- 变更类型:修改
- 原始原因:路由层需要接收前端传入的分页参数
- 思路分析:
get_coach_board路由新增page(默认 1,≥1)和page_size(默认 20,1~100)两个 Query 参数,透传给 service 层。同时添加了@trace_service装饰器用于链路追踪 - 修改结果:助教看板 API 支持
?page=1&page_size=20分页查询
apps/backend/app/services/board_service.py
- 变更类型:修改
- 原始原因:service 层需要实现分页逻辑,将全量数据切片返回
- 思路分析:采用内存分页策略——先查询全部助教数据并排序,再根据
page/page_size切片。这种方式适合助教数量不大(通常 <100)的场景,避免了 SQL 层分页的复杂性。同时本次 diff 包含大量其他改动:环比同期对比重构、档位距升档计算、项目标签映射、客户看板批量查询优化、财务看板区域日粒度重构等 - 修改结果:
get_coach_board返回{items, total, page, page_size, dim_type},items 为当前页数据
apps/miniprogram/miniprogram/services/api.ts
- 变更类型:修改
- 原始原因:API 层需要支持分页参数传递,并返回完整响应(含 total)而非仅 items
- 思路分析:
fetchBoardCoaches新增page/pageSize参数,返回类型从CoachCard[]改为{ items, total, page, pageSize }(返回完整 data 而非data.items)。fetchBoardCustomers同样改为返回完整响应。这样前端页面可以从响应中获取 total 来计算 hasMore - 修改结果:两个看板 API 函数现在返回分页元数据,前端可实现无限滚动
apps/miniprogram/miniprogram/pages/board-coach/board-coach.ts
- 变更类型:修改
- 原始原因:助教看板页面需要实现触底加载更多的交互
- 思路分析:新增分页状态字段(
currentPage/pageSize/totalCount/hasMore/isLoadingMore)。loadData改为 async 函数,首页显示 loading,后续页显示底部加载指示器。新增onReachBottom生命周期函数实现触底加载。筛选变更(sort/skill/time)时重置分页状态并重新加载。同时将 Mock 数据替换为真实 API 调用 - 修改结果:助教看板支持下拉刷新 + 触底加载更多,每页 20 条
apps/miniprogram/miniprogram/pages/board-coach/board-coach.wxml
- 变更类型:修改
- 原始原因:需要在列表底部显示加载状态提示
- 思路分析:在列表末尾新增两个条件渲染块:
isLoadingMore时显示 loading 动画 + "加载中...",!hasMore && coaches.length > 0时显示"已加载全部"。同时引入 WXS 格式化工具fmt,将硬编码值替换为fmt.safe()调用 - 修改结果:用户滚动到底部时有明确的加载反馈
apps/miniprogram/miniprogram/pages/board-coach/board-coach.wxss
- 变更类型:修改
- 原始原因:新增的加载更多 UI 需要样式支持
- 思路分析:新增
.load-more容器(flex 居中、padding 36rpx)、.load-more-text(24rpx 灰色)、.load-more-text--end(更浅灰色表示已加载全部) - 修改结果:加载更多区域视觉效果与整体页面风格一致
apps/miniprogram/miniprogram/pages/board-customer/board-customer.ts
- 变更类型:修改
- 原始原因:客户看板同样需要懒加载功能,移除硬编码的 pageSize:100
- 思路分析:与助教看板相同的分页模式——新增分页状态、async loadData、onReachBottom、筛选重置分页。将 Mock 数据替换为真实 API 调用,新增头像颜色计算和项目标签映射。PROJECT_OPTIONS 的 value 从小写改为大写(与后端枚举一致)
- 修改结果:客户看板支持触底加载更多,默认每页 20 条,不再硬编码 100 条限制
apps/miniprogram/miniprogram/pages/board-customer/board-customer.wxml
- 变更类型:修改
- 原始原因:移除"前100名"硬编码文案,新增加载更多 UI
- 思路分析:删除列表头部的"· 前100名"文案,totalCount 改用
fmt.safe()格式化。列表末尾新增与助教看板相同的加载更多/已加载全部提示。同时新增客户项目标签(skill-tag)渲染 - 修改结果:客户列表不再暗示 100 条限制,底部有加载状态反馈
apps/miniprogram/miniprogram/pages/board-customer/board-customer.wxss
- 变更类型:修改
- 原始原因:新增加载更多样式和项目标签样式
- 思路分析:新增
.load-more系列样式(与助教看板一致)。新增.skill-tag及 4 种项目颜色类(chinese/snooker/mahjong/karaoke),样式与助教看板 skill-tag 保持一致。调整.card-grid--4列宽比例为1fr 0.6fr 0.5fr 0.6fr - 修改结果:加载更多和项目标签的视觉效果统一
风险评估
- 影响范围:助教看板和客户看板的前后端全链路
- 风险等级:中(接口契约变更,但向后兼容——新增字段不影响旧客户端)
- 注意事项:助教看板采用内存分页(先全量查询再切片),当助教数量较大时可能有性能问题,但当前业务场景下助教数量通常 <100,可接受