# P7→NS1/RNS1 缺失项 #7:服务记录按天归总的展示格式 ## 简要结论 - 状态:⚠️ 部分解决 - 风险等级:🟠 中 - 后端 DateGroup 结构完整,日期标签格式为 `M月D日`(如"3月15日"),但缺少星期信息(P7 定义的"3月15日 周五"格式);前端直接透传后端 `date` 字段(`YYYY-MM-DD` 格式),未做二次格式化。 ## 详细审查 ### 审查范围 - `apps/backend/app/schemas/xcx_performance.py` — DateGroup / DateGroupRecord 模型 - `apps/backend/app/services/performance_service.py` — `group_records_by_date()`、`_format_date_label()` - `apps/miniprogram/miniprogram/pages/performance-records/performance-records.wxml` — 日期标签渲染 - `apps/miniprogram/miniprogram/pages/performance/performance.wxml` — 日期标签渲染 - `docs/miniprogram-dev/design-system/DATETIME-DISPLAY-STANDARD.md` — 日期展示规范 ### 发现 1. **后端 DateGroup 结构已定义且完整**:`DateGroup` 包含 `date`、`total_hours`、`total_income`、`records` 四个字段,`DateGroupRecord` 包含客户名、时间范围、课时、课程类型、地点、收入等完整字段。 2. **后端 `_format_date_label()` 格式为 `M月D日`**:该函数输出如 `3月15日`,但不包含星期信息。然而实际上 `group_records_by_date()` 中 `date` 字段使用的是 `YYYY-MM-DD` 格式的 `date_key`,并未调用 `_format_date_label()`。 3. **`_format_date_label()` 未被 `group_records_by_date()` 使用**:`group_records_by_date()` 直接将 `date_key`(`YYYY-MM-DD`)赋值给 `date` 字段,`_format_date_label()` 函数虽然存在但未在 DateGroup 构建中被调用。 4. **前端直接渲染后端返回的 `date` 字段**:WXML 中 `{{item.date}}` 直接展示,未做格式化。因此用户看到的是 `2026-03-15` 而非 `3月15日 周五`。 5. **设计规范文档 DATETIME-DISPLAY-STANDARD.md 定义的是相对时间规范**(刚刚/N分钟前/N天前/日期),不涉及"M月D日 周X"这种绝对日期+星期的格式。 ### 证据 后端 `group_records_by_date()` 中日期赋值(performance_service.py:130): ```python result.append({ "date": date_key, # date_key = settle_time.strftime("%Y-%m-%d") "total_hours": f"{total_hours:g}", "total_income": f"{total_income:.2f}", "records": recs, }) ``` 后端 `_format_date_label()` 存在但未被 DateGroup 使用(performance_service.py:188): ```python def _format_date_label(dt) -> str: """格式化日期为 "M月D日" 格式。""" if hasattr(dt, "strftime"): return f"{dt.month}月{dt.day}日" ``` 前端直接渲染(performance-records.wxml): ```xml {{item.date}}  — ``` ### 建议 1. **后端**:在 `group_records_by_date()` 中将 `date` 字段改为调用 `_format_date_label()` 并追加星期信息,格式为 `M月D日 周X`(如"3月15日 周五")。或新增 `date_label` 字段保留格式化后的展示文本,`date` 保留 `YYYY-MM-DD` 用于排序。 2. **前端**:如果后端不改,前端可在 WXS 中增加日期格式化函数,将 `YYYY-MM-DD` 转为 `M月D日 周X`。 3. **设计规范**:在 DATETIME-DISPLAY-STANDARD.md 中补充"按天归总场景"的日期标签格式规范(`M月D日 周X`)。