dsh-data-cleaning-agent 0.6.3 → 0.8.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 +24 -0
- package/README.en.md +16 -2
- package/README.md +13 -3
- package/docs/COMPATIBILITY.md +14 -0
- package/docs/RELEASE-0.7.0.md +44 -0
- package/docs/RELEASE-0.8.0.md +60 -0
- package/docs/UI-WORKFLOW-V2-ACCEPTANCE.md +40 -0
- package/docs/UI-WORKFLOW-V2.md +18 -9
- package/docs/USER-GUIDE.md +7 -3
- package/lib/client.js +511 -71
- package/lib/image-intake.js +414 -0
- package/lib/index.js +1 -0
- package/lib/qcc-field-catalog.js +185 -0
- package/lib/qcc-safety.js +11 -1
- package/lib/qcc.js +276 -79
- package/lib/web.js +76 -0
- package/lib/workflow-contract.js +17 -70
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,30 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.8.0] - 2026-09-05
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- 新增企业名单图片接入:数据清洗补全会话 Composer 可直接粘贴图片,提示词向导支持 PNG/JPEG/WebP 粘贴、拖入与选择。
|
|
11
|
+
- 图片使用 DSH 原生 draft attachment,向导显示 64px 缩略图、文件信息、移除操作和可点击放大的预览。
|
|
12
|
+
- Host 暂存完成后,回填识别说明前自动释放 Composer 图片附件,避免文本模型因不支持图片而拒绝执行。
|
|
13
|
+
- 新增 Agent-owned `data_cleaning_extract_image_companies` 高层工具与 `/data-cleaning/api/images/*` Host 指令/状态契约;运行时探测 `modlens_read_image` 并以 nested execution 识别企业名称和统一社会信用代码。
|
|
14
|
+
- 识别结果自动回传原四步向导供人工核对,然后进入既有 taskId 字段选择、主体匹配、QCC 补全和导出流程。
|
|
15
|
+
|
|
16
|
+
### Security
|
|
17
|
+
- 图片上限 8 MiB,按 PNG/JPEG/WebP 魔数验证;Host 临时目录为 0700、文件为 0600,成功、失败、取消或 TTL 到期后删除。
|
|
18
|
+
- 原图不进入 `storageDomain`、模型任务 KV 或导出制品;识别指令仅暴露随机 commandId,不包含 Host 文件路径。
|
|
19
|
+
- Provider 未安装时 fail closed;图片识别阶段不调用 QCC,后续匹配补全仍受客户自有 QCC 账号确认门保护。
|
|
20
|
+
|
|
21
|
+
## [0.7.0] - 2026-09-05
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- 数据清洗补全字段目录从 30 项扩展到 128 项:第一批开放联系方式、上市信息、税务开票、进出口信用 40 字段;第二批开放企业自身与关联风险扫描 58 字段。
|
|
25
|
+
- 新增 6 个一企一行 Host 适配器、风险因子稳定透视与目录漂移审计;电话/邮箱/网址全集、海关资质、风险明细和关联方列表继续排除。
|
|
26
|
+
- UI 按 8 个来源工具展示字段;同工具多字段每企只调用一次,Host 按实际来源工具在调用前校验 300 次预算上限。
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
- 所有新增字段贯通任务草稿、Agent-owned 命令、候选续跑、结果预览和中文 CSV/XLSX;缺失值保留空列,股票代码、税号、电话和银行账号保持文本。
|
|
30
|
+
|
|
7
31
|
## [0.6.3] - 2026-09-05
|
|
8
32
|
|
|
9
33
|
### Fixed
|
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
|
+
> Current source version / 当前源码版本: **0.8.0** (stable release)
|
|
6
6
|
|
|
7
7
|
[](https://github.com/duhu2000/dsh-data-cleaning-agent/actions/workflows/ci.yml)
|
|
8
8
|
[](https://www.npmjs.com/package/dsh-data-cleaning-agent)
|
|
@@ -49,6 +49,15 @@ task brief back to the native composer. Five workflow actions (upload, profile,
|
|
|
49
49
|
sit below the composer and open the five-step workbench (upload, rules, match, enrich, download)
|
|
50
50
|
on demand. Completed tasks expose four durable Host artifacts: result and exception-list CSV/XLSX.
|
|
51
51
|
|
|
52
|
+
Since 0.8.0, pasting an image into the native composer of a data-cleaning session, or dropping/selecting
|
|
53
|
+
a PNG, JPEG, or WebP in the prompt builder, opens the image-list workflow with a clickable native
|
|
54
|
+
thumbnail. After Host staging, the client releases the native composer attachment so text-only chat
|
|
55
|
+
models can accept the readable recognition turn. An Agent-owned high-level tool then uses a runtime-detected
|
|
56
|
+
image-text provider, returns company names/credit codes for human review, and
|
|
57
|
+
then enters the existing taskId workflow. `modlens_read_image` is the verified provider. If it is not
|
|
58
|
+
installed/configured, the feature fails closed and users can switch to text or Excel; recognition makes
|
|
59
|
+
no QCC call.
|
|
60
|
+
|
|
52
61
|
Without the `dsh` CLI, use the install script:
|
|
53
62
|
|
|
54
63
|
```bash
|
|
@@ -73,7 +82,8 @@ Or let an agent install it for you:
|
|
|
73
82
|
| Durable artifacts | Host workspace `.dsh-data-cleaning-artifacts/v1` | result/exception CSV+XLSX, checksum verification, restart-safe download |
|
|
74
83
|
| 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
84
|
| Prompt builder | `conversation.input.overlay` | text / spreadsheet / image intake, cleaning and enrichment selection, editable native-composer draft |
|
|
76
|
-
|
|
|
85
|
+
| Image list intake | `data_cleaning_extract_image_companies` + web `/data-cleaning/api/images/*` | native thumbnail/lightbox, paste/drop, ephemeral Host image, Agent-owned provider recognition, human review; no QCC call during recognition |
|
|
86
|
+
| Tool cards | `tool.call.toolview` (clean/complete/profile/image-list) | render four tool result cards in-conversation with running/done/failed state |
|
|
77
87
|
| Task progress | workbench header jobs pill | polls `/data-cleaning/api/mvp/jobs`; shows queued / running tasks |
|
|
78
88
|
| Skill | `data-cleaning` | guides the model through the workflow |
|
|
79
89
|
| QCC Skill enrichment | `enterprise-enrichment` | 0.4.0: company panorama, ownership, governance, and historical registration |
|
|
@@ -117,6 +127,10 @@ See [the Phase-3 acceptance record](docs/PHASE3-ACCEPTANCE.md) and
|
|
|
117
127
|
See [the 0.5.1 release record](docs/RELEASE-0.5.1.md) for the README fix and release-text gate.
|
|
118
128
|
See [the 0.5.2 release record](docs/RELEASE-0.5.2.md) for native DSH UI alignment, verification, and rollback.
|
|
119
129
|
See [the 0.5.3 release record](docs/RELEASE-0.5.3.md) for the business landing view and prompt builder.
|
|
130
|
+
See [the 0.7.0 release record](docs/RELEASE-0.7.0.md) for the first 40 and second 58
|
|
131
|
+
one-company-one-row fields, deduplicated QCC tool dispatch, and real two-company acceptance.
|
|
132
|
+
See [the 0.8.0 release record](docs/RELEASE-0.8.0.md) for image paste/drop, native previews,
|
|
133
|
+
Agent-owned OCR, and the human-review handoff.
|
|
120
134
|
See [the 0.6.3 release record](docs/RELEASE-0.6.3.md) for multiline entity-list parsing,
|
|
121
135
|
editable execution summaries, and workbench/composer layout fixes.
|
|
122
136
|
See [the 0.6.2 release record](docs/RELEASE-0.6.2.md) for Chinese export headers,
|
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
|
+
> 当前源码版本 / Current source version: **0.8.0**(正式版本)
|
|
6
6
|
|
|
7
7
|
[](https://github.com/duhu2000/dsh-data-cleaning-agent/actions/workflows/ci.yml)
|
|
8
8
|
[](https://www.npmjs.com/package/dsh-data-cleaning-agent)
|
|
@@ -42,6 +42,13 @@ DSH 原生会话:首页标题、产品说明与工作流会替换通用探索
|
|
|
42
42
|
字段补全和任务历史五个入口位于输入框下方,右侧工作台承载“上传数据 → 规则确认 → 数据匹配 →
|
|
43
43
|
清洗补全 → 下载数据”五步闭环。完成后可下载结果与异常清单的 CSV/XLSX 四类 Host 耐久制品。
|
|
44
44
|
|
|
45
|
+
0.8.0 起,在数据清洗补全会话的原生输入框粘贴图片,或在「提示词生成」的图片页
|
|
46
|
+
拖入/选择 PNG、JPEG、WebP,会显示可点击放大的原生缩略图。回填识别指令时,图片已由 Host 安全暂存,
|
|
47
|
+
Client 会先释放 Composer 附件再回填纯文本指令,因此文本模型也能执行。用户发送可读识别指令后,Agent-owned
|
|
48
|
+
高层工具使用运行时已探测的图片文字 Provider,将企业名称/信用代码回传向导供人工核对,
|
|
49
|
+
再进入既有 taskId 匹配补全流程。已验证 Provider 为 `modlens_read_image`;未安装/配置时功能
|
|
50
|
+
fail closed,不会调用 QCC,可改用文本或 Excel。
|
|
51
|
+
|
|
45
52
|
没有 `dsh` CLI 时,也可以用安装脚本:
|
|
46
53
|
|
|
47
54
|
```bash
|
|
@@ -66,7 +73,8 @@ bash <(curl -fsSL https://raw.githubusercontent.com/duhu2000/dsh-data-cleaning-a
|
|
|
66
73
|
| 耐久制品 | Host 工作区 `.dsh-data-cleaning-artifacts/v1` | 结果/异常 CSV+XLSX,checksum 校验,跨 Host 重启下载 |
|
|
67
74
|
| 应用内入口 | 侧栏顶部「数据清洗补全」+ 输入框下方五能力按钮 | 中央业务首页与原生对话,右侧按需打开 Mockup 对齐工作台 |
|
|
68
75
|
| 提示词生成 | `conversation.input.overlay` | 文本 / Excel / 图片录入、清洗项与补全维度选择,生成后回填原生输入框供人工修改 |
|
|
69
|
-
|
|
|
76
|
+
| 图片名单 | `data_cleaning_extract_image_companies` + web `/data-cleaning/api/images/*` | 原生缩略图/放大、粘贴/拖入;Host 临时图片 + Agent-owned Provider 识别 + 人工核对,识别阶段不调用 QCC |
|
|
77
|
+
| 工具卡片 | `tool.call.toolview`(清洗/补全/画像/图片名单) | 对话内渲染四类工具结果卡,含运行/已完成/失败状态 |
|
|
70
78
|
| 任务进度 | 工作台头部任务 pill | 轮询 `/data-cleaning/api/mvp/jobs`,展示排队/运行中任务 |
|
|
71
79
|
| Skill | `data-cleaning` | 引导模型按工作流调度上述工具 |
|
|
72
80
|
| 企查查 Skill 补全 | `enterprise-enrichment` | 0.4.0:工商全景、股权穿透与历史工商 |
|
|
@@ -113,7 +121,9 @@ bash <(curl -fsSL https://raw.githubusercontent.com/duhu2000/dsh-data-cleaning-a
|
|
|
113
121
|
0.5.1 文档补丁与防回归发布门见 [docs/RELEASE-0.5.1.md](docs/RELEASE-0.5.1.md)。
|
|
114
122
|
0.5.2 DSH 原生 UI 对齐范围、验收与回滚见 [docs/RELEASE-0.5.2.md](docs/RELEASE-0.5.2.md)。
|
|
115
123
|
0.5.3 业务首页、提示词生成和输入框下方流程栏见 [docs/RELEASE-0.5.3.md](docs/RELEASE-0.5.3.md)。
|
|
116
|
-
0.
|
|
124
|
+
0.7.0 第一批 40 字段、第二批 58 字段、调用编排和真实两企业验收见
|
|
125
|
+
[docs/RELEASE-0.7.0.md](docs/RELEASE-0.7.0.md)。0.8.0 图片粘贴、原生缩略图、Agent-owned OCR 和人工核对流程见
|
|
126
|
+
[docs/RELEASE-0.8.0.md](docs/RELEASE-0.8.0.md)。0.6.3 多行名单解析、可编辑执行说明与工作台遮挡修复见
|
|
117
127
|
[docs/RELEASE-0.6.3.md](docs/RELEASE-0.6.3.md)。0.6.2 中文导出表头、完整字段选择传递与画像字段补全见
|
|
118
128
|
[docs/RELEASE-0.6.2.md](docs/RELEASE-0.6.2.md)。0.6.1 Agent-owned QCC 工作台、会话隔离、恢复统计及真实闭环验收见
|
|
119
129
|
[docs/RELEASE-0.6.1.md](docs/RELEASE-0.6.1.md)。0.6.0 五步 taskId 工作流、耐久制品、
|
package/docs/COMPATIBILITY.md
CHANGED
|
@@ -38,6 +38,18 @@ MVP 路由、Phase-3 capabilities、estimate 与未确认 enrich 阻断均通过
|
|
|
38
38
|
后可按原 taskId 下载,XLSX 反向解析工作表为“清洗补全结果”。稳定发布判断仍以 rc.2 为主,
|
|
39
39
|
alpha.2 只作兼容探针。全程未触碰生产 43120,未调用 QCC。
|
|
40
40
|
|
|
41
|
+
0.8.0 图片名单接入在 DSH `0.1.1-rc.2` 验证了官方
|
|
42
|
+
`conversation.createDraftImages` / `releaseDraftImage(s)` 与
|
|
43
|
+
`conversation.input.shell(sessionId).addImages/removeImage` 能力。视觉识别 Provider 通过
|
|
44
|
+
`ctx.tools.get()` 运行时探测,已验证 `@liustack/modlens@3.25.2` 的
|
|
45
|
+
`modlens_read_image`;本包不将它声明为强依赖。如 Provider 不存在,Host 在写入临时图片前
|
|
46
|
+
返回 `DC_IMAGE_PROVIDER_UNAVAILABLE`,不降级为未验证 API。alpha.2 仅继续作 Host/Client 能力探针,
|
|
47
|
+
不承诺实验性附件 API 稳定。
|
|
48
|
+
|
|
49
|
+
图片完成 Host 暂存后,Client 会在回填识别指令前调用 `removeImage` 释放 Composer 附件;后续
|
|
50
|
+
Agent-owned 工具通过 `dci-*` 凭证读取 Host 临时副本。因此图片选择与预览沿用 DSH 原生 UI,实际识别轮仍是
|
|
51
|
+
文本模型可接受的纯文本工具调用。
|
|
52
|
+
|
|
41
53
|
## 2. Node 运行时
|
|
42
54
|
|
|
43
55
|
- 本包 `engines.node` 声明 `>=20`。
|
|
@@ -57,6 +69,8 @@ alpha.2 只作兼容探针。全程未触碰生产 43120,未调用 QCC。
|
|
|
57
69
|
| web 路由 | `webServer.register({kind:'prefix', path, handler})` | 最长前缀匹配;前缀需以 `/` 结尾且匹配 `pathname.startsWith(prefix + '/')` |
|
|
58
70
|
| 同源守卫 | `isTrusted(req)` | `sec-fetch-site !== 'cross-site'` 且 origin 为 127.0.0.1/localhost |
|
|
59
71
|
| Agent-owned 动态工具调用 | `ctx.tools.register()` 高层工具 + `ctx.tools.get()` + 带 `parent/agent/rootCallId` 的 `ctx.tools.execute()` | rc.2 Code Mode 实测要求 nested execution;每次调用重新解析,不缓存动态 MCP 工具 |
|
|
72
|
+
| 原生图片附件 | `conversation.createDraftImages/releaseDraftImage(s)` + `input.shell().addImages/removeImage` | rc.2 已验证;Client 运行时探测,缺失时 fail closed |
|
|
73
|
+
| 图片文字 Provider | `ctx.tools.get('modlens_read_image')` + Agent-owned nested `ctx.tools.execute()` | Modlens 3.25.2 已验证;可选运行时能力,不是 npm 强依赖 |
|
|
60
74
|
|
|
61
75
|
## 4. 与企查查 MCP OAuth 插件的共存
|
|
62
76
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# 0.7.0 · 一企一行 128 字段补全
|
|
2
|
+
|
|
3
|
+
> 版本:**0.7.0**
|
|
4
|
+
> 发布日期:2026-09-05
|
|
5
|
+
> 发布方式:推送 `v0.7.0` Tag 后,由 GitHub Actions 使用 npm OIDC Trusted Publishing 发布并创建 GitHub Release。
|
|
6
|
+
|
|
7
|
+
## 目标
|
|
8
|
+
|
|
9
|
+
0.7.0 把已经核对 QCC MCP 一手契约、能够稳定投影到单个 Excel 单元格的字段统一为 128 项目录:
|
|
10
|
+
|
|
11
|
+
- 基础 30 字段:企业工商信息 27、企业简介 3;
|
|
12
|
+
- 第一批 40 字段:联系方式 6、上市信息 15、税务开票信息 8、进出口信用 11;
|
|
13
|
+
- 第二批 58 字段:企业自身风险扫描 38、企业关联风险扫描 20。
|
|
14
|
+
|
|
15
|
+
字段 ID、中文表头、来源工具和发布批次由 `lib/qcc-field-catalog.js` 单一来源管理。一级行业、二级行业、
|
|
16
|
+
电话/邮箱/网址全集、风险明细、关联方名单等未被上游声明为稳定一对一值的数据不会进入主表。
|
|
17
|
+
|
|
18
|
+
## 业务与调用规则
|
|
19
|
+
|
|
20
|
+
- 提示词向导和规则确认页按 8 个来源工具展示字段,支持整组全选与清空。
|
|
21
|
+
- 同一工具选择多个字段时,每家企业只调用一次;调用上界按
|
|
22
|
+
`唯一企业数 ×(主体定位 + 去重后的来源工具)` 计算,并在任何 QCC 调用前执行 300 次硬上限。
|
|
23
|
+
- 风险扫描明细由 Host 透视为稳定计数、命中摘要和关联方数量;数组不进入单元格。
|
|
24
|
+
- 新字段贯通任务草稿、Agent-owned 命令、候选续跑、结果预览及中文 CSV/XLSX;缺失值保留空列,
|
|
25
|
+
股票代码、税号、电话和银行账号按文本保存。
|
|
26
|
+
- 生产风险目录变化记录为脱敏的 `QCC_RISK_CATALOG_DRIFT` 审计事件,不静默扩张稳定字段契约。
|
|
27
|
+
|
|
28
|
+
## 验收
|
|
29
|
+
|
|
30
|
+
- 字段目录:基础 30、第一批 40、第二批 58,共 128 个唯一字段 ID 和 128 个唯一中文表头。
|
|
31
|
+
- 自动化:`npm run check` 通过,186/186 测试通过;npm tarball 内容全部命中白名单。
|
|
32
|
+
- 真实环境:本机 DSH `0.1.1-rc.2`,两家企业选择第一、二批全部 98 字段及基础默认 5 字段。
|
|
33
|
+
- QCC 调用:8 个工具,估算 16 次、实际 16 次且全部成功;任务结果为补全 2、待核验 0、未匹配 0、失败 0。
|
|
34
|
+
- 结果 XLSX:`清洗补全结果!A1:DB3`,106 列、2 行;第一、二批中文表头完整,无重复、无内部英文表头、
|
|
35
|
+
无公式错误,统一社会信用代码保持文本。
|
|
36
|
+
|
|
37
|
+
详细证据见 `docs/UI-WORKFLOW-V2-ACCEPTANCE.md` 第 9 节。
|
|
38
|
+
|
|
39
|
+
## 升级与回滚
|
|
40
|
+
|
|
41
|
+
- 升级:安装 `dsh-data-cleaning-agent@0.7.0`,完全停止并重新运行 `dsh web`。
|
|
42
|
+
- 回滚:重新安装 `dsh-data-cleaning-agent@0.6.3`,完全重启 DSH。
|
|
43
|
+
- 本版本不修改 `dc_workflows_v2` 持久化 schema,也不删除旧任务或耐久制品。
|
|
44
|
+
- 旧任务维持创建时的字段选择和既有制品;如需新增字段,升级后创建新任务并重新生成结果。
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# dsh-data-cleaning-agent 0.8.0 发布记录
|
|
2
|
+
|
|
3
|
+
> 日期:2026-09-05
|
|
4
|
+
> 主题:图片企业名单粘贴、原生缩略图、Agent-owned OCR 与人工核对闭环
|
|
5
|
+
|
|
6
|
+
## 1. 产品结果
|
|
7
|
+
|
|
8
|
+
0.8.0 把早期“只把图片附加到对话”的兼容 Bridge 升级为完整可执行流程:
|
|
9
|
+
|
|
10
|
+
1. 用户在「数据清洗补全」会话原生 Composer 直接粘贴图片,或在提示词向导粘贴、拖入、选择图片。
|
|
11
|
+
2. DSH 原生 draft attachment 展示缩略图;向导另提供 64px 缩略图、移除和放大预览。
|
|
12
|
+
3. Host 临时保存原图并只向可编辑的对话说明回填随机 `dci-*` commandId;回填前释放 Composer 图片附件,使本轮成为文本模型也能接受的纯文本调用。
|
|
13
|
+
4. 用户发送说明后,Agent 只调用一次 `data_cleaning_extract_image_companies`。该高层工具以父执行 token/Session 调用已探测的图片文字 Provider。
|
|
14
|
+
5. Host 确定性抽取企业全称与 18 位统一社会信用代码,去重后回传向导。
|
|
15
|
+
6. 用户核对名单、选择匹配主键、清洗目标和补全字段,再进入原有 taskId 主体匹配与 QCC 补全闭环。
|
|
16
|
+
|
|
17
|
+
## 2. 已验证与建议的边界
|
|
18
|
+
|
|
19
|
+
### 已验证事实
|
|
20
|
+
|
|
21
|
+
- DSH `0.1.1-rc.2` 提供 `conversation.createDraftImages` / `releaseDraftImage(s)` 与 `conversation.input.shell(sessionId).addImages/removeImage`。
|
|
22
|
+
- 当前本机 DSH Profile 中 `@liustack/modlens@3.25.2` 注册 `modlens_read_image`,入参为本地 `path` 和可选 `prompt`,返回 OCR 文本/行。
|
|
23
|
+
- QCC `parse_document` 只接受公网 HTTP(S) 文档;当前未验证任何可安全上传本地图片的 QCC 工具,因此本版不硬编码 QCC 智能文档解析。
|
|
24
|
+
|
|
25
|
+
### 设计建议
|
|
26
|
+
|
|
27
|
+
- Modlens 作为可选 Provider,不是本 npm 包的直接依赖;运行时以 `ctx.tools.get('modlens_read_image')` 探测。
|
|
28
|
+
- 未来如 DSH 发布稳定的原生图片内容读取接口,可在 Provider 适配层新增实现,不改变 Web 指令和 taskId 契约。
|
|
29
|
+
|
|
30
|
+
## 3. 安全与费用
|
|
31
|
+
|
|
32
|
+
- 格式:PNG/JPEG/WebP;严格魔数验证;单张上限 8 MiB;单图最多输出 100 个主体标识。
|
|
33
|
+
- 临时目录 0700、文件 0600;识别成功、失败、用户移除或 15 分钟 TTL 到期后删除。
|
|
34
|
+
- 原图不进入 `storageDomain`、任务元数据或导出制品;对话中不显示 Host 文件路径。
|
|
35
|
+
- 图片识别不调用 QCC,所以不产生 QCC MCP 额度消耗。核对后的企业匹配/字段补全仍由当前用户使用自己连接的 QCC 账号。
|
|
36
|
+
|
|
37
|
+
## 4. 验收门
|
|
38
|
+
|
|
39
|
+
- `npm run check`:lint、中英文版本、市场素材、npm pack 白名单与全量自动化测试。
|
|
40
|
+
- 图片契约测试:魔数验证、OCR 两企业抽取/去重、Provider 输出兼容、Agent-owned nested execution、临时文件清理、Provider 缺失 fail closed。
|
|
41
|
+
- Web 契约测试:预检与暂存为零 QCC 调用,只有高层图片工具可调 Provider,状态轮询可取回两条名单。
|
|
42
|
+
- Client 契约测试:DSH 原生 attachment 增删、Composer 图片粘贴捕获、缩略图/放大、可读指令与四工具 toolview 注册。
|
|
43
|
+
|
|
44
|
+
## 5. 升级与回滚
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
dsh plugin --profile web add dsh-data-cleaning-agent@0.8.0
|
|
48
|
+
# 完全停止后重启
|
|
49
|
+
dsh web
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
回滚不需要迁移 Host 数据;0.8.0 未修改 `dc_workflows_v2` 或制品 schema:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
dsh plugin --profile web add dsh-data-cleaning-agent@0.7.0
|
|
56
|
+
# 完全停止后重启
|
|
57
|
+
dsh web
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
回滚前若有尚未发送的图片识别指令,关闭/重启 Host 即可清理临时图片;已有的清洗补全任务和导出制品不受影响。
|
|
@@ -82,3 +82,43 @@ npm pack --dry-run --json --cache .npm-cache
|
|
|
82
82
|
版本确定为 **0.6.0**,原因是新增 Host 工作流 API、持久化 domain、耐久制品和完整五步业务流程。
|
|
83
83
|
发布按顺序执行:最终代码审查 → 版本/README/Changelog 快照 → commit/push → Tag → OIDC npm 发布 →
|
|
84
84
|
GitHub Release → 公共 Registry 全新安装。验收记录本身不等于外部平台已经完成发布。
|
|
85
|
+
|
|
86
|
+
## 9. 2026-09-05 · 第一批 40 字段与第二批 58 字段验收
|
|
87
|
+
|
|
88
|
+
### 9.1 契约与界面
|
|
89
|
+
|
|
90
|
+
- 字段目录共 128 个一对一字段:基础 30、第一批 40、第二批 58;字段 ID、中文表头、来源工具和批次由
|
|
91
|
+
`lib/qcc-field-catalog.js` 单一来源管理。
|
|
92
|
+
- 第一批覆盖联系方式 6、上市信息 15、税务开票 8、进出口信用 11;第二批覆盖企业自身风险 38、
|
|
93
|
+
企业关联风险 20。
|
|
94
|
+
- 提示词向导和规则页均按维度分组展示字段,支持组内全选/清空;调用量按“唯一企业数 ×(主体定位 +
|
|
95
|
+
去重后的来源工具)”精确估算,并在 300 次硬上限前阻断。
|
|
96
|
+
- 风险类明细数组只在 Host 内透视为稳定计数和摘要,不进入单元格;所有输出保持一企业一行、单字段一单元格。
|
|
97
|
+
|
|
98
|
+
### 9.2 真实 DSH + QCC 回归
|
|
99
|
+
|
|
100
|
+
环境为本机 DSH `0.1.1-rc.2`,由市场安装包覆盖当前本地候选代码;使用当前用户自己连接的企查查 MCP
|
|
101
|
+
账号。输入两家企业,选择基础 5 字段以及第一、二批全部 98 字段,共 103 个补全字段。
|
|
102
|
+
|
|
103
|
+
| 验收项 | 实测结果 |
|
|
104
|
+
| --- | --- |
|
|
105
|
+
| 输入解析 | 2 行、2 个唯一企业,未再复现“两条只识别一条” |
|
|
106
|
+
| 来源工具 | 主体定位、工商、联系方式、上市、税务开票、进出口信用、自身风险、关联风险,共 8 个 |
|
|
107
|
+
| 调用估算 / 实际 | 16 / 16,全部成功 |
|
|
108
|
+
| 任务 | `g5-e7dfb2a9-e72a-4866-9813-d8ad5a119b17`,`completed` |
|
|
109
|
+
| 业务结果 | 已补全 2、待核验 0、未匹配 0、失败 0 |
|
|
110
|
+
| 耐久制品 | 结果与异常清单的 CSV/XLSX 四件套均生成,可从任务历史恢复下载 |
|
|
111
|
+
|
|
112
|
+
真实结果工作簿 `清洗补全结果!A1:DB3` 共 106 列、2 条数据:原始主体列 1 + 所选字段 103 +
|
|
113
|
+
匹配状态 1 + 数据来源 1。第一批 40 和第二批 58 的预期中文表头全部存在,无重复表头、无内部英文表头、
|
|
114
|
+
无公式错误;两家企业统一社会信用代码均以文本保留。未上市企业的上市字段为空,未构造不存在的数据;
|
|
115
|
+
风险为零的计数保留数值 0。
|
|
116
|
+
|
|
117
|
+
### 9.3 非阻断观察项
|
|
118
|
+
|
|
119
|
+
生产返回的企业关联风险目录包含当前固定目录以外的扩展标签,因此审计记录
|
|
120
|
+
`QCC_RISK_CATALOG_DRIFT`。本次所选 20 个关联风险字段均完整输出,故不阻断双批验收。审计事件现额外保留
|
|
121
|
+
受限、脱敏后的 `catalogVersion`、`missing` 与 `unknown` 标签,便于后续根据生产目录升级固定字段契约,
|
|
122
|
+
而不是静默吞掉或擅自把动态数组写入单元格。
|
|
123
|
+
|
|
124
|
+
**结论:第一批 40 字段与第二批 58 字段功能、调用编排、中文导出及真实两企业闭环验收通过。**
|
package/docs/UI-WORKFLOW-V2.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
业务主流程与企查查专业版“数据清洗补全”一致,固定为五步:
|
|
10
10
|
|
|
11
|
-
1. **上传数据**:文本、CSV、XLSX、JSON
|
|
11
|
+
1. **上传数据**:文本、CSV、XLSX、JSON;0.8.0 起支持 PNG/JPEG/WebP 企业名单图片,经 DSH 原生附件缩略图、Host 临时文件、Agent-owned 图片文字 Provider 和人工核对后进入同一 taskId 流程。
|
|
12
12
|
2. **规则确认**:字段映射、清洗目标、匹配规则、补全字段选择。
|
|
13
13
|
3. **数据匹配**:以企业名称、统一社会信用代码或注册号作为主体锚点;精确、候选、已确认、未匹配、失败分流。
|
|
14
14
|
4. **清洗补全**:本地确定性清洗优先;需要 QCC 数据时,先估算调用,再由当前用户确认使用自己的 QCC 账号额度。
|
|
@@ -18,12 +18,19 @@
|
|
|
18
18
|
|
|
19
19
|
## 2. 当前范围
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
当前字段目录共 128 项,UI/Host/XLSX 按 8 个来源工具分组:
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
23
|
+
- 基础 30 项:`get_company_registration_info`(企业工商信息,27 项)和 `get_company_profile`(企业简介,3 项)。
|
|
24
|
+
- 第一批 40 项:`get_contact_info`(联系方式,6 项)、`get_listing_info`(上市信息,15 项)、`get_tax_invoice_info`(税务开票,8 项)、`get_import_export_credit`(进出口信用,11 项)。
|
|
25
|
+
- 第二批 58 项:`get_company_risk_scan`(企业自身风险扫描,38 项)和 `get_company_related_risk_scan`(企业关联风险扫描,20 项)。
|
|
26
|
+
- 基础工商:企业名称、统一社会信用代码、注册号、组织机构代码、纳税人识别号、登记状态、法定代表人、注册/实缴资本、成立日期、企业类型、核准日期、登记机关、纳税人资质、支付系统行号、进出口企业代码、企业简称、英文名。
|
|
27
|
+
- 地址与地区:注册地址、通信地址、所属地区原值。
|
|
28
|
+
- 经营信息:经营范围、国标行业、企查查行业、营业期限、人员规模、参保人数、分支机构参保人数、企业简介、产业链概览。
|
|
29
|
+
- 上传列“联系电话”仍可作为本地质量检查字段;QCC 联系方式另以“首选联系电话/邮箱/官网”等字段输出。电话、邮箱和网址全集不拼接进单元格。
|
|
30
|
+
- 风险字段只输出扫描工具已返回的聚合计数、命中摘要与重点维度命中关联方数;风险明细、关联方名单和下钻结果不进入一企一行主表。
|
|
31
|
+
- 一级行业、二级行业、省、市、区县、曾用名和知识产权摘要不在当前目录;不得推断、拼接或用其他字段冒充。
|
|
32
|
+
|
|
33
|
+
字段来源、185 工具审计及后续可适配字段详见 `docs/QCC-185-ONE-TO-ONE-FIELD-CATALOG.md`。
|
|
27
34
|
|
|
28
35
|
历史域、人员域、招投标域已明确延期,不进入当前实现或字段目录。
|
|
29
36
|
|
|
@@ -47,12 +54,14 @@ draft → uploaded → rules_confirmed → diagnosed(可选)
|
|
|
47
54
|
- 至少映射一个主体锚点:`company_name`、`credit_no`、`reg_no`。
|
|
48
55
|
- 同一目标字段不能被多个输入列重复映射。
|
|
49
56
|
- 同一输入列不能重复映射到多个目标;未知目标字段按契约错误处理,不静默忽略。
|
|
50
|
-
-
|
|
57
|
+
- 企业名称可以结合输入中的地址、所属地区、电话辅助人工核验,但辅助字段不能取代主体锚点,也不因此成为 QCC 输出字段。
|
|
51
58
|
- 匹配结果只保存状态、数量汇总、运行引用和可审计依据;不得生成或展示无来源的置信度百分比。
|
|
52
59
|
- 多候选必须进入 `review_required`;人工确认完成后才能进入补全。
|
|
53
60
|
- `exact`、`candidate`、`confirmed`、`unresolved`、`failed` 是互斥数量,合计不得超过 `total`。
|
|
54
61
|
|
|
55
|
-
|
|
62
|
+
目录单一来源位于 `lib/qcc-field-catalog.js`,`lib/workflow-contract.js` 对外发布只读契约;Client 仅保留 Host 契约暂不可用时的同版本降级快照。
|
|
63
|
+
|
|
64
|
+
所选字段先按 `sourceTool` 去重,再执行 `主体查询 + 所选来源工具`。同一工具选择多个字段时每家企业只调用一次;Host 在任何 QCC 调用前以 `唯一企业数 × (1 + 来源工具数)` 校验 300 次调用上限。
|
|
56
65
|
|
|
57
66
|
## 5. Host 持久化与隐私边界
|
|
58
67
|
|
|
@@ -162,7 +171,7 @@ draft → uploaded → rules_confirmed → diagnosed(可选)
|
|
|
162
171
|
## 8. 当前实现与发布顺序
|
|
163
172
|
|
|
164
173
|
1. T3(完成):上传解析、字段映射、任务设置和规则确认接入 v2 taskId API。
|
|
165
|
-
2. T4(完成):提示词生成器四步向导接入 taskId
|
|
174
|
+
2. T4(完成):提示词生成器四步向导接入 taskId 工作流,支持文本/本地文件;0.8.0 将图片 Bridge 从“仅附件”收敛为可执行的粘贴/拖入、缩略图、高层 OCR、名单回传和人工核对闭环。
|
|
166
175
|
3. T5(完成):中央业务首页、五能力入口、右侧工作台、基础企业匹配/补全和任务历史统一到 taskId。
|
|
167
176
|
4. T6(完成):Host 耐久下载制品、XLSX 与异常清单、双基线、视觉回归、迁移与回滚。
|
|
168
177
|
5. T7(完成):候选人工核验、部分失败重试、匹配与补全状态闭环。
|
package/docs/USER-GUIDE.md
CHANGED
|
@@ -40,11 +40,15 @@ bash <(curl -fsSL https://raw.githubusercontent.com/duhu2000/dsh-data-cleaning-a
|
|
|
40
40
|
|
|
41
41
|
- **粘贴名单**:每行一个企业名称或统一社会信用代码;
|
|
42
42
|
- **上传 Excel**:支持 XLSX/XLS/CSV/JSON,识别企业名称/信用代码列并把完整数据载入右侧工作台;
|
|
43
|
-
-
|
|
43
|
+
- **上传图片**:支持 PNG/JPEG/WebP(单张不超过 8 MiB);可在向导中粘贴、拖入或选择,也可直接在数据清洗补全会话的原生输入框粘贴。输入框使用 DSH 原生图片附件,向导同时显示 64px 缩略图,点击可放大。
|
|
44
44
|
|
|
45
45
|
随后可选择名称规范、信用代码校验、去重、模糊候选复核等清洗动作,以及工商字段或已支持的维度组。
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
图片流程分为两轮可见交互:
|
|
47
|
+
|
|
48
|
+
1. 选择图片后,点击「回填图片识别指令」。此时 Host 已安全暂存原图,Client 会释放 Composer 图片附件并把可读的纯文本说明放入原生对话框;用户检查后发送。该步骤不会把图片交给当前聊天模型,因此兼容不支持视觉输入的文本模型。
|
|
49
|
+
2. Agent 只调用一次 `data_cleaning_extract_image_companies`,Host 在当前父执行中调用已探测的图片文字 Provider;识别到的企业名称/统一社会信用代码会回到向导,由用户逐条核对后选择匹配规则和补全字段。
|
|
50
|
+
|
|
51
|
+
当前已验证 Provider 是 Modlens `modlens_read_image`。插件不引入对 Modlens 的强依赖;运行时未安装或未配置时会 fail closed,请改用文本/Excel。图片仅作为 0600 权限的 Host 临时文件,成功、失败、取消或 15 分钟超时后删除;不进入任务 KV 或导出制品。识别阶段不调用 QCC、不消耗 QCC MCP 额度;人工核对后的匹配/补全仍受既有 BYO QCC 确认门保护。
|
|
48
52
|
|
|
49
53
|
模型在对话中调用 `data_clean_rows` / `data_complete_rows` / `data_profile` 时,
|
|
50
54
|
对话内会渲染对应的工具结果卡片(含运行中 / 已完成 / 失败状态);工作台头部用任务 pill
|