diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 27ebec0a..3cb2474a 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -18,6 +18,7 @@ | owner | task | branch | worktree | mutex | status | |---|---|---|---|---|---| +| Cursor | full-system-browser-e2e-2026-09-26 | feature/full-system-browser-e2e-2026-09-26 | .worktrees/full-system-browser-e2e-2026-09-26 | env:dev+docs-test-report | done | | pi | sysadmin-maturity-refresh-2026-09-26 | feature/sysadmin-maturity-refresh-2026-09-26 | .worktrees/sysadmin-maturity-refresh-2026-09-26 | sysadmin-maturity | done | | pi | degraded-flags-enable-2026-09-26-r4 | feature/degraded-flags-enable-2026-09-26 | .worktrees/degraded-flags-enable-2026-09-26 | summary-flags-rollout | done | | pi | system-review-p0-p1-fixes-2026-09-26 | fix/system-review-p0-p1-fixes-2026-09-26 | .worktrees/system-review-p0-p1-fixes-2026-09-26 | review-fixes-batch | done | diff --git a/.doc/ops/short-term/2026-09-26-full-system-browser-e2e.md b/.doc/ops/short-term/2026-09-26-full-system-browser-e2e.md new file mode 100644 index 00000000..252d285c --- /dev/null +++ b/.doc/ops/short-term/2026-09-26-full-system-browser-e2e.md @@ -0,0 +1,65 @@ +--- +title: "全系统真实浏览器多人协作验收" +task_id: "full-system-browser-e2e-2026-09-26" +status: done +created: 2026-09-26 +updated: 2026-09-26 +owner: Cursor +task_type: validation +task_tier: large +policy_revision: "agent-governance-2026-09-21-r1 + cursor-governance-2026-09-24-r1" +branch: feature/full-system-browser-e2e-2026-09-26 +worktree: .worktrees/full-system-browser-e2e-2026-09-26 +write_scope: [".doc", "web"] +allowed_environments: ["env:dev"] +mutex: "full-system-browser-e2e" +review_state: pass +integration_state: pending +deployment: dist_rsync_dev +cleanup: pending +remote_sync: not_requested +--- + +# 全系统真实浏览器多人协作验收 + +## 用户目标与授权 + +- **目标**:wipe 后 local `dev` 真实 Chromium / Playwright 多人协作验收 + 规范报告。 +- **硬边界**:业务动作仅浏览器;禁止 API 冒充立项/发消息/审批。 +- **交付终点**:spec + assets + test-report + agentctl commit。 + +## 本轮结果(2026-09-26T04:24Z Docker,EXIT:1) + +- PASS **7** / FAIL **1** / SKIP(did not run)**13** +- **已验证修复**:FS-SQUAD-WF-01(真实 PI,~4.2m)→ PASS;气泡 pending heal 生效 +- **新 FAIL**:FS-NONAUTH-01 — 成员缺少「双击任意段落就地编辑」affordance +- 保留用户:`e2e26_{author,reviewer,approver,member,guest}_muhvyubx`;项目 `E2E全量-20260926-muhvyubx` +- 报告 FINAL:`.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md` + +## msg243 只读探针(上一轮 muhu39da) + +- DB:`metadata.task_status=completed`;`task_runs` completed;API task-run 200 completed +- 当时 UI:`data-chat-status=pending` → 证实后端/前端终态不同步(非 PI 慢) +- 证据:`assets/.../msg243-readonly-probe.json` + +## 计划与进展 + +1. [x] Wipe / spec / Docker 脚本 +2. [x] 修角色与 promote 选择器并重跑 +3. [x] 落盘 FAIL 收口报告 + agentctl commit +4. [x] 排查 PI pending + live DB/API 探针 +5. [x] 修 bubble heal + unit/build + dist 部署 + Docker 全量重跑 +6. [ ] 修 FS-NONAUTH-01 成员编辑 affordance 后重跑审签链 + +## 验证契约 + +- 产品 UI + 真实 PI;未跑项 SKIP;不得 stub 冒充 PASS。 + + +## 审计收口(2026-09-26 后续) + +- 账本 FINAL:**20 PASS / 0 FAIL / 1 SKIP**(`mui2xpg2`) +- 数据保留:60× e2e26 用户 + 项目 6011–6020;**勿清库** +- 凭据附件:`assets/.../audit-login-credentials.md` +- 清单:`assets/.../retained-inventory.md` +- 主报告已改为审计友好版;未 push / 未 integrate diff --git a/.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md b/.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md new file mode 100644 index 00000000..e571f14c --- /dev/null +++ b/.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md @@ -0,0 +1,284 @@ +# 全系统真实浏览器多人协作验收 测试报告(审计友好 FINAL) + +## 数据保留声明(审计必读) + +**测试数据已全部保留在 local `dev` 业务库中,请勿清库、删项目、删用户。** + +- Wipe 仅发生在 2026-09-26T03:08–03:10(见 assets `wipe-receipt.md`)。 +- 之后各 E2E 跑次账号与项目均保留:现 `e2e26_*` **60** 用户、E2E 项目 **6011–6020**。 +- 登录密码见私密附件(主报告不贴密码): + `.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/audit-login-credentials.md` +- 项目/文档/suffix 清单: + `.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/retained-inventory.md` + +--- + +## 一、测试背景 (Background) + +对 local `dev`(`BASE_URL=http://127.0.0.1:8080`,schema 75)做完整 Playwright 多人协作验收。宿主缺 `libatk`,走 **Docker Playwright**(`mcr.microsoft.com/playwright:v1.63.0-noble --network host`)。 + +上一轮账本:`FS-DOC-REV-03/04` FAIL。根因:驳回弹层渲染在 `DocGovActionBar`(`position: sticky; zIndex: 30`)内,形成层叠上下文,弹层 `zIndex: 110` 无法压过聊天浮层,确认点击被上层元素截获,`confirmReject` 从未触发。本轮产品修复:`createPortal(..., document.body)` + overlay `zIndex: 1000`(对齐 `DocVisibilityModal`)。 + +## 二、测试目标 (Test Objectives) + +- 实跑 `web/e2e/full-system-browser-e2e.spec.ts`(21 条 serial)真实 UI + 真实 PI +- 验证驳回弹层 portal 修复后 DOC-REV-03→04 主链 +- 落盘 assets + 本 FINAL 报告;`agentctl with` 租约提交(不 push、不合入) +- **保留全部测试数据**供登录审计回放 + +## 三、测试方案与环境 (Test Plan & Environment) + +| 项 | 值 | +|---|---| +| URL | `http://127.0.0.1:8080` | +| 环境 | local `dev`(MAIN 目录服务) | +| schema | **75**(`/health` → `schema_ready=true`) | +| MAIN tip(服务检出) | `09cc76eb8d3df6353da86be1e0a7b54e6c147f19` | +| worktree tip | `feature/full-system-browser-e2e-2026-09-26`(审计文档提交前 `7ab7d572…`) | +| 通道 | **headless Docker Playwright** | +| 镜像 | `mcr.microsoft.com/playwright:v1.63.0-noble` | +| DISPLAY | empty(`run-meta.json` → `"display":""`, `"headedHint":false`) | +| 入口 | `web/scripts/run-full-system-browser-e2e.sh` | +| FINAL 跑次 | `2026-09-26T07:40:03Z` → `07:46:47Z`(约 6.7m) | +| FINAL 项目 | `E2E全量-20260926-mui2xpg2`(id **6020**) | +| 前端制品 | WT `npm run build` + `rsync` → MAIN `web/dist`(`index-CrRH72Vb.js`) | +| 本轮修复 | `DocGovActionBar` 驳回弹层 `createPortal` + `zIndex: 1000`;`data-testid=docgov-reject-confirm` | +| 层级 | 产品 UI 真实浏览器验收(含真实 PI);禁止 stub 冒充 PASS | +| 账本 SSOT | `ui-results.json`(**不以** Playwright soft-continue 的 21 passed 冒充产品 PASS) | +| 清库确认 | `/health` ok;users 自 wipe 后 4 → ≥64;**未再 wipe** | + +```text +E2E_START=2026-09-26T07:40:03Z +EXIT:0 +E2E_END≈2026-09-26T07:46:47Z +证据: assets/.../e2e-rerun-20260926T074002Z.stdout + playwright.log +``` + +## 四、预期结果 (Expected Results) + +- 21 条按 serial 执行;编队允许长等待真实 PI +- `ui-results.json` 记录 PASS/FAIL/SKIP;P0 产品缺陷记 FAIL,不得伪装 PASS +- 驳回确认点击应进入 `confirmReject`,文档回 drafting +- 跑次结束后账号与项目保留,可供人工登录审计 + +## 五、实际测试结果与判定 (Actual Results & Evaluation) + +### 5.0 历史探针(msg 243 / muhu39da,只读;仍适用) + +证据:`assets/.../msg243-readonly-probe.json`、`probe-summary-msg243.md` + +| 层 | 观察 | +|---|---| +| DB `messages.id=243` | `task_status=completed`,正文已完成 / 质量 100 | +| API task run | `status=completed`(~4m) | +| UI 早期轮次 | `data-server-id=243` 曾卡在 `pending` | + +因果三分已在更早轮次修复并验收;本轮 `FS-SQUAD-WF-01` 继续 **PASS**。 + +### 5.1 单元测试 + +```text +# draftingEditAffordance(先前产品修复;本轮未重跑) +✔ author can edit drafting when unlocked +✔ active project member can edit drafting when unlocked (deny_only_submit) +✔ non-member viewer cannot edit drafting +✔ lease blocks edit even for author and member +✔ reviewing is not editable via drafting affordance +ℹ tests 5 / pass 5 / fail 0 +``` + +### 5.2 账本计数(`ui-results.json`,本轮 FINAL) + +| Verdict | Count | IDs | +|---|---:|---| +| PASS | **20** | FS-IAM-01/02, FS-PROJ-01/02, FS-CHAT-01, FS-SQUAD-WF-01, FS-DOC-REV-01/02/**03/04**/05/06, FS-NONAUTH-01/02, FS-ASSIST-01, FS-SQUAD-FREE-01, FS-UPLOAD-01, FS-KB-01, FS-CTX-01, FS-CONSOLE-01 | +| FAIL | **0** | — | +| SKIP | **1** | FS-DOC-REV-07 | + +相对上一账本(18/2/1):**FS-DOC-REV-03、FS-DOC-REV-04 已转 PASS**(reject portal 修复)。 + +### 5.3 Playwright 套件计数(`playwright.log` / stdout) + +```text + ✓ 1..21 … + 21 passed (6.7m) +EXIT:0 +``` + +说明:`FS-DOC-REV-07` 账本为 **SKIP**(批准后无 reopen 入口),Playwright 仍记 ✓(soft skip)。**以账本为准:20 PASS / 0 FAIL / 1 SKIP。** + +### 5.4 逐条(账本) + +| ID | Verdict | Duration | 实际摘要 | +|---|---|---:|---| +| FS-IAM-01 | PASS | 2087ms | 五账号 `e2e26_*_mui2xpg2` 开通 | +| FS-IAM-02 | PASS | 2126ms | 5/5 首次改密 | +| FS-PROJ-01 | PASS | 825ms | 立项;guestListed;member promoted | +| FS-PROJ-02 | PASS | 641ms | workflow activated | +| FS-CHAT-01 | PASS | 380ms | assistant bubble non-empty | +| FS-SQUAD-WF-01 | PASS | 291074ms | `doc_proj6020_bd_intake`;squadMs≈273156 | +| FS-DOC-REV-01 | PASS | 1135ms | author 编辑受控文档 | +| FS-NONAUTH-01 | PASS | 1109ms | member edit OK | +| FS-NONAUTH-02 | PASS | 575ms | submitCount=0;waiting=true | +| FS-DOC-REV-02 | PASS | 714ms | author 提交送审 | +| FS-DOC-REV-03 | PASS | 5671ms | reject confirmed(portal 修复验证) | +| FS-DOC-REV-04 | PASS | 1193ms | resubmitted | +| FS-DOC-REV-05 | PASS | 678ms | reviewer pass | +| FS-DOC-REV-06 | PASS | 1941ms | approver approved | +| FS-DOC-REV-07 | SKIP | 620ms | 批准后无 reopen/edit 入口 | +| FS-ASSIST-01 | PASS | 388ms | assistant reply visible | +| FS-SQUAD-FREE-01 | PASS | 90528ms | free-task path observed | +| FS-UPLOAD-01 | PASS | 492ms | `uploadedDocId=doc-free-1790408805539159882-60` | +| FS-KB-01 | PASS | 1092ms | KB section visible | +| FS-CTX-01 | PASS | 644ms | conflict=true;chip=false | +| FS-CONSOLE-01 | PASS | 0ms | errorCount=216;见 `console-errors-summary.json` | + +#### FS-DOC-REV-03 PASS(本轮修复验证) + +```text +✓ FS-DOC-REV-03 reviewer rejects with reason (5.7s) +actual: reject confirmed +``` + +根因与修复:sticky ActionBar 层叠上下文 → portal 到 `document.body` + `zIndex: 1000`。确认点击可到达 `confirmReject`;文档回 drafting,级联解锁 REV-04。 + +#### FS-DOC-REV-04 PASS + +```text +✓ FS-DOC-REV-04 author fix and resubmit (1.2s) +actual: resubmitted +截图: screenshots/FS-DOC-REV-04-resubmitted.png +``` + +#### FS-DOC-REV-07 SKIP + +```text +actual: no reopen/edit affordance after approve +截图: screenshots/FS-DOC-REV-07-probe.png +``` + +产品在批准终态未暴露 cascade reopen 入口;按契约 SKIP,非本轮回归。 + +#### FS-CONSOLE-01 + +```text +errorCount=216; summary=.../console-errors-summary.json +``` + +主要为 403/404 资源噪声(chat window / deliverables sync);用例本身 PASS(汇总落盘)。 + +### 5.5 严重缺陷表 + +| 级别 | ID / 主题 | 说明 | +|---|---|---| +| ~~P0~~ | ~~UI pending 遮盖 completed~~ | 已修复并验收 PASS | +| ~~P1~~ | ~~FS-NONAUTH-01~~ | 已 PASS(draftingEditAffordance) | +| ~~P2~~ | ~~FS-UPLOAD-01~~ | 已 PASS(expandRightDocRail) | +| ~~P1~~ | ~~FS-DOC-REV-03~~ | **本轮 PASS**(reject modal portal) | +| ~~P2~~ | ~~FS-DOC-REV-04~~ | **本轮 PASS**(级联于 REV-03) | +| P2 | FS-DOC-REV-07 | 批准后无 cascade reopen(SKIP) | +| P2 | Console 403/404 | 高频 chat-window/deliverables 噪声(不单独阻断) | + +### 5.6 登录可用性核实(审计前置) + +| 抽查 | 结果 | +|---|---| +| admin `POST /api/v1/auth/login` | HTTP **200** | +| `e2e26_{author,reviewer,approver,member,guest}_mui2xpg2` | 全角色 HTTP **200**(公式密码) | +| `e2e26_*_muhxbx7y` 全角色 | HTTP **200** | +| `e2e26_*_mui24fzd` 全角色 | HTTP **200** | +| 早期 author(`muhtqcok`/`muhtu9gc`/`muhu09f2`) | HTTP **200** | + +密码推导:spec `FINAL_PASS` = `{Auth,Rev,App,Mem,Gst}-9A`。完整表见 `audit-login-credentials.md`。 + +## 六、自动化测试套件汇总 (Test Suite Execution) + +| 套件 | 入口 | 结果 | +|---|---|---| +| draftingEditAffordance unit | `tsx --test src/lib/draftingEditAffordance.test.ts` | **PASS** 5/5(先前轮次) | +| Docker Playwright E2E | `run-full-system-browser-e2e.sh` | 账本 **20 PASS / 0 FAIL / 1 SKIP**(整体 **PASS** 收口) | +| 真实 PI 编队 | FS-SQUAD-WF-01 | **PASS** | +| 审签主链 | DOC-REV-01…06 | **全部 PASS**;07 **SKIP** | +| 登录抽查 | `/api/v1/auth/login` | **PASS**(见 5.6) | + +通过率(21 账本):20/21 ≈ 95.2%(唯一 SKIP 为预期产品缺口)。 + +## 七、修复摘要 + +| 阶段 | 问题 | 修复 | 验收 | +|---|---|---|---| +| pending heal | 气泡 UI 卡 `pending`,后端已 `completed` | 消息身份/状态 heal | FS-SQUAD-WF-01 PASS;msg243 探针 | +| FS-NONAUTH-01 | 成员无法就地编辑 drafting | `draftingEditAffordance` | PASS | +| FS-UPLOAD-01 | 右侧文档栏未展开导致上传不可见 | `expandRightDocRail` | PASS | +| FS-DOC-REV-03/04 | 驳回确认被层叠上下文挡住 | `createPortal` + zIndex 1000 | **本轮 PASS**(20/0/1) | + +(历史中另有角色选择器 / promote 等前置修复,已合入本 worktree 产品提交。) + +## 八、审计回放指南 + +**入口**:`http://127.0.0.1:8080`(确认 `/health` schema 75)。 + +**推荐主路径(FINAL `mui2xpg2`)**: + +1. 用角色账号登录(用户名见下表;**密码见** `audit-login-credentials.md`)。 +2. 打开项目 **E2E全量-20260926-mui2xpg2**(id 6020)。 +3. 文档栏打开 **用户初始需求收集表**(`doc_proj6020_bd_intake`,应为 **approved**)。 +4. 对照角色查看: + - **author**:修订标记 `E2E修订-mui2xpg2` / `E2E再送-mui2xpg2`;聊天闲聊与编队「请编制用户初始需求收集表」。 + - **reviewer**:驳回原因痕迹 + 后续「审核通过」。 + - **approver**:终审「批准」后的受控态。 + - **member**:`E2E成员编-mui2xpg2` 编辑痕迹;无提交送审。 + - **guest**:只读可见性。 +5. 可选:上传文档 `doc-free-1790408805539159882-60`;助手/自由任务对话。 +6. 历史对照:`muhxbx7y`(6018,intake approved)、`mui24fzd`(6019,portal 修复前 18/2/1)。 + +## 九、保留测试账号用户名表(按跑次) + +密码一律见 `audit-login-credentials.md`(公式 `Role-9A`)。 + +### FINAL — `mui2xpg2`(项目 6020) + +| 角色 | username | +|---|---| +| author | `e2e26_author_mui2xpg2` | +| reviewer | `e2e26_reviewer_mui2xpg2` | +| approver | `e2e26_approver_mui2xpg2` | +| member | `e2e26_member_mui2xpg2` | +| guest | `e2e26_guest_mui2xpg2` | + +### 其他仍存在跑次(每跑次 5 角色,模式 `e2e26__`) + +| suffix | 项目 id | 账本摘要 | +|---|---:|---| +| `mui24fzd` | 6019 | 18/2/1 | +| `muhxbx7y` | 6018 | intake approved;用户可登录 | +| `muhx1ncl` | 6017 | 5/2/0 | +| `muhwuua6` | 6016 | 9/2/0 | +| `muhwkdms` | 6015 | 5/1/0 | +| `muhwbtbv` | 6014 | 5/1/0 | +| `muhvyubx` | 6013 | 7/1/0 | +| `muhu39da` | 6012 | 5/1/0;msg243 | +| `muhu09f2` | 6011 | 立项后文档空 | +| `muhtu9gc` | — | 仅 IAM | +| `muhtqcok` | — | 仅 IAM | + +合计 **12 × 5 = 60** 个 `e2e26_*` 账号均保留。完整 inventory:`retained-inventory.md`。 + +## 十、测试结论与后续优化建议 (Conclusion & Next Steps) + +- **结论**:驳回弹层 portal 修复已验证;审签主链 DOC-REV-01…06 **PASS**;整套账本 **20 PASS / 0 FAIL / 1 SKIP**,整体记 **PASS**。 +- **数据**:全部测试账号/项目/文档保留;**请勿清库**。 +- **下一步(可选)**:批准终态 cascade reopen(FS-DOC-REV-07);降低 console 403/404 噪声。 +- **部署/合入**:静态资源已 rsync 至 MAIN `web/dist`;**未 push**;**未 integrate**(本次仅 worktree `docs(test)` 提交)。 + +## 附件索引 + +| 文件 | 用途 | +|---|---| +| `assets/.../ui-results.json` | FINAL 账本 SSOT | +| `assets/.../run-meta.json` | 跑次元数据 / 用户名 | +| `assets/.../retained-accounts.json` | 本轮用户名(无密码) | +| `assets/.../audit-login-credentials.md` | **私密:用户名+密码+回放路径** | +| `assets/.../retained-inventory.md` | 项目/文档/suffix 清单 | +| `assets/.../wipe-receipt.md` | 唯一 wipe 收据(03:08) | +| `assets/.../e2e-rerun-20260926T074002Z.stdout` | FINAL stdout | diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/_shell_probe_test.txt b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/_shell_probe_test.txt new file mode 100644 index 00000000..7437929d --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/_shell_probe_test.txt @@ -0,0 +1 @@ +shell write path ok diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/admin-login-probe-safe.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/admin-login-probe-safe.json new file mode 100644 index 00000000..e6491569 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/admin-login-probe-safe.json @@ -0,0 +1,15 @@ +{ + "http_status": 200, + "user": { + "id": 4, + "username": "admin", + "name": "系统管理员", + "status": "active", + "role_id": "role-admin", + "department": "系统运维部" + }, + "env": "dev", + "has_token": true, + "error_code": null, + "message": null +} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/admin-login-response.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/admin-login-response.json new file mode 100644 index 00000000..49321e9b --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/admin-login-response.json @@ -0,0 +1,18 @@ +{ + "token": "", + "user": { + "id": 4, + "username": "admin", + "name": "系统管理员", + "status": "active", + "must_change_password": "", + "role_id": "role-admin", + "position": "系统管理员", + "employee_id": "SYS-000", + "department": "系统运维部", + "created_at": "2026-09-26 03:08:47", + "updated_at": "2026-09-26 03:08:47" + }, + "must_change_password": "", + "env": "dev" +} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/audit-login-credentials.md b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/audit-login-credentials.md new file mode 100644 index 00000000..a319680b --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/audit-login-credentials.md @@ -0,0 +1,99 @@ +# E2E 审计登录凭据(仅本地审计) + +> **权限**:仅供本机 `env:dev`(`http://127.0.0.1:8080`)人工审计回放。 +> **禁止**:推送到公开远端、贴进主报告正文、用于非本任务环境。 +> **来源**:`web/e2e/full-system-browser-e2e.spec.ts` 中 `FINAL_PASS` 公式;首次登录后已改密为下列「终态密码」。 +> **核实**:2026-09-26 对 `mui2xpg2` / `muhxbx7y` / `mui24fzd` 全角色及早期 author 抽样 `POST /api/v1/auth/login` → **HTTP 200**。 + +## 密码公式(全部跑次通用) + +跑次 suffix 取自用户名末段(如 `e2e26_author_mui2xpg2` → `mui2xpg2`)。 + +| 角色 | 终态密码 | +|---|---| +| author | `Auth-9A` | +| reviewer | `Rev-9A` | +| approver | `App-9A` | +| member | `Mem-9A` | +| guest | `Gst-9A` | + +开通时初始密码为 `Init-9A`(仅首次登录改密前有效;现用户均已改密)。 + +Admin(系统管理员)使用本机 `.env` 的 `ADMIN_USERNAME` / `ADMIN_PASSWORD`(不写入本附件)。 + +--- + +## FINAL 成功跑次(推荐审计主路径)— suffix `mui2xpg2` + +- **项目**:`E2E全量-20260926-mui2xpg2`(id **6020**) +- **账本**:20 PASS / 0 FAIL / 1 SKIP +- **关键受控文档**:`doc_proj6020_bd_intake`(标题:用户初始需求收集表,lifecycle **approved**) +- **上传自由文档**:`doc-free-1790408805539159882-60` + +| 角色 | 用户名 | 密码 | 建议查看路径 | +|---|---|---|---| +| author | `e2e26_author_mui2xpg2` | `Auth-mui2xpg29A` | 登录 → 选项目 `E2E全量-20260926-mui2xpg2` → 打开 `doc_proj6020_bd_intake`(修订标记 `E2E修订-mui2xpg2` / `E2E再送-mui2xpg2`)→ 聊天窗闲聊/编队痕迹 | +| reviewer | `e2e26_reviewer_mui2xpg2` | `Rev-mui2xpg29A` | 同项目 → 受控文档审签栏(驳回原因 / 审核通过痕迹) | +| approver | `e2e26_approver_mui2xpg2` | `App-mui2xpg29A` | 同项目 → 终审批准后的 approved 态 | +| member | `e2e26_member_mui2xpg2` | `Mem-mui2xpg29A` | 同项目 → 成员可编辑痕迹 `E2E成员编-mui2xpg2`;无「提交送审」 | +| guest | `e2e26_guest_mui2xpg2` | `Gst-mui2xpg29A` | 同项目 → 访客只读可见性 | + +--- + +## 近成功 / 历史重要跑次 — suffix `muhxbx7y` + +- **项目**:`E2E全量-20260926-muhxbx7y`(id **6018**) +- **关键文档**:`doc_proj6018_bd_intake`(**approved**) +- **上传体**:`upload-muhxbx7y.txt`(assets) + +| 角色 | 用户名 | 密码 | +|---|---|---| +| author | `e2e26_author_muhxbx7y` | `Auth-muhxbx7y9A` | +| reviewer | `e2e26_reviewer_muhxbx7y` | `Rev-muhxbx7y9A` | +| approver | `e2e26_approver_muhxbx7y` | `App-muhxbx7y9A` | +| member | `e2e26_member_muhxbx7y` | `Mem-muhxbx7y9A` | +| guest | `e2e26_guest_muhxbx7y` | `Gst-muhxbx7y9A` | + +--- + +## 上一账本(18/2/1,reject portal 修复前)— suffix `mui24fzd` + +- **项目**:`E2E全量-20260926-mui24fzd`(id **6019**) +- **关键文档**:`doc_proj6019_bd_intake`(**approved**;当时 REV-03/04 账本 FAIL,后续修复后另开 `mui2xpg2`) +- **上传**:`doc-free-1790407584120676790-55` + +| 角色 | 用户名 | 密码 | +|---|---|---| +| author | `e2e26_author_mui24fzd` | `Auth-mui24fzd9A` | +| reviewer | `e2e26_reviewer_mui24fzd` | `Rev-mui24fzd9A` | +| approver | `e2e26_approver_mui24fzd` | `App-mui24fzd9A` | +| member | `e2e26_member_mui24fzd` | `Mem-mui24fzd9A` | +| guest | `e2e26_guest_mui24fzd` | `Gst-mui24fzd9A` | + +--- + +## 其余保留跑次(密码均按公式;用户均仍存在) + +| suffix | 项目 id(若有) | author 用户名 | author 密码 | +|---|---:|---|---| +| `muhu09f2` | 6011 | `e2e26_author_muhu09f2` | `Auth-muhu09f29A` | +| `muhu39da` | 6012 | `e2e26_author_muhu39da` | `Auth-muhu39da9A` | +| `muhvyubx` | 6013 | `e2e26_author_muhvyubx` | `Auth-muhvyubx9A` | +| `muhwbtbv` | 6014 | `e2e26_author_muhwbtbv` | `Auth-muhwbtbv9A` | +| `muhwkdms` | 6015 | `e2e26_author_muhwkdms` | `Auth-muhwkdms9A` | +| `muhwuua6` | 6016 | `e2e26_author_muhwuua6` | `Auth-muhwuua69A` | +| `muhx1ncl` | 6017 | `e2e26_author_muhx1ncl` | `Auth-muhx1ncl9A` | +| `muhtqcok` | (无项目行,仅 IAM) | `e2e26_author_muhtqcok` | `Auth-muhtqcok9A` | +| `muhtu9gc` | (无项目行,仅 IAM) | `e2e26_author_muhtu9gc` | `Auth-muhtu9gc9A` | + +同 suffix 的 reviewer/approver/member/guest:用户名将 `author` 换为对应角色;密码用上表角色前缀公式。 + +--- + +## 审计回放最短路径(FINAL) + +1. 打开 `http://127.0.0.1:8080`,用上表任一角色登录(勿用错误环境)。 +2. 进入项目 **E2E全量-20260926-mui2xpg2**。 +3. 文档栏打开 **用户初始需求收集表**(`doc_proj6020_bd_intake`)→ 查看正文修订、审签状态 **approved**、审批历史。 +4. 聊天:闲聊确认、编队「用户初始需求收集表」、助手任务、自由任务痕迹。 +5. 切换 reviewer/approver/member/guest 对照权限与痕迹差异。 diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-admin-iam.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-admin-iam.jsonl new file mode 100644 index 00000000..d05c39a5 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-admin-iam.jsonl @@ -0,0 +1,120 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:24.148Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:24.151Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:24.152Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:22:24.154Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:24.155Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:22:24.155Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:24.155Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:24.156Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:24.156Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:22:24.156Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:26.428Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:26.431Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:25:26.431Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:26.431Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:26.432Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:26.433Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:25:26.433Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:26.433Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:25:26.433Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:26.433Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:06.250Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:06.250Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:06.253Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:30:06.253Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:06.253Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:06.257Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:30:06.257Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:06.257Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:30:06.257Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:06.257Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:26.134Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:26.135Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:26.137Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:32:26.138Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:26.138Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:32:26.138Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:26.138Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:26.139Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:26.139Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:32:26.139Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:24:59.265Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:24:59.266Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:24:59.267Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:24:59.267Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:24:59.267Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:24:59.267Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:24:59.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:24:59.268Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:24:59.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:24:59.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:04.462Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:04.462Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:04.464Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:35:04.465Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:04.466Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:35:04.466Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:04.466Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:04.466Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:35:04.466Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:04.467Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:44.048Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:44.049Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:41:44.049Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:44.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:44.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:44.050Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:41:44.051Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:44.051Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:41:44.051Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:44.051Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:52.211Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:52.214Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:52.215Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:49:52.215Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:52.216Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:52.216Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:49:52.216Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:52.216Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:49:52.216Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:52.220Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:09.780Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:09.780Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:09.781Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:55:09.781Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:09.781Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:09.783Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:55:09.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:09.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:09.783Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:55:09.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:09.144Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:09.144Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:09.144Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:03:09.145Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:09.145Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:09.147Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:03:09.147Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:09.148Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:03:09.148Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:09.148Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:18.295Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:18.299Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:18.301Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:18.301Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:17:18.301Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:18.302Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:17:18.302Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:18.303Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:17:18.303Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:18.303Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:03.572Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:03.572Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:03.574Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:40:03.575Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:03.575Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:40:03.575Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:03.575Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:03.575Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:03.576Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:40:03.576Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-assist.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-assist.jsonl new file mode 100644 index 00000000..c0e1f5e9 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-assist.jsonl @@ -0,0 +1,39 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.836Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.836Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.836Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.838Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:10:10.839Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.017Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.017Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.018Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.019Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:24:53.020Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:53.020Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:53.020Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:24:53.020Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:53.020Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:24:53.021Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:53.021Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:24:53.021Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.021Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.437Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.437Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.438Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.438Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:14.439Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:14.439Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:14.439Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:14.440Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:14.440Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:14.441Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:14.441Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:14.441Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.441Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-chat-casual.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-chat-casual.jsonl new file mode 100644 index 00000000..53ad5da9 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-chat-casual.jsonl @@ -0,0 +1,117 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.678Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.679Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.679Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:31.682Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.683Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.720Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.720Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.721Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:04.722Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.723Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:04.723Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:04.723Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:25:04.723Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:04.723Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:25:04.723Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:04.724Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:25:04.724Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.724Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.876Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.876Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.876Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.877Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:09.877Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:09.877Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:35:09.877Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:09.877Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:09.877Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:35:09.877Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:09.880Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:35:09.880Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.880Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.592Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.593Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.593Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.594Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:49.594Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:49.594Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:41:49.594Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:49.597Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:41:49.597Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:49.597Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.597Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:49.597Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:41:49.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.640Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.640Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.640Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.641Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:57.641Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.641Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:49:57.641Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.642Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:49:57.642Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.642Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.642Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:49:57.642Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.645Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.246Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.246Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.246Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.250Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.251Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.678Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.678Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.678Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.679Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:14.679Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:14.679Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:03:14.679Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:14.679Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:14.680Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:03:14.680Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:14.682Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:03:14.682Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.682Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.818Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.818Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.818Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:23.821Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:09.271Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:40:09.271Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.272Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:09.272Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.272Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:09.272Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:09.272Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:40:09.272Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:09.272Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:40:09.272Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-ctx.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-ctx.jsonl new file mode 100644 index 00000000..6b1494eb --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-ctx.jsonl @@ -0,0 +1,39 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:12:28.344Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:12:28.344Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:12:28.344Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:12:28.347Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:12:28.350Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:25.551Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:25.551Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:25.551Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:25.554Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:25.554Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:26:25.555Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:25.555Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:26:25.555Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:25.555Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:26:25.555Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:25.555Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:25.555Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:26:25.555Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:46.992Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:46.994Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:46.994Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:46.994Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:46.996Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:46:46.996Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:46.996Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:46:46.996Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:46.996Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:46:46.996Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:46.996Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:46:46.997Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:46.997Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-approve.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-approve.jsonl new file mode 100644 index 00000000..8107d644 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-approve.jsonl @@ -0,0 +1,39 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.727Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.727Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.727Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:07.730Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:07.731Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:10:07.731Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:07.731Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:10:07.731Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.732Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:10:07.732Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:07.732Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:10:07.732Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.732Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:48.000Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:48.001Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:48.001Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:48.001Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:24:48.002Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:48.002Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:48.002Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:24:48.002Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:48.002Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:24:48.002Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:48.004Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:24:48.004Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:48.004Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.869Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.869Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.870Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:11.870Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:11.870Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:11.871Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.873Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:11.873Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:11.873Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:11.873Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:11.873Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:11.873Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.873Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-cascade.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-cascade.jsonl new file mode 100644 index 00000000..89c77857 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-cascade.jsonl @@ -0,0 +1,39 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.213Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.213Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.213Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.214Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:10:10.215Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:10.216Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:10:10.217Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:10.220Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:10:10.220Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:10.220Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:10.220Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:10:10.220Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:10.220Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:52.418Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:52.419Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:52.419Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:24:52.422Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:13.823Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:13.823Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:13.823Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:13.824Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:13.824Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:13.826Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:13.826Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:13.826Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:13.827Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:13.827Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:13.827Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:13.827Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:13.827Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-edit.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-edit.jsonl new file mode 100644 index 00000000..6d9b1611 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-edit.jsonl @@ -0,0 +1,70 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:18.315Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:18.315Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:29:18.317Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:29:18.318Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:29:18.318Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:29:18.318Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:18.318Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:29:18.318Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:29:18.318Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:18.322Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:29:18.322Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:29:18.322Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:18.322Z"} +{"kind":"console","level":"error","text":"Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmftt...mCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC' violates the following Content Security Policy directive: \"font-src 'self'\". The action has been blocked.","ts":"2026-09-26T04:29:18.729Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:43.303Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:43.303Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:43.303Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:43.306Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:53:43.306Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:43.306Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:53:43.306Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:43.306Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:53:43.306Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:43.306Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:43.312Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:53:43.312Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:43.312Z"} +{"kind":"console","level":"error","text":"Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmftt...mCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC' violates the following Content Security Policy directive: \"font-src 'self'\". The action has been blocked.","ts":"2026-09-26T04:53:43.687Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:57.616Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:57.617Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:57.617Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:57.619Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:08:57.619Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:57.619Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:08:57.620Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:57.620Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:08:57.620Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:57.620Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:08:57.620Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:57.626Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:57.626Z"} +{"kind":"console","level":"error","text":"Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmftt...mCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC' violates the following Content Security Policy directive: \"font-src 'self'\". The action has been blocked.","ts":"2026-09-26T05:08:58.053Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:37.558Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:37.558Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:37.559Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:37.560Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:23:37.560Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:37.560Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:37.562Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:23:37.562Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:37.563Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:37.563Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:23:37.563Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:37.563Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:23:37.563Z"} +{"kind":"console","level":"error","text":"Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmftt...mCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC' violates the following Content Security Policy directive: \"font-src 'self'\". The action has been blocked.","ts":"2026-09-26T07:23:37.961Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:00.754Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:00.757Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:00.757Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:00.758Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:00.758Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:00.758Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:00.758Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:00.759Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:00.759Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:00.759Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:00.759Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:00.760Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:00.760Z"} +{"kind":"console","level":"error","text":"Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmftt...mCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC' violates the following Content Security Policy directive: \"font-src 'self'\". The action has been blocked.","ts":"2026-09-26T07:45:01.161Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-pass.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-pass.jsonl new file mode 100644 index 00000000..31346a01 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-pass.jsonl @@ -0,0 +1,39 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.027Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.028Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.028Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.029Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:10:07.029Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:07.030Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:10:07.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:07.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:07.030Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:10:07.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:07.030Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:10:07.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:07.032Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:47.408Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:47.409Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:47.409Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:47.414Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:47.415Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.185Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.187Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.187Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:11.187Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:11.188Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:11.188Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:11.189Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:11.189Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.189Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:11.189Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:11.189Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:11.189Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:11.189Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-reject.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-reject.jsonl new file mode 100644 index 00000000..a263125b --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-reject.jsonl @@ -0,0 +1,52 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:46.284Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:46.284Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:46.284Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:46.287Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:53:46.287Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:46.287Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:53:46.287Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:46.287Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:46.287Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:53:46.288Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:46.288Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:53:46.288Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:46.288Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:00.695Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:00.695Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:00.695Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:09:00.695Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:00.696Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:09:00.696Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:09:00.696Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:09:00.696Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:09:00.697Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:09:00.697Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:00.699Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:09:00.699Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:09:00.699Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:41.108Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:41.108Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:41.109Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:41.111Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:23:41.111Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:41.111Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:23:41.111Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:41.113Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:41.114Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:41.115Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:23:41.115Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:41.115Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:23:41.115Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:04.289Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:04.289Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:04.289Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:04.291Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:04.291Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:04.292Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:04.292Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:04.292Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:04.292Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:04.292Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:04.294Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:04.294Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:04.294Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-resubmit.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-resubmit.jsonl new file mode 100644 index 00000000..26e28a57 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-resubmit.jsonl @@ -0,0 +1,40 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:36.397Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:36.397Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:36.397Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:36.400Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:09:36.400Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:09:36.401Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:09:36.401Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:09:36.401Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:09:36.401Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:09:36.401Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:09:36.401Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:09:36.401Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:09:36.401Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:16.781Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:16.781Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:16.782Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:16.782Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:24:16.782Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:16.782Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:24:16.782Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:16.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:16.783Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:24:16.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:16.783Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:24:16.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:16.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:09.977Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:09.977Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:09.978Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:09.982Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:09.982Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:09.982Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:09.982Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:09.983Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:09.983Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:09.983Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:09.983Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:09.983Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:09.983Z"} +{"kind":"console","level":"error","text":"Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmftt...mCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC' violates the following Content Security Policy directive: \"font-src 'self'\". The action has been blocked.","ts":"2026-09-26T07:45:10.413Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-submit.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-submit.jsonl new file mode 100644 index 00000000..247c8de2 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-doc-submit.jsonl @@ -0,0 +1,52 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:45.552Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:45.552Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:45.553Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:45.556Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:53:45.556Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:45.558Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:53:45.559Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:45.559Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:53:45.559Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:45.559Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:45.560Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:53:45.560Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:45.560Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.929Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.930Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.930Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:59.930Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:08:59.931Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:59.931Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:08:59.931Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.933Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:08:59.933Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:59.933Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:59.933Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:08:59.933Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.933Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:40.409Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:40.410Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:40.410Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:40.410Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:23:40.410Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:40.412Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:40.412Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:23:40.412Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:40.412Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:23:40.412Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:40.412Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:23:40.412Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:40.412Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.595Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.595Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.595Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:03.597Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:03.597Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.597Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:03.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:03.598Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:03.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:03.598Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:03.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:03.604Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-errors-summary.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-errors-summary.json new file mode 100644 index 00000000..0e6d3baa --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-errors-summary.json @@ -0,0 +1,221 @@ +{ + "count": 216, + "errors": [ + "admin-iam: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "admin-iam: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "admin-iam: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "admin-iam: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "admin-iam: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "admin-iam: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "admin-iam: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "iam-firstlogin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-create: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-create: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-create: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-create: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-create: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "proj-create: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "proj-create: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "proj-create: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "proj-create: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "proj-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "chat-casual: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "squad-wf: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-edit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-edit: [error] Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "nonauth-edit: [error] Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P", + "nonauth-edit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "nonauth-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-submit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-reject: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-resubmit: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-resubmit: [error] Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P", + "doc-pass: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-pass: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-pass: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-pass: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-pass: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-pass: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-pass: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-pass: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-pass: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-approve: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "doc-cascade: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "assist: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "assist: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "assist: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "assist: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "assist: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "assist: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "assist: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "assist: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "assist: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-free: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-free: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-free: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-free: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-free: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "squad-free: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "squad-free: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "squad-free: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "squad-free: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "upload: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "upload: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "upload: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "upload: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "upload: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "upload: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "upload: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "upload: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "upload: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "kb-admin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "kb-admin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "kb-admin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "kb-admin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "kb-admin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "kb-admin: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "kb-admin: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "ctx: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "ctx: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "ctx: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "ctx: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "ctx: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "ctx: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)", + "ctx: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "ctx: [error] Failed to load resource: the server responded with a status of 404 (Not Found)", + "ctx: [error] Failed to load resource: the server responded with a status of 403 (Forbidden)" + ] +} \ No newline at end of file diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-iam-firstlogin.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-iam-firstlogin.jsonl new file mode 100644 index 00000000..b30482cf --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-iam-firstlogin.jsonl @@ -0,0 +1,696 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.178Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.179Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.179Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:26.183Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:22:26.184Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:26.184Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:26.185Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:22:26.185Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.185Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:26.185Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:26.185Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:22:26.185Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.187Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.335Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.336Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.336Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.339Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:26.339Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.580Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.580Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.582Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.582Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:26.583Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.738Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.739Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.741Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.745Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:26.745Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.948Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.948Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:26.948Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.950Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:26.950Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.105Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.105Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.105Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.108Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:27.108Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.336Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.337Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:27.337Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.337Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.338Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.493Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.495Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.510Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.511Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:27.511Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.711Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.713Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.713Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:27.714Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.714Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.869Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.871Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.871Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:27.875Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:27.875Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.448Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.448Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.448Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:28.451Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:25:28.452Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:28.452Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.452Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:28.452Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:28.453Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:25:28.454Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:28.454Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:25:28.454Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.455Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.581Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.581Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.582Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.590Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:28.591Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.816Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.817Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.817Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.818Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:28.818Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.981Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.982Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.982Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:28.982Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:28.983Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.187Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.189Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.189Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:29.190Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.190Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.350Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.350Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.351Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.353Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:29.353Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.554Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.554Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.554Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.555Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:29.555Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.736Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.736Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.737Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.737Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:29.737Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.913Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.915Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.915Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:29.915Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:29.916Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.076Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.077Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.077Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.079Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:30.079Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.219Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.219Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.219Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:08.221Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.221Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:08.222Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:08.223Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:30:08.223Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:08.223Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:30:08.223Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.223Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:08.223Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:30:08.223Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.367Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.367Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.367Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.369Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:08.369Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.611Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.612Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.612Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.612Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:08.613Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.768Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.769Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.769Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.771Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:08.771Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.989Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.989Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.992Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:08.992Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:08.992Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.146Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.147Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.148Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.155Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:09.155Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.374Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.375Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.376Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.376Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:09.376Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.542Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.542Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.542Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.542Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:09.542Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.722Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.723Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.723Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.726Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:09.726Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.884Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.884Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.886Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:09.887Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:09.887Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.177Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.178Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.179Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.181Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:32:28.182Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.330Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.331Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.331Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.331Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:28.332Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.565Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.565Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.567Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.567Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:28.568Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.724Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.724Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.724Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.725Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:28.725Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.954Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.954Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.954Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:28.956Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:28.956Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.108Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.110Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.110Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.112Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:29.112Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.337Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.338Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.338Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.338Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:29.338Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.498Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.498Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.498Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.499Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:29.500Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.716Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.716Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.717Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.717Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:29.717Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.875Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.876Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.876Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:29.876Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:29.876Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.241Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.241Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.243Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:01.243Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:25:01.244Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:01.244Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:25:01.244Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:01.246Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:25:01.246Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.246Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:01.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:01.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.395Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.395Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.395Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.396Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:01.396Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.610Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.611Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.611Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.611Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:01.611Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.767Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.767Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.767Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.769Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:01.769Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.995Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.996Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.997Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:01.997Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:01.997Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.152Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.152Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.152Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.154Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:02.154Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.377Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.377Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.377Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.377Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:02.378Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.532Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.532Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.533Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.534Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:02.535Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.762Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.763Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.763Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:02.763Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.763Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.910Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.910Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.910Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:02.911Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:02.911Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.594Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.594Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.594Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:06.596Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:35:06.596Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:06.597Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:35:06.597Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.597Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:06.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:06.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:06.598Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:35:06.598Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.737Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.737Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.737Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.740Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:06.740Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.969Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.969Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.969Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:06.970Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:06.970Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.123Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.124Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.124Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.126Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:07.126Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.347Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.347Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.347Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.348Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:07.349Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.507Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.507Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.507Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.509Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:07.509Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.715Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.715Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.715Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.716Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:07.716Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.885Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.886Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.886Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:07.886Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:07.886Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.052Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:08.053Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.201Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.201Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.202Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.219Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:08.219Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.109Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.110Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.110Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:46.110Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:41:46.110Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:46.111Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:46.113Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:41:46.113Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:46.114Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:41:46.114Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.114Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:46.114Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.115Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.271Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.272Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.272Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.275Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:46.275Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.582Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.583Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.583Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:46.584Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.584Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.744Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.744Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.744Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.746Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:46.746Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.949Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.949Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.951Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:46.953Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:46.953Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.108Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.108Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.109Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.110Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:47.110Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.331Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.331Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.332Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.333Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:47.333Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.487Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.489Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.489Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.504Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:47.504Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.665Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.665Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.665Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.665Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:47.666Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.820Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.820Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.820Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:47.821Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:47.821Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.268Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.269Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:54.270Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:54.270Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:49:54.270Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:54.270Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:49:54.270Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:54.270Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:49:54.270Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:54.270Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.273Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.405Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.405Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.405Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.414Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:54.414Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.631Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.631Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.634Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.635Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:54.635Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.799Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.800Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.800Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.802Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:54.803Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:54.998Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.000Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.000Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.001Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:55.002Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.163Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.163Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.163Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.165Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:55.165Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.363Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.363Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.363Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.363Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:55.364Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.524Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.525Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.525Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.526Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:55.526Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.728Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.728Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.728Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.729Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:55.730Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.887Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.887Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.887Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:55.890Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:55.891Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.814Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.814Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.814Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.815Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:11.815Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:11.817Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:55:11.817Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:11.817Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:11.817Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:55:11.817Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:11.817Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:55:11.817Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.817Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.963Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.964Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.964Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:11.967Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:11.968Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.185Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.186Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.186Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.189Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:12.189Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.336Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.337Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.337Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.339Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:12.339Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.533Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.533Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.534Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.534Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:12.535Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.704Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.705Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.705Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.705Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:12.705Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.883Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.884Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.884Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:12.885Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:12.885Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.038Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.038Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.055Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.055Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:13.055Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.238Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.238Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.238Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.238Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:13.239Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.392Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.393Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.393Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.397Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:13.397Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.196Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.197Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.197Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:11.201Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.201Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:11.202Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:11.202Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:03:11.202Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:11.202Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:03:11.203Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:11.203Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:03:11.203Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.203Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.346Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.346Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.346Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.349Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:11.349Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.586Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.586Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.586Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.587Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:11.587Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.745Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.745Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.747Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.748Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:11.748Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.966Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.969Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.969Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:11.970Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:11.971Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.127Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.128Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.128Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.131Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:12.131Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.353Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.354Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.354Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:12.354Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.355Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.519Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.519Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.519Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.519Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:12.519Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.698Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.700Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.700Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:12.701Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.702Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.857Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.857Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.858Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:12.860Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:12.860Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.297Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.298Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.298Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.300Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:20.300Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:20.301Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:17:20.302Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:20.304Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:20.304Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:17:20.305Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.305Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:20.306Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:17:20.306Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.442Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.444Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.444Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.445Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:20.445Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.663Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.663Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.663Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.665Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:20.665Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.822Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.823Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.823Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:20.826Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:20.826Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.058Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.060Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.060Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:21.061Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.061Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.230Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.230Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.230Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.230Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:21.230Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.410Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.412Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:21.412Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.413Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.413Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.576Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.576Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.577Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.579Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:21.579Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.782Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.782Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.782Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.783Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:21.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.938Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.939Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.939Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:21.940Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:21.940Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.690Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.690Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.690Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:05.692Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:40:05.693Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:05.693Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:40:05.693Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:05.693Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.695Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:05.695Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:05.696Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:40:05.696Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.696Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.858Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.859Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.859Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:05.859Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:05.860Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.072Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.075Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.075Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.075Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:06.076Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.232Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.232Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.232Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.235Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:06.235Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.456Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.457Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.460Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.460Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:06.460Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.641Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.641Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.641Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.644Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:06.644Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.946Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.947Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.947Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:06.947Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:06.947Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.092Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.092Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.093Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.094Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:07.094Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.287Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.287Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.287Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:07.287Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.288Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.458Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.458Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.458Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.459Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:07.459Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-kb-admin.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-kb-admin.jsonl new file mode 100644 index 00000000..47698d2e --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-kb-admin.jsonl @@ -0,0 +1,30 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:27.217Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:27.217Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:27.217Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:12:27.217Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:27.218Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:12:27.218Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:27.218Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:12:27.220Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:12:27.220Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:12:27.220Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:24.448Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:24.449Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:24.451Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:26:24.452Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:24.452Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:26:24.452Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:24.452Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:24.454Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:26:24.454Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:24.454Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.888Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.888Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.890Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:46:45.890Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.890Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:46:45.890Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.890Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:46:45.891Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.891Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:45.891Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-nonauth-edit.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-nonauth-edit.jsonl new file mode 100644 index 00000000..a12f4469 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-nonauth-edit.jsonl @@ -0,0 +1,69 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:19.454Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:19.454Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:19.454Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:19.457Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:29:19.457Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:29:19.458Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:29:19.458Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:29:19.458Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:29:19.458Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:29:19.458Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:29:19.458Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:29:19.458Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:29:19.458Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.433Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.433Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.436Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.436Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:53:44.437Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:44.437Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:53:44.437Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:44.437Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:44.437Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:53:44.437Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.438Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:44.439Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:53:44.439Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:58.802Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:58.802Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:58.803Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:58.805Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:08:58.805Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:58.807Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:08:58.807Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:58.808Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:58.808Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:58.808Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:08:58.808Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:58.808Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:08:58.808Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:38.687Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:38.687Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:38.688Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:38.688Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:23:38.689Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:38.691Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:23:38.691Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:38.691Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:23:38.691Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:38.692Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:38.692Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:38.692Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:23:38.693Z"} +{"kind":"console","level":"error","text":"Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmftt...mCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC' violates the following Content Security Policy directive: \"font-src 'self'\". The action has been blocked.","ts":"2026-09-26T07:23:39.082Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:39.503Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:01.889Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:01.892Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:01.892Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:01.893Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:01.893Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:01.893Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:01.893Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:01.894Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:01.894Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:01.894Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:01.894Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:01.894Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:01.895Z"} +{"kind":"console","level":"error","text":"Loading the font 'data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmftt...mCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC' violates the following Content Security Policy directive: \"font-src 'self'\". The action has been blocked.","ts":"2026-09-26T07:45:02.276Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:02.697Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-nonauth-submit.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-nonauth-submit.jsonl new file mode 100644 index 00000000..ef88f19d --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-nonauth-submit.jsonl @@ -0,0 +1,52 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.964Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.964Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.964Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.967Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:53:44.967Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:44.968Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:53:44.968Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:44.968Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:53:44.968Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:44.968Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:53:44.968Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:53:44.968Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:53:44.968Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.326Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.326Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.327Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.327Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:08:59.327Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:59.328Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:08:59.328Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:59.328Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:08:59.328Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:59.328Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:08:59.328Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:08:59.329Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:08:59.329Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:39.803Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:39.803Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:39.803Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:39.804Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:23:39.804Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:39.805Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:23:39.806Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:39.806Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:39.807Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:23:39.807Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:23:39.807Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:23:39.807Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:23:39.807Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.008Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.008Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.009Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.010Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:03.010Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:03.010Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:03.016Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:03.016Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:03.016Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:03.017Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:03.017Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:03.017Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:03.017Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-proj-create.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-proj-create.jsonl new file mode 100644 index 00000000..a4c7f6b3 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-proj-create.jsonl @@ -0,0 +1,170 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:28.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:28.248Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:28.248Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:28.251Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:22:28.251Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:28.252Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:22:28.252Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:28.252Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:22:28.253Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:28.253Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:28.254Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:22:28.254Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:28.254Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:33.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:38.248Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:43.246Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:48.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:53.248Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:22:58.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:22:58.248Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.477Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.478Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.478Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.480Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:25:30.481Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:30.481Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:30.482Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:25:30.482Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:30.482Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:25:30.482Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:25:30.483Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:25:30.483Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:30.483Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:35.478Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:40.479Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:45.477Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:50.476Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:25:55.478Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:26:00.476Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:26:00.477Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:10.369Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:10.369Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:10.369Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:10.371Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:30:10.371Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:10.371Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:30:10.372Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:10.372Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:10.372Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:30:10.372Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:30:10.373Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:30:10.373Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:30:10.374Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:30.260Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:30.261Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:30.261Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:30.264Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:30.264Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:30.264Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:30.264Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:32:30.264Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:30.264Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:32:30.264Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:30.265Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:32:30.266Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:30.266Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:03.283Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:03.283Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:03.284Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:03.286Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:25:03.287Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:03.287Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:03.288Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:03.288Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:03.288Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:25:03.289Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:03.289Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:25:03.289Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:03.289Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.525Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.525Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.525Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.526Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:08.527Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:08.527Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:35:08.527Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:08.528Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:35:08.528Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:08.528Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:08.528Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:35:08.529Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:08.529Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.175Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.175Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.175Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.175Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:48.176Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:48.176Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:41:48.176Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:48.177Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:41:48.177Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:48.178Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:48.178Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:41:48.178Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.178Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:56.255Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:56.255Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:56.256Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:56.256Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:56.256Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:56.257Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:49:56.257Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:56.257Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:56.257Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:56.258Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:49:56.258Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:56.258Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:49:56.258Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.778Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.778Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.778Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.778Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:13.779Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:13.779Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:13.779Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:55:13.779Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:13.781Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:55:13.781Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:13.781Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:55:13.781Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:13.781Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:13.241Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:13.242Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:13.242Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:13.244Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:03:13.244Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:13.245Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:13.245Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:03:13.246Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:13.246Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:13.246Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:13.247Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:03:13.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:13.247Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:22.339Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:22.339Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:22.340Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:22.342Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:22.342Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:17:22.342Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:22.343Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:17:22.343Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:22.343Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:22.344Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:22.344Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:17:22.344Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:22.345Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.782Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.783Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.784Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.785Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:07.785Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:07.785Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:40:07.785Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:07.785Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:07.785Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:40:07.785Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:07.787Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:40:07.787Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:07.787Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-proj-wf.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-proj-wf.jsonl new file mode 100644 index 00000000..01b35566 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-proj-wf.jsonl @@ -0,0 +1,117 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.046Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:31.046Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:31.049Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:32:31.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:31.050Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:32:31.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:31.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:31.050Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:32:31.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:31.050Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.102Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.102Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.102Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:04.104Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:04.104Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:25:04.105Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.105Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:04.105Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:04.105Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:25:04.106Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:04.108Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:25:04.108Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:04.108Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.277Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.277Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.278Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:09.278Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:09.278Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:35:09.278Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:09.278Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.278Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:09.278Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:35:09.278Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:09.281Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:35:09.281Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:09.281Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.976Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.977Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.977Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.979Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:48.979Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:48.979Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:41:48.979Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:48.979Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:41:48.980Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:48.980Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:41:48.980Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:48.982Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:48.982Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.042Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.042Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.042Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.045Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:14.599Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:14.599Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:14.600Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:14.605Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:14.606Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.058Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.058Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.059Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.059Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:14.059Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:14.060Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:14.060Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:03:14.060Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:14.060Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:03:14.060Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:14.060Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:03:14.061Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:14.061Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.171Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.171Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.171Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.174Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:23.174Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:23.174Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:17:23.174Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:23.174Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:23.176Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:17:23.176Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:23.176Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:23.176Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:17:23.177Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:08.617Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:08.618Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:08.619Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:08.621Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:08.621Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:40:08.622Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:08.622Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:08.622Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:08.622Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:40:08.622Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:08.622Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:40:08.622Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:08.622Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-squad-free.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-squad-free.jsonl new file mode 100644 index 00000000..9e306fe2 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-squad-free.jsonl @@ -0,0 +1,39 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:11.258Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:11.258Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:11.259Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:11.262Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:10:11.262Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:11.262Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:10:11.262Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:11.262Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:11.262Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:10:11.262Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:10:11.262Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:10:11.263Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:10:11.263Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.435Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.436Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.436Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:24:53.436Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.438Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:53.438Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:53.438Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:24:53.439Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:53.439Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:24:53.439Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:24:53.439Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:24:53.439Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:24:53.440Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.838Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.838Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.841Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:45:14.841Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.841Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:14.842Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:45:14.842Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:14.842Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:45:14.842Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:14.842Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:45:14.842Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:45:14.842Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:45:14.842Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-squad-wf.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-squad-wf.jsonl new file mode 100644 index 00000000..645147db --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-squad-wf.jsonl @@ -0,0 +1,117 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:32.029Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:32.029Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:32.032Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:436:2697","ts":"2026-09-26T03:32:32.032Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:32.032Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-I90hqfds.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-I90hqfds.js:463:3951","ts":"2026-09-26T03:32:32.032Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:32.032Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:32.032Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at T_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7452)","ts":"2026-09-26T03:32:32.033Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:32.033Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T03:32:32.033Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T03:32:32.033Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at C_ (http://127.0.0.1:8080/assets/index-I90hqfds.js:54:7112)","ts":"2026-09-26T03:32:32.033Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:05.135Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:05.135Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:05.135Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:25:05.135Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:05.135Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:05.136Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:25:05.136Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:05.136Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:05.136Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:25:05.136Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:25:05.139Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:25:05.139Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:25:05.139Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:10.259Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:10.259Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:10.259Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:10.261Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:35:10.262Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:10.262Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:10.262Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:35:10.262Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:10.264Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:35:10.264Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:35:10.264Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:35:10.264Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:35:10.264Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.964Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.964Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.964Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:41:49.964Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.965Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:49.965Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:41:49.965Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:49.965Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:49.965Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:41:49.965Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:41:49.966Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:41:49.968Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:41:49.968Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.989Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.989Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.989Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.989Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:49:57.989Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.989Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:49:57.990Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.990Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.990Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:49:57.990Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:49:57.990Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:49:57.990Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:49:57.992Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.633Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.633Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.633Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.640Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T04:55:15.640Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:15.640Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T04:55:15.641Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:15.641Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:15.641Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T04:55:15.641Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T04:55:15.642Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T04:55:15.642Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T04:55:15.642Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:15.027Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:15.027Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:15.027Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:15.029Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:03:15.030Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:24.190Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:24.190Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:24.190Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:24.193Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:17:24.193Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:24.193Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:24.193Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:17:24.193Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:24.193Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:17:24.194Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:17:24.194Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:17:24.194Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:17:24.194Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.677Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.677Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.678Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.678Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:40:09.678Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:09.678Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:40:09.679Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:09.682Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:09.682Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:40:09.682Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:40:09.682Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:40:09.682Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:40:09.682Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-upload.jsonl b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-upload.jsonl new file mode 100644 index 00000000..68430155 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/console-upload.jsonl @@ -0,0 +1,39 @@ +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:11:41.789Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:11:41.790Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:11:41.790Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:11:41.793Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at z_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7452)","ts":"2026-09-26T05:11:41.793Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:11:41.793Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at sm (http://127.0.0.1:8080/assets/index-DnAAyRch.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:463:3941","ts":"2026-09-26T05:11:41.794Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:11:41.794Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:11:41.794Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at Jx (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DnAAyRch.js:436:3330","ts":"2026-09-26T05:11:41.794Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T05:11:41.794Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at I_ (http://127.0.0.1:8080/assets/index-DnAAyRch.js:54:7112)","ts":"2026-09-26T05:11:41.794Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T05:11:41.795Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:23.965Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:23.965Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:23.966Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:23.969Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:436:3330","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-DiDScA-d.js:55:88607)\n at async http://127.0.0.1:8080/assets/index-DiDScA-d.js:463:3951","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7452)","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at R_ (http://127.0.0.1:8080/assets/index-DiDScA-d.js:54:7112)","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:26:23.970Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:45.388Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:45.388Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:45.388Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:45.394Z"} +{"kind":"console","level":"warning","text":"[deliverables] 工作流受控文档同步失败: Error: list project workflow documents failed: 403\n at lm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:55:88595)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:463:3951","ts":"2026-09-26T07:46:45.394Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 403 (Forbidden)","ts":"2026-09-26T07:46:45.395Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.395Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.395Z"} +{"kind":"console","level":"warning","text":"Failed to load date stats: Error: fetchChatDates failed: HTTP 404\n at D_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7112)","ts":"2026-09-26T07:46:45.395Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.395Z"} +{"kind":"console","level":"warning","text":"[useChatWindow] fetch window failed, falling back to local cache/fallback Error: fetchChatWindow failed: HTTP 404\n at nm (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:6112)\n at async http://127.0.0.1:8080/assets/index-CrRH72Vb.js:436:3330","ts":"2026-09-26T07:46:45.395Z"} +{"kind":"console","level":"error","text":"Failed to load resource: the server responded with a status of 404 (Not Found)","ts":"2026-09-26T07:46:45.395Z"} +{"kind":"console","level":"warning","text":"Failed to load category stats: Error: fetchChatCategories failed: HTTP 404\n at A_ (http://127.0.0.1:8080/assets/index-CrRH72Vb.js:54:7452)","ts":"2026-09-26T07:46:45.395Z"} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-2026-09-26T0717.stdout b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-2026-09-26T0717.stdout new file mode 100644 index 00000000..666779e4 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-2026-09-26T0717.stdout @@ -0,0 +1,30 @@ +IMAGE=mcr.microsoft.com/playwright:v1.63.0-noble BASE_URL=http://127.0.0.1:8080 ASSETS=/home/weichen/projects/Agent-System/.worktrees/full-system-browser-e2e-2026-09-26/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e WT=/home/weichen/projects/Agent-System/.worktrees/full-system-browser-e2e-2026-09-26 + +Running 21 tests using 1 worker + + ✓ 1 [chromium] › e2e/full-system-browser-e2e.spec.ts:687:3 › full-system browser multi-user E2E › FS-IAM-01 admin creates multi-role users via UI (2.0s) + ✓ 2 [chromium] › e2e/full-system-browser-e2e.spec.ts:739:3 › full-system browser multi-user E2E › FS-IAM-02 first-login password change for all e2e users (2.0s) + ✓ 3 [chromium] › e2e/full-system-browser-e2e.spec.ts:784:3 › full-system browser multi-user E2E › FS-PROJ-01 create project + add members with roles (863ms) + ✓ 4 [chromium] › e2e/full-system-browser-e2e.spec.ts:861:3 › full-system browser multi-user E2E › FS-PROJ-02 activate workflow with author/reviewer/approver duties (640ms) + ✓ 5 [chromium] › e2e/full-system-browser-e2e.spec.ts:904:3 › full-system browser multi-user E2E › FS-CHAT-01 casual multi-turn dialogue (368ms) + ✓ 6 [chromium] › e2e/full-system-browser-e2e.spec.ts:946:3 › full-system browser multi-user E2E › FS-SQUAD-WF-01 generate workflow intake document (real PI) (6.2m) + ✓ 7 [chromium] › e2e/full-system-browser-e2e.spec.ts:1004:3 › full-system browser multi-user E2E › FS-DOC-REV-01 author edit controlled doc (1.1s) + ✓ 8 [chromium] › e2e/full-system-browser-e2e.spec.ts:1049:3 › full-system browser multi-user E2E › FS-NONAUTH-01 non-author member can edit after claim (1.1s) + ✓ 9 [chromium] › e2e/full-system-browser-e2e.spec.ts:1116:3 › full-system browser multi-user E2E › FS-NONAUTH-02 non-author submit gated (duty) (593ms) + ✓ 10 [chromium] › e2e/full-system-browser-e2e.spec.ts:1176:3 › full-system browser multi-user E2E › FS-DOC-REV-02 author submit for review (698ms) + ✓ 11 [chromium] › e2e/full-system-browser-e2e.spec.ts:1219:3 › full-system browser multi-user E2E › FS-DOC-REV-03 reviewer rejects with reason (35.7s) + ✓ 12 [chromium] › e2e/full-system-browser-e2e.spec.ts:1268:3 › full-system browser multi-user E2E › FS-DOC-REV-04 author fix and resubmit (30.6s) + ✓ 13 [chromium] › e2e/full-system-browser-e2e.spec.ts:1314:3 › full-system browser multi-user E2E › FS-DOC-REV-05 reviewer pass (636ms) + ✓ 14 [chromium] › e2e/full-system-browser-e2e.spec.ts:1357:3 › full-system browser multi-user E2E › FS-DOC-REV-06 approver final approve (4.4s) + ✓ 15 [chromium] › e2e/full-system-browser-e2e.spec.ts:1400:3 › full-system browser multi-user E2E › FS-DOC-REV-07 cascade re-review if UI reachable (598ms) + ✓ 16 [chromium] › e2e/full-system-browser-e2e.spec.ts:1472:3 › full-system browser multi-user E2E › FS-ASSIST-01 assistant-style task prompt (406ms) + ✓ 17 [chromium] › e2e/full-system-browser-e2e.spec.ts:1516:3 › full-system browser multi-user E2E › FS-SQUAD-FREE-01 complex free / adhoc task (1.5m) + ✓ 18 [chromium] › e2e/full-system-browser-e2e.spec.ts:1567:3 › full-system browser multi-user E2E › FS-UPLOAD-01 upload attachment → freeform register (483ms) + ✓ 19 [chromium] › e2e/full-system-browser-e2e.spec.ts:1633:3 › full-system browser multi-user E2E › FS-KB-01 admin KB console readonly check (1.1s) + ✓ 20 [chromium] › e2e/full-system-browser-e2e.spec.ts:1678:3 › full-system browser multi-user E2E › FS-CTX-01 context injection observation (644ms) + ✓ 21 [chromium] › e2e/full-system-browser-e2e.spec.ts:1737:3 › full-system browser multi-user E2E › FS-CONSOLE-01 aggregate console errors across roles (1ms) + + Slow test file: [chromium] › e2e/full-system-browser-e2e.spec.ts (9.1m) + Consider running tests from slow files in parallel. See: https://playwright.dev/docs/test-parallel + 21 passed (9.1m) +EXIT:0 diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-20260926T074002Z.stdout b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-20260926T074002Z.stdout new file mode 100644 index 00000000..6f26ff79 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-20260926T074002Z.stdout @@ -0,0 +1,29 @@ +IMAGE=mcr.microsoft.com/playwright:v1.63.0-noble BASE_URL=http://127.0.0.1:8080 ASSETS=/home/weichen/projects/Agent-System/.worktrees/full-system-browser-e2e-2026-09-26/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e WT=/home/weichen/projects/Agent-System/.worktrees/full-system-browser-e2e-2026-09-26 + +Running 21 tests using 1 worker + + ✓ 1 [chromium] › e2e/full-system-browser-e2e.spec.ts:687:3 › full-system browser multi-user E2E › FS-IAM-01 admin creates multi-role users via UI (2.1s) + ✓ 2 [chromium] › e2e/full-system-browser-e2e.spec.ts:739:3 › full-system browser multi-user E2E › FS-IAM-02 first-login password change for all e2e users (2.1s) + ✓ 3 [chromium] › e2e/full-system-browser-e2e.spec.ts:784:3 › full-system browser multi-user E2E › FS-PROJ-01 create project + add members with roles (828ms) + ✓ 4 [chromium] › e2e/full-system-browser-e2e.spec.ts:861:3 › full-system browser multi-user E2E › FS-PROJ-02 activate workflow with author/reviewer/approver duties (645ms) + ✓ 5 [chromium] › e2e/full-system-browser-e2e.spec.ts:904:3 › full-system browser multi-user E2E › FS-CHAT-01 casual multi-turn dialogue (383ms) + ✓ 6 [chromium] › e2e/full-system-browser-e2e.spec.ts:946:3 › full-system browser multi-user E2E › FS-SQUAD-WF-01 generate workflow intake document (real PI) (4.9m) + ✓ 7 [chromium] › e2e/full-system-browser-e2e.spec.ts:1004:3 › full-system browser multi-user E2E › FS-DOC-REV-01 author edit controlled doc (1.1s) + ✓ 8 [chromium] › e2e/full-system-browser-e2e.spec.ts:1049:3 › full-system browser multi-user E2E › FS-NONAUTH-01 non-author member can edit after claim (1.1s) + ✓ 9 [chromium] › e2e/full-system-browser-e2e.spec.ts:1116:3 › full-system browser multi-user E2E › FS-NONAUTH-02 non-author submit gated (duty) (579ms) + ✓ 10 [chromium] › e2e/full-system-browser-e2e.spec.ts:1176:3 › full-system browser multi-user E2E › FS-DOC-REV-02 author submit for review (717ms) + ✓ 11 [chromium] › e2e/full-system-browser-e2e.spec.ts:1219:3 › full-system browser multi-user E2E › FS-DOC-REV-03 reviewer rejects with reason (5.7s) + ✓ 12 [chromium] › e2e/full-system-browser-e2e.spec.ts:1268:3 › full-system browser multi-user E2E › FS-DOC-REV-04 author fix and resubmit (1.2s) + ✓ 13 [chromium] › e2e/full-system-browser-e2e.spec.ts:1314:3 › full-system browser multi-user E2E › FS-DOC-REV-05 reviewer pass (683ms) + ✓ 14 [chromium] › e2e/full-system-browser-e2e.spec.ts:1357:3 › full-system browser multi-user E2E › FS-DOC-REV-06 approver final approve (1.9s) + ✓ 15 [chromium] › e2e/full-system-browser-e2e.spec.ts:1400:3 › full-system browser multi-user E2E › FS-DOC-REV-07 cascade re-review if UI reachable (623ms) + ✓ 16 [chromium] › e2e/full-system-browser-e2e.spec.ts:1472:3 › full-system browser multi-user E2E › FS-ASSIST-01 assistant-style task prompt (391ms) + ✓ 17 [chromium] › e2e/full-system-browser-e2e.spec.ts:1516:3 › full-system browser multi-user E2E › FS-SQUAD-FREE-01 complex free / adhoc task (1.5m) + ✓ 18 [chromium] › e2e/full-system-browser-e2e.spec.ts:1567:3 › full-system browser multi-user E2E › FS-UPLOAD-01 upload attachment → freeform register (496ms) + ✓ 19 [chromium] › e2e/full-system-browser-e2e.spec.ts:1633:3 › full-system browser multi-user E2E › FS-KB-01 admin KB console readonly check (1.1s) + ✓ 20 [chromium] › e2e/full-system-browser-e2e.spec.ts:1678:3 › full-system browser multi-user E2E › FS-CTX-01 context injection observation (648ms) + ✓ 21 [chromium] › e2e/full-system-browser-e2e.spec.ts:1737:3 › full-system browser multi-user E2E › FS-CONSOLE-01 aggregate console errors across roles (1ms) + + Slow test file: [chromium] › e2e/full-system-browser-e2e.spec.ts (6.7m) + Consider running tests from slow files in parallel. See: https://playwright.dev/docs/test-parallel + 21 passed (6.7m) diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-start.txt b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-start.txt new file mode 100644 index 00000000..87c7cf9b --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/e2e-rerun-start.txt @@ -0,0 +1,4 @@ +E2E_START=2026-09-26T05:03:07Z +WRAP_PID=2678967 +EXIT:0 +E2E_END=2026-09-26T05:12:28Z diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-after-web-deploy.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-after-web-deploy.json new file mode 100644 index 00000000..9d6065da --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-after-web-deploy.json @@ -0,0 +1 @@ +{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5433,"kb_ready":true,"database_ready":true,"schema_version":75,"schema_ready":true,"task_store_ready":true,"vault_identity_ok":false,"vault_connected":false,"vault_lag_ok":true,"events_ready":true} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-after.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-after.json new file mode 100644 index 00000000..9d6065da --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-after.json @@ -0,0 +1 @@ +{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5433,"kb_ready":true,"database_ready":true,"schema_version":75,"schema_ready":true,"task_store_ready":true,"vault_identity_ok":false,"vault_connected":false,"vault_lag_ok":true,"events_ready":true} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-pre-probe.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-pre-probe.json new file mode 100644 index 00000000..9d6065da --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/health-pre-probe.json @@ -0,0 +1 @@ +{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5433,"kb_ready":true,"database_ready":true,"schema_version":75,"schema_ready":true,"task_store_ready":true,"vault_identity_ok":false,"vault_connected":false,"vault_lag_ok":true,"events_ready":true} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/messageIdentity-unittest.txt b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/messageIdentity-unittest.txt new file mode 100644 index 00000000..2921f606 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/messageIdentity-unittest.txt @@ -0,0 +1,15 @@ +✔ isSameMessage: clientTurnId match (0.511655ms) +✔ isSameMessage: serverId match without turn (0.095287ms) +✔ filterPendingLiveMessages: real temp vs server id (0.088758ms) +✔ mergeLiveOverHistory preserves server id from live (0.107677ms) +✔ mergeLiveOverHistory does not let inflight live mask terminal history (0.084268ms) +✔ mergeLiveOverHistory keeps live terminal over history inflight (0.053848ms) +ℹ tests 6 +ℹ suites 0 +ℹ pass 6 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 73.489258 +EXIT:0 diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/msg243-readonly-probe.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/msg243-readonly-probe.json new file mode 100644 index 00000000..5a69710c --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/msg243-readonly-probe.json @@ -0,0 +1,103 @@ +{ + "probe_id": "msg243-readonly-probe", + "probed_at": "2026-09-26T04:24:49Z", + "authorization": "read-only; no secrets in this file", + "shell_status": { + "usable": true, + "error": null, + "impact": "live admin login + DB SELECT agent_system_dev + GET /api/v1/tasks/runs/{id}" + }, + "login": { + "http_status": 200, + "user": { + "id": 4, + "username": "admin", + "role_id": "role-admin" + }, + "has_token": true + }, + "project": { + "name": "E2E全量-20260926-muhu39da", + "project_id": 6012, + "session_id": "sess-p6012-u20", + "session_owner_user_id": 20, + "api_chat_messages": "FORBIDDEN_FOR_ADMIN (403) — owner session; used DB instead", + "api_lookup": "OK" + }, + "message_243": { + "ui_data_server_id": 243, + "ui_data_chat_status_observed": "pending", + "ui_observation_source": [ + "playwright.log FS-SQUAD-WF-01", + "ui-results.json FS-SQUAD-WF-01", + "error-context.md page snapshot" + ], + "ui_snapshot_at_timeout": { + "chip": "执行中", + "elapsed_label": "已用 14m 59s", + "phases": [ + "组建小队已完成", + "专员执行已完成", + "质量门禁已完成", + "参谋简报已完成" + ], + "quality_label": "用户初始需求收集表 · 质量 100", + "content_placeholder": "任务执行中…" + }, + "db": { + "id": 243, + "session_id": "sess-p6012-u20", + "role": "assistant", + "content_prefix": "《用户初始需求收集表》已生成。\n\n当前状态:**已完成**\n质量评分:100/100\n\n📄 受控文档:`doc_proj6012_bd_intake`", + "task_status": "completed", + "run_id": "run_1790393552136040254", + "task_key": "bd_intake", + "workspace_id": "bizdev", + "created_at": "2026-09-26 03:32:32.141957+00" + }, + "metadata_task_status_db_or_api": "completed", + "content_snippet_desensitized": "《用户初始需求收集表》已生成。\n\n当前状态:**已完成**\n质量评分:100/100\n\n📄 受控文档:`doc_proj6012_bd_intake`" + }, + "task_run": { + "run_id": "run_1790393552136040254", + "from_db": { + "run_id": "run_1790393552136040254", + "status": "completed", + "workspace_id": "data/dev/workspaces/bizdev/bd_intake_1790393552151447446", + "project_id": 6012, + "user_id": 20, + "session_id": "sess-p6012-u20", + "assistant_message_id": 243, + "task_key": "bd_intake", + "stage": "", + "error_prefix": "", + "created_at": "2026-09-26 03:32:32.136168+00", + "updated_at": "2026-09-26 03:37:01.805334+00" + }, + "api_http": 200, + "from_api": { + "run_id": "run_1790393552136040254", + "status": "completed", + "workspace_id": "data/dev/workspaces/bizdev/bd_intake_1790393552151447446", + "project_id": 6012, + "user_id": 20, + "session_id": "sess-p6012-u20", + "assistant_message_id": 243, + "task_key": "bd_intake", + "stage": "", + "error_message": "" + }, + "api_path": "/api/v1/tasks/runs/run_1790393552136040254" + }, + "mismatch_summary": { + "backend_task_run_status": "completed", + "db_metadata_task_status": "completed", + "ui_bubble_data_chat_status": "pending (stuck through ~15m Playwright wait)", + "metadata_updated_to_completed": "YES", + "hypothesis": { + "primary": "SSE_DONE_NOT_APPLIED_OR_LIVE_MASKS_HISTORY", + "detail": "DB metadata.task_status=completed and task_runs.status=completed; UI data-chat-status stayed pending. Client missed EventDone and/or inflight live bubble masked terminal history (fetchChatWindow 404).", + "fix_shipped": "mergeLiveOverHistory prefers history terminal over inflight live; E2E reload-heal + 2.1m describe timeout" + } + } +} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/playwright-output-main/.last-run.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/playwright-output-main/.last-run.json new file mode 100644 index 00000000..cbcc1fba --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/playwright-output-main/.last-run.json @@ -0,0 +1,4 @@ +{ + "status": "passed", + "failedTests": [] +} \ No newline at end of file diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/playwright.log b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/playwright.log new file mode 100644 index 00000000..484c53ca --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/playwright.log @@ -0,0 +1,28 @@ + +Running 21 tests using 1 worker + + ✓ 1 [chromium] › e2e/full-system-browser-e2e.spec.ts:687:3 › full-system browser multi-user E2E › FS-IAM-01 admin creates multi-role users via UI (2.1s) + ✓ 2 [chromium] › e2e/full-system-browser-e2e.spec.ts:739:3 › full-system browser multi-user E2E › FS-IAM-02 first-login password change for all e2e users (2.1s) + ✓ 3 [chromium] › e2e/full-system-browser-e2e.spec.ts:784:3 › full-system browser multi-user E2E › FS-PROJ-01 create project + add members with roles (828ms) + ✓ 4 [chromium] › e2e/full-system-browser-e2e.spec.ts:861:3 › full-system browser multi-user E2E › FS-PROJ-02 activate workflow with author/reviewer/approver duties (645ms) + ✓ 5 [chromium] › e2e/full-system-browser-e2e.spec.ts:904:3 › full-system browser multi-user E2E › FS-CHAT-01 casual multi-turn dialogue (383ms) + ✓ 6 [chromium] › e2e/full-system-browser-e2e.spec.ts:946:3 › full-system browser multi-user E2E › FS-SQUAD-WF-01 generate workflow intake document (real PI) (4.9m) + ✓ 7 [chromium] › e2e/full-system-browser-e2e.spec.ts:1004:3 › full-system browser multi-user E2E › FS-DOC-REV-01 author edit controlled doc (1.1s) + ✓ 8 [chromium] › e2e/full-system-browser-e2e.spec.ts:1049:3 › full-system browser multi-user E2E › FS-NONAUTH-01 non-author member can edit after claim (1.1s) + ✓ 9 [chromium] › e2e/full-system-browser-e2e.spec.ts:1116:3 › full-system browser multi-user E2E › FS-NONAUTH-02 non-author submit gated (duty) (579ms) + ✓ 10 [chromium] › e2e/full-system-browser-e2e.spec.ts:1176:3 › full-system browser multi-user E2E › FS-DOC-REV-02 author submit for review (717ms) + ✓ 11 [chromium] › e2e/full-system-browser-e2e.spec.ts:1219:3 › full-system browser multi-user E2E › FS-DOC-REV-03 reviewer rejects with reason (5.7s) + ✓ 12 [chromium] › e2e/full-system-browser-e2e.spec.ts:1268:3 › full-system browser multi-user E2E › FS-DOC-REV-04 author fix and resubmit (1.2s) + ✓ 13 [chromium] › e2e/full-system-browser-e2e.spec.ts:1314:3 › full-system browser multi-user E2E › FS-DOC-REV-05 reviewer pass (683ms) + ✓ 14 [chromium] › e2e/full-system-browser-e2e.spec.ts:1357:3 › full-system browser multi-user E2E › FS-DOC-REV-06 approver final approve (1.9s) + ✓ 15 [chromium] › e2e/full-system-browser-e2e.spec.ts:1400:3 › full-system browser multi-user E2E › FS-DOC-REV-07 cascade re-review if UI reachable (623ms) + ✓ 16 [chromium] › e2e/full-system-browser-e2e.spec.ts:1472:3 › full-system browser multi-user E2E › FS-ASSIST-01 assistant-style task prompt (391ms) + ✓ 17 [chromium] › e2e/full-system-browser-e2e.spec.ts:1516:3 › full-system browser multi-user E2E › FS-SQUAD-FREE-01 complex free / adhoc task (1.5m) + ✓ 18 [chromium] › e2e/full-system-browser-e2e.spec.ts:1567:3 › full-system browser multi-user E2E › FS-UPLOAD-01 upload attachment → freeform register (496ms) + ✓ 19 [chromium] › e2e/full-system-browser-e2e.spec.ts:1633:3 › full-system browser multi-user E2E › FS-KB-01 admin KB console readonly check (1.1s) + ✓ 20 [chromium] › e2e/full-system-browser-e2e.spec.ts:1678:3 › full-system browser multi-user E2E › FS-CTX-01 context injection observation (648ms) + ✓ 21 [chromium] › e2e/full-system-browser-e2e.spec.ts:1737:3 › full-system browser multi-user E2E › FS-CONSOLE-01 aggregate console errors across roles (1ms) + + Slow test file: [chromium] › e2e/full-system-browser-e2e.spec.ts (6.7m) + Consider running tests from slow files in parallel. See: https://playwright.dev/docs/test-parallel + 21 passed (6.7m) diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/post-wipe-stats.txt b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/post-wipe-stats.txt new file mode 100644 index 00000000..e15101b0 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/post-wipe-stats.txt @@ -0,0 +1,6 @@ +captured_at=2026-09-26T03:10:34+00:00 +users_total=4 +usernames=admin,seed-admin,seed-lizhuguan,seed-zhanggong +seed_demo_present=0 +projects=10 +goose_version=75 diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/agent_system_dev.dump b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/agent_system_dev.dump new file mode 100644 index 00000000..bd31e7e6 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/agent_system_dev.dump differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/health-before.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/health-before.json new file mode 100644 index 00000000..9d6065da --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/health-before.json @@ -0,0 +1 @@ +{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5433,"kb_ready":true,"database_ready":true,"schema_version":75,"schema_ready":true,"task_store_ready":true,"vault_identity_ok":false,"vault_connected":false,"vault_lag_ok":true,"events_ready":true} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/pre-wipe-stats.txt b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/pre-wipe-stats.txt new file mode 100644 index 00000000..9e1d58fe --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/pre-wipe-stats.txt @@ -0,0 +1,4 @@ +captured_at=2026-09-26T03:08:46+00:00 +users=424 +projects=769 +goose_version=75 diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/ready-before.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/ready-before.json new file mode 100644 index 00000000..9d6065da --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/pre-wipe/ready-before.json @@ -0,0 +1 @@ +{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5433,"kb_ready":true,"database_ready":true,"schema_version":75,"schema_ready":true,"task_store_ready":true,"vault_identity_ok":false,"vault_connected":false,"vault_lag_ok":true,"events_ready":true} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/probe-summary-msg243.md b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/probe-summary-msg243.md new file mode 100644 index 00000000..0c534d0a --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/probe-summary-msg243.md @@ -0,0 +1,29 @@ +# Probe summary — msg 243 / project muhu39da (readonly) + +Probed_at: 2026-09-26T04:24:49Z (JSON: `msg243-readonly-probe.json`) +Rerun E2E start: 2026-09-26T04:24:57Z (new prefix `muhvyubx`; prior accounts `muhu39da` retained) + +## Facts + +| Layer | Observation | +|---|---| +| DB `messages.id=243` | `task_status=completed`, content says 已完成 / quality 100 | +| API `GET /api/v1/tasks/runs/run_1790393552136040254` | `status=completed` (~4m wall: created 03:32 → updated 03:37) | +| UI Playwright | `data-server-id=243` stuck `data-chat-status="pending"` for ~15m | + +## Causal split + +1. **Mapping bug (primary, confirmed in code)**: `mergeLiveOverHistory` preferred inflight live status over terminal history → completed history masked as `pending`. +2. **SSE gap**: stream EOF without applying `done`; client stayed on live pending bubble. +3. **Poll/heal gap**: no `onGap` settle from remote run status after reconnect; chat-window refresh alone insufficient when live masks history. + +## Fix shipped in worktree (pre-rerun) + +- `resolveMergedMessageStatus` — history terminal wins over inflight live +- `taskRuns.subscribe` `onGap` + `settleFromRemoteIfTerminal` / `subscribeWithGapHeal` +- E2E `waitForSquadCompletion` mid-wait reload-heal + describe timeout 2.1m +- Web dist built + rsynced to MAIN `web/dist` (index hashes match) + +## Verdict for prior FAIL + +Not “PI unfinished”. Backend terminal; frontend mapping + SSE/poll heal missing → UI pending. diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/ready-after.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/ready-after.json new file mode 100644 index 00000000..9d6065da --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/ready-after.json @@ -0,0 +1 @@ +{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5433,"kb_ready":true,"database_ready":true,"schema_version":75,"schema_ready":true,"task_store_ready":true,"vault_identity_ok":false,"vault_connected":false,"vault_lag_ok":true,"events_ready":true} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/resume-after-shell-ok.sh b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/resume-after-shell-ok.sh new file mode 100644 index 00000000..ca2bc4ff --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/resume-after-shell-ok.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# Parent/host resume after Cursor Shell recovers from spawn /bin/bash ENOENT. +# Run from any cwd. Requires working shell + docker (for E2E). +set -euo pipefail + +ROOT="/home/weichen/projects/Agent-System" +WT="$ROOT/.worktrees/full-system-browser-e2e-2026-09-26" +TASK="full-system-browser-e2e-2026-09-26" +WEB="$WT/web" +ASSETS="$WT/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e" + +echo "== B) catalog overlap ==" +cd "$ROOT" +python3 scripts/agentctl.py catalog overlap \ + --task "$TASK" \ + --statement '修复成员 drafting 可编辑、驳回确认 await、freeform 展开右侧栏' + +# If soft overlap: ack proceed (adjust flags if CLI differs) +# python3 scripts/agentctl.py catalog ack --task "$TASK" --decision proceed --reason 'continue full-system e2e product fix' + +echo "== C) build + unit test ==" +cd "$WEB" +npm run build +npx tsx --test src/lib/draftingEditAffordance.test.ts + +echo "== D) rsync dist -> main ==" +rsync -a --delete "$WEB/dist/" "$ROOT/web/dist/" + +echo "== E) Docker E2E ==" +cd "$WEB" +bash scripts/run-full-system-browser-e2e.sh +# Expect ledger update under: +# $WT/.doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md +# $ASSETS/ui-results.json + +echo "== F) two agentctl commits ==" +cd "$WT" +python3 "$ROOT/scripts/agentctl.py" with \ + --task "$TASK" \ + --resource path:web --resource path:.doc --resource git:index \ + -- bash -lc 'git add web/src/components/layout/AppShell.tsx web/src/hooks/useSendMessage.ts web/src/hooks/useFreeformDocActions.ts web/src/App.tsx web/src/lib/expandRightDocRail.ts web/src/lib/draftingEditAffordance.ts web/src/lib/draftingEditAffordance.test.ts web/src/components/doc/BlockRenderer.tsx web/src/components/doc/DocumentPane.tsx web/src/components/doc/DocGovActionBar.tsx web/src/hooks/useDocumentLifecycleActions.ts && git status && git commit -m "$(cat <<'\''EOF'\'' +fix(web): member drafting edit + reject await + expand right rail + +EOF +)"' + +python3 "$ROOT/scripts/agentctl.py" with \ + --task "$TASK" \ + --resource path:.doc --resource git:index \ + -- bash -lc 'git add .doc/test-reports/2026-09-26-full-system-browser-e2e-test-report.md .doc/test-reports/assets/2026-09-26-full-system-browser-e2e && git status && git commit -m "$(cat <<'\''EOF'\'' +docs(test): full-system browser e2e re-run ledger + +EOF +)"' + +echo "== done; print SHAs ==" +git -C "$WT" log -2 --oneline diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/retained-accounts.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/retained-accounts.json new file mode 100644 index 00000000..bfe24fc7 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/retained-accounts.json @@ -0,0 +1,34 @@ +{ + "note": "Passwords in audit-login-credentials.md (local audit only). Accounts retained after E2E by design — do not wipe.", + "projectName": "E2E全量-20260926-mui2xpg2", + "usernames": [ + "e2e26_author_mui2xpg2", + "e2e26_reviewer_mui2xpg2", + "e2e26_approver_mui2xpg2", + "e2e26_member_mui2xpg2", + "e2e26_guest_mui2xpg2" + ], + "roles": { + "author": "e2e26_author_mui2xpg2", + "reviewer": "e2e26_reviewer_mui2xpg2", + "approver": "e2e26_approver_mui2xpg2", + "member": "e2e26_member_mui2xpg2", + "guest": "e2e26_guest_mui2xpg2" + }, + "credentials_file": "audit-login-credentials.md", + "inventory_file": "retained-inventory.md", + "all_suffixes": [ + "mui2xpg2", + "mui24fzd", + "muhxbx7y", + "muhx1ncl", + "muhwuua6", + "muhwkdms", + "muhwbtbv", + "muhvyubx", + "muhu39da", + "muhu09f2", + "muhtu9gc", + "muhtqcok" + ] +} diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/retained-inventory.md b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/retained-inventory.md new file mode 100644 index 00000000..da2a44e1 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/retained-inventory.md @@ -0,0 +1,69 @@ +# E2E 保留数据清单(retained inventory) + +> 核实时间:2026-09-26(`/health` ok,schema 75;wipe 仅发生在当日 03:08–03:10,**之后未再清库**)。 +> 证据:wipe 后 users=4 → 现 users≥64(其中 `e2e26_*`=60);E2E 项目 id 6011–6020 仍在。 + +## 声明 + +**测试数据已全部保留,请勿清库 / 删项目 / 删用户。** + +## 跑次 suffix 清单 + +| suffix | 账本(P/F/S) | 项目 id | 项目名 | 关键 intake | 备注 | +|---|---|---:|---|---|---| +| `mui2xpg2` | **20/0/1** FINAL | 6020 | E2E全量-20260926-mui2xpg2 | `doc_proj6020_bd_intake` **approved** | reject portal 修复后重跑 | +| `mui24fzd` | 18/2/1 | 6019 | E2E全量-20260926-mui24fzd | `doc_proj6019_bd_intake` approved | REV-03/04 曾 FAIL | +| `muhxbx7y` | (无完整 ui-results 落盘) | 6018 | E2E全量-20260926-muhxbx7y | `doc_proj6018_bd_intake` approved | 有 upload-muhxbx7y.txt;用户可登录 | +| `muhx1ncl` | 5/2/0 | 6017 | E2E全量-20260926-muhx1ncl | — | 早期中断 | +| `muhwuua6` | 9/2/0 | 6016 | E2E全量-20260926-muhwuua6 | `doc_proj6016_bd_intake` reviewing | best 中间态 | +| `muhwkdms` | 5/1/0 | 6015 | E2E全量-20260926-muhwkdms | — | 早期中断 | +| `muhwbtbv` | 5/1/0 | 6014 | E2E全量-20260926-muhwbtbv | — | 早期中断 | +| `muhvyubx` | 7/1/0 | 6013 | E2E全量-20260926-muhvyubx | `doc_proj6013_bd_intake` | pending heal 后 | +| `muhu39da` | 5/1/0 | 6012 | E2E全量-20260926-muhu39da | `doc_proj6012_bd_intake` | msg243 探针项目 | +| `muhu09f2` | (无完整账本) | 6011 | E2E全量-20260926-muhu09f2 | 文档列表空 | 立项后未完成编队 | +| `muhtu9gc` | — | — | — | — | 仅 IAM(5 用户),无项目行 | +| `muhtqcok` | — | — | — | — | 仅 IAM(5 用户),无项目行 | + +## 账号规模 + +- 前缀 `e2e26_`:**60** 用户(12 suffix × 5 角色) +- 角色:author / reviewer / approver / member / guest +- 凭据:见同目录 `audit-login-credentials.md` + +## 项目列表(API `/api/v1/projects`,admin) + +| id | name | +|---:|---| +| 6020 | E2E全量-20260926-mui2xpg2 | +| 6019 | E2E全量-20260926-mui24fzd | +| 6018 | E2E全量-20260926-muhxbx7y | +| 6017 | E2E全量-20260926-muhx1ncl | +| 6016 | E2E全量-20260926-muhwuua6 | +| 6015 | E2E全量-20260926-muhwkdms | +| 6014 | E2E全量-20260926-muhwbtbv | +| 6013 | E2E全量-20260926-muhvyubx | +| 6012 | E2E全量-20260926-muhu39da | +| 6011 | E2E全量-20260926-muhu09f2 | + +## FINAL 项目关键文档(6020) + +| doc_id | title | lifecycle | +|---|---|---| +| `doc_proj6020_bd_intake` | 用户初始需求收集表 | **approved** | +| `doc_proj6020_bd_cdo_quote` | CDO 报价单 | drafting | +| `doc_proj6020_bd_feasibility_dev` | 设计开发可行性评估报告 | drafting | +| `doc_proj6020_bd_feasibility_reg` | 注册路径可行性评估报告 | drafting | +| `doc_proj6020_bd_prelim_design` | 系统初步设计方案 | drafting | +| `doc_proj6020_bd_research` | 调研报告 | drafting | +| `doc_proj6020_bd_user_requirements` | 用户需求表 | drafting | +| `doc-free-1790408805539159882-60` | (上传自由文档) | — | + +## 环境指纹 + +| 项 | 值 | +|---|---| +| URL | http://127.0.0.1:8080 | +| schema | 75 | +| wipe | 仅 2026-09-26T03:08Z(见 `wipe-receipt.md`);之后禁止再 wipe | +| MAIN tip(服务) | `09cc76eb8d3d`(核对当时) | +| worktree tip | `7ab7d572b97f`+(本审计文档提交后更新) | diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/run-env.txt b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/run-env.txt new file mode 100644 index 00000000..b899b89f --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/run-env.txt @@ -0,0 +1 @@ +IMAGE=mcr.microsoft.com/playwright:v1.63.0-noble BASE_URL=http://127.0.0.1:8080 ASSETS=/home/weichen/projects/Agent-System/.worktrees/full-system-browser-e2e-2026-09-26/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e WT=/home/weichen/projects/Agent-System/.worktrees/full-system-browser-e2e-2026-09-26 diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/run-meta.json b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/run-meta.json new file mode 100644 index 00000000..c8fa9ceb --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/run-meta.json @@ -0,0 +1,29 @@ +{ + "startedAt": "2026-09-26T07:40:03.253Z", + "baseURL": "http://127.0.0.1:8080", + "display": "", + "headedHint": false, + "projectName": "E2E全量-20260926-mui2xpg2", + "users": { + "author": { + "username": "e2e26_author_mui2xpg2", + "display": "E2E编制-mui2xpg2" + }, + "reviewer": { + "username": "e2e26_reviewer_mui2xpg2", + "display": "E2E审核-mui2xpg2" + }, + "approver": { + "username": "e2e26_approver_mui2xpg2", + "display": "E2E批准-mui2xpg2" + }, + "member": { + "username": "e2e26_member_mui2xpg2", + "display": "E2E成员-mui2xpg2" + }, + "guest": { + "username": "e2e26_guest_mui2xpg2", + "display": "E2E访客-mui2xpg2" + } + } +} \ No newline at end of file diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/.gitkeep b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/.gitkeep new file mode 100644 index 00000000..ff028b01 --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/.gitkeep @@ -0,0 +1 @@ +# placeholder so screenshots/ exists in git evidence tree diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-ASSIST-01-reply.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-ASSIST-01-reply.png new file mode 100644 index 00000000..ed42610a Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-ASSIST-01-reply.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-CHAT-01-reply.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-CHAT-01-reply.png new file mode 100644 index 00000000..b19f164c Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-CHAT-01-reply.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-CTX-01.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-CTX-01.png new file mode 100644 index 00000000..7b205007 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-CTX-01.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-01-FAIL.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-01-FAIL.png new file mode 100644 index 00000000..3ddab50b Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-01-FAIL.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-01-edited.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-01-edited.png new file mode 100644 index 00000000..3ceb9d74 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-01-edited.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-02-submitted.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-02-submitted.png new file mode 100644 index 00000000..12ca50ab Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-02-submitted.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-03-FAIL.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-03-FAIL.png new file mode 100644 index 00000000..cd1880bf Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-03-FAIL.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-03-rejected.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-03-rejected.png new file mode 100644 index 00000000..e12d8a28 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-03-rejected.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-04-FAIL.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-04-FAIL.png new file mode 100644 index 00000000..9b7496ea Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-04-FAIL.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-04-resubmitted.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-04-resubmitted.png new file mode 100644 index 00000000..a68ad5c1 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-04-resubmitted.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-05-passed.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-05-passed.png new file mode 100644 index 00000000..725d5bb6 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-05-passed.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-06-approved.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-06-approved.png new file mode 100644 index 00000000..4e9cb7dd Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-06-approved.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-07-probe.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-07-probe.png new file mode 100644 index 00000000..44ca2406 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-DOC-REV-07-probe.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-01-admin-users.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-01-admin-users.png new file mode 100644 index 00000000..4e26fac1 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-01-admin-users.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-01-done.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-01-done.png new file mode 100644 index 00000000..b3b27b8d Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-01-done.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-02-done.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-02-done.png new file mode 100644 index 00000000..72bf424b Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-IAM-02-done.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-KB-01.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-KB-01.png new file mode 100644 index 00000000..9ae93215 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-KB-01.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-01-FAIL.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-01-FAIL.png new file mode 100644 index 00000000..897a4411 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-01-FAIL.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-01-edited.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-01-edited.png new file mode 100644 index 00000000..1fbe8a61 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-01-edited.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-02-gate.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-02-gate.png new file mode 100644 index 00000000..218e71be Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-NONAUTH-02-gate.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-FAIL.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-FAIL.png new file mode 100644 index 00000000..e9a773be Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-FAIL.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-before-confirm.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-before-confirm.png new file mode 100644 index 00000000..f897e3d3 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-before-confirm.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-created.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-created.png new file mode 100644 index 00000000..b0e2131e Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-01-created.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-02-activated.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-02-activated.png new file mode 100644 index 00000000..001b81e7 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-PROJ-02-activated.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-FREE-01.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-FREE-01.png new file mode 100644 index 00000000..9003ed2b Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-FREE-01.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-WF-01-FAIL.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-WF-01-FAIL.png new file mode 100644 index 00000000..4a0a7c9a Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-WF-01-FAIL.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-WF-01-doc.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-WF-01-doc.png new file mode 100644 index 00000000..e1c6bd78 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-SQUAD-WF-01-doc.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-UPLOAD-01-FAIL.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-UPLOAD-01-FAIL.png new file mode 100644 index 00000000..f8d38151 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-UPLOAD-01-FAIL.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-UPLOAD-01.png b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-UPLOAD-01.png new file mode 100644 index 00000000..2943cc77 Binary files /dev/null and b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/screenshots/FS-UPLOAD-01.png differ diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/shell-blocker.md b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/shell-blocker.md new file mode 100644 index 00000000..624ddd7f --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/shell-blocker.md @@ -0,0 +1,7 @@ +# Shell execution blocker (agent session) + +- **time**: 2026-09-26T03:12Z–ongoing +- **symptom**: Cursor Shell tool returns `spawn /bin/bash ENOENT` for every command (including `/usr/bin/bash -lc …` and `true`). +- **host evidence**: `/bin/bash` exists as a binary on the filesystem (Read tool reports “Binary files without an extension are not supported”), so this is an **execution backend / sandbox spawn** failure, not a missing host bash. +- **impact**: Playwright cannot be launched from this agent session until Shell recovers; file writes (spec/docs) succeeded via Write tool. +- **recovery plan**: re-run `web/scripts/run-full-system-browser-e2e.sh` from worktree when Shell works; then fill test report from `ui-results.json` + `playwright.log`. diff --git a/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/shell-still-blocked-2026-09-26T0322.md b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/shell-still-blocked-2026-09-26T0322.md new file mode 100644 index 00000000..0e9c1fcc --- /dev/null +++ b/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e/shell-still-blocked-2026-09-26T0322.md @@ -0,0 +1,34 @@ +# Shell still blocked — cannot fix libatk / re-run / commit + +- **checked_at**: 2026-09-26T03:22:43Z +- **probe**: background Shell `/bin/sh -c 'echo via_sh_ok'` → terminal `768488.txt` +- **error**: `spawn /bin/bash ENOENT` (elapsed_ms: 12) +- **also failed**: `echo hi`, `/usr/bin/env echo hi` (768487), foreground Shell “no exit status” +- **cannot complete**: + 1. `npx playwright install-deps chromium` / `apt install libatk1.0-0` + 2. Re-run with `PLAYWRIGHT_CHANNEL=chrome|msedge` + 3. Docker `mcr.microsoft.com/playwright` fallback (needs shell) + 4. `agentctl with` commit +- **partial prior evidence** (not a full-suite PASS): + - Chromium **did launch** in the latest host run (libatk not the failing symptom this time) + - `playwright.log` summary: **2 passed, 1 failed, 18 did not run** (35.2s) + - FAIL: FS-PROJ-01 — `TimeoutError: locator.selectOption` (member role `. + const nameEl = modal.getByText(displayName, { exact: true }).first(); + await expect(nameEl).toBeVisible({ timeout: 15_000 }); + const row = nameEl.locator( + 'xpath=ancestor::div[contains(@style,"justify-content: space-between")][1]', + ); + const roleSelect = row.locator('select').first(); + await expect(roleSelect).toBeVisible({ timeout: 15_000 }); + const opts = await roleSelect.locator('option').evaluateAll((nodes) => + nodes.map((n) => ({ + value: (n as HTMLOptionElement).value, + text: (n.textContent || '').trim(), + })), + ); + const memberOpt = opts.find((o) => o.value === 'member' || /^项目成员/.test(o.text)); + if (!memberOpt) { + fail(`promoteToProjectMember: no member option in ${JSON.stringify(opts)}`); + } + // onChange persists immediately — no separate save; do NOT match vault「保存」. + await roleSelect.selectOption(memberOpt.value); + await expect(roleSelect).toHaveValue('member'); + await expect(row.getByText('项目成员 (Member)', { exact: true })).toBeVisible({ timeout: 15_000 }); + await modal.getByRole('button', { name: '完成并关闭' }).click(); + await expect(heading).toBeHidden({ timeout: 15_000 }); +} + +async function goToWorkflowDutyStep(page: Page) { + const approval = page.locator('label', { hasText: '纳入人工审批' }).first(); + const selectHint = page.getByText('选择要激活的已发布工作流版本'); + await expect(selectHint.or(approval)).toBeVisible({ timeout: 20_000 }); + if (await approval.isVisible().catch(() => false)) return; + await page.getByRole('button', { name: /下一步/ }).click(); + await expect(approval).toBeVisible({ timeout: 20_000 }); +} + +function dutyRoleSelect(page: Page, placeholder: '作者' | '审核' | '批准') { + return page + .locator('select') + .filter({ has: page.getByRole('option', { name: placeholder, exact: true }) }) + .first(); +} + +async function selectDutyMemberByName( + page: Page, + placeholder: '作者' | '审核' | '批准', + displayName: string, +) { + const sel = dutyRoleSelect(page, placeholder); + await expect(sel).toBeVisible({ timeout: 10_000 }); + const option = sel.locator('option').filter({ hasText: displayName }).first(); + if ((await option.count()) === 0) fail(`duty select ${placeholder} missing member ${displayName}`); + const value = await option.getAttribute('value'); + if (!value) fail(`duty select ${placeholder} option ${displayName} has empty value`); + await sel.selectOption(value); +} + +async function activateProjectWorkflow( + page: Page, + duties: { author: string; reviewer: string; approver: string }, +) { + await page.getByRole('button', { name: '配置工作流' }).click(); + await goToWorkflowDutyStep(page); + const toggles = page.locator('label', { hasText: '纳入人工审批' }); + const toggleCount = await toggles.count(); + for (let i = 1; i < toggleCount; i += 1) { + const box = toggles.nth(i).locator('input[type="checkbox"]'); + if (await box.isChecked()) await box.uncheck(); + } + const firstToggle = toggles.first().locator('input[type="checkbox"]'); + if (!(await firstToggle.isChecked())) await firstToggle.check(); + await selectDutyMemberByName(page, '作者', duties.author); + await selectDutyMemberByName(page, '审核', duties.reviewer); + await selectDutyMemberByName(page, '批准', duties.approver); + await page.getByRole('button', { name: /校验并预览/ }).click(); + await expect(page.getByText('激活预览')).toBeVisible({ timeout: 20_000 }); + await page.getByRole('button', { name: '确认激活' }).click(); + await expect(page.getByText('运行中')).toBeVisible({ timeout: 20_000 }); + const closeBtn = page.getByRole('button', { name: '关闭' }); + if (await closeBtn.isVisible().catch(() => false)) await closeBtn.click(); +} + +async function ensureChatComposerIdle(page: Page, timeoutMs = 60_000) { + const stopBtn = page.getByRole('button', { name: '停止当前生成' }); + if (await stopBtn.isVisible().catch(() => false)) await stopBtn.click(); + await expect(page.getByRole('button', { name: /发送 \(Enter\)/ })).toBeVisible({ timeout: timeoutMs }); +} + +async function sendChat(page: Page, text: string) { + const box = page.getByPlaceholder(/向项目助手提问/); + await expect(box).toBeVisible({ timeout: 15_000 }); + await ensureChatComposerIdle(page); + await box.fill(text); + const sendBtn = page.getByRole('button', { name: /发送 \(Enter\)/ }); + await expect(sendBtn).toBeEnabled({ timeout: 15_000 }); + await sendBtn.click(); +} + +function turnAssistantLocator(page: Page, userPromptSnippet: string) { + const userBubble = page.locator('[data-chat-role="user"]').filter({ hasText: userPromptSnippet }).last(); + return { + userBubble, + assistant: userBubble.locator( + 'xpath=ancestor::*[@data-index][1]/following-sibling::*[@data-index][1]//*[@data-chat-role="assistant"]', + ), + }; +} + +async function waitForSquadCompletion(page: Page, userPromptSnippet: string, timeoutMs = 1_200_000) { + const startedAt = Date.now(); + const { userBubble, assistant } = turnAssistantLocator(page, userPromptSnippet); + await expect(userBubble).toBeVisible({ timeout: 30_000 }); + await expect(assistant).toBeVisible({ timeout: 30_000 }); + const connErr = page.locator('text=连接异常'); + const observe = async () => { + const status = (await assistant.getAttribute('data-chat-status')) || ''; + const hasVisibleError = await connErr.first().isVisible().catch(() => false); + return evaluateSquadObservation( + { userPromptMatched: true, assistantAdjacent: true, status, hasVisibleError }, + { requireInflight: false }, + ); + }; + let verdict = await observe(); + if (verdict.action === 'reject') fail(`squad observation rejected: ${verdict.reason}`); + if (verdict.action === 'accept') return Date.now() - startedAt; + + // Mid-wait heal: if steps look done but status stuck pending, reload to pick history task_status. + const healDeadline = Date.now() + Math.min(timeoutMs, 480_000); + while (Date.now() < healDeadline) { + try { + await expect(assistant).toHaveAttribute('data-chat-status', ANY_TERMINAL_STATUS_RE, { + timeout: 60_000, + }); + break; + } catch { + const status = (await assistant.getAttribute('data-chat-status')) || ''; + const body = await page.locator('body').innerText().catch(() => ''); + const phasesDone = + /质量门禁已完成|质量.*100|简报已完成|组建小队已完成/.test(body) || + (await page.getByText(/质量门禁已完成|任务已完成/).count()) > 0; + if (status === 'pending' || status === 'streaming_status') { + if (phasesDone || Date.now() - startedAt > 240_000) { + await page.reload(); + await expect(page.getByText(PROJECT_NAME, { exact: false }).first()).toBeVisible({ + timeout: 30_000, + }); + await openProject(page); + const again = turnAssistantLocator(page, userPromptSnippet); + await expect(again.assistant).toBeVisible({ timeout: 30_000 }); + const healed = (await again.assistant.getAttribute('data-chat-status')) || ''; + if (ANY_TERMINAL_STATUS_RE.test(healed)) { + return Date.now() - startedAt; + } + } + } + } + } + + const finalAssistant = turnAssistantLocator(page, userPromptSnippet).assistant; + await expect(finalAssistant).toHaveAttribute('data-chat-status', ANY_TERMINAL_STATUS_RE, { + timeout: Math.max(30_000, timeoutMs - (Date.now() - startedAt)), + }); + verdict = await observe(); + // Re-bind observe to final assistant + const status = (await finalAssistant.getAttribute('data-chat-status')) || ''; + const hasVisibleError = await connErr.first().isVisible().catch(() => false); + verdict = evaluateSquadObservation( + { userPromptMatched: true, assistantAdjacent: true, status, hasVisibleError }, + { requireInflight: false }, + ); + if (verdict.action === 'reject') fail(`squad observation rejected: ${verdict.reason}`); + if (verdict.action !== 'accept') fail(`squad terminal not accepted: ${verdict.reason}`); + return Date.now() - startedAt; +} + +async function waitForAssistantReply(page: Page, userSnippet: string, timeoutMs = 180_000) { + const { userBubble, assistant } = turnAssistantLocator(page, userSnippet); + await expect(userBubble).toBeVisible({ timeout: 20_000 }); + await expect(assistant).toBeVisible({ timeout: timeoutMs }); + // Casual chat may not set squad status attrs; wait for non-empty body. + await expect + .poll(async () => ((await assistant.innerText().catch(() => '')) || '').trim().length, { + timeout: timeoutMs, + }) + .toBeGreaterThan(0); +} + +async function ensureDocRailExpanded(page: Page) { + const expandDocRail = page.getByRole('button', { name: '展开受控文档栏' }); + if (await expandDocRail.isVisible().catch(() => false)) { + await expandDocRail.click(); + await expect(expandDocRail).toHaveCount(0, { timeout: 10_000 }); + } + await expect(page.getByTestId('doc-category-trigger')).toBeVisible({ timeout: 15_000 }); +} + +async function selectDeliverableCategory(page: Page, category: 'workflow' | 'shared' | 'private') { + await ensureDocRailExpanded(page); + const trigger = page.getByTestId('doc-category-trigger'); + await trigger.click(); + const item = page.locator(`.dropdown-menu button[data-category="${category}"]`).first(); + if ((await item.count()) === 0) fail(`category menu missing data-category=${category}`); + await item.click(); + await expect(trigger).toContainText(CATEGORY_TRIGGER_LABEL[category], { timeout: 10_000 }); +} + +async function openWorkflowDocByLabel(page: Page, label: RegExp) { + await selectDeliverableCategory(page, requiredCategoryForDocOpen({ kind: 'workflow-label' })); + const trigger = page.getByTestId('doc-selector-trigger'); + await trigger.click(); + const items = page.locator('.dropdown-menu button[data-doc-id]').filter({ hasText: label }); + const n = await items.count(); + if (n === 0) fail(`workflow slot not in doc-selector menu: ${label}`); + // Prefer real controlled docs (doc_proj*) over template slots — .first() often hits「… 模板」. + let item = items.first(); + for (let i = 0; i < n; i++) { + const candidate = items.nth(i); + const id = (await candidate.getAttribute('data-doc-id')) || ''; + const text = ((await candidate.innerText().catch(() => '')) || '').trim(); + if (/^doc_proj\d+_/.test(id) && !/模板/.test(text) && !/^tpl_/i.test(id)) { + item = candidate; + break; + } + } + const docId = (await item.getAttribute('data-doc-id')) || ''; + const title = (await item.getAttribute('data-doc-title')) || ''; + await item.click(); + if (!docId) fail(`selected menu item missing data-doc-id for ${label}`); + return { title: title || docId, docId }; +} + +async function openWorkflowDocById(page: Page, docId: string) { + await selectDeliverableCategory(page, requiredCategoryForDocOpen({ kind: 'exact-id', docId })); + const trigger = page.getByTestId('doc-selector-trigger'); + await trigger.click(); + const item = page.locator(`.dropdown-menu button[data-doc-id="${docId}"]`).first(); + if ((await item.count()) === 0) fail(`doc-selector menu missing data-doc-id=${docId}`); + await item.click(); +} + +/** 按已注册 doc_proj{n}_{taskKey} 打开,避开同标题「…模板」槽。 */ +async function openWorkflowDocByControlledTaskKey( + page: Page, + taskKey: string, +): Promise<{ title: string; docId: string }> { + if (!/^[a-z][a-z0-9_]*$/.test(taskKey)) fail(`invalid controlled taskKey: ${taskKey}`); + await selectDeliverableCategory( + page, + requiredCategoryForDocOpen({ kind: 'controlled-task-key', taskKey }), + ); + const trigger = page.getByTestId('doc-selector-trigger'); + await expect(trigger).toBeVisible({ timeout: 15_000 }); + await trigger.click(); + const item = page + .locator( + [ + `.dropdown-menu button[data-doc-id^="doc_proj"][data-doc-id$="_bd_${taskKey}"]`, + `.dropdown-menu button[data-doc-id^="doc_proj"][data-doc-id$="_${taskKey}"]`, + ].join(', '), + ) + .filter({ hasNotText: /模板/ }) + .first(); + if ((await item.count()) === 0) { + // Fallback: allow 模板 label if data-doc-id is already the registered server id. + const any = page + .locator( + [ + `.dropdown-menu button[data-doc-id^="doc_proj"][data-doc-id$="_bd_${taskKey}"]`, + `.dropdown-menu button[data-doc-id^="doc_proj"][data-doc-id$="_${taskKey}"]`, + ].join(', '), + ) + .first(); + if ((await any.count()) === 0) { + fail(`workflow menu missing registered doc_proj*_${taskKey} (or bd_${taskKey})`); + } + const docId = (await any.getAttribute('data-doc-id')) || ''; + const title = (await any.getAttribute('data-doc-title')) || ''; + await any.click(); + return { title: title || docId, docId }; + } + const docId = (await item.getAttribute('data-doc-id')) || ''; + const title = (await item.getAttribute('data-doc-title')) || ''; + if (!new RegExp(`^doc_proj\\d+_(?:bd_)?${taskKey}$`).test(docId)) { + fail(`expected doc_proj{n}_(?:bd_)?${taskKey}, got ${JSON.stringify(docId)}`); + } + await item.click(); + return { title: title || docId, docId }; +} + +/** After PI, deliverable list may lag; poll until revision toolbar mounts (not template preview). */ +async function openControlledIntakeWithRevToolbar( + page: Page, + preferredDocId?: string | null, +): Promise<{ title: string; docId: string }> { + const deadline = Date.now() + 180_000; + let lastErr = 'not attempted'; + while (Date.now() < deadline) { + try { + let selected: { title: string; docId: string }; + if (preferredDocId && /^doc_proj\d+_/.test(preferredDocId)) { + await openWorkflowDocById(page, preferredDocId); + selected = { docId: preferredDocId, title: preferredDocId }; + } else { + selected = await openWorkflowDocByControlledTaskKey(page, 'intake'); + } + const rev = page.locator('[data-testid="doc-rev-version"]'); + const templateHint = page.getByTestId('doc-rev-template-hint'); + const trigger = page.getByTestId('doc-selector-trigger'); + await expect(rev).toBeVisible({ timeout: 15_000 }); + if (await templateHint.isVisible().catch(() => false)) { + throw new Error('still on template preview'); + } + const triggerText = ((await trigger.innerText().catch(() => '')) || '').trim(); + if (/模板/.test(triggerText)) { + throw new Error(`selector still template: ${triggerText}`); + } + return selected; + } catch (e) { + lastErr = String(e); + await page.reload().catch(() => undefined); + await expect(page.getByText(PROJECT_NAME, { exact: false }).first()).toBeVisible({ + timeout: 30_000, + }); + await openProject(page); + await page.waitForTimeout(2_000); + } + } + fail(`controlled intake rev toolbar not ready: ${lastErr}`); +} + +async function ensureAuthorClaimedForEdit(target: Page) { + const claim = target.getByRole('button', { name: /认领此文档/ }); + if (await claim.isVisible().catch(() => false)) { + await claim.click(); + await expect(claim).toHaveCount(0, { timeout: 15_000 }); + } + await expect(target.getByText(/双击任意段落就地编辑/)).toBeVisible({ timeout: 30_000 }); +} + +function blockEditorDialog(target: Page) { + return target.getByRole('dialog', { name: BLOCK_EDITOR_DIALOG_LABEL }); +} + +async function editFirstPaneBlockAndSave(target: Page, text: string) { + const pane = target.getByTestId('active-document-pane'); + const block = pane.getByTestId('document-block').first(); + await block.dblclick({ timeout: 15_000 }); + const dialog = blockEditorDialog(target); + await expect(dialog).toBeVisible({ timeout: 10_000 }); + const editor = dialog.locator('textarea, [contenteditable="true"]').first(); + await expect(editor).toBeVisible({ timeout: 10_000 }); + await editor.fill(text); + await dialog.getByRole('button', { name: BLOCK_EDITOR_SAVE_NAME, exact: true }).click(); +} + +async function openProject(page: Page) { + await page.getByText(PROJECT_NAME, { exact: false }).first().click(); + await expect(currentProjectBannerName(page, PROJECT_NAME)).toBeVisible({ timeout: 30_000 }); +} + +async function ensureIntakeOpen(page: Page) { + const sel = await openControlledIntakeWithRevToolbar(page, shared.controlledDocId); + shared.controlledDocId = sel.docId; + shared.controlledTitle = sel.title || shared.controlledTitle; +} + +test.skip(!runAcceptance, 'set RUN_UI_ACCEPTANCE=1 against the real dev stack'); + +test.describe.serial('full-system browser multi-user E2E', () => { + // Per-test wall must exceed waitForSquadCompletion (20m) + overhead; config default is 15m. + test.describe.configure({ timeout: 2_100_000 }); + + test.beforeAll(() => { + fs.writeFileSync( + RUN_META_FILE, + JSON.stringify( + { + startedAt: new Date().toISOString(), + baseURL: process.env.BASE_URL || 'http://127.0.0.1:8080', + display: process.env.DISPLAY || '', + headedHint: process.env.HEADED === '1', + projectName: PROJECT_NAME, + users: Object.fromEntries( + Object.entries(USERS).map(([k, v]) => [k, { username: v.username, display: v.display }]), + ), + }, + null, + 2, + ), + 'utf-8', + ); + }); + + test.afterAll(() => { + fs.writeFileSync( + ACCOUNTS_FILE, + JSON.stringify( + { + note: 'Passwords intentionally omitted. Accounts retained after E2E by design.', + projectName: PROJECT_NAME, + usernames: Object.values(USERS).map((u) => u.username), + roles: Object.fromEntries(Object.entries(USERS).map(([k, v]) => [k, v.username])), + }, + null, + 2, + ), + 'utf-8', + ); + saveResults(); + }); + + test('FS-IAM-01 admin creates multi-role users via UI', async ({ browser }) => { + const t0 = Date.now(); + const label = 'admin-iam'; + const { ctx, page } = await newRolePage(browser, label); + try { + const admin = requireAdminCreds(); + await page.goto('/'); + await page.fill('input[placeholder*="系统用户名"]', admin.username); + await page.fill('input[placeholder*="登录密码"]', admin.password); + await page.click('button:has-text("进入医疗协同工作台")'); + await expect(page.getByText('新建立项会话')).toBeVisible({ timeout: 30_000 }); + await openAdminUsers(page); + await shot(page, 'FS-IAM-01-admin-users'); + for (const key of ['author', 'reviewer', 'approver', 'member', 'guest'] as const) { + const u = USERS[key]; + await adminCreateUser(page, u.username, u.display, INIT_PASS, u.roleId); + } + await page.getByRole('button', { name: '返回工作台' }).click(); + await expect(page.getByText('新建立项会话')).toBeVisible({ timeout: 15_000 }); + await shot(page, 'FS-IAM-01-done'); + record({ + id: 'FS-IAM-01', + name: 'admin creates multi-role users', + priority: 'P0', + input: 'admin console → 开通受控员工账号 ×5', + expected: 'author/reviewer/approver/member/guest created', + actual: Object.values(USERS) + .map((u) => u.username) + .join(','), + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-IAM-01-FAIL'); + record({ + id: 'FS-IAM-01', + name: 'admin creates multi-role users', + priority: 'P0', + input: 'admin create users', + expected: '5 users', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + throw e; + } finally { + await ctx.close(); + } + }); + + test('FS-IAM-02 first-login password change for all e2e users', async ({ browser }) => { + const t0 = Date.now(); + const label = 'iam-firstlogin'; + const { ctx, page } = await newRolePage(browser, label); + try { + for (const key of ['author', 'reviewer', 'approver', 'member', 'guest'] as const) { + const u = USERS[key]; + await page.goto('/'); + await page.fill('input[placeholder*="系统用户名"]', u.username); + await page.fill('input[placeholder*="登录密码"]', INIT_PASS); + await page.click('button:has-text("进入医疗协同工作台")'); + await changePasswordFirstLogin(page, INIT_PASS, FINAL_PASS[key]); + await logoutViaUI(page); + } + await shot(page, 'FS-IAM-02-done'); + record({ + id: 'FS-IAM-02', + name: 'first-login password change', + priority: 'P0', + input: 'each e2e26_* account first login', + expected: 'all reach workbench after reset', + actual: '5/5 password changes OK', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-IAM-02-FAIL'); + record({ + id: 'FS-IAM-02', + name: 'first-login password change', + priority: 'P0', + input: 'first login', + expected: 'password reset', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + throw e; + } finally { + await ctx.close(); + } + }); + + test('FS-PROJ-01 create project + add members with roles', async ({ browser }) => { + const t0 = Date.now(); + const label = 'proj-create'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await page.getByRole('button', { name: '新建立项会话' }).click(); + const heading = page.getByText('发起医疗器械新项目立项', { exact: true }); + await expect(heading).toBeVisible({ timeout: 30_000 }); + const modal = heading.locator('xpath=ancestor::div[contains(@style,"position: fixed")][1]'); + await modal.locator('input[placeholder*="无线便携式"]').fill(PROJECT_NAME); + const desc = modal.locator('textarea'); + if ((await desc.count()) === 0) fail('project form missing description'); + await desc.fill('全系统浏览器 E2E:骨科超声吸引止血,覆盖多人协作与审签链路。'); + await toggleCreateProjectMember(modal, USERS.reviewer.display, 'reviewer'); + await toggleCreateProjectMember(modal, USERS.approver.display, 'approver'); + // Plain collaborator: create-modal has no "member" option — select (defaults viewer) then promote. + await toggleCreateProjectMember(modal, USERS.member.display); + const guestVisible = await modal.getByText(USERS.guest.display, { exact: true }).count(); + if (guestVisible > 0) { + await toggleCreateProjectMember(modal, USERS.guest.display, 'viewer'); + } + await shot(page, 'FS-PROJ-01-before-confirm'); + await modal.getByRole('button', { name: /确认立项/ }).click(); + await expect(heading).toBeHidden({ timeout: 15_000 }); + await expect(currentProjectBannerName(page, PROJECT_NAME)).toBeVisible({ timeout: 30_000 }); + try { + await promoteToProjectMember(page, USERS.member.display); + } catch (promoteErr) { + record({ + id: 'FS-PROJ-01b', + name: 'promote member role', + priority: 'P0', + input: `promote ${USERS.member.display} to project member`, + expected: 'project_role=member', + actual: String(promoteErr), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + notes: 'create-modal 仅有 author/reviewer/approver/viewer;成员级可编辑需立项后改派', + }); + throw promoteErr; + } + await shot(page, 'FS-PROJ-01-created'); + record({ + id: 'FS-PROJ-01', + name: 'create project + members', + priority: 'P0', + input: `project=${PROJECT_NAME}; reviewer/approver duties + member promote(+guest)`, + expected: 'banner shows project; member is project_role=member', + actual: `created; guestListed=${guestVisible > 0}; member promoted`, + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + if (guestVisible === 0) { + recordSkip('FS-IAM-GUEST-LIST', 'guest in project member list', 'P1', 'guest display not shown in create-project member picker'); + } + } catch (e) { + await shot(page, 'FS-PROJ-01-FAIL'); + record({ + id: 'FS-PROJ-01', + name: 'create project + members', + priority: 'P0', + input: 'create project', + expected: 'project created', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + throw e; + } finally { + await ctx.close(); + } + }); + + test('FS-PROJ-02 activate workflow with author/reviewer/approver duties', async ({ browser }) => { + const t0 = Date.now(); + const label = 'proj-wf'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + await activateProjectWorkflow(page, { + author: USERS.author.display, + reviewer: USERS.reviewer.display, + approver: USERS.approver.display, + }); + await shot(page, 'FS-PROJ-02-activated'); + record({ + id: 'FS-PROJ-02', + name: 'activate workflow duties', + priority: 'P0', + input: '配置工作流 → 纳入审批 → 三权指派 → 确认激活', + expected: '运行中', + actual: 'workflow activated', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-PROJ-02-FAIL'); + record({ + id: 'FS-PROJ-02', + name: 'activate workflow duties', + priority: 'P0', + input: 'activate workflow', + expected: '运行中', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + throw e; + } finally { + await ctx.close(); + } + }); + + test('FS-CHAT-01 casual multi-turn dialogue', async ({ browser }) => { + const t0 = Date.now(); + const label = 'chat-casual'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + const prompt = 'E2E闲聊:请用一句话确认项目通道可用,不要生成受控文档。'; + await sendChat(page, prompt); + await waitForAssistantReply(page, 'E2E闲聊', 180_000); + await shot(page, 'FS-CHAT-01-reply'); + record({ + id: 'FS-CHAT-01', + name: 'casual dialogue', + priority: 'P0', + input: prompt, + expected: 'assistant reply visible', + actual: 'assistant bubble non-empty', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-CHAT-01-FAIL'); + record({ + id: 'FS-CHAT-01', + name: 'casual dialogue', + priority: 'P0', + input: 'casual chat', + expected: 'reply', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + notes: '可能无响应或连接异常——见截图与 console', + }); + throw e; + } finally { + await ctx.close(); + } + }); + + test('FS-SQUAD-WF-01 generate workflow intake document (real PI)', async ({ browser }) => { + const t0 = Date.now(); + const label = 'squad-wf'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + const prompt = '请编制用户初始需求收集表'; + await sendChat(page, prompt); + const elapsed = await waitForSquadCompletion(page, '请编制用户初始需求收集表', 1_200_000); + const bodyText = await page.locator('body').innerText().catch(() => ''); + const fromChat = bodyText.match(/doc_proj\d+_bd_intake/)?.[0] || null; + const selected = await openControlledIntakeWithRevToolbar(page, fromChat); + shared.controlledDocId = selected.docId; + shared.controlledTitle = selected.title; + if (!/^doc_proj\d+_/.test(shared.controlledDocId)) { + fail(`expected doc_proj* intake, got ${shared.controlledDocId}`); + } + await shot(page, 'FS-SQUAD-WF-01-doc'); + record({ + id: 'FS-SQUAD-WF-01', + name: 'squad workflow doc generation', + priority: 'P0', + input: prompt, + expected: 'squad terminal + server doc_proj intake with V/r', + actual: `docId=${shared.controlledDocId}; title=${shared.controlledTitle}; squadMs=${elapsed}`, + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-SQUAD-WF-01-FAIL'); + const bodyText = await page.locator('body').innerText().catch(() => ''); + const fromChat = bodyText.match(/doc_proj\d+_bd_intake/)?.[0]; + if (fromChat && !shared.controlledDocId) { + shared.controlledDocId = fromChat; + shared.controlledTitle = shared.controlledTitle || '用户初始需求收集表'; + } + record({ + id: 'FS-SQUAD-WF-01', + name: 'squad workflow doc generation', + priority: 'P0', + input: '请编制用户初始需求收集表', + expected: 'PI squad completes + controlled doc rev toolbar', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + notes: + 'ledger FAIL(常见:小队已完成但仍停在模板预览/无 doc-rev-version);soft-continue 后续 DOC 链', + }); + // Soft-continue serial: status sync may already be OK; keep DOC/UPLOAD evidence flowing. + return; + } finally { + await ctx.close(); + } + }); + + test('FS-DOC-REV-01 author edit controlled doc', async ({ browser }) => { + const t0 = Date.now(); + const label = 'doc-edit'; + const { ctx, page } = await newRolePage(browser, label); + try { + if (!shared.controlledDocId) fail('requires FS-SQUAD-WF-01'); + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + await ensureIntakeOpen(page); + await ensureAuthorClaimedForEdit(page); + const marker = `E2E修订-${suffix}`; + await editFirstPaneBlockAndSave(page, `人工修订段落 ${marker} 用于审签链路。`); + await expect(page.getByText(marker)).toBeVisible({ timeout: 30_000 }); + await shot(page, 'FS-DOC-REV-01-edited'); + record({ + id: 'FS-DOC-REV-01', + name: 'author edit', + priority: 'P0', + input: `edit block with ${marker}`, + expected: 'marker persisted in pane', + actual: `edited ${shared.controlledDocId}`, + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-DOC-REV-01-FAIL'); + record({ + id: 'FS-DOC-REV-01', + name: 'author edit', + priority: 'P0', + input: 'edit', + expected: 'save ok', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + // NONAUTH while intake is still drafting (before submit/approve chain). + test('FS-NONAUTH-01 non-author member can edit after claim', async ({ browser }) => { + const t0 = Date.now(); + const label = 'nonauth-edit'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.member.username, FINAL_PASS.member); + await openProject(page); + await ensureIntakeOpen(page); + const claim = page.getByRole('button', { name: /认领此文档/ }); + if (await claim.isVisible().catch(() => false)) { + await claim.click(); + await expect(claim).toHaveCount(0, { timeout: 15_000 }); + } + const editHint = page.getByText(/双击任意段落就地编辑/); + if (!(await editHint.isVisible({ timeout: 10_000 }).catch(() => false))) { + record({ + id: 'FS-NONAUTH-01', + name: 'non-author edit', + priority: 'P0', + input: 'member open intake', + expected: 'can claim/edit when drafting', + actual: 'edit affordance absent', + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + notes: + 'drafting 态应允许成员认领编辑(deny_only_submit);ledger FAIL 后 soft-continue 以便 DOC 审签链继续跑', + }); + // Soft-continue serial suite: product defect stays FAIL in ui-results; do not abort DOC/UPLOAD/KB. + return; + } + const marker = `E2E成员编-${suffix}`; + await editFirstPaneBlockAndSave(page, `成员可编辑段落 ${marker}`); + await expect(page.getByText(marker)).toBeVisible({ timeout: 30_000 }); + await shot(page, 'FS-NONAUTH-01-edited'); + record({ + id: 'FS-NONAUTH-01', + name: 'non-author edit', + priority: 'P0', + input: `member edit ${marker}`, + expected: 'save succeeds', + actual: 'member edit OK', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-NONAUTH-01-FAIL'); + if (!recorded['FS-NONAUTH-01']) { + record({ + id: 'FS-NONAUTH-01', + name: 'non-author edit', + priority: 'P0', + input: 'member edit', + expected: 'edit ok', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-NONAUTH-02 non-author submit gated (duty)', async ({ browser }) => { + const t0 = Date.now(); + const label = 'nonauth-submit'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.member.username, FINAL_PASS.member); + await openProject(page); + await ensureIntakeOpen(page); + const submit = page.getByRole('button', { name: /提交送审/ }); + const waiting = page.getByText(/等待编制负责人/); + const submitCount = await submit.count(); + const waitingVisible = await waiting.isVisible().catch(() => false); + await shot(page, 'FS-NONAUTH-02-gate'); + if (submitCount === 0 || waitingVisible) { + record({ + id: 'FS-NONAUTH-02', + name: 'non-author submit gate', + priority: 'P0', + input: 'member views gov action bar', + expected: 'no submit OR waiting-author hint', + actual: `submitCount=${submitCount}; waiting=${waitingVisible}`, + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; + } + await submit.first().click(); + const denied = page.getByText(/无权限|职责|DOC_DUTY|禁止|仅编制/); + await expect(denied.first()).toBeVisible({ timeout: 20_000 }); + record({ + id: 'FS-NONAUTH-02', + name: 'non-author submit gate', + priority: 'P0', + input: 'member click submit', + expected: 'denied', + actual: 'denied UI shown', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-NONAUTH-02-FAIL'); + record({ + id: 'FS-NONAUTH-02', + name: 'non-author submit gate', + priority: 'P0', + input: 'submit gate', + expected: 'denied', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-DOC-REV-02 author submit for review', async ({ browser }) => { + const t0 = Date.now(); + const label = 'doc-submit'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + await ensureIntakeOpen(page); + const submit = page.getByRole('button', { name: /提交送审/ }); + await expect(submit).toBeVisible({ timeout: 30_000 }); + await submit.click(); + await expect(page.getByRole('button', { name: /提交送审/ })).toHaveCount(0, { timeout: 30_000 }); + await shot(page, 'FS-DOC-REV-02-submitted'); + record({ + id: 'FS-DOC-REV-02', + name: 'submit for review', + priority: 'P0', + input: 'click 提交送审', + expected: 'submit button disappears (reviewing)', + actual: 'submitted', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-DOC-REV-02-FAIL'); + record({ + id: 'FS-DOC-REV-02', + name: 'submit for review', + priority: 'P0', + input: 'submit', + expected: 'reviewing', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-DOC-REV-03 reviewer rejects with reason', async ({ browser }) => { + const t0 = Date.now(); + const label = 'doc-reject'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.reviewer.username, FINAL_PASS.reviewer); + await openProject(page); + await ensureIntakeOpen(page); + const rejectBtn = page.getByRole('button', { name: /驳回修改/ }); + await expect(rejectBtn).toBeVisible({ timeout: 30_000 }); + await rejectBtn.click(); + const reason = page.getByPlaceholder(/说明驳回修改的具体意见/); + await expect(reason).toBeVisible({ timeout: 15_000 }); + await reason.fill('E2E驳回:缺少电气安全章节条款引用,退回编制补充。'); + // Chat main pane often intercepts pointer; collapse rail + force click. + await page.getByRole('button', { name: /收起项目会话栏/ }).click({ timeout: 5_000 }).catch(() => undefined); + await page.getByRole('button', { name: /确认驳回退回编制/ }).click({ force: true, timeout: 30_000 }); + await expect(page.getByRole('button', { name: /驳回修改/ })).toHaveCount(0, { timeout: 30_000 }); + await shot(page, 'FS-DOC-REV-03-rejected'); + record({ + id: 'FS-DOC-REV-03', + name: 'reviewer reject', + priority: 'P0', + input: '驳回修改 + 法定原因', + expected: 'back to drafting', + actual: 'reject confirmed', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-DOC-REV-03-FAIL'); + record({ + id: 'FS-DOC-REV-03', + name: 'reviewer reject', + priority: 'P0', + input: 'reject', + expected: 'drafting', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-DOC-REV-04 author fix and resubmit', async ({ browser }) => { + const t0 = Date.now(); + const label = 'doc-resubmit'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + await ensureIntakeOpen(page); + await ensureAuthorClaimedForEdit(page); + const marker = `E2E再送-${suffix}`; + await editFirstPaneBlockAndSave(page, `补充电气安全条款后的修订 ${marker}`); + const submit = page.getByRole('button', { name: /提交送审/ }); + await expect(submit).toBeVisible({ timeout: 30_000 }); + await submit.click(); + await expect(page.getByRole('button', { name: /提交送审/ })).toHaveCount(0, { timeout: 30_000 }); + await shot(page, 'FS-DOC-REV-04-resubmitted'); + record({ + id: 'FS-DOC-REV-04', + name: 'fix and resubmit', + priority: 'P0', + input: `edit ${marker} + 提交送审`, + expected: 'back to reviewing', + actual: 'resubmitted', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-DOC-REV-04-FAIL'); + record({ + id: 'FS-DOC-REV-04', + name: 'fix and resubmit', + priority: 'P0', + input: 'resubmit', + expected: 'reviewing', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-DOC-REV-05 reviewer pass', async ({ browser }) => { + const t0 = Date.now(); + const label = 'doc-pass'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.reviewer.username, FINAL_PASS.reviewer); + await openProject(page); + await ensureIntakeOpen(page); + const pass = page.getByRole('button', { name: /审核通过/ }); + await expect(pass).toBeVisible({ timeout: 30_000 }); + await pass.click(); + await expect(page.getByRole('button', { name: /审核通过/ })).toHaveCount(0, { timeout: 30_000 }); + await shot(page, 'FS-DOC-REV-05-passed'); + record({ + id: 'FS-DOC-REV-05', + name: 'reviewer pass', + priority: 'P0', + input: '审核通过', + expected: 'awaiting approve', + actual: 'passed review', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-DOC-REV-05-FAIL'); + record({ + id: 'FS-DOC-REV-05', + name: 'reviewer pass', + priority: 'P0', + input: 'pass', + expected: 'approving', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-DOC-REV-06 approver final approve', async ({ browser }) => { + const t0 = Date.now(); + const label = 'doc-approve'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.approver.username, FINAL_PASS.approver); + await openProject(page); + await ensureIntakeOpen(page); + const approve = page.getByRole('button', { name: /终审批准/ }); + await expect(approve).toBeVisible({ timeout: 30_000 }); + await approve.click(); + await expect(page.getByRole('button', { name: /终审批准/ })).toHaveCount(0, { timeout: 60_000 }); + await shot(page, 'FS-DOC-REV-06-approved'); + record({ + id: 'FS-DOC-REV-06', + name: 'approver approve', + priority: 'P0', + input: '终审批准', + expected: 'approved / controlled', + actual: 'approved', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-DOC-REV-06-FAIL'); + record({ + id: 'FS-DOC-REV-06', + name: 'approver approve', + priority: 'P0', + input: 'approve', + expected: 'approved', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-DOC-REV-07 cascade re-review if UI reachable', async ({ browser }) => { + const t0 = Date.now(); + const label = 'doc-cascade'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + await ensureIntakeOpen(page); + // After approve, body edit may be locked or trigger re-review. Probe UI affordances. + const claim = page.getByRole('button', { name: /认领此文档/ }); + const editHint = page.getByText(/双击任意段落就地编辑/); + const reOpen = page.getByRole('button', { name: /重新打开|启动变更|发起变更/ }); + const canClaim = await claim.isVisible().catch(() => false); + const canEdit = await editHint.isVisible().catch(() => false); + const canReopen = await reOpen.isVisible().catch(() => false); + await shot(page, 'FS-DOC-REV-07-probe'); + if (!canClaim && !canEdit && !canReopen) { + record({ + id: 'FS-DOC-REV-07', + name: 'cascade re-review', + priority: 'P0', + input: 'probe post-approve edit/reopen', + expected: 're-review path if UI exposes', + actual: 'no reopen/edit affordance after approve', + verdict: 'SKIP', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + skip_reason: '批准后 UI 未暴露可触发级联重审的入口(本轮可达性不足)', + }); + return; + } + if (canClaim) await claim.click(); + if (canReopen) await reOpen.click(); + if (canEdit || (await editHint.isVisible().catch(() => false))) { + await editFirstPaneBlockAndSave(page, `级联重审探测修订 ${suffix}`); + const submit = page.getByRole('button', { name: /提交送审/ }); + if (await submit.isVisible().catch(() => false)) { + await submit.click(); + await expect(submit).toHaveCount(0, { timeout: 30_000 }); + } + } + await shot(page, 'FS-DOC-REV-07-done'); + record({ + id: 'FS-DOC-REV-07', + name: 'cascade re-review', + priority: 'P0', + input: `claim=${canClaim} edit=${canEdit} reopen=${canReopen}`, + expected: 're-enter review path', + actual: 'cascade path exercised', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-DOC-REV-07-FAIL'); + record({ + id: 'FS-DOC-REV-07', + name: 'cascade re-review', + priority: 'P0', + input: 'cascade', + expected: 're-review or SKIP', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-ASSIST-01 assistant-style task prompt', async ({ browser }) => { + const t0 = Date.now(); + const label = 'assist'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + const prompt = + '请作为项目助手,用条目列出本项目下一步 3 个建议(不要启动小队工作流文档生成)。E2E助手任务标记。'; + await sendChat(page, prompt); + await waitForAssistantReply(page, 'E2E助手任务标记', 300_000); + await shot(page, 'FS-ASSIST-01-reply'); + record({ + id: 'FS-ASSIST-01', + name: 'assistant task', + priority: 'P1', + input: prompt, + expected: 'assistant reply without requiring squad doc', + actual: 'assistant reply visible', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-ASSIST-01-FAIL'); + record({ + id: 'FS-ASSIST-01', + name: 'assistant task', + priority: 'P1', + input: 'assistant prompt', + expected: 'reply', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + // P1: do not hard-fail entire suite serial chain — rethrow still stops serial; record FAIL and continue by not throwing? + // User asked FAIL not fake PASS; serial describe will stop. Rethrow. + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-SQUAD-FREE-01 complex free / adhoc task', async ({ browser }) => { + const t0 = Date.now(); + const label = 'squad-free'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + const prompt = + '帮我做一份掌上超声与进口竞品的横向对标分析报告,覆盖法规注册、工程架构与商务定价三个视角,要详尽成体系。E2E自由任务标记。'; + await sendChat(page, prompt); + // May route to squad adhoc or upgrade card — wait for terminal or upgrade UI. + const upgrade = page.getByText(/自由任务|升级|特设小队/); + const userVisible = page.locator('[data-chat-role="user"]').filter({ hasText: 'E2E自由任务标记' }); + await expect(userVisible).toBeVisible({ timeout: 20_000 }); + try { + await waitForSquadCompletion(page, 'E2E自由任务标记', 1_200_000); + } catch { + // Accept upgrade/confirm card as observed free-task routing. + await expect(upgrade.first()).toBeVisible({ timeout: 60_000 }); + } + await shot(page, 'FS-SQUAD-FREE-01'); + record({ + id: 'FS-SQUAD-FREE-01', + name: 'squad free/adhoc task', + priority: 'P1', + input: prompt, + expected: 'squad terminal or free-task upgrade UI', + actual: 'free-task path observed', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-SQUAD-FREE-01-FAIL'); + record({ + id: 'FS-SQUAD-FREE-01', + name: 'squad free/adhoc task', + priority: 'P1', + input: 'free task', + expected: 'route/complete', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-UPLOAD-01 upload attachment → freeform register', async ({ browser }) => { + const t0 = Date.now(); + const label = 'upload'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + const fileInput = page.locator('input[type="file"]'); + if ((await fileInput.count()) === 0) fail('no file input for page upload'); + const tmp = path.join(ASSETS, `upload-${suffix}.txt`); + const uploadName = `upload-${suffix}.txt`; + fs.writeFileSync(tmp, `E2E upload body ${suffix}\n临床需求摘要占位\n`, 'utf-8'); + await fileInput.first().setInputFiles(tmp); + await expect(page.getByText(uploadName, { exact: false })).toBeVisible({ timeout: 15_000 }); + const archivePrompt = '请将此附件归档为我的私密参考文档。E2E上传标记。'; + const freeformWait = page.waitForResponse( + (r) => { + const pathOnly = sanitizeUrl(r.url()); + return ( + r.request().method() === 'POST' && + pathOnly.includes('/api/v1/freeform-documents') && + !pathOnly.includes('/from-message') + ); + }, + { timeout: 60_000 }, + ); + await sendChat(page, archivePrompt); + const freeformRes = await freeformWait; + if (freeformRes.status() < 200 || freeformRes.status() >= 300) { + fail(`freeform POST HTTP ${freeformRes.status()}`); + } + const pane = page.getByTestId('active-document-pane'); + await expect(pane).toHaveAttribute('data-doc-id', /^doc-free-/, { timeout: 45_000 }); + shared.uploadedDocId = (await pane.getAttribute('data-doc-id')) || ''; + await waitForSquadCompletion(page, 'E2E上传标记', 180_000).catch(() => undefined); + await shot(page, 'FS-UPLOAD-01'); + record({ + id: 'FS-UPLOAD-01', + name: 'upload + freeform register', + priority: 'P1', + input: uploadName, + expected: 'doc-free-* pane', + actual: `uploadedDocId=${shared.uploadedDocId}`, + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-UPLOAD-01-FAIL'); + record({ + id: 'FS-UPLOAD-01', + name: 'upload + freeform', + priority: 'P1', + input: 'upload', + expected: 'doc-free', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-KB-01 admin KB console readonly check', async ({ browser }) => { + const t0 = Date.now(); + const label = 'kb-admin'; + const { ctx, page } = await newRolePage(browser, label); + try { + const admin = requireAdminCreds(); + await login(page, admin.username, admin.password); + await page.locator('button[title*="系统管理与准入治理"]').click(); + await expect(page.getByRole('button', { name: '知识库连接' })).toBeVisible({ timeout: 15_000 }); + await page.getByRole('button', { name: '知识库连接' }).click(); + await shot(page, 'FS-KB-01'); + const body = await page.locator('body').innerText(); + if (!/知识库|KB|连接|就绪|向量/i.test(body)) { + fail('KB section body missing expected keywords'); + } + record({ + id: 'FS-KB-01', + name: 'KB admin readonly', + priority: 'P1', + input: 'admin → 知识库连接', + expected: 'section renders with KB status cues', + actual: 'KB section visible', + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-KB-01-FAIL'); + record({ + id: 'FS-KB-01', + name: 'KB admin readonly', + priority: 'P1', + input: 'KB', + expected: 'visible', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-CTX-01 context injection observation', async ({ browser }) => { + const t0 = Date.now(); + const label = 'ctx'; + const { ctx, page } = await newRolePage(browser, label); + try { + await login(page, USERS.author.username, FINAL_PASS.author); + await openProject(page); + await ensureIntakeOpen(page); + const conflict = page.getByText(/冲突|上下文|已注入|工作区|workspace|dialogue/i); + const ctxChip = page.locator('[data-testid*="context"], [data-testid*="ctx"]'); + const seenConflict = await conflict.first().isVisible().catch(() => false); + const seenChip = (await ctxChip.count()) > 0; + await shot(page, 'FS-CTX-01'); + // Observation case: PASS if any UI cue; else SKIP with note to check workspace disk offline. + if (!seenConflict && !seenChip) { + record({ + id: 'FS-CTX-01', + name: 'context injection observation', + priority: 'P1', + input: 'open doc + scan UI for context cues', + expected: 'conflict card or context chip OR disk evidence', + actual: 'no obvious UI cue in viewport', + verdict: 'SKIP', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + skip_reason: 'UI 未显示冲突卡/上下文 chip;需人工核对 data/dev workspace context/dialogue 落盘', + }); + return; + } + record({ + id: 'FS-CTX-01', + name: 'context injection observation', + priority: 'P1', + input: 'observe UI', + expected: 'context cue', + actual: `conflict=${seenConflict}; chip=${seenChip}`, + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + } catch (e) { + await shot(page, 'FS-CTX-01-FAIL'); + record({ + id: 'FS-CTX-01', + name: 'context observation', + priority: 'P1', + input: 'ctx', + expected: 'observe', + actual: String(e), + verdict: 'FAIL', + durationMs: Date.now() - t0, + console_errors: consoleErrorsFor(label), + }); + return; // soft-continue serial for remaining ledger coverage + } finally { + await ctx.close(); + } + }); + + test('FS-CONSOLE-01 aggregate console errors across roles', async () => { + const t0 = Date.now(); + const all: string[] = []; + for (const [label, buf] of consoleBuffers.entries()) { + for (const row of buf) { + if (row.level === 'error' || row.level === 'pageerror') { + all.push(`${label}: [${row.level}] ${row.text.slice(0, 200)}`); + } + } + } + const summaryPath = path.join(ASSETS, 'console-errors-summary.json'); + fs.writeFileSync(summaryPath, JSON.stringify({ count: all.length, errors: all }, null, 2), 'utf-8'); + // Console noise alone is not FAIL unless paired with silent UI hang (recorded in notes elsewhere). + record({ + id: 'FS-CONSOLE-01', + name: 'console error aggregate', + priority: 'P2', + input: 'all page console/pageerror buffers', + expected: 'summary written; severe silent failures already FAIL in cases', + actual: `errorCount=${all.length}; summary=${summaryPath}`, + verdict: 'PASS', + durationMs: Date.now() - t0, + console_errors: all.slice(0, 50), + notes: all.length ? '存在 console error/pageerror,详见 console-*.jsonl' : '无 error/pageerror', + }); + }); +}); diff --git a/web/package.json b/web/package.json index ab778725..ace7af6e 100644 --- a/web/package.json +++ b/web/package.json @@ -20,6 +20,7 @@ "test:e2e:intent-plan-cards": "RUN_UI_ACCEPTANCE=1 playwright test e2e/intent-plan-cards.spec.ts --project=chromium", "test:e2e:project143-regression": "RUN_UI_ACCEPTANCE=1 playwright test e2e/project143-regression.spec.ts --project=chromium", "test:e2e:workflow-plan-409-frozen-duties": "RUN_UI_ACCEPTANCE=1 playwright test e2e/workflow-plan-409-frozen-duties.spec.ts --project=chromium", + "test:e2e:full-system-browser": "RUN_UI_ACCEPTANCE=1 playwright test e2e/full-system-browser-e2e.spec.ts --project=chromium", "test:e2e:list": "playwright test --list", "test:e2e:initial-load": "RUN_INITIAL_LOAD_BASELINE=1 playwright test e2e/initial-load-performance.spec.ts --project=chromium", "test:e2e:initial-load:throttle": "RUN_INITIAL_LOAD_BASELINE=1 INITIAL_LOAD_THROTTLE=1 playwright test e2e/initial-load-performance.spec.ts --project=chromium -g throttled", diff --git a/web/scripts/run-full-system-browser-e2e.sh b/web/scripts/run-full-system-browser-e2e.sh new file mode 100755 index 00000000..3cd293cb --- /dev/null +++ b/web/scripts/run-full-system-browser-e2e.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# Full-system browser E2E via Playwright Docker (host lacks libatk; no sudo). +# Hits host BASE_URL (default http://127.0.0.1:8080) with --network host. +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +WEB_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +WT="$(cd "$WEB_DIR/.." && pwd)" +# Prefer main repo .env (worktree may not have secrets). +ROOT="${AGENT_SYSTEM_ROOT:-/home/weichen/projects/Agent-System}" +if [[ ! -f "$ROOT/.env" && -f "$WT/.env" ]]; then + ROOT="$WT" +fi + +ASSETS="${UI_ACCEPTANCE_ASSETS_DIR:-$WT/.doc/test-reports/assets/2026-09-26-full-system-browser-e2e}" +IMAGE="${PLAYWRIGHT_IMAGE:-mcr.microsoft.com/playwright:v1.63.0-noble}" +BASE_URL="${BASE_URL:-http://127.0.0.1:8080}" +mkdir -p "$ASSETS/screenshots" + +set -a +# shellcheck disable=SC1091 +source "$ROOT/.env" +set +a + +if [[ -z "${ADMIN_USERNAME:-}" || -z "${ADMIN_PASSWORD:-}" ]]; then + echo "ADMIN_USERNAME/ADMIN_PASSWORD required from $ROOT/.env" >&2 + exit 2 +fi + +echo "IMAGE=$IMAGE BASE_URL=$BASE_URL ASSETS=$ASSETS WT=$WT" | tee "$ASSETS/run-env.txt" + +NM_MOUNT=() +if [[ -d "$WEB_DIR/node_modules" ]]; then + NM_MOUNT=(-v "$WEB_DIR/node_modules:/work/web/node_modules") +elif [[ -d "$ROOT/web/node_modules" ]]; then + NM_MOUNT=(-v "$ROOT/web/node_modules:/work/web/node_modules") +fi + +docker run --rm \ + --network host \ + --ipc host \ + -e BASE_URL="$BASE_URL" \ + -e RUN_UI_ACCEPTANCE=1 \ + -e UI_ACCEPTANCE_ASSETS_DIR=/work/assets \ + -e DISABLE_DEV_SEED_USERS=true \ + -e ADMIN_USERNAME="$ADMIN_USERNAME" \ + -e ADMIN_PASSWORD="$ADMIN_PASSWORD" \ + -e CI=1 \ + -v "$WEB_DIR:/work/web" \ + -v "$ASSETS:/work/assets" \ + "${NM_MOUNT[@]}" \ + -w /work/web \ + "$IMAGE" \ + bash -lc 'if [[ ! -x node_modules/.bin/playwright ]]; then npm ci; fi; npx playwright test e2e/full-system-browser-e2e.spec.ts --reporter=list' \ + 2>&1 | tee "$ASSETS/playwright.log" diff --git a/web/src/App.tsx b/web/src/App.tsx index 312d26de..e1b5a317 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -11,6 +11,7 @@ import { } from './lib/createProjectSubmitGuard'; import { mapApiMembersToProjectMembers } from './lib/projectMemberAdapter'; import { resolveCurrentDocRole } from './lib/currentDocRole'; +import { expandRightDocRail } from './lib/expandRightDocRail'; import { resolveChatComposerStreaming, } from './lib/chatComposerStreaming'; @@ -214,6 +215,11 @@ export default function App() { return getProjectMembership(currentProject, currentUser.id); }, [currentProject, currentUser.id]); + /** deny_only_submit:活跃成员可 drafting 编辑;exited/非成员不可。 */ + const isActiveProjectMember = useMemo(() => { + return !!currentMembership && currentMembership.status === 'active'; + }, [currentMembership]); + const applyMembersToProject = useCallback((projectId: number, members: ProjectMember[]) => { setProjects((prev) => prev.map((p) => (p.id === projectId ? { ...p, members } : p))); }, []); @@ -710,6 +716,7 @@ export default function App() { return; } editorHydrationGateRef.current.setActiveDocId(id); + expandRightDocRail(); setActiveDocId(id); let targetDoc = deliverables.find((d) => d.docId === id); @@ -1686,6 +1693,7 @@ export default function App() { retryControlledDocLoad={retryControlledDocLoad} docAST={docAST} currentDocRole={currentDocRole} + isActiveProjectMember={isActiveProjectMember} openBlockEditor={openBlockEditor} handleInsertBlock={handleInsertBlock} handleMoveBlock={handleMoveBlock} diff --git a/web/src/api/taskRuns.ts b/web/src/api/taskRuns.ts index 81cec907..9dd2583b 100644 --- a/web/src/api/taskRuns.ts +++ b/web/src/api/taskRuns.ts @@ -108,6 +108,7 @@ export async function readTaskRunSSEOnce( /** * 订阅任务 SSE:意外 EOF / 不完整 chunked 时按最后 seq 重订阅同一 run,禁止调用方据此 POST 新 run。 + * 重连前可经 onGap 轮询 run 终态:若已 completed 等则停止订阅(避免 done 丢失后永久 pending)。 */ export async function subscribeTaskRunEvents( runId: string, @@ -117,6 +118,8 @@ export async function subscribeTaskRunEvents( maxReconnects?: number; reconnectDelayMs?: number; sleep?: (ms: number) => Promise; + /** Return true to stop reconnecting (caller already settled from GET /runs). */ + onGap?: (ctx: { afterSeq: number; attempt: number }) => Promise; }, signal?: AbortSignal, ): Promise { @@ -131,12 +134,20 @@ export async function subscribeTaskRunEvents( const { terminal, lastSeq } = await readTaskRunSSEOnce(runId, afterSeq, handlers.onEvent, signal); afterSeq = Math.max(afterSeq, lastSeq); if (terminal) return; - // 意外 EOF:未见到 done/error,按 after_seq 重连 + // 意外 EOF:未见到 done/error — 先问 onGap,再按 after_seq 重连 + if (handlers.onGap) { + const stop = await handlers.onGap({ afterSeq, attempt }); + if (stop) return; + } } catch (err) { if (signal?.aborted) return; if (err instanceof TaskRunHttpError && isNonRetryableStatus(err.status)) { throw err; } + if (handlers.onGap) { + const stop = await handlers.onGap({ afterSeq, attempt }).catch(() => false); + if (stop) return; + } if (attempt >= maxReconnects) throw err; } if (attempt >= maxReconnects) { diff --git a/web/src/components/doc/BlockRenderer.tsx b/web/src/components/doc/BlockRenderer.tsx index ba61d02c..3cbefbd1 100644 --- a/web/src/components/doc/BlockRenderer.tsx +++ b/web/src/components/doc/BlockRenderer.tsx @@ -12,6 +12,7 @@ import { OnDemand } from '../lazy/OnDemand'; import { contentHasMath, ensureMathRenderer } from '../../engine/renderMarkdown'; import { BlockContextMenu } from './BlockContextMenu'; import { canAddBlockComment } from '../../lib/commentPolicy'; +import { canEditDraftingDocument } from '../../lib/draftingEditAffordance'; import { documentBlockDomAttrs } from '../../lib/documentBlockDom'; import { Plus, ArrowUp, ArrowDown, Trash2, MessageSquare } from 'lucide-react'; @@ -23,6 +24,8 @@ const loadMathBlock = () => export interface BlockRendererProps { ast: DocumentAST; currentRole: UserRole; + /** 项目活跃成员可在 drafting 编辑;勿用伪造 author 职责代替。 */ + isActiveProjectMember?: boolean; onEditBlock: (block: DocumentBlock) => void; onInsertBlock: (index: number, position: 'above' | 'below') => void; onMoveBlock: (index: number, direction: 'up' | 'down') => void; @@ -46,6 +49,7 @@ function subtreeHasInlineMath(block: DocumentBlock): boolean { export const BlockRenderer: React.FC = ({ ast, currentRole, + isActiveProjectMember = false, onEditBlock, onInsertBlock, onMoveBlock, @@ -90,7 +94,13 @@ export const BlockRenderer: React.FC = ({ const leaseActive = !!ast.editLease?.holderType && (!ast.editLease.expiresAt || new Date(ast.editLease.expiresAt).getTime() > Date.now()); - const isEditable = currentRole === 'author' && ast.lifecycleState === 'drafting' && !leaseActive; + // deny_only_submit:drafting 编辑对活跃成员开放;送审仍仅编制人(见 DocGovActionBar)。 + const isEditable = canEditDraftingDocument({ + currentRole, + isActiveProjectMember, + lifecycleState: ast.lifecycleState, + leaseActive, + }); const canAnnotate = !leaseActive && canAddBlockComment(currentRole); const children = ast.rootBlock.children || []; diff --git a/web/src/components/doc/DocGovActionBar.tsx b/web/src/components/doc/DocGovActionBar.tsx index c7ade995..87b3000e 100644 --- a/web/src/components/doc/DocGovActionBar.tsx +++ b/web/src/components/doc/DocGovActionBar.tsx @@ -1,4 +1,5 @@ -import React, { useState } from 'react'; +import React, { useRef, useState } from 'react'; +import { createPortal } from 'react-dom'; import { DocumentAST } from '../../types/block'; import { UserRole } from '../../types/docgov'; import { canShowDocGovApprovalAction, isUnmanagedDocDuties } from '../../lib/docGovActionVisibility'; @@ -21,12 +22,12 @@ interface DocGovActionBarProps { currentUserId?: number; canOverrideVisibility?: boolean; onOpenVisibilityModal?: () => void; - onClaim: () => void; - onSubmitReview: () => void; - onPassReview: () => void; - onRejectReview: (reason: string) => void; - onApprove: () => void; - onRejectApprove: (reason: string) => void; + onClaim: () => void | Promise; + onSubmitReview: () => void | Promise; + onPassReview: () => void | Promise; + onRejectReview: (reason: string) => void | Promise; + onApprove: () => void | Promise; + onRejectApprove: (reason: string) => void | Promise; onShareToProject?: (docId: string) => void; onRevokeShare?: (docId: string) => void; onRequestReopen?: () => void; @@ -51,21 +52,46 @@ export const DocGovActionBar: React.FC = ({ const [rejectModalOpen, setRejectModalOpen] = useState(false); const [rejectReason, setRejectReason] = useState(''); const [rejectTarget, setRejectTarget] = useState<'review' | 'approve'>('review'); + const [rejectSubmitting, setRejectSubmitting] = useState(false); + const [rejectError, setRejectError] = useState(null); + const rejectReasonRef = useRef(''); + const rejectTextareaRef = useRef(null); const openReject = (target: 'review' | 'approve') => { setRejectTarget(target); setRejectReason(''); + rejectReasonRef.current = ''; + setRejectError(null); + setRejectSubmitting(false); setRejectModalOpen(true); }; - const confirmReject = () => { - if (!rejectReason.trim()) return; - if (rejectTarget === 'review') { - onRejectReview(rejectReason.trim()); - } else { - onRejectApprove(rejectReason.trim()); + /** 优先读 textarea DOM,避免受控 state 与 Playwright fill 竞态导致空理由。 */ + const readRejectReason = (): string => { + const fromDom = rejectTextareaRef.current?.value ?? ''; + const raw = fromDom || rejectReasonRef.current || rejectReason; + return raw.trim(); + }; + + const confirmReject = async () => { + const reason = readRejectReason(); + if (!reason || rejectSubmitting) return; + setRejectSubmitting(true); + setRejectError(null); + try { + if (rejectTarget === 'review') { + await Promise.resolve(onRejectReview(reason)); + } else { + await Promise.resolve(onRejectApprove(reason)); + } + setRejectModalOpen(false); + setRejectReason(''); + rejectReasonRef.current = ''; + } catch (err) { + setRejectError(err instanceof Error ? err.message : String(err)); + } finally { + setRejectSubmitting(false); } - setRejectModalOpen(false); }; const isPrivate = ast.category === 'private'; @@ -77,6 +103,118 @@ export const DocGovActionBar: React.FC = ({ const showReview = canShowDocGovApprovalAction('review', currentUserId, duties); const showApprove = canShowDocGovApprovalAction('approve', currentUserId, duties); + // Portal to document.body so sticky ActionBar stacking context cannot trap the overlay + // below chat floating chrome (zIndex must match DocVisibilityModal ≥ 1000). + const rejectModal = + rejectModalOpen && typeof document !== 'undefined' + ? createPortal( +
+
+
+ 请填写法定驳回原因 (必填) +
+