From e5940266caee81fe11dfc545790b1858a73db76e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 7 Jun 2026 19:05:48 +0800 Subject: [PATCH] =?UTF-8?q?refactor(dev):=20=E5=89=8D=E7=AB=AF=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=8C=96=20Step=202=20=E2=80=94=20=E6=8A=BD=E5=87=BA?= =?UTF-8?q?=20media.js=20+=20=E6=94=B6=E6=95=9B=20downloadFile=20=E5=8F=8D?= =?UTF-8?q?=E5=90=91=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对话内工具活动标签 + artifact(产物)抽取/渲染:toolActivityLabel / extractArtifactRels / extractMediaBanner / renderArtifactBarHtml / upgradeMediaArtifacts / downloadFile → media.js(237 行,原 main 1134–1359)。 收敛点:downloadFile 移入 media 后,preview.js / files.js 对它的 import 从 ./main.js 改指 ./media.js —— 把这条反向依赖从 main 挪开。media 导入极少 (escapeHtml / _categorize(preview)/ state / logout),与 preview 成 media↔preview 环(均运行时调用,安全)。 两次险漏靠校验抓回: - 共享 const ARTIFACT_PRODUCING_TOOLS(main renderMessages/SSE 用 4 处, .has() 访问非函数调用,"被调标识符"法漏掉) - 内部函数 _flushMediaArtifactCache(selectTask 切任务清缓存用) 两者经残留符号检查发现后补 export。 新增全模块 import/export 一致性校验脚本(每个 import{X} 必在目标 export), 11 模块全过。main.js 删至 1393 行。node --check 11 模块全过、静态测试 2 过。 Co-Authored-By: Claude Opus 4.8 (1M context) --- PROGRESS.md | 3 +- web/static/js/files.js | 3 +- web/static/js/main.js | 227 +------------------------------------ web/static/js/media.js | 236 +++++++++++++++++++++++++++++++++++++++ web/static/js/preview.js | 4 +- 5 files changed, 243 insertions(+), 230 deletions(-) create mode 100644 web/static/js/media.js diff --git a/PROGRESS.md b/PROGRESS.md index 5ea105c..856e7e3 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -2,7 +2,7 @@ > 配合 `DESIGN.md`。本文件只记 phase 状态、决策偏差、文件量、下一步。每条 1-2 句:做了啥 + 关键判断;细节查 `git log` / `git diff` / `DESIGN §7.9`。 -最后更新:2026-06-06(前端模块化 Step 2:抽出 layout / auth / preview / files.js) +最后更新:2026-06-07(前端模块化 Step 2:抽出 layout / auth / preview / files / media.js) --- @@ -23,6 +23,7 @@ ### 2026-06-06 +- **前端模块化 Step 2:抽出 `media.js`(工具活动标签 + artifact 抽取/渲染)+ 收敛 downloadFile 反向依赖**:对话内 `toolActivityLabel`(工具调用→中文活动名)、`extractArtifactRels`(从结果文本/working_dir 提产物路径)、`extractMediaBanner`(seedream/seedance 横幅)、`renderArtifactBarHtml`(产物 chip 条 + 图/视频内联占位)、`upgradeMediaArtifacts`(占位异步 fetch blob 填 ``/`