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

87 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-04-07 工作日志
## 今日开发计划
### 今日目标
- 梳理 chat 页面左侧日历与 conversation session 的关系
- 明确“按日期点击切换 session”的改造方向
- 记录当前 session 机制与后续实现方案
### 今日计划拆分
1. 盘点当前 conversation session 的数据结构与切换逻辑
2. 确认 session 当前不是按“天”进行切分
3. 设计日历点击后的 session 切换方案
4. 将方案记录到 daily作为后续改造依据
---
## 今日实际完成
- 检查了前端 `conversation store``conversation 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_at``updated_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”功能