feat: group imported threads into project archives

This commit is contained in:
kris
2026-03-30 13:50:26 +08:00
parent 98dd0e3cd5
commit 03ac40f427
23 changed files with 1207 additions and 83 deletions

View File

@@ -90,6 +90,8 @@
- `POST /api/v1/projects/[projectId]/dispatch-plans/[planId]/confirm` 正常,已支持把推荐目标确认成真正的线程执行单
- `GET /api/v1/devices/[deviceId]/import-draft` 正常,已支持读取设备导入草稿与最新决议
- `POST /api/v1/devices/[deviceId]/import-draft/select|review|apply` 正常,已支持设备候选线程勾选、导入决议和落地成真实聊天窗口
- `GET /api/v1/conversations/home` 正常,已支持会话首页使用“项目聚合 + 线程下钻”视图
- `GET /api/v1/conversation-folders/[folderKey]` 正常,已支持读取某个项目归档下的全部线程
- 这些设备导入接口当前仅允许 `highest_admin` 或设备所属账号访问
- `GET /api/v1/attachments/[attachmentId]/download` 正常,已支持会话鉴权下载和 task token 下载
- `POST /api/auth/login` 正常,会写入 `boss_session`
@@ -128,7 +130,7 @@
## 5. 当前最重要的产品逻辑
- 一级导航固定:`会话 / 设备 / 我的`
- `会话` 页当前按“线程 = 聊天窗口”渲染聊天列表`主 Agent / 审计对话` 以普通置顶会话样式固定在最上面
- `会话` 页当前按“项目聚合 + 线程下钻”渲染聊天列表:单线程项目直接显示线程,多线程项目先显示文件夹归档`主 Agent / 审计对话` 以普通置顶会话样式固定在最上面
- 单线程会话主标题显示线程名,第二行显示所属文件夹名,第三行显示最后一条消息预览,右下角显示后台活跃数量动态图标
- 单设备项目显示单头像,多线程群聊显示群聊式组合头像
- 项目聊天页当前已经改成聊天优先,只保留 `项目目标 / 版本记录` 两个轻入口线程预算、handoff、运维与转发能力仍保留数据和深层活动页但不再出现在主聊天面
@@ -138,6 +140,8 @@
- 当前设备导入主链已经补到第一阶段:设备 heartbeat 可上报真实候选线程,系统会生成导入草稿;用户勾选后可生成导入决议,并把选中的线程真正落成聊天窗口
- 当前设备导入草稿不会再被旧 `projects` 字段绕过;只有 `apply` 之后,候选线程才会真正变成聊天窗口
- 当前设备导入 `review` 已经会留下 `device_import_resolution` master task 轨迹,但决议内容仍是服务端 heuristic 版,尚未真正交给 `local-agent -> codex exec`
- Web 和原生 Android 当前都已经接上“新设备导入草稿 -> 勾选 -> 决议预览 -> 应用导入”的前台页面;已绑定生产设备继续保留 heartbeat 自动导入链路
- 原生首页的刷新失败策略当前已改成按当前 tab 独立判错,不会再因为 `设备 / 设置 / OTA` 的旁路请求失败把会话页刷新一并判成失败
- 当前群聊 `dispatch_execution` 完成回写已补幂等,重复完成不会再向群聊重复追加结果
- 当前已支持微信式消息转发:长按消息可直接 `转发 / 多选 / 复制 / 删除`,单条消息转发显示为普通转发消息,多条消息转发显示为聊天记录卡片
- 当前已支持聊天附件主链:原生聊天框左侧 `+` 会打开底部抽屉,支持图片 / 视频 / 文件发送;图片 / PDF / 文本默认自动进入主 Agent 附件分析,视频 / Office / 大文件默认手动触发
@@ -215,7 +219,7 @@ npm run apk:debug
- 服务器邮件栈已部署完成,应用内也已经支持 email 模式,但默认开关还没切到 email
- OTA 版本中心、检查更新、执行升级和 APK 包下载已接通,但当前仍是文件型状态驱动的 MVP
- APP 实时日志同步、主 Agent 日志镜像、SSE 自动刷新和 Skill 同步页已经接通,但日志检索、告警和远程 Skill 管理仍未做
- 设备导入主链已补上后端闭环,但前台页面还没有把“候选勾选 / 决议预览 / 应用导入”完整串到 Web 和原生 Android需要后续 UI 接线
- 设备导入主链当前已经具备后端闭环和 Web/Android 前台接线,后续重点改成继续细化导入筛选规则和主 Agent 理解策略,而不是再从 0 接页面
- 数据库尚未替代文件存储
- 域名入口的代理 / 分裂 DNS 结构仍未完全摸清
- 当前只支持服务器文件存储和阿里 OSS尚未接更多对象存储或更丰富的附件详情页

View File

@@ -267,7 +267,7 @@
#### `GET /api/v1/conversations`
- 用途:返回首页会话列表聚合结果
- 用途:返回平铺线程视图,供群聊创建、消息转发等内部能力使用
- 关键字段:
- `conversationType`
- `manualPinned`
@@ -278,6 +278,32 @@
- `topPinnedLabel`
- `groupMembers`
#### `GET /api/v1/conversations/home`
- 用途:返回会话首页使用的“项目聚合 + 线程下钻”视图
- 当前行为:
- 单线程项目直接返回单线程会话项
- 同一设备 / 同一 Codex 文件夹下存在多个线程时,会聚合成 `folder_archive`
- `master-agent``audit-collab`、群聊等特殊会话会保持普通置顶会话样式直接返回
- 关键字段:
- `conversationType`
- `folderKey`
- `threadCount`
- `threadTitle`
- `folderLabel`
- `lastMessagePreview`
#### `GET /api/v1/conversation-folders/[folderKey]`
- 用途:读取某个项目归档项下的线程列表
- 当前行为:
- 返回指定 `folderKey` 的汇总信息
- 返回该文件夹下全部线程会话,供 Web 和原生 Android 的项目线程列表页使用
- 关键字段:
- `folder.folderKey`
- `folder.threadCount`
- `folder.threads[]`
#### `POST /api/v1/conversations/[projectId]/actions`
- 用途:会话置顶 / 标记已读

View File

@@ -91,7 +91,8 @@ cd /Users/kris/code/boss
- UI 外壳已收口为真机态:移动端不再渲染假的 `9:41 / 5G` 状态栏,底部一级导航固定在视口底部,背景图按手机 viewport 全屏 coverWebView 不再显示外层圆角矩形预览壳
- 原生 Android 当前也和这套产品方向对齐:`会话 / 设备 / 我的` 为固定底部 tab一级面维持微信式简单列表和聊天优先`主 Agent / 审计对话` 以普通置顶会话样式固定在会话首页顶部
- 会话首页右上角当前已改成微信式 `+` 入口:直接从会话列表发起独立群聊;设备页右上角仍保留 `+添加`
- 会话列表当前已切到“线程 = 聊天窗口”:主标题显示线程名,第二行显示所属文件夹名,第三行显示最后一条消息预览,右下角显示后台活跃数量动态图标;同一文件夹下多个线程会渲染成多个独立聊天窗口
- 会话首页当前已升级成“项目聚合 + 线程下钻”:如果某个 Codex 文件夹只导入了 1 个线程,会话首页直接显示这个线程;如果同一文件夹下导入了多个线程,会话首页只显示文件夹归档项,进入后再看到该项目下的全部线程
- 会话首页与内部线程视图当前已分层:原首页和原生根页改走 `GET /api/v1/conversations/home`,文件夹详情改走 `GET /api/v1/conversation-folders/[folderKey]`;原有 `GET /api/v1/conversations` 继续保留给群聊创建、消息转发等需要平铺线程列表的内部能力使用
- 项目详情页右上角当前会进入微信式会话信息页:单线程会话支持改名和发起群聊,群聊会进入群资料页并支持改群名
- 原生顶部安全区当前已统一补上状态栏 inset首页、项目详情、会话信息、群资料、发起群聊和转发目标页的顶部按钮都已退回真机可点击区域
- 项目详情页当前已补齐微信式消息转发:长按消息会弹出 `转发 / 多选 / 复制 / 删除 / 取消`;单条消息直接进入统一会话选择页,多选消息会进入合并转发链路
@@ -99,9 +100,11 @@ cd /Users/kris/code/boss
- 当前单条消息转发会在目标会话中显示为普通转发消息,并保留 `forwardSource`;多条消息会落成 `forward_bundle` 聊天记录卡片,并保留来源会话、时间范围和摘要条目
- 当前群聊编排主链已补上第一轮闭环:群聊文本消息会先进入主 Agent 生成推荐下发方案;用户确认后会创建真正的线程执行单,并写入系统通知;执行完成后会把线程原始结果镜像回群聊,再追加一条主 Agent 汇总
- 当前设备导入主链也已补上第一轮后端闭环:`heartbeat` 可上报真实项目候选,服务端会生成 `deviceImportDraft`;用户可提交勾选结果、生成导入决议,再把选中的线程真正落成聊天窗口
- Web 与原生 Android 当前都已补上“新设备导入草稿 -> 勾选 -> 决议预览 -> 应用导入”的前台流程;已绑定生产设备继续保留 heartbeat 自动导入主链
- 当前当 heartbeat 同时携带旧 `projects` 和新 `projectCandidates` 时,服务端会优先走 `deviceImportDraft`,不再绕过勾选/审核阶段直接自动导入聊天窗口
- 当前 `dispatch_execution` 完成回写已补幂等,重复完成同一个线程执行单不会再重复向群聊追加线程原始回复和主 Agent 汇总
- 当前设备导入 `review` 已补 owner/admin 鉴权,并会留下 `device_import_resolution` master task 轨迹;导入草稿在 `apply` 后再次 heartbeat 也不会从 `applied` 回退成 `resolved`
- 原生会话页当前的刷新失败策略已改成按当前 tab 独立判错:`会话` 不会再因为 `设备 / OTA / 设置` 的旁路请求失败而整体提示“刷新失败”
- 会话页、设备页、技能页和项目详情页当前都通过 `/api/v1/events` 的 SSE 自动刷新
- 我的页当前保留 `账号与安全 / 设置 / 运维与修复 / AI 账号 / 技能 / 关于` 六个一级入口;`AI 账号` 支持查看 `主 GPT / 备用 GPT / API 容灾`,并明确主链路优先走已经在绑定电脑上登录 `ChatGPT Plus / Codex``Master Codex Node`
- 主 Agent 当前真实对话链路已验证通过:`Boss Web -> /api/v1/projects/master-agent/messages -> master-agent task queue -> local-agent -> codex exec -> /complete -> 项目消息账本`
@@ -227,7 +230,7 @@ cd /Users/kris/code/boss
- 新接入设备继续走 `import draft -> 勾选 -> review -> apply`
- 已绑定的生产设备如果 heartbeat 带上真实 `projectCandidates[]`,服务端会自动选中建议项、生成导入决议并直接应用,让会话页自动出现当前运行中的 Codex 线程
- 本机 `mac-studio` 当前已经验证可通过 `local-agent` 直接从 `~/.codex/state_5.sqlite / logs_1.sqlite / session_index.jsonl / .codex-global-state.json` 扫描真实 Codex 线程,并通过 heartbeat 自动导入到会话列表
- Web / Android 仍未把“新设备候选项目勾选与导入应用”完整接进前台页面;当前新设备主要通过 API 验证,已绑定生产设备则已能自动同步到会话页
- 会话首页当前已经不再简单平铺所有线程;如果某个设备导入了大量同文件夹线程,首页会优先显示项目归档项,降低会话页噪音
- API 容灾当前由用户在 APP 的 `我的 > AI 账号` 页面自行配置 `OpenAI API` 账号,不再依赖服务器预置 Key
- 原生 Android 的二级深层页虽然仍保留 `ProjectForwardActivity / ThreadDetailActivity / OpsCenterActivity` 等能力,但它们已经退出主 UI 正面;后续如再加入口,需继续遵守“一级微信式,复杂能力下沉”的规则
- Android 本地 Gradle 验证当前必须串行执行;如果并发跑 `testDebugUnitTest / compileDebugJavaWithJavac / assembleDebug`,会导致中间产物互踩并出现假失败

View File

@@ -824,9 +824,11 @@
- 新设备导入主链已经具备 `heartbeat -> import draft -> select -> review -> apply` 的后端闭环,并补了 owner/admin 鉴权与幂等保护
- 已绑定的生产设备当前新增自动同步链路:如果 heartbeat 携带真实 `projectCandidates[]`,服务端会自动完成建议项选择、导入决议和应用,把真实 Codex 线程直接落成会话窗口
- 本机 `mac-studio` 当前已经验证可通过 `local-agent` 直接从 `~/.codex/state_5.sqlite / logs_1.sqlite / session_index.jsonl / .codex-global-state.json` 扫描真实 Codex 线程,并通过 heartbeat 自动导入到远端会话列表
- 会话首页当前已切到“项目聚合 + 线程下钻”视图:单线程项目直接显示线程,多线程项目先聚合成文件夹归档,再进入线程列表页
- Web / Android 当前都已补上“新设备候选项目勾选、决议预览、应用导入”的前台页面
- 原生首页刷新失败策略当前已改成按当前 tab 独立判错,不会再因为旁路接口失败把会话刷新一并判成失败
当前仍待前台接线:
- Web / Android 的“新设备候选项目勾选、决议预览、应用导入”页面
- 群聊 `development / approval_required` 审批闸口的前台确认页
- 真机逐页把新增业务流接入现有微信式 UI