WeiCHEN
50d50d4798
fix(web): preserve org user directory across workbench reset
...
Logout and account switch were clearing USERS from localStorage, so
UI-01 page.goto remount loaded an empty member list for non-admins.
2026-09-22 22:29:56 +08:00
weichen and Cursor
3a0f7a1033
fix(web): route prefixed task keys and keep live settings editable
...
Message routing follows the project's real task key, account switches clear local workbench state, and the duty matrix writes the reassignment API instead of a local drill.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-21 05:20:01 +00:00
weichen and Cursor
c8dbefe8a1
fix(web): align settings CAS, PDF preview, and collaboration UX guards
...
Wire expected_revision, blob PDF framing, mustChangePassword session rewrite,
client_key project create, no-project send disable, and right-rail persistence.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-20 07:05:06 +00:00
weichen and Cursor
890d2fd14e
fix(web): stop login from fetching every project member list
...
The project list is already limited to the current user, so other rosters wait until the member panel opens. Session reload no longer follows project updates, and a newer response cannot overwrite an older user.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-19 10:22:04 +00:00
weichen and Cursor
fc32ba3dc3
fix(web): version chat window cache and cover cross-user session list
...
Drop window-cache payloads that lack a schema field. Prove a non-owner listing another user's sessions is forbidden. Correct the stale test schema note in CURRENT.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-19 09:28:11 +00:00
weichen and Cursor
2e14b3563c
fix(web): remove dead notification/workflow/settings components and orphaned APIs (X-5)
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 04:02:18 +00:00
weichen and Cursor
2620d808c4
fix(web): unify chat window cache keys and merge IndexedDB restore
...
Pass userId on every saveSessionWindowCache write, LRU-evict full cache
keys, and applyRestoredFileRaw so mount restore cannot drop newer deliverables.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 16:42:56 +00:00
weichen and Cursor
a44df9280c
fix(web): rewrite demoSeedIds tests for node:test npm gate
...
Vitest-style suite was caught by tsx --test and broke npm test.
Align with storage.test.ts and narrow vitest include to chat suites.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 03:11:36 +00:00
weichen and Cursor
855363fd60
fix(web): gate demo seeds and reclaim mock deliverables
...
Stop shipping hard-coded demo docs/projects into production builds,
drop local mock items on authoritative empty server lists, and purge
stale demo seed residue from localStorage on boot.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 02:50:34 +00:00
weichen and Cursor
b6aebc8176
fix(web): improve chat window refresh state and user-scoped cache
...
Distinguish authorized-empty and forbidden phases; skip caching day
buckets with zero messages; bind window cache keys to user id.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 03:06:11 +00:00
WeiCHEN and Cursor
636eb0ccf1
fix(web): align workbench user ids with auth seed
...
Unify MOCK_USERS with backend auth (admin id=1), merge session identity on login, and migrate demo seeds/tests to id 2/3/4 for 张工/李/王.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN and Cursor
7ab5041c59
refactor(web): stop persisting full message list to localStorage
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:22 +00:00
WeiCHEN
222b0c2dd6
feat(doc-preview): 上传文档多格式在线预览 + IndexedDB 持久化恢复
...
## 新增功能
- 支持用户上传的 Word(.docx)、PDF、Excel(.xlsx/.csv)、PPT(.pptx)、
图像(png/jpg/svg/webp等)、纯文本/代码文件的在线高保真预览
- 预览与受控工作流文档严格隔离:上传文档走 FilePreviewPanel,
工作流/对话入库文档继续走 BlockRenderer,互不干扰
## 核心 Bug 修复
- 修复页面刷新后上传文件无法预览/下载的根本问题
- 根因:File 对象无法 JSON 序列化,刷新后内存引用丢失
- 方案:新增 fileStore.ts,使用 IndexedDB 持久化文件二进制内容
- App 启动时自动 restoreFileRawToDeliverables() 从 IndexedDB 恢复 fileRaw
- 上传时 saveFile() 同步写入 IndexedDB(fire-and-forget)
## 下载按钮修复
- 优先从内存 File 对象动态创建 blob URL,避免依赖已 revoke 的旧 URL
- 文件内容不可用时按钮禁用并显示 tooltip 说明
## 存储层改进
- saveDeliverables() 序列化前剔除 fileRaw(不可持久化)和 blob: URL
避免 localStorage 保存损坏的空对象
## 新增文件
- web/src/data/fileStore.ts — IndexedDB 封装(saveFile/getFile/restore)
- web/src/components/doc/preview/FilePreviewPanel.tsx — 预览面板主组件
- web/src/components/doc/preview/renderers/DocxViewer.tsx — Word 预览
- web/src/components/doc/preview/renderers/PdfViewer.tsx — PDF 预览
- web/src/components/doc/preview/renderers/ExcelViewer.tsx — Excel 预览
- web/src/components/doc/preview/renderers/PptViewer.tsx — PPT 预览
- web/src/components/doc/preview/renderers/ImageViewer.tsx — 图像预览
- web/src/components/doc/preview/renderers/TextViewer.tsx — 文本预览
- web/src/tests/file-preview.test.ts — 预览功能单元测试
2026-09-13 02:50:21 +00:00
WeiCHEN
917740f26d
feat(project): implement modal-based project creation, creator-led member assignment, and exited-member read-only retention
2026-09-13 02:50:21 +00:00
WeiCHEN
eda2a2b32b
refactor(dialogue): implement task dispatch notifications and consecutive assistant messages with confirmation cards
2026-09-13 02:50:21 +00:00
WeiCHEN
0df8b065c2
refactor(dialogue): naturalize multi-role conversations, close chat sessions with assistant response, and set URS to project shared
2026-09-13 02:50:21 +00:00
WeiCHEN
76e538a47f
fix(doc): resolve URS viewing and private-to-shared workflow in document pane for 10 review projects
2026-09-13 02:50:21 +00:00
WeiCHEN
f48181ee0c
feat(chat): add URS requirement document upload dialogues with attachments and phase events for all 10 projects
2026-09-13 02:50:21 +00:00
WeiCHEN
27fe03a3e3
feat(chat): mount interactive review, approval, and verification confirmation cards in multi-role dialogues
2026-09-13 02:50:21 +00:00
WeiCHEN
2e3e43be8f
fix(frontend): align MockDocumentMeta markdown property and guard nullish input in markdownToBlockAST
2026-09-13 02:50:21 +00:00
WeiCHEN
a8f74244f5
feat(review): seed 10 real medical device projects with dual workflows, multi-role dialogues and fix account-switch chat isolation
2026-09-13 02:50:21 +00:00
WeiCHEN
e8002b2243
feat(category): implement recategorize backfill engine and fallback mapping (Spec §3.4-3.5 A4-A5)
2026-09-13 02:50:20 +00:00
WeiCHEN
fb8f57398c
feat(history): 实现超长对话历史按日归档与滑动窗口 (Phase P0)
2026-09-13 02:50:20 +00:00
WeiCHEN
e5e80a6fc6
feat(core): update backend coordinator, docgov lease, squad workflow and web governance integration
2026-09-13 02:50:20 +00:00
WeiCHEN
658e9db65e
fix(web): wire ALL_MOCK_DOCUMENTS and project deliverables to fix document switching
2026-09-13 02:50:20 +00:00
WeiCHEN and Cursor
b13a03840c
feat(web): upgrade settings modal with dynamic roles CRUD and permission matrix
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:20 +00:00
WeiCHEN and Cursor
2faddab7ac
refactor(types): extend deliverable item with projectId and isTemplateOnly
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:19 +00:00
WeiCHEN and Cursor
ff1eaab820
test(workbench): 增加 DOCX/XLSX 导出与会话隔离单元测试
...
- 验证 DOCX 二进制 Buffer 生成、TextRun 解析与 Blob 输出
- 验证 XLSX 多表提取、自适应列宽与工作簿 Sheet 命名规范
- 验证 sess-001 与 sess-002 对话隔离及动态追加互不串线
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:19 +00:00
WeiCHEN and Cursor
ece051d456
feat(storage): 实现多项目会话隔离与 localStorage 全局刷新持久化
...
- 预设 sess-001 (4K内窥镜) 与 sess-002 (掌上超声) 独立初始消息流
- safeGetItem/safeSetItem 包装器防御性存取 sessions, activeSessionId, messages, deliverables
- 确保页面刷新后用户发送的所有内容、回复及即时生成的私密文档零丢失
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:19 +00:00
WeiCHEN and Cursor
9eb155021b
fix(chore): 修正.gitignore根目录data规则并纳入前端mockDocuments
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-13 02:50:19 +00:00