dsh-data-cleaning-agent 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,73 @@
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.6.0] - 2026-09-04
8
+
9
+ ### Added
10
+ - 启动 v2 五步工作流:上传数据、规则确认、数据匹配、清洗补全、下载数据;新增共享字段目录、
11
+ 映射锚点和可审计匹配状态契约。
12
+ - 新增 `dc_workflows_v2` Host 元数据存储与同源 `/data-cleaning/api/workflow/*` API,支持 taskId
13
+ 隔离、revision 并发保护、任务恢复及阶段推进。
14
+ - 上传/粘贴解析、数据预览、自动字段映射、任务目标、匹配规则与字段选择正式接入 taskId 工作流;
15
+ 规则确认后自动生成本地质量体检并推进匹配阶段。
16
+ - 提示词生成器升级为数据来源、匹配规则、清洗与补全、确认描述四步向导,并把解析数据和任务草稿
17
+ 通过会话事件桥安全传入同一 Host 任务。
18
+ - 增加中央七阶段业务首页、最近任务恢复、输入框下五能力入口,以及 taskId 驱动的右侧五步工作台。
19
+ - 新增 Host 耐久制品层:每个任务生成清洗补全结果与异常清单的 CSV/XLSX 四个文件,提供列表、生成、
20
+ checksum 校验下载 API;XLSX 为可由 Excel/SheetJS 读取的真实工作簿。
21
+ - 新增 v2 升级/迁移/回滚说明和 T6~T9 双基线、视觉、恢复及发布准备验收文档。
22
+
23
+ ### Changed
24
+ - Client 原始数据按 taskId 隔离,不再使用跨任务模块级共享 session;同一会话并发创建与写操作分别
25
+ 通过 coalescing 和串行队列避免重复任务及 revision 冲突。
26
+ - 当前基础企业匹配、补全、预览和 CSV 下载复用 G5 Host Bridge,并保留零调用估算、客户自带 QCC
27
+ 账号确认、幂等键与调用上限门。
28
+ - 下载页改为读取 Host 四类耐久制品;已经完成的历史任务无需恢复浏览器原始行即可跨 Host 重启下载。
29
+ - 本地确定性清洗可从规则确认/质量体检直接进入 `export_ready`,不会为零 QCC 调用强造匹配步骤。
30
+
31
+ ### Fixed
32
+ - 修复中央业务首页条件调用组件导致真实 DSH 页面出现 React #310 的 Hooks 顺序问题。
33
+ - 修复提示词数据集与任务草稿事件并发时可能创建两个 Host taskId 的竞态。
34
+ - 修复规则按钮文案承诺“运行质量体检”但只切换页面的问题;现在规则确认后立即生成并持久化摘要。
35
+ - 修复 `partial` 任务在显式重试后无新候选时走入非法匹配状态的问题;现在可继续补全并回到
36
+ `export_ready`。
37
+ - 修复从中央首页最近任务打开工作台时只传阶段、未携带 taskId,导致误创建新草稿的问题。
38
+
39
+ ### Verified
40
+ - `npm test` 165/165 通过;DSH `0.1.1-rc.2` 隔离 Host 43182 实际渲染 T3~T5,并完成
41
+ 2 行 CSV 的上传、自动映射、规则确认与质量体检,任务达到 `diagnosed / match`。
42
+ - 最新 tarball 在 rc.2(43190)与 alpha.2(43191)均完成四类制品创建、真实 XLSX 反向解析和
43
+ 跨 Host 重启恢复;rc.2 完成浅色、深色和 820×900 窄屏视觉回归。未执行真实 QCC 调用。
44
+
45
+ ### Security
46
+ - v2 Host KV 只保存任务元数据、数字汇总和制品引用,不持久化原始企业名单、候选详情、QCC 原始响应或凭据。
47
+ - 工作流契约和任务元数据 API 不执行 QCC 工具;真实补全继续受零调用估算、用户付费确认、幂等键和调用上限保护。
48
+ - 制品 ID 与路径严格校验,文件名去除控制字符,单制品限 32 MiB;下载前验证 SHA-256,运行制品目录
49
+ 已从 Git 和 npm 包排除。
50
+ - CSV 导出会中和以 `= + - @` 开头的外部文本,防止 Excel/LibreOffice 公式注入;XLSX Base64
51
+ 读取上限覆盖编码后的 4/3 体积膨胀,解码后仍执行 32 MiB 硬限制。
52
+
53
+ ## [0.5.3] - 2026-09-03
54
+
55
+ > UI 二次对齐版本;不改变 Host/QCC 工具契约或计费安全门。
56
+
57
+ ### Added
58
+ - 为插件创建的 blank 会话增加「数据清洗补全智能体」业务首页、产品说明、四阶段工作流与安全边界说明。
59
+ - 在原生输入框左上角增加提示词生成器:支持粘贴企业名/统一社会信用代码、解析 Excel/CSV/JSON、
60
+ 附加图片、选择清洗动作和补全维度,并将自然语言任务描述回填原生输入框供人工修改。
61
+ - 表格由本地同源解析端点处理,完整数据经 session→root 事件桥载入工作台;提示词仅带主体预览,
62
+ 避免把整表无边界写入模型上下文。
63
+
64
+ ### Changed
65
+ - 侧栏菜单由「数据清洗」改为「数据清洗补全」,点击后先进入中央业务首页,不再自动拉开右侧工作台。
66
+ - 五个流程入口从输入框内部 `conversation.input.left` 迁到公开 `conversation.input.dock`,并仅移动
67
+ 本插件 cell 到输入框下方;普通 DSH 会话不显示业务首页、提示词按钮或流程入口。
68
+
69
+ ### Compatibility
70
+ - DSH 没有公开 Hero headline 替换槽位;0.5.3 使用精确匹配中英文原生标题、卸载时恢复的隔离 DOM Bridge。
71
+ - 图片接入只在运行时探测到 `conversation.createDraftImages` 与 `input.shell().addImages` 后启用;
72
+ 不硬编码未验证的企查查智能文档解析工具名,任务描述只要求模型使用当前已连接且可用的能力。
73
+
7
74
  ## [0.5.2] - 2026-09-03
8
75
 
9
76
  > DSH 原生 UI 对齐版本;不改变 QCC 工具范围、OAuth、计费确认或数据契约。
package/README.en.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > A data cleaning & completion agent plugin for DeepSeek Harness: local CSV/XLSX/JSON engine plus optional Qichacha (QCC) MCP enterprise-data enrichment. Initiated and maintained by the Qichacha (QCC) team.
4
4
  >
5
- > Current source version / 当前源码版本: **0.5.2** (stable release)
5
+ > Current source version / 当前源码版本: **0.6.0** (stable release)
6
6
 
7
7
  [![CI](https://github.com/duhu2000/dsh-data-cleaning-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/duhu2000/dsh-data-cleaning-agent/actions/workflows/ci.yml)
8
8
  [![npm](https://img.shields.io/npm/v/dsh-data-cleaning-agent)](https://www.npmjs.com/package/dsh-data-cleaning-agent)
@@ -20,9 +20,10 @@ clean name / phone / amount columns (trim, phone normalization, drop missing-req
20
20
  negative-amount / duplicate rows), deterministically complete gaps, profile the batch, and
21
21
  export clean CSV.
22
22
 
23
- The model only ever receives **aggregate summaries, never raw detail rows**. Details are only
24
- viewed and exported in the same-origin web UI, keeping customer raw data out of model context
25
- by construction.
23
+ When spreadsheet data is handled in the right-side workbench, the model receives aggregate
24
+ summaries by default while full rows stay in the same-origin UI. If the user explicitly pastes
25
+ entities, attaches an image, or sends a spreadsheet entity preview through the prompt builder,
26
+ that selected content enters model context; the full spreadsheet still remains local to the workbench.
26
27
 
27
28
  QCC enrichment follows a **bring-your-own connection and account (BYO QCC)** model. Each customer
28
29
  connects QCC MCP in their own DSH environment and uses quota or billing attached to their own QCC
@@ -40,10 +41,13 @@ Fully restart DeepSeek Harness afterwards (stop and re-run `dsh web`). Then say
40
41
  "help me clean this batch of company list data" and the plugin loads its built-in Skill and
41
42
  drives the clean / complete / profile tools.
42
43
 
43
- After restart, a "Data Cleaning" entry appears between "New Session" and "Workspaces" near the top
44
- of the sidebar. It opens a native DSH conversation with five composer actions (upload, profile,
45
- match, enrich, and history) and a right-side workbench for the four-step flow. Clean / complete /
46
- profile tool calls continue to render matching cards in the native conversation.
44
+ After restart, a "Data Cleaning & Completion" entry appears between "New Session" and "Workspaces"
45
+ near the top of the sidebar. It opens a dedicated native DSH session with a business landing view,
46
+ product/workflow introduction, and a prompt builder at the upper-left of the composer. The builder
47
+ accepts pasted entities, locally parsed spreadsheet data, or image attachments and writes an editable
48
+ task brief back to the native composer. Five workflow actions (upload, profile, match, enrich, history)
49
+ sit below the composer and open the five-step workbench (upload, rules, match, enrich, download)
50
+ on demand. Completed tasks expose four durable Host artifacts: result and exception-list CSV/XLSX.
47
51
 
48
52
  Without the `dsh` CLI, use the install script:
49
53
 
@@ -65,14 +69,17 @@ Or let an agent install it for you:
65
69
  | Parse | web `/data-cleaning/api/mvp/parse` | CSV / XLSX / JSON |
66
70
  | Async jobs | web `/data-cleaning/api/mvp/jobs` | job state machine + persistent storage |
67
71
  | UI | web `/data-cleaning/` | upload → clean/complete → export |
68
- | In-app entry | top sidebar entry + five native composer actions | keeps the DSH conversation in the center and opens the Mockup-aligned workbench on the right |
72
+ | Five-step tasks | web `/data-cleaning/api/workflow/*` | taskId/revision, rules, match, enrich, recovery, and state audit |
73
+ | Durable artifacts | Host workspace `.dsh-data-cleaning-artifacts/v1` | result/exception CSV+XLSX, checksum verification, restart-safe download |
74
+ | In-app entry | top "Data Cleaning & Completion" entry + five actions below the composer | dedicated business home in the center; opens the Mockup-aligned workbench on demand |
75
+ | Prompt builder | `conversation.input.overlay` | text / spreadsheet / image intake, cleaning and enrichment selection, editable native-composer draft |
69
76
  | Tool cards | `tool.call.toolview` (`data_clean_rows`/`data_complete_rows`/`data_profile`) | render clean/complete/profile result cards in-conversation with running/done/failed state |
70
77
  | Task progress | workbench header jobs pill | polls `/data-cleaning/api/mvp/jobs`; shows queued / running tasks |
71
78
  | Skill | `data-cleaning` | guides the model through the workflow |
72
79
  | QCC Skill enrichment | `enterprise-enrichment` | 0.4.0: company panorama, ownership, governance, and historical registration |
73
80
  | 0.4.0 preflight | web `/data-cleaning/api/phase2/capabilities` | Read-only 16+4 dynamic-tool check; makes no QCC or paid calls |
74
81
  | QCC Host Bridge | web `/data-cleaning/api/g5/*` | 0.4.0: real OAuth/QCC path, natural-expiry refresh, and fault injection verified |
75
- | Three-domain enrichment | web `/data-cleaning/api/phase3/*` | 0.5.0: risk 38 + IPR 18 + operation 35, zero-call estimate, user-owned QCC quota confirmation, candidate review, recovery/retry, and two CSV exports |
82
+ | Three-domain enrichment | web `/data-cleaning/api/phase3/*` | 0.5.0: risk 38 + IPR 18 + operation 35, zero-call estimate, user-owned QCC quota confirmation, candidate review, recovery/retry, and two CSV exports (no domain expansion in 0.6.0) |
76
83
 
77
84
  ## Qichacha MCP enrichment (status and roadmap)
78
85
 
@@ -107,6 +114,9 @@ See [the Phase-3 acceptance record](docs/PHASE3-ACCEPTANCE.md) and
107
114
  [the 0.5.0 release record](docs/RELEASE-0.5.0.md) for verification, upgrade, and rollback.
108
115
  See [the 0.5.1 release record](docs/RELEASE-0.5.1.md) for the README fix and release-text gate.
109
116
  See [the 0.5.2 release record](docs/RELEASE-0.5.2.md) for native DSH UI alignment, verification, and rollback.
117
+ See [the 0.5.3 release record](docs/RELEASE-0.5.3.md) for the business landing view and prompt builder.
118
+ See [the 0.6.0 release record](docs/RELEASE-0.6.0.md) for the taskId workflow, durable artifacts,
119
+ restart recovery, and dual-baseline validation.
110
120
 
111
121
  See [docs/PLAN-OSS.md](docs/PLAN-OSS.md) for details.
112
122
 
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 在 DeepSeek Harness 中清洗、补全、画像企业名单数据的智能体插件:本地 CSV/XLSX/JSON 引擎 + 可选企查查(Qichacha/QCC)MCP 企业数据补全,由企查查(Qichacha/QCC)团队发起并维护。
4
4
  >
5
- > 当前源码版本 / Current source version: **0.5.2**(正式版本)
5
+ > 当前源码版本 / Current source version: **0.6.0**(正式版本)
6
6
 
7
7
  [![CI](https://github.com/duhu2000/dsh-data-cleaning-agent/actions/workflows/ci.yml/badge.svg)](https://github.com/duhu2000/dsh-data-cleaning-agent/actions/workflows/ci.yml)
8
8
  [![npm](https://img.shields.io/npm/v/dsh-data-cleaning-agent)](https://www.npmjs.com/package/dsh-data-cleaning-agent)
@@ -19,8 +19,9 @@
19
19
  对姓名、手机号、金额等列做清洗(去空格、手机号规范化、剔除缺失/负金额/重复行)、
20
20
  确定性补全与概览画像,并导出干净的 CSV。
21
21
 
22
- 模型(LLM)**只拿到统计摘要,从不读取原始明细行**;明细只在同源 web 界面查看与导出,
23
- 从架构上避免把客户原始数据灌进模型上下文。
22
+ 通过右侧工作台处理表格时,模型(LLM)默认只拿到统计摘要,完整明细仅在同源 web 界面查看与导出。
23
+ 如果用户主动用提示词生成器粘贴名单、附加图片或把表格主体预览回填对话框,这些用户明确选择发送的
24
+ 内容会进入模型上下文;表格完整数据仍只保留在本机工作台。
24
25
 
25
26
  企查查补全采用 **客户自带连接与账号(BYO QCC)**:每位客户在自己的 DSH 中开通企查查 MCP,
26
27
  调用消耗其自有账号的套餐额度或按其与企查查的合同计费。本插件不内置、不分发、不共享开发者 Key,
@@ -35,9 +36,11 @@ dsh plugin --profile web add dsh-data-cleaning-agent
35
36
  安装后**完全重启** DeepSeek Harness(停止后重新运行 `dsh web`)。
36
37
  之后在对话中说「帮我清洗这批企业名单数据」,插件会自动加载内嵌 Skill 并调度清洗/补全/画像工具。
37
38
 
38
- 重启后,「数据清洗」入口会显示在侧边栏顶部的「新会话」与「工作区」之间。点击后打开 DSH 原生会话,
39
- 输入框工具行提供上传清洗、质量体检、匹配核验、字段补全和任务历史五个入口;右侧工作台承载
40
- 上传与映射 数据体检 → 匹配核验 → 补全与导出四步。模型调用工具时,对话内会渲染对应工具卡片。
39
+ 重启后,「数据清洗补全」入口会显示在侧边栏顶部的「新会话」与「工作区」之间。点击后打开专属的
40
+ DSH 原生会话:首页标题、产品说明与工作流会替换通用探索页;输入框左上角提供提示词生成器,支持
41
+ 粘贴名单、解析 Excel/CSV/JSON 或附加图片并选择清洗动作、补全字段。上传清洗、质量体检、匹配核验、
42
+ 字段补全和任务历史五个入口位于输入框下方,右侧工作台承载“上传数据 → 规则确认 → 数据匹配 →
43
+ 清洗补全 → 下载数据”五步闭环。完成后可下载结果与异常清单的 CSV/XLSX 四类 Host 耐久制品。
41
44
 
42
45
  没有 `dsh` CLI 时,也可以用安装脚本:
43
46
 
@@ -59,14 +62,17 @@ bash <(curl -fsSL https://raw.githubusercontent.com/duhu2000/dsh-data-cleaning-a
59
62
  | 解析 | web `/data-cleaning/api/mvp/parse` | CSV / XLSX / JSON |
60
63
  | 异步任务 | web `/data-cleaning/api/mvp/jobs` | 任务状态机 + 持久化存储 |
61
64
  | UI | web `/data-cleaning/` | 上传 → 清洗/补全 → 导出 |
62
- | 应用内入口 | 侧栏顶部「数据清洗」+ 原生输入框五能力按钮 | 中央保留 DSH 原生对话,右侧打开 Mockup 对齐工作台 |
65
+ | 五步任务 | web `/data-cleaning/api/workflow/*` | taskId/revision、规则、匹配、补全、恢复与状态审计 |
66
+ | 耐久制品 | Host 工作区 `.dsh-data-cleaning-artifacts/v1` | 结果/异常 CSV+XLSX,checksum 校验,跨 Host 重启下载 |
67
+ | 应用内入口 | 侧栏顶部「数据清洗补全」+ 输入框下方五能力按钮 | 中央业务首页与原生对话,右侧按需打开 Mockup 对齐工作台 |
68
+ | 提示词生成 | `conversation.input.overlay` | 文本 / Excel / 图片录入、清洗项与补全维度选择,生成后回填原生输入框供人工修改 |
63
69
  | 工具卡片 | `tool.call.toolview`(`data_clean_rows`/`data_complete_rows`/`data_profile`) | 对话内渲染清洗/补全/画像结果卡,含运行/已完成/失败状态 |
64
70
  | 任务进度 | 工作台头部任务 pill | 轮询 `/data-cleaning/api/mvp/jobs`,展示排队/运行中任务 |
65
71
  | Skill | `data-cleaning` | 引导模型按工作流调度上述工具 |
66
72
  | 企查查 Skill 补全 | `enterprise-enrichment` | 0.4.0:工商全景、股权穿透与历史工商 |
67
73
  | 0.4.0 工具预检 | web `/data-cleaning/api/phase2/capabilities` | 只读检查 16+4 动态工具,不发起 QCC/付费调用 |
68
74
  | QCC Host Bridge | web `/data-cleaning/api/g5/*` | 0.4.0:后台批量基础层;真实 OAuth/QCC 主路径、自然到期刷新与故障注入均已验收 |
69
- | 三域补全 | web `/data-cleaning/api/phase3/*` | 0.5.0:风险 38 + 知产 18 + 经营 35;零调用估算、显式付费确认、候选复核、恢复/重试与双 CSV 导出 |
75
+ | 三域补全 | web `/data-cleaning/api/phase3/*` | 0.5.0:风险 38 + 知产 18 + 经营 35;零调用估算、显式付费确认、候选复核、恢复/重试与双 CSV 导出(当前按用户要求暂不扩展工具域) |
70
76
 
71
77
  ## 企查查 MCP 补全(状态与路线图)
72
78
 
@@ -104,6 +110,9 @@ bash <(curl -fsSL https://raw.githubusercontent.com/duhu2000/dsh-data-cleaning-a
104
110
  发布记录、升级与回滚见 [docs/RELEASE-0.5.0.md](docs/RELEASE-0.5.0.md)。
105
111
  0.5.1 文档补丁与防回归发布门见 [docs/RELEASE-0.5.1.md](docs/RELEASE-0.5.1.md)。
106
112
  0.5.2 DSH 原生 UI 对齐范围、验收与回滚见 [docs/RELEASE-0.5.2.md](docs/RELEASE-0.5.2.md)。
113
+ 0.5.3 业务首页、提示词生成和输入框下方流程栏见 [docs/RELEASE-0.5.3.md](docs/RELEASE-0.5.3.md)。
114
+ 0.6.0 五步 taskId 工作流、耐久制品、跨重启恢复与双基线验收见
115
+ [docs/RELEASE-0.6.0.md](docs/RELEASE-0.6.0.md)。
107
116
 
108
117
  ## 本地开发
109
118
 
@@ -21,11 +21,23 @@ MVP 路由、Phase-3 capabilities、estimate 与未确认 enrich 阻断均通过
21
21
  0.5.1 为已发布的 README 状态与发布 Gate 文档补丁,不修改 Host/Client、QCC 契约或运行时依赖,
22
22
  因此继承 0.5.0 的 DSH、Node 与 OAuth 兼容矩阵。
23
23
 
24
- 0.5.2 源码候选只调整 Client UI:入口 Portal 到 `sidebar.workspaces` 前,中央区域复用 DSH 原生会话,
24
+ 0.5.2 已发布版本只调整 Client UI:入口 Portal 到 `sidebar.workspaces` 前,中央区域复用 DSH 原生会话,
25
25
  五能力入口使用公开 `conversation.input.left`,会话头恢复入口使用公开
26
26
  `conversation.session.header.actions`,右侧面板继续使用 additive `shell.overlay`。不替换单占位
27
27
  `details` / `conversation.session.header`,也不修改 Host、QCC 工具契约或计费安全门。
28
28
 
29
+ 0.5.3 正式版本修正第二轮 UI 位置:五能力入口迁到公开 `conversation.input.dock`,只使用稳定
30
+ `data-slot` 和 `:has()` 把本插件 cell 排到输入框下方;提示词生成器使用公开
31
+ `conversation.input.overlay` 和标准 `inputActions.setDraft`。DSH 未提供公开 Hero headline 槽位,
32
+ 因此仅对插件创建且仍为空白的会话使用精确中英文文本匹配、卸载恢复的 DOM Bridge。图片接入对
33
+ `conversation.createDraftImages` / `input.shell(sessionId).addImages` 做运行时探测,视为隔离兼容层,
34
+ 不承诺 alpha 实验面稳定。
35
+
36
+ 2026-09-04 的未发布 v2 工作流在 rc.2(43190)与 alpha.2(43191)完成最新本地 tarball
37
+ 隔离安装:两条基线均创建 `dc_workflows_v2` 任务与结果/异常 CSV+XLSX 四类制品,停止并重启 Host
38
+ 后可按原 taskId 下载,XLSX 反向解析工作表为“清洗补全结果”。稳定发布判断仍以 rc.2 为主,
39
+ alpha.2 只作兼容探针。全程未触碰生产 43120,未调用 QCC。
40
+
29
41
  ## 2. Node 运行时
30
42
 
31
43
  - 本包 `engines.node` 声明 `>=20`。
@@ -52,7 +64,7 @@ MVP 路由、Phase-3 capabilities、estimate 与未确认 enrich 阻断均通过
52
64
  | --- | --- | --- |
53
65
  | 工具名前缀 | `qcc_oauth_*` + 规范 `mcp__qcc-*`;0.1.7 实测为 legacy `mcp__company__*` 等 | `data_clean_rows` / `data_complete_rows` / `data_profile` |
54
66
  | Skill | — | `data-cleaning`、`enterprise-enrichment` |
55
- | 存储域 | 自有 grant store | `dc_tasks_v1` |
67
+ | 存储域 | 自有 grant store | `dc_tasks_v1` + `dc_workflows_v2` |
56
68
  | 能否共存 | ✅ | ✅(工具名 / Skill 名 / 存储域 / 条目 id 全独立) |
57
69
 
58
70
  - `enterprise-enrichment` Skill 本身**不重造 OAuth**:它只调用
@@ -95,6 +107,21 @@ Portal、原生会话、五能力按钮、跨 scope 状态桥、窄桌面布局
95
107
  插件只做运行时能力探测并保留 `sessions.create` 安全降级,不承诺 alpha 实验面稳定。Portal 失败时
96
108
  仍保留 footer 降级按钮。
97
109
 
110
+ 0.5.3 新增业务首页和提示词生成器,并把流程栏移出输入框。当前未发布 v2 已在 rc.2 真实页面完成
111
+ 浅色、深色及 820×900 窄屏回归;窄屏页面无横向溢出,最近完成任务可恢复原 taskId 并显示四个
112
+ Host 制品下载按钮。alpha.2 继续只检查 Host/路由/制品 Bridge,不作为精确视觉基线。
113
+
114
+ ### 4.4 未发布 v2 制品兼容面(2026-09-04)
115
+
116
+ | 能力 | rc.2 | alpha.2 | 备注 |
117
+ | --- | --- | --- | --- |
118
+ | `dc_workflows_v2` schema 2 | ✅ | ✅ | taskId + revision;原始行不进入 KV |
119
+ | `ctx.fs.writeText/readBytes` | ✅ | ✅ | 当前已验证的公共 Host seam |
120
+ | 结果/异常 CSV | ✅ | ✅ | UTF-8 文本,工作区本地保存 |
121
+ | 结果/异常 XLSX | ✅ | ✅ | Base64 over writeText;下载恢复真实 ZIP 字节 |
122
+ | checksum / 跨重启下载 | ✅ | ✅ | SHA-256;同一 taskId/artifactId |
123
+ | 深浅色/窄屏实际 UI | ✅ | 探针 | rc.2 为视觉基线,alpha.2 不作稳定视觉承诺 |
124
+
98
125
  ### 4.3 0.5.0 三域兼容面
99
126
 
100
127
  | 能力 | rc.2 | alpha.2 | 备注 |
@@ -116,3 +143,7 @@ Portal、原生会话、五能力按钮、跨 scope 状态桥、窄桌面布局
116
143
  - `/data-cleaning/api/phase3/*` 为 0.5.0 已发布能力;单批最多 100 行、并发最多 4、默认/硬调用上限
117
144
  500/2000。run 只保留在 Host 内存 30 分钟,Host 重启不恢复。
118
145
  - alpha.2 的实际 UI 只作兼容探针;0.5.0 的稳定发布与回滚判断以 rc.2 为准。
146
+ - v2 单制品上限 32 MiB、单次最多 100,000 行和 256 列;当前 Host 未验证稳定 `writeBytes`,
147
+ XLSX 因此以 Base64 文本落盘。未来切换二进制 seam 必须保留旧 `v1` 制品读取兼容。
148
+ - v2 已生成制品可跨 Host 重启恢复,但浏览器 runtime 中尚未导出的原始行不会持久化;恢复中途任务
149
+ 仍需用户重新提供输入。制品只在当前工作区,不承诺跨设备同步。
@@ -2,9 +2,9 @@
2
2
 
3
3
  > 版本:**0.5.2**
4
4
  >
5
- > 状态:**正式版本;由 `v0.5.2` 标签触发 npm OIDC Trusted Publishing 与 GitHub Release。**
5
+ > 状态:**✅ 已发布;npm `latest`、Git tag 与 GitHub Latest 均为 `0.5.2`。**
6
6
  >
7
- > 发布日期:2026-09-03
7
+ > 发布时间:2026-09-03T06:10:34Z
8
8
 
9
9
  ## 1. 目的与范围
10
10
 
@@ -25,6 +25,10 @@
25
25
  - DSH `0.1.1-rc.2` / `0.1.2-alpha.2` 全新隔离安装与 UI 冒烟通过;
26
26
  - 已验证顶部入口、中央原生会话、五能力按钮、非模态右栏、布局避让、上传解析和质量体检;
27
27
  - 本轮 UI 验收没有调用 QCC,也没有触碰生产 DSH Host。
28
+ - `v0.5.2` annotated tag 指向 `a1bb68a`;Release workflow `33722000758` 全绿;
29
+ - npm 公共 Registry 返回 `latest=0.5.2`,provenance predicate 为 SLSA v1;
30
+ - 公共 Registry 全新安装成功,ESM 导出为 `apply / inject / name`,包内中英文 README 均为 0.5.2 正式态;
31
+ - GitHub Release 为非 draft、非 prerelease:https://github.com/duhu2000/dsh-data-cleaning-agent/releases/tag/v0.5.2 。
28
32
 
29
33
  ## 3. 升级与回滚
30
34
 
@@ -0,0 +1,66 @@
1
+ # 0.5.3 UI 二次对齐发布记录
2
+
3
+ > 版本:**0.5.3**
4
+ >
5
+ > 状态:**✅ 已发布;npm `latest`、Git tag 与 GitHub Release 均为 `0.5.3`。**
6
+ >
7
+ > 发布时间:2026-09-03T10:36:28Z
8
+
9
+ ## 目标
10
+
11
+ 0.5.3 继续对齐原始高保真 Mockup 与招投标智能体的入口模式:
12
+
13
+ 1. 侧栏名称为「数据清洗补全」,位置仍在「新会话」与「工作区」之间;
14
+ 2. 点击菜单先进入中央业务首页,不自动展开右侧工作台;
15
+ 3. 五个流程入口位于原生输入框下方;
16
+ 4. 输入框左上角提供提示词生成器,生成内容回填原生输入框,用户可修改后发送;
17
+ 5. 右侧工作台继续负责上传映射、质量体检、匹配核验、补全导出与任务历史。
18
+
19
+ ## 已验证的 DSH 契约
20
+
21
+ 本实现依据本机 DSH Desktop 随附的一手槽位目录与运行时代码:
22
+
23
+ | 能力 | 已验证事实 | 0.5.3 用法 |
24
+ | --- | --- | --- |
25
+ | `conversation.input.left` | 输入框卡片内部工具行 | 不再承载五流程按钮 |
26
+ | `conversation.input.dock` | session 级、独立整行,默认位于输入框上方 | 承载业务首页和五流程按钮,仅通过稳定 `data-slot` 把本 cell 排到输入框下方 |
27
+ | `conversation.input.overlay` | session 级浮层锚点,标准 props 含 `sessionId` / `inputActions` | 承载提示词生成触发器与弹层 |
28
+ | `inputActions.setDraft` | 原生输入机动作 | 把生成的任务描述回填对话框 |
29
+ | `conversation.createDraftImages` + `input.shell(id).addImages` | 本机 rc.2 运行时存在的浏览器 Draft 图片链 | 仅经能力探测 Bridge 使用;失败时释放临时图片并提示使用原生“+” |
30
+ | Hero headline | 当前没有公开的 headline 替换槽位 | 仅在本插件 blank 会话精确匹配中英文标题并可恢复;普通会话不变 |
31
+
32
+ ## 提示词生成器范围
33
+
34
+ - 输入:逐行企业名称/统一社会信用代码、本地 Excel/XLS/CSV/JSON、PNG/JPEG/WebP 图片;
35
+ - 清洗:名称规范、旧名补全/修正、信用代码校验/补全、去重、模糊候选人工确认;
36
+ - 补全:v1 工商字段,以及已经存在的企业全景、股权、组织、风险、知产、经营维度组;
37
+ - 输出:自然语言任务描述,包含精确优先、多候选暂停、缺失不编造、来源保留与客户自带 QCC 费用边界;
38
+ - 表格:完整解析结果留在本机工作台,提示词只包含最多 50 条主体预览;
39
+ - 图片:插件只附加图片并生成能力要求,不假设或硬编码尚未验证的“智能文档解析”具体工具名。
40
+
41
+ ## 验收门
42
+
43
+ - [x] `npm run check` 全通过(2026-09-03:138/138);
44
+ - [x] rc.2 隔离 Profile 安装本地 tarball,Host `apply()`、MVP seam、3 tools 与 2 skills 注册成功;
45
+ - [ ] 侧栏文案、业务首页标题和四段产品流程与设计稿一致;
46
+ - [ ] 五流程按钮位于输入框下方,打开对应右侧工作台步骤;
47
+ - [ ] 文本、Excel、图片三种提示词生成路径均能回填且可编辑;
48
+ - [x] 组件/事件契约确认 Excel 完整数据进入工作台,普通会话不出现本插件业务 UI;
49
+ - [ ] 右栏关闭/展开、窄桌面与深色模式无明显遮挡;
50
+ - [ ] 无真实 QCC 调用即可完成 UI 验收;真实调用仍受既有估算、确认、幂等与上限门保护。
51
+
52
+ > 本轮应用内浏览器首次打开时已确认顶部菜单文案;隔离 Host 重启后,本机 URL 被浏览器安全策略阻止二次访问,
53
+ > 因此标题、流程栏位置、弹层及深浅色/窄屏保留为发布后人工观察项,未用替代浏览器绕过。
54
+
55
+ 发布结果:
56
+
57
+ - `v0.5.3` annotated tag 指向 `f7eac00`;Release workflow `33745170057` 全绿;
58
+ - npm 公共 Registry 返回 `latest=0.5.3`,包含 38 个文件,SHA-1 为 `d349a593d8b45efc794456bf5854e4ec583ca70f`;
59
+ - npm provenance predicate 为 SLSA v1;
60
+ - GitHub Release 为非 draft、非 prerelease:https://github.com/duhu2000/dsh-data-cleaning-agent/releases/tag/v0.5.3 。
61
+
62
+ ## 升级与回滚
63
+
64
+ - 升级:安装 `dsh-data-cleaning-agent@0.5.3` 并完全重启 DSH;不覆盖客户 OAuth grant 或 Key。
65
+ - 回滚:重新安装 `dsh-data-cleaning-agent@0.5.2` 并完全重启 DSH。
66
+ - 0.5.3 不修改 Host 路由、QCC 工具契约、存储 schema 或导出格式,回滚无需数据迁移。
@@ -0,0 +1,46 @@
1
+ # 0.6.0 五步工作流与耐久制品发布记录
2
+
3
+ > 版本:**0.6.0**
4
+ > 发布日期:2026-09-04
5
+ > 发布来源:`v0.6.0` Tag 触发 GitHub Actions,使用 npm OIDC Trusted Publishing。
6
+
7
+ ## 目标
8
+
9
+ 0.6.0 将 0.5.3 的业务首页升级为可恢复的完整企业数据清洗补全系统:
10
+
11
+ 1. 主流程固定为上传数据、规则确认、数据匹配、清洗补全、下载数据五步;
12
+ 2. 每个会话绑定独立 taskId,并用 revision 防止并发覆盖;
13
+ 3. 上传解析、字段映射、质量体检、候选核验和补全状态统一进入 Host 工作流;
14
+ 4. 完成任务生成结果与异常清单的 CSV/XLSX 四类耐久制品;
15
+ 5. 浏览器原始行丢失或 Host 重启后,仍可按 taskId 恢复任务并下载既有制品。
16
+
17
+ ## 兼容与安全
18
+
19
+ - 稳定发布基线为 DSH `0.1.1-rc.2`;`0.1.2-alpha.2` 只作兼容探针。
20
+ - Host KV 只保存任务元数据、数字摘要和制品引用,不保存原始企业名单、候选详情、QCC 原始响应或凭据。
21
+ - 制品写入用户工作区 `.dsh-data-cleaning-artifacts/v1/`,不进入 Git 或 npm 包。
22
+ - 下载前验证 SHA-256;路径和 ID 严格校验;CSV 中和公式型外部文本。
23
+ - QCC 继续采用 BYO 账号:客户使用自己的企查查 MCP 连接与额度,插件不共享 Key、不代付。
24
+ - 历史域、人员域和招投标域仍不进入本版本新增范围。
25
+
26
+ ## 验收证据
27
+
28
+ - `npm run check` 全绿,165/165 自动测试通过;
29
+ - npm dry-run 包 45 个文件全部命中白名单;
30
+ - rc.2(43190)和 alpha.2(43191)均完成四类制品生成、真实 XLSX 反向解析和跨 Host 重启恢复;
31
+ - rc.2 完成浅色、深色和 820×900 窄屏真实页面回归,无页面横向溢出;
32
+ - 最近任务恢复显示原 taskId 和四个下载按钮,不会误创建新草稿;
33
+ - 未触碰生产端口 43120,未执行新的真实 QCC 调用。
34
+
35
+ ## 升级与回滚
36
+
37
+ - 升级:安装 `dsh-data-cleaning-agent@0.6.0` 并完全重启 DSH。
38
+ - 回滚:重新安装 `dsh-data-cleaning-agent@0.5.3` 并完全重启 DSH。
39
+ - 回滚不会删除 `dc_workflows_v2` 或工作区制品;0.5.3 会忽略这些新增数据。
40
+ - 完整说明见 `docs/UI-WORKFLOW-V2-MIGRATION.md`。
41
+
42
+ ## 外部发布核验
43
+
44
+ Tag 推送后必须确认 Release workflow 全绿、npm `latest=0.6.0`、provenance 存在、GitHub Release
45
+ 非 draft/非 prerelease,并从公共 Registry 在全新隔离 Profile 安装验证。实际 workflow run、tarball
46
+ 哈希与公共安装结果在发布完成后的仓库进度记录中补充。
@@ -0,0 +1,84 @@
1
+ # 数据清洗补全 v2 · T6~T9 验收与发布准备
2
+
3
+ > 验收日期:2026-09-04
4
+ > 分支:`feat/ui-workflow-v2`,基线 `main@0be4de3`
5
+ > 状态:本地开发与验收完成,作为 `0.6.0` 发布门;本文不替代 npm/GitHub 外部发布核验。
6
+
7
+ ## 1. 验收范围
8
+
9
+ | 任务 | 交付 | 结论 |
10
+ | --- | --- | --- |
11
+ | T6 | Host 耐久制品、真实 XLSX、异常清单、双基线、视觉回归、迁移/回滚 | 通过 |
12
+ | T7 | 匹配摘要、候选人工核验、部分失败显式重试、补全后导出 | 通过 |
13
+ | T8 | 四类制品下载、taskId 历史恢复、跨 Host 重启下载 | 通过 |
14
+ | T9 | 自动化门禁、tarball 白名单、兼容与发布决策 | 通过;版本确定为 0.6.0 |
15
+
16
+ ## 2. T6 制品契约
17
+
18
+ 每个完成任务生成四个工作区本地制品:
19
+
20
+ 1. 清洗补全结果 CSV;
21
+ 2. 清洗补全结果 XLSX;
22
+ 3. 异常清单 CSV;
23
+ 4. 异常清单 XLSX。
24
+
25
+ DSH rc.2 / alpha.2 当前验证的 `ctx.fs` 只公开 `writeText` 与 `readBytes`,未验证稳定的二进制写接口。
26
+ 因此 CSV 以 UTF-8 文本保存,真实 XLSX 字节以 Base64 文本保存,下载时解码并校验 SHA-256。该策略被
27
+ 隔离在 `lib/artifacts.js`,以后 Host 提供稳定 `writeBytes` 时可只替换适配层。
28
+
29
+ 限制:单制品最大 32 MiB、单次最多 100,000 行、最多 256 列。制品目录是
30
+ `.dsh-data-cleaning-artifacts/v1/<taskId>/`,已加入 Git 忽略规则,不进入 npm 包。
31
+ CSV 会中和公式型外部文本;XLSX Base64 的读取上限按编码膨胀计算,解码后仍执行 32 MiB 硬限制。
32
+
33
+ ## 3. 双基线跨重启实测
34
+
35
+ | DSH | 隔离端口 | 初次运行 | 重启恢复 | XLSX |
36
+ | --- | ---: | --- | --- | --- |
37
+ | `0.1.1-rc.2` | 43190 | seam、任务、四制品通过 | 同一 taskId/制品通过 | ZIP magic `PK`;工作表“清洗补全结果” |
38
+ | `0.1.2-alpha.2` | 43191 | seam、任务、四制品通过 | 同一 taskId/制品通过 | ZIP magic `PK`;工作表“清洗补全结果” |
39
+
40
+ 实测使用合成的两行数据和隔离 Profile;未触碰生产端口 `43120`,未调用 QCC,未产生企查查费用。
41
+
42
+ ## 4. T7 匹配与补全闭环
43
+
44
+ - 字段映射必须包含企业名称、统一社会信用代码或注册号之一。
45
+ - `exact / candidate / confirmed / unresolved / failed` 数量受总数约束,不显示无来源置信度。
46
+ - 多候选进入人工核验;`partial` 可显式重试并回到 `export_ready`。
47
+ - QCC 估算为零调用;真正执行前仍要求 `confirmPaidCalls:true`、幂等键与调用上限。
48
+ - 用户使用自己连接的 QCC MCP 账号并承担其账号额度/费用;插件不共享 Key、不代付。
49
+
50
+ ## 5. T8 恢复与下载
51
+
52
+ - 最近任务入口会把完整 taskId 注入工作台,不会误创建新草稿。
53
+ - 已完成任务即使浏览器 runtime 中没有原始行,也能从 Host 读取四类制品并下载。
54
+ - 下载响应使用固定同源路由、受控文件名、内容类型、长度与 `nosniff`,读取时验证 checksum。
55
+ - v2 不再登记 `browser-download:` 伪引用。
56
+
57
+ ## 6. 视觉回归
58
+
59
+ 真实 rc.2 页面已验证:
60
+
61
+ - 浅色桌面:首页、原生 Composer、输入框下五能力、右侧非模态工作台位置正确;
62
+ - 深色:首页、按钮、五步状态、下载制品信息可读;
63
+ - 820×900 窄屏:`scrollWidth === viewport width`,页面无横向溢出;右栏按窄屏安全覆盖中央内容;
64
+ - 完成任务恢复后显示原 taskId、输入行数及四个下载按钮。
65
+
66
+ ## 7. 自动化与发布门
67
+
68
+ 发布候选必须同时满足:
69
+
70
+ ```bash
71
+ npm run check
72
+ git diff --check
73
+ npm pack --dry-run --json --cache .npm-cache
74
+ ```
75
+
76
+ 并复核 tarball 不包含测试、OAuth/Key、真实名单、QCC 原始响应、`.dsh-data-cleaning-artifacts/` 或
77
+ `_scratch/`。2026-09-04 最新本地门禁结果为 `npm run check` 全绿、165/165 测试通过、npm tarball
78
+ 44 个文件全部命中白名单,`git diff --check` 无错误。
79
+
80
+ ## 8. 版本决策与剩余发布动作
81
+
82
+ 版本确定为 **0.6.0**,原因是新增 Host 工作流 API、持久化 domain、耐久制品和完整五步业务流程。
83
+ 发布按顺序执行:最终代码审查 → 版本/README/Changelog 快照 → commit/push → Tag → OIDC npm 发布 →
84
+ GitHub Release → 公共 Registry 全新安装。验收记录本身不等于外部平台已经完成发布。
@@ -0,0 +1,62 @@
1
+ # 数据清洗补全 v2 · 升级、迁移与回滚
2
+
3
+ > 适用对象:从已发布 `0.5.3` 升级到 `0.6.0` 五步工作流版本。
4
+ > 外部发布状态以 `docs/RELEASE-0.6.0.md` 和 npm/GitHub 为准。
5
+
6
+ ## 1. 为什么建议使用 0.6.0
7
+
8
+ 本次变更不是单纯视觉补丁:新增五步 taskId 工作流、Host 持久化元数据、耐久 CSV/XLSX 制品、
9
+ 异常清单以及任务恢复 API。旧功能继续可用,但公开的同源 Host 能力和用户任务生命周期都有实质新增,
10
+ 因此按语义化版本建议使用次版本 `0.6.0`,而不是 `0.5.4`。
11
+
12
+ ## 2. 升级前检查
13
+
14
+ 1. 记录当前 DSH Profile、插件版本和回滚目标;稳定基线使用 DSH `0.1.1-rc.2`。
15
+ 2. 完成当前任务并下载需要保留的文件;`0.5.3` 的浏览器下载引用不能迁移成 Host 制品。
16
+ 3. 确认工作区可写。v2 制品写入工作区 `.dsh-data-cleaning-artifacts/v1/`。
17
+ 4. 备份 DSH Profile 和工作区;不要复制 OAuth token、Key 或 QCC 原始响应到源码仓库。
18
+ 5. 在隔离 Profile 安装候选 tarball并运行验收,再更新日常使用的 Profile。
19
+
20
+ ## 3. 数据迁移行为
21
+
22
+ | 数据 | 升级行为 | 回滚行为 |
23
+ | --- | --- | --- |
24
+ | `dc_tasks_v1` 旧异步任务 | 原样保留 | 原样可用 |
25
+ | `dc_workflows_v2` 任务元数据 | 新版本按 schema 2 增量创建 | 0.5.3 忽略,不删除 |
26
+ | `.dsh-data-cleaning-artifacts/v1` | 新版本创建并校验 SHA-256 | 0.5.3 忽略,文件保留 |
27
+ | 浏览器 runtime 原始行 | 不迁移、不写入 Host KV | 回滚后仍不可恢复 |
28
+ | QCC OAuth / Key | 不由本插件迁移或读取 | 由用户自己的 QCC MCP 连接管理 |
29
+
30
+ v2 没有破坏性数据库迁移,也没有自动删除步骤。升级后首次打开任务时按 taskId 读取元数据;如果任务尚未
31
+ 生成 Host 制品,用户需要重新提供原始数据才能继续处理。已经生成的四类制品可跨 Host 重启下载。
32
+
33
+ ## 4. 隔离安装与验收
34
+
35
+ 以下命令中的 Profile 名称仅为示例,必须使用隔离 Profile,不得直接操作生产端口 `43120`:
36
+
37
+ ```bash
38
+ npm pack --cache .npm-cache
39
+ dsh plugin --profile data-cleaning-v2-test add ./dsh-data-cleaning-agent-0.6.0.tgz
40
+ dsh web --profile data-cleaning-v2-test --port 43190
41
+ ```
42
+
43
+ 验收至少覆盖:创建任务、上传/映射、规则确认、匹配或本地清洗、生成四类制品、下载真实 XLSX、停止并
44
+ 重启 Host 后按同一 taskId 恢复。QCC 路径只有在用户自己的连接已授权且明确确认使用其账号额度时测试。
45
+
46
+ ## 5. 回滚
47
+
48
+ 若候选版本出现阻断问题,停止隔离 Host,并把插件切回已发布的 `0.5.3`:
49
+
50
+ ```bash
51
+ dsh plugin --profile data-cleaning-v2-test add dsh-data-cleaning-agent@0.5.3
52
+ ```
53
+
54
+ 回滚不会删除 `dc_workflows_v2` 或 `.dsh-data-cleaning-artifacts/v1`。不要手工清空工作区;修复后重新升级
55
+ 即可继续读取同一批 v2 元数据和制品。0.5.3 无法显示 v2 五步任务属于预期降级,不是数据丢失。
56
+
57
+ ## 6. 前滚与兼容原则
58
+
59
+ - schema 2 只做增量字段扩展;需要破坏性变化时必须新增 schema/domain 版本和显式迁移器。
60
+ - 制品路径版本固定为 `v1`;格式变化必须创建新目录版本,不能原地重写旧文件。
61
+ - `0.1.2-alpha.2` 只作兼容探针;发现差异时优先调整隔离 Bridge,不把实验 API变成稳定依赖。
62
+ - 发布前必须通过 `npm run check`、双基线跨重启、深浅色/窄屏回归和 npm tarball 白名单。