包含多个会话的累积代码变更: - 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>
3.2 KiB
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— 日期展示规范
发现
-
后端 DateGroup 结构已定义且完整:
DateGroup包含date、total_hours、total_income、records四个字段,DateGroupRecord包含客户名、时间范围、课时、课程类型、地点、收入等完整字段。 -
后端
_format_date_label()格式为M月D日:该函数输出如3月15日,但不包含星期信息。然而实际上group_records_by_date()中date字段使用的是YYYY-MM-DD格式的date_key,并未调用_format_date_label()。 -
_format_date_label()未被group_records_by_date()使用:group_records_by_date()直接将date_key(YYYY-MM-DD)赋值给date字段,_format_date_label()函数虽然存在但未在 DateGroup 构建中被调用。 -
前端直接渲染后端返回的
date字段:WXML 中{{item.date}}直接展示,未做格式化。因此用户看到的是2026-03-15而非3月15日 周五。 -
设计规范文档 DATETIME-DISPLAY-STANDARD.md 定义的是相对时间规范(刚刚/N分钟前/N天前/日期),不涉及"M月D日 周X"这种绝对日期+星期的格式。
证据
后端 group_records_by_date() 中日期赋值(performance_service.py:130):
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):
def _format_date_label(dt) -> str:
"""格式化日期为 "M月D日" 格式。"""
if hasattr(dt, "strftime"):
return f"{dt.month}月{dt.day}日"
前端直接渲染(performance-records.wxml):
<text decode class="dd-date">{{item.date}} —</text>
建议
- 后端:在
group_records_by_date()中将date字段改为调用_format_date_label()并追加星期信息,格式为M月D日 周X(如"3月15日 周五")。或新增date_label字段保留格式化后的展示文本,date保留YYYY-MM-DD用于排序。 - 前端:如果后端不改,前端可在 WXS 中增加日期格式化函数,将
YYYY-MM-DD转为M月D日 周X。 - 设计规范:在 DATETIME-DISPLAY-STANDARD.md 中补充"按天归总场景"的日期标签格式规范(
M月D日 周X)。