Files
JARVIS/development-doc/daily/2026-04-07.md
WIN-JHFT4D3SIVT\caoxiaozhu 721ddbeef9 feat(frontend): add calendar click to switch conversation by date
- Add selected date state and conversation mapping in useSidebarPlan
- Connect calendar cells to conversation switching logic
- Add conversation indicator dot on dates with sessions
- Only clickable dates show hand cursor (today + dates with conversations)
- Add .selected styling for non-today dates, today keeps blue
- Fix hover effect to only apply to non-today dates
- Add daily doc for session date mapping feature

BREAKING: Calendar click now switches sessions by date
2026-04-07 10:28:31 +08:00

3.0 KiB
Raw Blame History

2026-04-07 工作日志

今日开发计划

今日目标

  • 梳理 chat 页面左侧日历与 conversation session 的关系
  • 明确“按日期点击切换 session”的改造方向
  • 记录当前 session 机制与后续实现方案

今日计划拆分

  1. 盘点当前 conversation session 的数据结构与切换逻辑
  2. 确认 session 当前不是按“天”进行切分
  3. 设计日历点击后的 session 切换方案
  4. 将方案记录到 daily作为后续改造依据

今日实际完成

  • 检查了前端 conversation storeconversation api 与后端 conversation router / model
  • 确认当前 conversation session 以 conversation_id 为核心,不是按“天”自动切分
  • 确认现有字段主要依赖 created_at / updated_at 做时间记录,但单个 session 可跨多天持续使用
  • 明确了左侧日历点击切换 session 的推荐改造方式

当前结论

session 现状

  • 当前 session 不是以“天”为单位计算
  • 当前会话列表来源于 /api/conversations,按 updated_at 倒序展示
  • 点击某一天时,不能直接假定“一天对应一个现成 session”

推荐改造方案

采用“保留现有 conversation 结构 + 前端增加按日期筛选/映射”的方案:

  1. 保持后端 Conversation / Message 结构不变
  2. 前端基于 created_atupdated_at 将 conversations 映射到具体日期
  3. 左侧日历某天被点击后,优先切换到该日期最近一次活跃的 session
  4. 如果该日期没有 session则进入新会话态必要时再创建新的 conversation
  5. 会话本质仍是 conversation不强制把数据库层改成“每天一个 session”

这样处理的原因

  • 不需要重做现有 conversation 数据模型
  • 不会破坏当前多轮上下文连续性
  • 可以快速给日历交互增加“按日期查看/切换”能力
  • 后续如果要做“每日会话视图”或“按天归档”也更容易扩展

建议的后续实现点

  1. 在前端增加“选中日期”状态
  2. 将 conversations 按日期建立索引映射
  3. 日历点击时,根据日期找到对应 session 并调用 selectConversation
  4. 如果无匹配 session则清空当前消息区并进入新会话态
  5. 视需要补充“当天无会话”的空态提示

风险与临时决策

风险

  • 如果一个 conversation 跨多天活跃,按 created_at 还是 updated_at 归属日期需要统一规则
  • 如果同一天有多个 session需要定义点击日历后的优先选择策略

当前临时决策

  • 先按 updated_at 作为日历映射依据,更符合“最近活跃”的使用直觉
  • 先选择该日期下最近活跃的一条 conversation 作为默认切换目标
  • 暂不改数据库,不引入“每天强制新建 session”的硬规则

下一步计划

  1. 在 chat 页整理日历点击事件接入点
  2. 补充 conversations 与日期映射的前端计算逻辑
  3. 明确空态与多 session 同日时的交互细节
  4. 开始实现“点击日历切换 session”功能