包含多个会话的累积代码变更: - 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>
81 lines
3.4 KiB
Markdown
81 lines
3.4 KiB
Markdown
# P8→NS1/RNS1 缺失项 #4:助教看板的"距升档"进度条
|
||
|
||
## 简要结论
|
||
- 状态:⚠️ 部分解决
|
||
- 风险等级:🔴 高
|
||
- 后端仅返回 `perfGap` 文本字段(如"距升档 13.8h"),无进度百分比数据;`perf-progress-bar` 组件已开发但未在看板页面中使用,看板仅以文字形式展示距升档信息。
|
||
|
||
## 详细审查
|
||
|
||
### 审查范围
|
||
- `apps/backend/app/schemas/xcx_board.py`(CoachBoardItem schema)
|
||
- `apps/backend/app/services/board_service.py`(get_coach_board 服务)
|
||
- `apps/miniprogram/miniprogram/pages/board-coach/board-coach.wxml`(看板模板)
|
||
- `apps/miniprogram/miniprogram/pages/board-coach/board-coach.ts`(看板逻辑)
|
||
- `apps/miniprogram/miniprogram/pages/board-coach/board-coach.json`(组件引用)
|
||
- `apps/miniprogram/miniprogram/components/perf-progress-bar/perf-progress-bar.ts`(进度条组件)
|
||
|
||
### 发现
|
||
|
||
1. **后端 Schema 无进度百分比字段**
|
||
- `CoachBoardItem` 中与升档相关的字段:
|
||
- `perf_hours: float` — 当前定档业绩小时数
|
||
- `perf_gap: str | None` — 文本描述(如"距升档 13.8h")
|
||
- `perf_reached: bool` — 是否已达标
|
||
- 缺少:`perf_pct`(进度百分比)、`perf_target`(目标小时数)、`perf_tier`(当前档位)等可视化所需字段
|
||
|
||
2. **perf-progress-bar 组件已开发,功能完整**
|
||
- 组件支持:`filledPct`(填充百分比)、`clampedSparkPct`(火星位置)、`currentTier`(当前档位 0~5)、`ticks`(刻度数组)
|
||
- 支持高光动画和火花动画
|
||
- 已在 `task-list` 和 `coach-detail` 页面中使用
|
||
|
||
3. **看板页面未引用进度条组件**
|
||
- `board-coach.json` 的 `usingComponents` 中无 `perf-progress-bar`
|
||
- `board-coach.wxml` 中升档信息仅以文字展示:
|
||
- 未达标:`<text class="bottom-right bottom-right--warning">{{item.perfGap}}</text>`
|
||
- 已达标:`<text class="bottom-right bottom-right--success">✅ 已达标</text>`
|
||
|
||
### 证据
|
||
|
||
```python
|
||
# CoachBoardItem — 仅有文本字段,无百分比
|
||
class CoachBoardItem(CamelModel):
|
||
perf_hours: float = 0.0
|
||
perf_hours_before: float | None = None
|
||
perf_gap: str | None = None # "距升档 13.8h" 或 None
|
||
perf_reached: bool = False
|
||
# 缺少: perf_pct, perf_target, current_tier, ticks 等
|
||
```
|
||
|
||
```html
|
||
<!-- board-coach.wxml — 仅文字展示,无进度条 -->
|
||
<text class="bottom-right bottom-right--warning"
|
||
wx:if="{{dimType === 'perf' && !item.perfReached}}">
|
||
{{item.perfGap}}
|
||
</text>
|
||
<text class="bottom-right bottom-right--success"
|
||
wx:elif="{{dimType === 'perf' && item.perfReached}}">
|
||
✅ 已达标
|
||
</text>
|
||
```
|
||
|
||
```json
|
||
// board-coach.json — 未引用 perf-progress-bar
|
||
{
|
||
"usingComponents": {
|
||
"coach-level-tag": "/components/coach-level-tag/coach-level-tag",
|
||
"filter-dropdown": "/components/filter-dropdown/filter-dropdown",
|
||
// ... 无 perf-progress-bar
|
||
}
|
||
}
|
||
```
|
||
|
||
### 建议
|
||
1. **后端**:在 `CoachBoardItem` 中增加进度可视化字段:
|
||
- `perf_pct: float` — 当前业绩占目标的百分比(0~100)
|
||
- `perf_target: float` — 当前档位目标小时数
|
||
- `current_tier: int` — 当前档位(0~5)
|
||
- `ticks: list[dict]` — 档位刻度数组(复用 `perf-progress-bar` 组件的 ticks 格式)
|
||
2. **前端**:在 `board-coach.json` 中引入 `perf-progress-bar` 组件,在卡片的 perf 维度区域渲染进度条
|
||
3. 可参考 `coach-detail` 页面中 `perf-progress-bar` 的使用方式
|