Commit Graph
224 Commits
Author SHA1 Message Date
WeiCHEN 82d7fe1cdc refactor(dialogue): naturalize multi-role conversations, close chat sessions with assistant response, and set URS to project shared 2026-09-11 09:42:58 +08:00
WeiCHEN 4a4f2592b8 fix(doc): resolve URS viewing and private-to-shared workflow in document pane for 10 review projects 2026-09-11 09:26:03 +08:00
WeiCHEN f3337b7bf9 feat(chat): add URS requirement document upload dialogues with attachments and phase events for all 10 projects 2026-09-11 09:03:54 +08:00
WeiCHEN 42f5b3da19 feat(chat): mount interactive review, approval, and verification confirmation cards in multi-role dialogues 2026-09-11 08:35:27 +08:00
WeiCHEN 92572138f7 fix(frontend): align MockDocumentMeta markdown property and guard nullish input in markdownToBlockAST 2026-09-11 00:58:00 +08:00
WeiCHEN 0d3cc6a6ce feat(review): seed 10 real medical device projects with dual workflows, multi-role dialogues and fix account-switch chat isolation 2026-09-11 00:47:23 +08:00
WeiCHEN dc12bc5794 fix(workflow): fix 405/404/403 errors on workflow switcher by updating CORS, 5201 demo permissions and server restart 2026-09-11 00:13:06 +08:00
WeiCHEN a51d5fcd6d chore(release): Phase 7 全链路验收报告、测试修复与发布基线归档 2026-09-10 23:57:40 +08:00
WeiCHEN 443a09d5b4 feat(workflow): Phase 6 前端项目多工作流切换器、前置依赖横幅与文档血缘失效提醒 2026-09-10 23:56:35 +08:00
WeiCHEN e9238c0ab1 feat(workflow): Phase 5 智能测试经理工作流、前置强依赖校验与文档血缘级联失效 2026-09-10 23:51:59 +08:00
WeiCHEN 9d33b1c804 feat(workflow): Phase 4 智能产品经理工作流、系统需求规格书与质量门禁 2026-09-10 23:48:40 +08:00
WeiCHEN 0961e180a3 feat(workflow): Phase 3 Coordinator 上下文、动作路由与工作流运行 API 集成 2026-09-10 23:41:24 +08:00
WeiCHEN 7c899605ea feat(workflow): Phase 1 & 2 数据库迁移、项目创建人权威化与多工作流控制面 2026-09-10 23:35:44 +08:00
WeiCHEN 484ed80377 docs(workflow): Phase 0 基线确认、架构决策记录(ADR)与契约冻结 2026-09-10 23:20:17 +08:00
WeiCHEN 4962cefdae feat(export): 实现单次智能体回复导出、私密文档保存与隐私防泄露全套闭环 (Phase 0 - Phase 2)
- Phase 0: 实现服务端回复导出策略矩阵引擎 (replyexport.EvaluatePolicy)、数据库迁移 (2026-09-11-message-export-policy.sql)、SSE done 事件挂载与能力探测 API
- Phase 1: 构建前端 ReplyDocumentIR 语法树解析与渲染管道,支持 Markdown / DOCX 文件下载及带格式富文本剪贴板复制
- Phase 2: 实现私密自由文档 (freeform_documents) 领域服务、PostgreSQL 乐观锁版本管理、ACL 隐私隔离、一键共享与右侧栏编辑联动
- 专项修复:
  1. 修复后台 API 路由注册并加入双向拉取同步,确保私密保存实时进入我的私密列表
  2. 实现轻量回复专属 DOCX 生成与静默下载逻辑 (downloadDocxReply)
  3. 将 LaTeX 公式转为标准 MathML 矢量标记,支持粘贴到 Microsoft Word / WPS 自动识别为原生公式
2026-09-10 23:04:04 +08:00
WeiCHEN 779c6c7f04 test(chat): add session turn_intent metadata assertion and chip category navigation tests 2026-09-10 16:10:53 +08:00
WeiCHEN 2c0c6a0348 feat(category): implement recategorize backfill engine and fallback mapping (Spec §3.4-3.5 A4-A5) 2026-09-10 15:56:53 +08:00
WeiCHEN 5a83b9fa44 feat(chat): 完成分类锚点坞(CategoryDock)与双轨制未读重构 (含方案A轮次归一化与起始位置居中) 2026-09-10 15:44:05 +08:00
WeiCHEN 76dae2dc3f fix(nav): 修复点击项目会话时因 URL hash 监听重放导致被强制回弹选中第一个项目的 bug 2026-09-10 14:33:48 +08:00
WeiCHEN 709fadcef2 feat(history): 完成 Phase P3 虚拟滚动、聊天记录导出与协同未读提醒
- 虚拟滚动:接入 @tanstack/react-virtual,封装 useVirtualMessages 动态测高与 overscan 预渲染,迁移 anchorNavigator 锚点定位与 SSR 兼容降级
- 聊天记录导出:基于既有 docx 与 xlsx 依赖实现 chatExporter 与 ChatExportModal,新增服务端 /api/v1/chat/export/messages 支持按条件导出
- 协同未读标记:新增 useUnreadMarks 30s 轮询与服务端 /api/v1/chat/unread 接口,日历格与工具栏支持橙色未读徽标提示
- 测试与验证:新增 chat_unread_and_export_api_test.go,前端全量 126 项单元/组件测试及生产打包 100% 通过
2026-09-10 14:25:13 +08:00
WeiCHEN de015d694a feat(history): 实现三模历史搜索、每日智能协同摘要与时间轴侧栏 (Phase P2) 2026-09-10 13:53:07 +08:00
WeiCHEN ad57685665 feat(history): 实现多级历史导航、分类筛选、日历联动与消息双向引用 (Phase P1)
- 后端核心与 API:
  - 实现 ChatCategoryStat 结构体与 ListChatCategories 统计引擎 (Postgres + In-Memory 内存降级双轨)
  - 注册 GET /api/v1/chat/categories 聚合接口
  - 增强 GetChatDayMessages 支持自动根据 anchor_id 逆查 day_key,实现免猜测跨日检索
- 前端锚点导航引擎:
  - 实现 anchorNavigator 模块 (快路径 DOM scrollIntoView + 1.8s 发光脉冲、慢路径跨日拉取、深链 Hash 解析)
  - 编写 anchorNavigator.test.ts 单元测试并 100% 通过
- 分类过滤与轻量月历:
  - 实现 CategoryFilterBar 水平分类筛选栏 (8 类业务标签,暗淡/高亮模式)
  - 实现 HistoryCalendar 零依赖原生悬浮月历组件 (热度点与消息数,jumpToDate 快速定位)
- 消息引用与双向追溯:
  - 消息气泡悬浮“引用”入口,点击提取发言人与摘要至输入框
  - 实现 QuoteChip 待发引用标签与 QuoteCard 已发引用卡片
  - 引用卡片点击直连锚点定位,快慢路径自动回溯
2026-09-10 13:40:44 +08:00
WeiCHEN 2ece0ce882 feat(history): 实现超长对话历史按日归档与滑动窗口 (Phase P0) 2026-09-10 13:24:32 +08:00
WeiCHEN cf966dcf77 feat(prompt+cache): implement 10-section prompt template, true KB regulation recall, behavior rules and multi-level caching (P4) 2026-09-10 11:52:40 +08:00
WeiCHEN b75a06cc1a feat(coordinator): implement determinism-first query rewrite with ellipsis completion and pronoun resolution (P3) 2026-09-10 11:46:27 +08:00
WeiCHEN 2c3e303561 feat(ctxmgr): implement chat memory vectorization, privacy dual-gate retrieval and memory composer (P2) 2026-09-10 11:38:36 +08:00
WeiCHEN 30bfc1fd2f feat(ctxmgr): implement sliding window, rolling summarizer and DST task state (P1) 2026-09-10 11:19:08 +08:00
WeiCHEN 6a88ceb94d feat(chat): wire multi-turn dialogue broken links (G1/G2/G3/G9) with session restore 2026-09-10 11:05:14 +08:00
WeiCHEN 143d94ffdf docs(design): add multi-turn dialogue optimization system design (report 03) 2026-09-10 11:05:12 +08:00
WeiCHEN 747cd39e97 feat(core): update backend coordinator, docgov lease, squad workflow and web governance integration 2026-09-10 09:38:35 +08:00
WeiCHEN d40de5fe61 fix(web): wire ALL_MOCK_DOCUMENTS and project deliverables to fix document switching 2026-09-10 09:37:53 +08:00
WeiCHEN 8362802d37 feat(scripts): add launch.sh to detect-and-restart dev stack (compose, backend, web) 2026-09-09 20:46:49 +08:00
WeiCHEN 7feabff181 fix(web): render step_failed phase as failed strip node with retry reset 2026-09-09 20:25:07 +08:00
WeiCHEN 82aa6ab322 docs(test): archive long-task phase live/resume UX real-agent report 2026-09-09 19:22:13 +08:00
WeiCHEN 99e0d4a412 fix(web): distinguish recovery action styles for long-task failures 2026-09-09 18:49:36 +08:00
WeiCHEN 873e6d0a83 feat(web): drive long tasks from SSE with live phases and continue/restart recovery 2026-09-09 18:48:26 +08:00
WeiCHEN 1d81d6acf1 feat(web): add task SSE client and live phase-event mapper 2026-09-09 18:41:02 +08:00
WeiCHEN 7c1383768f test(server): task stream transient injection, classification and resume integration tests 2026-09-09 18:35:51 +08:00
WeiCHEN 0b846e132a feat(api): task stream request-id, resume mode and workspace-aware error classification 2026-09-09 18:27:29 +08:00
WeiCHEN 870d0462c4 docs(spec): add long-task phase live/resume UX P2 spec and plan 2026-09-09 18:19:53 +08:00
WeiCHEN 1e7cb67ab4 docs(spec): archive chat wait-error-retry UX spec and implementation plan 2026-09-09 18:10:12 +08:00
WeiCHENandCursor 0c7d974ae2 fix(web): escape HTML in chat markdown rendering
Prevent self-XSS when chat bubbles render user/LLM markdown via
dangerouslySetInnerHTML by escaping raw HTML after math/code
extraction and sanitizing link href schemes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 17:48:12 +08:00
WeiCHENandCursor a964899f51 docs(test): strengthen chat wait-error-retry report with web E2E evidence
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 17:41:02 +08:00
WeiCHENandCursor 4aa839c5d1 docs(test): archive chat wait-state error-retry UX real-agent report
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 17:23:31 +08:00
WeiCHENandCursor 56fb3180c2 fix(web): scope Task 5 App.tsx to SSE wiring only
- Rebased App.tsx on the last clean Task-4 parent (5aa8129) and re-applied
  only Task-5's SSE plumbing: streamAbortRef, isStreamingActive,
  buildNetworkErrorInfo, runStreamAttempt, handleErrorAction,
  handleStopStreaming, and the InputArea/MessageStream wiring.
- Removed the unscoped WIP that had been folded into b2cf863 (NeuroPulse
  demo data/session-privacy/docgov-lease/cardActionPolicy imports that do
  not exist in git, causing b2cf863 to fail to build in isolation).
- Real-backend path now appends the pending placeholder and calls
  runStreamAttempt immediately; the artificial setTimeout(600) is only
  used for the mock keyword-shortcut demo branches (unchanged from 5aa8129),
  gated by precomputed predicates so it never wraps the SSE call.
- Preserved 5aa8129's mock keyword shortcuts (生成文档/驳回/修改/通过等) verbatim.
- No silent success-template fallback re-introduced.
- P1 error actions remain filtered to retry-only; auto-retry transient
  attempts stay capped at 2 with 1s/2s backoff via AbortController.
- Bloated WIP App.tsx backed up to .superpowers/sdd/App.tsx.wip-backup
  for later use by whichever task owns NeuroPulse/session-privacy/docgov
  lease work.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 17:07:44 +08:00
WeiCHENandCursor b2cf8637a3 feat(web): drive chat bubbles from SSE with auto-retry and stop
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 16:47:52 +08:00
WeiCHENandCursor 5aa812943c feat(web): render chat wait-state and structured error actions in bubbles
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 16:36:49 +08:00
WeiCHENandCursor 6d32fc68f3 fix(web): drop out-of-scope ProjectSession.userId from Task 3
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 16:32:31 +08:00
WeiCHENandCursor 357aab3ba7 feat(web): add chat SSE client and transient auto-retry helpers
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 16:30:48 +08:00
WeiCHENandCursor ccc485a670 fix(agent): scope Task 2 to SSE phases/errors without dialogue_llm leak
- untrack internal/coordinator/dialogue_llm.go (kept on disk untracked as local WIP for a future dialogue-LLM commit with its own tests; it depends on engine.go fields (dialogueBackend, ReplySource) not yet committed)
- slim internal/chat/session.go back to Task 2 scope relative to bfa6889: keep EmitErrorInfo(stream.ClassifyError(...)) for intent+coordination errors and the dialogue_generating EmitPhase before ProcessIntent; drop sync.Mutex/mu, ChatResponse.ReplySource, preference/RecentDialogue injection block, and collectRecentDialogue helper (unrelated WIP for the dialogue-LLM feature)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 16:25:35 +08:00