luoleyuan commited on
Commit
d3bb20b
·
verified ·
1 Parent(s): 2fbd62d

Delete .trae

Browse files
.trae/specs/build-peer-reg-crawler/checklist.md DELETED
@@ -1,10 +0,0 @@
1
- - [x] source_registry 数据模型与 API 契约完整(含枚举、字段、错误码)
2
- - [x] sources 管理 API 可用(新增/列表/更新/启停)
3
- - [x] jobs 触发与查询可用(manual trigger + 状态查询)
4
- - [x] raw_snapshot 可追溯(包含 http_status/final_url/raw_hash/原始内容)
5
- - [x] normalized_document 生成稳定,且 normalized_hash 去重生效
6
- - [x] clause_chunk 可生成(章节/条款级切片 + topic_tags)
7
- - [x] diff_event 可生成(added/removed/modified + 片段对比)
8
- - [x] updates 供数接口可用(topics/since/limit 过滤,输出结构符合 AGENT-01 输入契约)
9
- - [x] 定时调度与失败重试策略生效(含 degraded 标记)
10
- - [x] 至少 6 个白名单来源完成一次端到端抓取验证并能产出变化包
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/build-peer-reg-crawler/spec.md DELETED
@@ -1,57 +0,0 @@
1
- # 同业/监管抓取子系统(AGENT-00)Spec
2
-
3
- ## Why
4
- 当前 AGENT-01 仅能消费上游提供的 `peer_updates` / `regulatory_updates`,缺少一个稳定的“找、抽、比、存”能力层,导致同业与监管依据来源、版本与条款回链不可控,难以进入客户内测与审计要求。需要构建一个独立于 AGENT-01~04 之外的抓取与检索子系统(AGENT-00),输出可追溯、可版本化、条款级的结构化变化包。
5
-
6
- ## What Changes
7
- - 新增 AGENT-00 抓取与检索子系统:来源白名单管理、定时/手动抓取、正文抽取、文本标准化、版本去重、条款切片、主题标注、版本比对、结构化入库、对外查询 API。
8
- - 向 AGENT-01 提供稳定输入接口:`GET /api/crawler/updates` 输出 `peer_updates` / `regulatory_updates` / `sdk_updates`。
9
- - 定义抓取子系统的最小可落地数据模型:`source_registry`、`crawl_job`、`raw_snapshot`、`normalized_document`、`clause_chunk`、`diff_event`。
10
-
11
- ## Impact
12
- - Affected specs: 上游数据供给与审计链路(为 AGENT-01 提供可追溯输入)
13
- - Affected code: 将新增 crawler 子系统模块(服务端 API、存储层、抓取与解析流程、定时调度)
14
-
15
- ## ADDED Requirements
16
- ### Requirement: 白名单来源管理
17
- The system SHALL 提供来源注册表(source_registry)用于管理白名单来源,禁止在代码中硬编码 URL。
18
- The system SHALL 支持来源启停、抓取频率、解析器类型、主题标签等配置。
19
-
20
- #### Scenario: 新增来源
21
- - **WHEN** 管理员调用 `POST /api/crawler/sources` 提交来源配置
22
- - **THEN** 返回 `source_id`,并在后续抓取调度中可被读取
23
-
24
- ### Requirement: 抓取与正文抽取
25
- The system SHALL 支持 HTML 页面抓取与正文抽取,输出标题、更新时间/生效时间(若可识别)、章节结构与正文。
26
- The system SHALL 保留原始快照(raw_snapshot),确保可回溯审计。
27
-
28
- #### Scenario: 手动触发抓取
29
- - **WHEN** 调用 `POST /api/crawler/jobs` 并指定 source_ids
30
- - **THEN** 生成 `crawl_job` 记录并进入 queued/running/success/failed 生命周期
31
-
32
- ### Requirement: 版本去重与条款级切片
33
- The system SHALL 对抓取结果做标准化后计算 `raw_hash` / `normalized_hash`。
34
- The system SHALL 在 `normalized_hash` 不变时不生成新版本。
35
- The system SHALL 将标准化文档拆分为条款切片(clause_chunk),至少包含 section_path/section_title/clause_text/topic_tags。
36
-
37
- #### Scenario: 去重
38
- - **WHEN** 同一来源再次抓取且 normalized_hash 未变化
39
- - **THEN** 不创建新的 normalized_document 版本
40
-
41
- ### Requirement: 版本比对与变更事件
42
- The system SHALL 对同一来源新旧版本输出 diff_event(added/removed/modified),并提供变化章节片段(old_excerpt/new_excerpt)与 topic_tags。
43
-
44
- ### Requirement: 对 AGENT-01 的供数接口
45
- The system SHALL 提供 `GET /api/crawler/updates` 返回结构化变化包,支持 topics/since/limit 过滤。
46
- The system SHALL 在每条变化中包含来源、版本与条款片段(excerpt)以支撑 AGENT-01 的审计回链。
47
-
48
- #### Scenario: 获取变化包
49
- - **WHEN** 调用 `GET /api/crawler/updates?topics=sdk_disclosure,permission_usage&since=2026-04-01`
50
- - **THEN** 返回 peer_updates/regulatory_updates/sdk_updates,并且每条包含 source_name/source_type/version_date/topic_tags/changed_sections[]
51
-
52
- ## MODIFIED Requirements
53
-
54
-
55
- ## REMOVED Requirements
56
-
57
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/build-peer-reg-crawler/tasks.md DELETED
@@ -1,48 +0,0 @@
1
- # Tasks
2
-
3
- - [x] Task 1: 定义抓取子系统数据模型与对外 API 契约
4
- - [x] SubTask 1.1: 明确 `source_registry` / `crawl_job` / `raw_snapshot` / `normalized_document` / `clause_chunk` / `diff_event` 的字段与枚举
5
- - [x] SubTask 1.2: 定义抓取子系统错误码(4001-4004, 5001-5004)与返回结构
6
- - [x] SubTask 1.3: 定义对外 API(sources/jobs/documents/diff-events/updates)的 request/response JSON 结构
7
-
8
- - [x] Task 2: 实现来源白名单管理 API
9
- - [x] SubTask 2.1: 实现 `POST /api/crawler/sources` 新增来源
10
- - [x] SubTask 2.2: 实现 `GET /api/crawler/sources` 来源列表与过滤
11
- - [x] SubTask 2.3: 实现来源启停/更新(如 `PATCH /api/crawler/sources/{source_id}`)
12
-
13
- - [x] Task 3: 实现抓取任务与快照存储
14
- - [x] SubTask 3.1: 实现 `POST /api/crawler/jobs`(manual trigger),创建 crawl_job 并执行抓取
15
- - [x] SubTask 3.2: 实现 `GET /api/crawler/jobs/{jobId}` 查询任务状态
16
- - [x] SubTask 3.3: 落地 raw_snapshot(存原始响应体、状态码、final_url、raw_hash)
17
-
18
- - [x] Task 4: 实现正文抽取与标准化
19
- - [x] SubTask 4.1: 实现 HTML 正文抽取策略(过滤导航/页脚等噪音)
20
- - [x] SubTask 4.2: 实现文本标准化(空白折叠、全角半角、章节编号识别、日期标准化)
21
- - [x] SubTask 4.3: 生成 normalized_document 并做版本去重(normalized_hash)
22
-
23
- - [x] Task 5: 实现条款切片、主题标注与版本比对
24
- - [x] SubTask 5.1: 将 normalized_text 切分为 clause_chunk(章节路径/标题/正文/顺序)
25
- - [x] SubTask 5.2: 实现最小主题标注(可先基于关键词规则,后续可升级)
26
- - [x] SubTask 5.3: 实现 diff_event 生成(added/removed/modified)与 impact_level 初版规则
27
-
28
- - [x] Task 6: 实现供 AGENT-01 使用的更新查询 API
29
- - [x] SubTask 6.1: 实现 `GET /api/crawler/updates`(topics/since/limit 过滤)
30
- - [x] SubTask 6.2: 实现 `GET /api/crawler/documents` 与 `GET /api/crawler/diff-events`(用于排障与验证)
31
- - [x] SubTask 6.3: 为 updates 输出结构对齐 AGENT-01 的输入契约(peer_updates/regulatory_updates/sdk_updates)
32
-
33
- - [x] Task 7: 定时调度与失败重试
34
- - [x] SubTask 7.1: 实现 schedule trigger(按 source_registry.crawl_frequency)
35
- - [x] SubTask 7.2: 实现失败重试策略(10分钟后重试1次;连续失败降级标记)
36
-
37
- - [x] Task 8: 验证与回归
38
- - [x] SubTask 8.1: 为 10~20 个白名单种子来源做至少一次抓取验证(可先选 3 个银行 + 2 个监管 + 1 个 SDK)
39
- - [x] SubTask 8.2: 验证去重、版本比对与 updates 输出完整性
40
-
41
- # Task Dependencies
42
- - Task 3 depends on Task 1, Task 2
43
- - Task 4 depends on Task 3
44
- - Task 5 depends on Task 4
45
- - Task 6 depends on Task 5
46
- - Task 7 depends on Task 2
47
- - Task 8 depends on Task 6
48
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/go-live-production-checklist/checklist.md DELETED
@@ -1,8 +0,0 @@
1
- - [x] 智能体服务硬化:固定测试集连续回放 100 次无结构化失败,高风险全带出处
2
- - [x] 性能口径清晰:`api_latency`, `llm_latency`, `e2e_latency`, `retry_count` 分开记录无冲突
3
- - [x] Dify 主链通畅:Document/Knowledge 前置节点正常,4 个 HTTP 节点顺利执行(120s+ 超时)
4
- - [x] 分支联调闭环:通过、退回、补材料三大人工分支全部在 Dify 走通
5
- - [x] 角色验收通过:法务与业务人员实际完成至少 1 轮全流程操作
6
- - [x] 安全审计达标:全链路留痕、敏感信息不落日志、无绕过人工直发风险
7
- - [x] 压测与告警就绪:单次及多并发压测完成,节点超时、重试及解析失败监控可用
8
- - [x] 灰度上线验证:在 1-2 家客户/部门稳定运行至少 2 周,退回率、误报率等指标健康
 
 
 
 
 
 
 
 
 
.trae/specs/go-live-production-checklist/spec.md DELETED
@@ -1,34 +0,0 @@
1
- # 智能体全量生产级别上线 (Go-Live) Spec
2
-
3
- ## Why
4
- 目前隐私合规协同场景的 4 个智能体(含爬虫抓取系统)已完成服务层的 P0 级别优化及 12 个分层回归测试验证。为了从“接口能用”正式迈向“真实业务可生产”,必须建立横跨智能体服务、Dify 编排联调、法务业务验收、安全审计以及性能运维的“最后一公里”完整上线标准,确保交付质量。
5
-
6
- ## What Changes
7
- - [服务层硬化] 全面固化 4 个 API 的结构、统一 4 项性能指标(api_latency, llm_latency, e2e_latency, retry_count)的审计口径,并确保自动化回放框架的稳定。
8
- - [Dify联调] 推进 Dify 主工作流端到端联调,覆盖材料读取、提取、知识检索、4 次智能体调用及 Jinja2 渲染,必须跑通“通过、退回、补材料”三大分支,并配置 120s 以上节点超时。
9
- - [业务闭环] 实施法务与业务人员验收(至少 2 轮),确认权限、退回意见可用性及底稿真实价值。
10
- - [安全运维] 增加脱敏输入校验、日志防泄漏审查,建立单 case 及并发压测基线,配置失败与超时告警。
11
- - [阶段推进] 明确划定“可试点”、“可灰度”、“可正式生产”三大阶段及 8 项最小放行门槛。
12
-
13
- ## Impact
14
- - Affected specs: 交付流程、Dify 工作流配置规范、生产运维与安全审计标准。
15
- - Affected code: 后续联调可能涉及到的 `src/middlewares.ts` 日志清洗规则或 Dify YML 配置文件的微调。
16
-
17
- ## ADDED Requirements
18
- ### Requirement: Dify 端到端联调规范
19
- The system SHALL 在 Dify 平台完成主链路联调,连续 30 次执行成功率 ≥ 95%。
20
- The system SHALL 确保 Human Input 节点能够正确接收审核包,且后续的三大分支(写入待发布、回退重构、生成补材料清单)逻辑均能跑通。
21
-
22
- #### Scenario: 缺材料分支回退测试
23
- - **WHEN** 业务发起的输入材料中缺少权限清单,且智能体 API 返回 `4001 need_more_material`
24
- - **THEN** Dify 工作流能正确捕获错误,生成标准化的补材料清单,并将流程流转至“补材料阶段”等待用户补充。
25
-
26
- ### Requirement: 安全与审计管控
27
- The system SHALL 确保写入日志的信息不包含完整的敏感原始材料全文,仅保留结构化脱敏标签及 `case_id`。
28
- The system SHALL 确保没有任何自动化节点能够绕过 Human Input 节点直接输出“已完全合规”的最终结论。
29
-
30
- ## MODIFIED Requirements
31
-
32
-
33
- ## REMOVED Requirements
34
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/go-live-production-checklist/tasks.md DELETED
@@ -1,33 +0,0 @@
1
- # Tasks
2
-
3
- - [x] Task 1: 智能体服务层最后硬化 (A 关卡)
4
- - [x] SubTask 1.1: 确认 4 个接口全量固化 schema_version 和三级 version 标识
5
- - [x] SubTask 1.2: 确认所有高/中风险项带齐 EvidenceChain 和 basis_id
6
- - [x] SubTask 1.3: 确认 4 个性能口径 (api, llm, e2e, retry) 记录准确且互不冲突
7
- - [x] SubTask 1.4: 确认 12 个回放测试用例能连续 100 次无结构化失败,并且输出结论稳定不漂移
8
-
9
- - [x] Task 2: Dify 端到端主工作流联调 (B 关卡)
10
- - [x] SubTask 2.1: 在 Dify 配置并确认 User Input、Document Extractor、Knowledge Retrieval 等前置节点工作正常
11
- - [x] SubTask 2.2: 在 Dify 配置 4 个 HTTP Request,设定 120s+ 超时,确认顺序调用成功
12
- - [x] SubTask 2.3: 在 Dify 配置 Template 节点并渲染审核包,确认 Human Input 表单接收正常
13
- - [x] SubTask 2.4: 联调通过分支(成功写入待发布中心)
14
- - [x] SubTask 2.5: 联调退回分支(回到 AGENT-02 重构链)
15
- - [x] SubTask 2.6: 联调补材料分支(生成补材料清单并回退)
16
- - [x] SubTask 2.7: 确认主链路连续 30 次执行成功率 ≥ 95%
17
-
18
- - [x] Task 3: 法务与业务流程验收 (C 关卡)
19
- - [x] SubTask 3.1: 至少 1 位法务完成审核包与 focus_items 的价值评估(愿意审且建议不过界)
20
- - [x] SubTask 3.2: 至少 1 位业务/产品人员完成从发起、看缺材料提示、到回改重提的闭环
21
- - [x] SubTask 3.3: 确认各环节角色权限分明,退回修改路径畅通
22
-
23
- - [x] Task 4: 安全与审计检查 (D 关卡)
24
- - [x] SubTask 4.1: 检查日志系统,确认不泄露脱敏前的敏感原文与系统错误细节
25
- - [x] SubTask 4.2: 确认发起人、处理版本、处理模型、法务操作动作等全链路留痕
26
- - [x] SubTask 4.3: 确认无法绕过 Human Input 节点直接发布,结论不出现“已完全合规”
27
-
28
- - [x] Task 5: 性能、运维与灰度上线 (E/F 关卡)
29
- - [x] SubTask 5.1: 确定并文档化 4 个智能体及端到端的单 case 耗时 SLA 上限
30
- - [x] SubTask 5.2: 完成 5 并发、10 并发及大文本长协议压测
31
- - [x] SubTask 5.3: 配置节点失败、超时及 JSON 解析失败的监控告警
32
- - [x] SubTask 5.4: 配置模型服务失败时的重试及降级回滚策略
33
- - [x] SubTask 5.5: 在 1-2 家客户/部门进行至少 2 周真实材料脱敏灰度试运行,并统计采纳率与误报率
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/implement-privacy-compliance-agents/checklist.md DELETED
@@ -1,8 +0,0 @@
1
- - [x] 成功初始化服务端项目结构
2
- - [x] 成功定义了五个核心数据模型/JSON Schema (`CaseContext`, `PeerRegSummary`, `GapAnalysis`, `ComplianceCheck`, `LegalReviewPack`)
3
- - [x] AGENT-01 接口 `/api/agents/peer-reg-summary` 可正常调用并返回合规的 JSON 结构
4
- - [x] AGENT-02 接口 `/api/agents/policy-rewrite` 可正常调用并返回合规的 JSON 结构
5
- - [x] AGENT-03 接口 `/api/agents/compliance-check` 可正常调用并返回合规的 JSON 结构
6
- - [x] AGENT-04 接口 `/api/agents/legal-pack` 可正常调用并返回合规的 JSON 结构
7
- - [x] 错误处理机制已就绪(如返回 4001, 5001 等错误码)
8
- - [x] 接口调用日志机制已实现
 
 
 
 
 
 
 
 
 
.trae/specs/implement-privacy-compliance-agents/spec.md DELETED
@@ -1,39 +0,0 @@
1
- # 隐私合规协同场景四智能体全量开发 Spec
2
-
3
- ## Why
4
- 在银行智能体操作台系统中,目前桌面端已具备文件脱敏等基础能力,并连接了云端部署的 Dify。为了实现“同业隐私协议跟踪与客户协议重构协同场景”的自动化处理,需要开发四个角色智能体服务。这些服务将作为本地/服务端能力,供后续的 Dify 工作流调用,从而完成从材料解析到法务审核包生成的完整 AI 处理链。
5
-
6
- ## What Changes
7
- - 实现 AGENT-01:同业/监管变化摘要智能体,负责汇总同业与监管变化并输出结构化摘要。
8
- - 实现 AGENT-02:协议重构智能体,负责基于输入材料生成差异分析和修订建议。
9
- - 实现 AGENT-03:合规校验智能体,负责校验修订建议的合规性并输出风险等级及待确认项。
10
- - 实现 AGENT-04:法务审核包生成智能体,负责整理前三个智能体的结果,生成法务审核包。
11
- - 建立统一的输入输出数据模型(CaseContext, PeerRegSummary, GapAnalysis, ComplianceCheck, LegalReviewPack)。
12
- - 实现四个智能体的 HTTP POST 接口,支持 JSON 请求和响应。
13
-
14
- ## Impact
15
- - Affected specs: 隐私合规协同场景的 AI 处理链能力
16
- - Affected code: 后端/服务端接口及智能体逻辑实现代码(将新建四个智能体 API)
17
-
18
- ## ADDED Requirements
19
- ### Requirement: 统一数据模型
20
- - The system SHALL 提供 `CaseContext` 作为统一输入对象。
21
- - The system SHALL 为四个智能体定义对应的 JSON Schema 输出模型(`PeerRegSummary`, `GapAnalysis`, `ComplianceCheck`, `LegalReviewPack`)。
22
-
23
- ### Requirement: 智能体接口服务
24
- - The system SHALL 提供 `POST /api/agents/peer-reg-summary` 接口。
25
- - The system SHALL 提供 `POST /api/agents/policy-rewrite` 接口。
26
- - The system SHALL 提供 `POST /api/agents/compliance-check` 接口。
27
- - The system SHALL 提供 `POST /api/agents/legal-pack` 接口。
28
- - The system SHALL 在所有接口中返回严格符合 JSON Schema 的结果。
29
- - The system SHALL 处理错误情况,如输入材料缺失返回特定错误码(如 4001, 4002, 5001, 5002, 5003)。
30
-
31
- #### Scenario: 成功调用同业/监管变化摘要接口
32
- - **WHEN** 传入包含 `peer_updates` 和 `regulatory_updates` 的请求到 `/api/agents/peer-reg-summary`
33
- - **THEN** 返回包含 `peer_summary`, `reg_summary`, `reference_clauses` 和 `risk_alerts` 的 JSON 对象。
34
-
35
- ## MODIFIED Requirements
36
-
37
-
38
- ## REMOVED Requirements
39
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/implement-privacy-compliance-agents/tasks.md DELETED
@@ -1,34 +0,0 @@
1
- # Tasks
2
-
3
- - [x] Task 1: 初始化项目与数据模型定义
4
- - [x] SubTask 1.1: 初始化服务端项目结构(如 Node.js/Python 框架等)
5
- - [x] SubTask 1.2: 定义通用输入对象 `CaseContext` 数据模型
6
- - [x] SubTask 1.3: 定义并实现 `PeerRegSummary` JSON Schema
7
- - [x] SubTask 1.4: 定义并实现 `GapAnalysis` JSON Schema
8
- - [x] SubTask 1.5: 定义并实现 `ComplianceCheck` JSON Schema
9
- - [x] SubTask 1.6: 定义并实现 `LegalReviewPack` JSON Schema
10
-
11
- - [x] Task 2: 实现 AGENT-01 同业/监管变化摘要智能体
12
- - [x] SubTask 2.1: 编写 AGENT-01 的 System Prompt 与大模型调用逻辑
13
- - [x] SubTask 2.2: 实现 `POST /api/agents/peer-reg-summary` 接口,支持接收对应参数并返回 `PeerRegSummary`
14
- - [x] SubTask 2.3: 添加接口层面的错误处理(如缺少上下文等)
15
-
16
- - [x] Task 3: 实现 AGENT-02 协议重构智能体
17
- - [x] SubTask 3.1: 编写 AGENT-02 的 System Prompt 与大模型调用逻辑
18
- - [x] SubTask 3.2: 实现 `POST /api/agents/policy-rewrite` 接口,支持接收对应参数并返回 `GapAnalysis`
19
- - [x] SubTask 3.3: 添加接口层面的错误处理
20
-
21
- - [x] Task 4: 实现 AGENT-03 合规校验智能体
22
- - [x] SubTask 4.1: 编写 AGENT-03 的 System Prompt 与大模型调用逻辑
23
- - [x] SubTask 4.2: 实现 `POST /api/agents/compliance-check` 接口,支持接收对应参数并返回 `ComplianceCheck`
24
- - [x] SubTask 4.3: 添加接口层面的错误处理
25
-
26
- - [x] Task 5: 实现 AGENT-04 法务审核包生成智能体
27
- - [x] SubTask 5.1: 编写 AGENT-04 的 System Prompt 与大模型调用逻辑
28
- - [x] SubTask 5.2: 实现 `POST /api/agents/legal-pack` 接口,支持接收对应参数并返回 `LegalReviewPack`
29
- - [x] SubTask 5.3: 添加接口层面的错误处理
30
-
31
- - [x] Task 6: 完善通用非功能需求(NFR)
32
- - [x] SubTask 6.1: 增加全局错误码与异常处理中间件(4001, 5001 等)
33
- - [x] SubTask 6.2: 增加调用日志记录(case_id, agent_name, 耗时, 状态等)
34
- - [x] SubTask 6.3: 编写简单的集成测试或验证脚本,确保四个 API 能够按顺序正常返回 JSON
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/optimize-compliance-agents-p0/checklist.md DELETED
@@ -1,8 +0,0 @@
1
- - [x] 全局 P0 优化完成 (性能口径统一、版本标识新增、缺材料标准化结构)
2
- - [x] 统一的 `EvidenceChain` 证据链结构已在模型与输出逻辑中生效
3
- - [x] AGENT-01 P0 优化完成 (来源元数据、监管强制等级分类、适用性分析判断)
4
- - [x] AGENT-02 P0 优化完成 (片段级证据定位、规则引用依据、全稿交付级输出、覆盖率检查表)
5
- - [x] AGENT-03 P0 优化完成 (输出明确的法规链ID、显式定义风险规则、严格固化总结论模板)
6
- - [x] AGENT-04 P0 优化完成 (三层视图输出、带优先级标签的重点关注项、结构化固化的审核包)
7
- - [x] 回放测试框架搭建完毕,且支持精细化耗时和模型版本等核心记录维度
8
- - [x] 12个核心测试用例 (TC-01 至 TC-12) 全部录入回归测试矩阵,并能够稳定执行验证
 
 
 
 
 
 
 
 
 
.trae/specs/optimize-compliance-agents-p0/spec.md DELETED
@@ -1,36 +0,0 @@
1
- # 隐私合规智能体全量优化与测试矩阵扩展 Spec
2
-
3
- ## Why
4
- 目前 4 个隐私合规智能体已完成工程链路打通并验证了初步的 AI 认知能力。但为了进入真实业务联调与客户内测,必须将智能体从“聪明”升级为“可交付、可审计、稳定输出”。这需要通过引入细粒度的证据链(Evidence/Basis)、显式化规则、版本控制,并建立包含 12 个分层维度的全面回放测试框架(Regression Testing)来保障稳定性。
5
-
6
- ## What Changes
7
- - [全局] 统一性能统计口径、统一证据链结构、缺材料清单标准化、增加结果版本标识、建立回放测试框架。
8
- - [AGENT-01] 增加变化来源元数据、分类、监管强制等级及适用性判断。
9
- - [AGENT-02] 升级证据为片段级、增加 basis_refs、分类 uncertain_items、升级 redline_seed 为完整交付前稿及 coverage checklist。
10
- - [AGENT-03] 前置规则引擎检查、输出 basis_id、风险等级规则显式化、控制待法务确认数量及结论模板固定。
11
- - [AGENT-04] 审核建议规则化、输出三层视图(legal_review_pack, executive_summary, delivery_summary)、增加优先级标签、细化 references、固定审核包结构。
12
- - [测试层] 构建包含 12 个维度的分层测试矩阵(TC-01 至 TC-12),并统一定义测试用例记录字段。
13
-
14
- ## Impact
15
- - Affected specs: 智能体接口输出结构(JSON Schemas)、Prompt 定义、测试脚本链路。
16
- - Affected code: `src/models/index.ts`, `src/schemas/*.json`, `src/llm.ts`, `test.ts` 或新建回归测试文件。
17
-
18
- ## ADDED Requirements
19
- ### Requirement: P0 全局优化与证据链
20
- The system SHALL 为所有高/中风险项输出统一证据链:`source_type`、`doc_name`、`section`、`excerpt`、`basis_ref`。
21
- The system SHALL 在所有响应中包含版本信息:`schema_version`、`agent_version`、`prompt_version`、`model_version`。
22
-
23
- ### Requirement: 智能体角色精细化
24
- The system SHALL 提升 AGENT-02 的证据粒度至文档片段级。
25
- The system SHALL 使 AGENT-04 根据明确的规则阈值输出审核建议(suggest_approve / reject / more_material),并按 P0/P1/P2 进行优先级排序。
26
-
27
- ### Requirement: 分层回归测试矩阵
28
- The system SHALL 提供 12 个标准测试用例集(明显漏洞、轻微漏洞、缺材料等),并能够自动记录端到端耗时及准确率指标。
29
-
30
- #### Scenario: 缺材料拦截测试 (TC-05)
31
- - **WHEN** 测试用例缺失 PRD 传入系统
32
- - **THEN** AGENT-02 触发 `need_more_material`,返回标准化缺材料清单。
33
-
34
- ## MODIFIED Requirements
35
- ### Requirement: 输出结论管控
36
- 修改 AGENT-03 和 AGENT-04 的输出逻辑,严禁自由发挥结论,必须使用固定的结论模板和显式的风险判定规则。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/optimize-compliance-agents-p0/tasks.md DELETED
@@ -1,34 +0,0 @@
1
- # Tasks
2
-
3
- - [x] Task 1: P0 全局模型优化与基础架构升级
4
- - [x] SubTask 1.1: 更新 `CaseContext` 和通用响应模型,增加 `schema_version`, `model_version` 等版本字段
5
- - [x] SubTask 1.2: 统一定义并实现高/中风险项的 `EvidenceChain` 证据链结构
6
- - [x] SubTask 1.3: 统一 `need_more_material` 错误返回的标准化结构(区分必填/可选/条件必填)
7
- - [x] SubTask 1.4: 升级 `requestLogger` 中间件,精确拆分和记录 API耗时、LLM耗时及重试耗时
8
-
9
- - [x] Task 2: AGENT-01 P0 优化 (同业/监管变化摘要)
10
- - [x] SubTask 2.1: 修改 Schema 和 Prompt,增加变化来源元数据 (机构/日期/链接等)
11
- - [x] SubTask 2.2: 增加变化类型分类和 `requirement_level` (强制/推荐/参考)
12
- - [x] SubTask 2.3: 增加 `applicability_reason` (适用性判断)
13
-
14
- - [x] Task 3: AGENT-02 P0 优化 (协议重构)
15
- - [x] SubTask 3.1: 修改 Schema 和 Prompt,将 `evidence` 升级为片段级定位
16
- - [x] SubTask 3.2: `rewrite_suggestions` 增加 `basis_refs`,分类 `uncertain_items`
17
- - [x] SubTask 3.3: 升级 `redline_seed` 为 `full_revised_draft`、`change_summary` 及 `redline_changes`
18
- - [x] SubTask 3.4: 增加 `coverage_checklist` 输出
19
-
20
- - [x] Task 4: AGENT-03 P0 优化 (合规校验)
21
- - [x] SubTask 4.1: 修改 Schema 和 Prompt,每个 gap 输出具体的 `basis_id`
22
- - [x] SubTask 4.2: 风险等级判定和 `conclusion` 输出显式化与模板化
23
- - [x] SubTask 4.3: 引入前置轻量级规则引擎校验机制(代码层面或明确Prompt规则约束待确认数量)
24
-
25
- - [x] Task 5: AGENT-04 P0 优化 (法务审核包生成)
26
- - [x] SubTask 5.1: 修改 Schema 和 Prompt,输出三层视图 (legal_review_pack, executive_summary, delivery_summary)
27
- - [x] SubTask 5.2: 为 `focus_items` 增加 P0/P1/P2 优先级标签,细化 `references`
28
- - [x] SubTask 5.3: `review_recommendation` 判定规则化并固定审核包最终结构
29
-
30
- - [x] Task 6: 建立分层回归测试矩阵 (12个核心用例)
31
- - [x] SubTask 6.1: 搭建回放测试脚本框架 (`regression.ts`),定义日志输出字段结构
32
- - [x] SubTask 6.2: 编写 TC-01 至 TC-04 (漏洞与合规测试) 的 Mock 数据
33
- - [x] SubTask 6.3: 编写 TC-05 至 TC-07 (缺失/冲突/不全测试) 的 Mock 数据
34
- - [x] SubTask 6.4: 编写 TC-08 至 TC-12 (敏感数据/未成年人/跨境/长文本/历史版本测试) 的 Mock 数据
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.trae/specs/optimize-compliance-agents-p0/搜索资料.md DELETED
@@ -1,1070 +0,0 @@
1
- 同业/监管抓取子系统 SPEC(V1.0)
2
- 1. 目标
3
-
4
- 构建一个独立于 4 个角色智能体之外的 抓取与检索子系统,负责:
5
-
6
- 从白名单来源定时抓取同业隐私协议、监管通报、SDK 隐私规则
7
- 对页面做正文抽取、版本去重、条款切片、变更比对
8
- 将结果入库为结构化对象
9
- 向 AGENT-01 提供稳定的 peer_updates / regulatory_updates / sdk_updates 输入
10
- 2. 范围
11
- In Scope
12
- 白名单来源管理
13
- 定时抓取
14
- 页面正文抽取
15
- 版本比对
16
- 条款切片与主题标注
17
- 结构化入库
18
- 向 AGENT-01 提供检索结果接口
19
- Out of Scope
20
- 全网自动发现
21
- 自动发布线上协议
22
- 法务审批逻辑
23
- 客户材料解析
24
- 协议重构/合规校验/审核包生成
25
- 3. 设计原则
26
- 原则 1:先白名单,后扩站
27
-
28
- 第一阶段仅抓指定官方来源。
29
-
30
- 原则 2:先版本化,再摘要
31
-
32
- 先保留快照和版本 diff,再让 AGENT-01 归纳。
33
-
34
- 原则 3:条款级入库,不只存全文
35
-
36
- 后续重构、校验、审核都需要精确回链到条款。
37
-
38
- 原则 4:抓取层不做法律结论
39
-
40
- 抓取层只负责“找、抽、比”,不做合规判断。
41
-
42
- 4. 来源白名单(首批种子列表)
43
-
44
- 下面这批来源都可作为首批白名单种子。银行侧优先选择手机银行/电子银行/零售 App 隐私政策页;监管侧优先选择网信、金监总局、人民银行相关规则/通报页;SDK 侧优先选择客户实际接入 SDK 的官方隐私/合规页。这些页面当前可公开访问,并且正文中明确涉及个人信息、手机银行、电子银行、SDK 披露或 App 个人信息收集使用要求。
45
-
46
- 4.1 头部银行官网 / App 隐私协议页(首批白名单)
47
- 中国工商银行(工银融e行个人信息保护政策)
48
- https://m.icbc.com.cn/ICBC/disclaimer/2.htm
49
-
50
- 中国银行(手机银行隐私政策)
51
- https://ebsnew.boc.cn/bocphone/VuePhone/tools/privacyPolicy/privacyPolicyA.html
52
-
53
- 中国建设银行(隐私协议)
54
- https://ccb.com/chn/mycom/register_xy_secret.shtml
55
-
56
- 中国农业银行(隐私政策(个人版))
57
- https://www.abchina.com/cn/personalservices/grzsc/201905/t20190521_1835654.htm
58
-
59
- 交通银行(个人手机银行和个人网上银行隐私政策)
60
- https://cftweb.3g.qq.com/privacy/privacyPolicy?content_id=2aa4ef302078fdf9fd868e776415a5ee
61
-
62
- 中国邮政储蓄银行(电子银行隐私政策)
63
- https://www.psbc.com/cn/grfw/fwgg/202302/t20230216_194017.html
64
-
65
- 招商银行(零售业务与App用户隐私政策)
66
- https://market.cmbchina.com/MPage/online/190717190011375/privacy.htm
67
- 4.2 监管官网 / 通报页(首批白名单)
68
- 国家互联网信息办公室:互联网应用程序个人信息收集使用规定(征求意见稿)
69
- https://www.cac.gov.cn/2026-01/10/c_1769603446094128.htm
70
-
71
- 国家互联网信息办公室:关于15款App和16款SDK个人信息收集使用问题的通报
72
- https://www.cac.gov.cn/2025-05/06/c_1748239411359045.htm
73
-
74
- 国家互联网信息办公室:网络数据安全管理条例
75
- https://www.cac.gov.cn/2024-09/30/c_1729384452307680.htm
76
-
77
- 国家金融监督管理总局:银行保险机构数据安全管理办法
78
- https://www.nfra.gov.cn/cn/view/pages/ItemDetail.html?docId=1192308&generaltype=0&itemId=926
79
-
80
- 国家金融监督管理总局:银行保险机构消费者权益保护管理办法
81
- https://www.nfra.gov.cn/cn/view/pages/rulesDetail.html?docId=1087524
82
-
83
- 中国人民银行金融标准全文公开系统:个人金融信息保护技术规范(JR/T 0171—2020)
84
- https://cfstc.pbc.gov.cn/bzgk/detail/?bzId=1856&id=0
85
- 4.3 第三方 SDK 官方隐私政策 / 合规页(首批白名单)
86
-
87
- 这些 SDK 页面都来自官方文档或官方政策页,可作为 SDK 披露和合规比对的种子来源;但真正上线时应以客户实际接入的 SDK 清单为准,不要一开始抓太多无关 SDK。
88
-
89
- 极光 SDK 产品合规指引说明
90
- https://docs.jiguang.cn/compliance_guide/sdk_compliance_guide/sdk_compliance_guide
91
-
92
- 友盟+ 隐私政策
93
- https://www.umeng.com/policy
94
-
95
- 腾讯 Bugly 开发者合规指南
96
- https://bugly.qq.com/docs/user-guide/instruction-manual-privacy/
97
-
98
- 腾讯云 号码认证 SDK 个人信息保护规则
99
- https://cloud.tencent.com/document/product/1415/65372
100
- 5. 来源注册表结构
101
-
102
- 抓取不要硬编码 URL,必须有一个 source_registry。
103
-
104
- source_registry 字段建议
105
- {
106
- "source_id": "bank_boc_mobile_privacy",
107
- "source_name": "中国银行手机银行隐私政策",
108
- "source_type": "peer_bank",
109
- "domain": "ebsnew.boc.cn",
110
- "entry_url": "https://ebsnew.boc.cn/bocphone/VuePhone/tools/privacyPolicy/privacyPolicyA.html",
111
- "url_pattern": "privacyPolicy",
112
- "parser_type": "html_main_content",
113
- "crawl_frequency": "daily",
114
- "priority": "high",
115
- "enabled": true,
116
- "topic_tags": ["mobile_banking", "privacy_policy", "sdk_disclosure"],
117
- "owner": "crawler_system"
118
- }
119
- source_type 枚举
120
- peer_bank
121
- regulator
122
- sdk_vendor
123
- 6. 抓取频率
124
- 6.1 推荐频率
125
- A. 头部银行隐私协议页
126
- 频率:每日 1 次
127
- 原因:变更不高频,但一旦更新影响大
128
- B. 监管通报 / 新规栏目
129
- 频率:每 4 小时 1 次
130
- 原因:监管通报有时效性,尤其是 App / SDK 问题通报
131
- C. SDK 官方隐私 / 合规页
132
- 频率:每日 1 次
133
- 原因:变更频率通常低于监管通报,但需要跟踪版本更新
134
- 6.2 失败重试
135
- 单次抓取失败:10 分钟后重试 1 次
136
- 连续失败 3 次:标记 source_status = degraded
137
- 连续失败 7 天:进入人工检查队列
138
- 7. 抓取流程
139
- Schedule Trigger / 外部触发
140
- → 读取 source_registry
141
- → 下载页面 / 文档
142
- → 正文抽取
143
- → 文本标准化
144
- → 版本去重
145
- → 条款切片
146
- → 主题标注
147
- → 版本比对
148
- → 写入 structured store
149
- → 供 AGENT-01 检索调用
150
- 8. 页面正文抽取规则
151
- 8.1 HTML 页面
152
-
153
- 优先抽取:
154
-
155
- 标题
156
- 更新时间 / 生效时间
157
- 正文正文区
158
- 章节标题
159
- 表格内容
160
- 附件链接
161
-
162
- 过滤掉:
163
-
164
- 导航
165
- 页脚
166
- 分享按钮
167
- 推荐阅读
168
- 评论区
169
- JS 渲染无关内容
170
- 8.2 PDF / DOC / 附件
171
- 保留原文件快照
172
- OCR 仅作为兜底
173
- 优先抽取目录、章节标题、条款编号、正文段落
174
- 8.3 标准化规则
175
-
176
- 统一做:
177
-
178
- 全角半角清洗
179
- 空白折叠
180
- HTML 标签移除
181
- 章节编号识别
182
- 日期标准化
183
- 9. 版本比对策略
184
- 9.1 去重层
185
-
186
- 使用:
187
-
188
- content_hash
189
- normalized_hash
190
-
191
- 如果 hash 不变,则不入新版本。
192
-
193
- 9.2 比对层
194
-
195
- 按两级做 diff:
196
-
197
- 文档级 diff
198
-
199
- 判断是否新版本、是否正文发生变化。
200
-
201
- 条款级 diff
202
-
203
- 对章节 / 条款切片做:
204
-
205
- 新增
206
- 删除
207
- 修改
208
- 9.3 变更事件输出
209
- {
210
- "event_id": "evt_001",
211
- "source_id": "bank_boc_mobile_privacy",
212
- "doc_version_from": "2026-03-01",
213
- "doc_version_to": "2026-03-29",
214
- "changed_sections": [
215
- {
216
- "section_title": "第三方SDK信息",
217
- "change_type": "modified",
218
- "old_excerpt": "...",
219
- "new_excerpt": "..."
220
- }
221
- ],
222
- "topic_tags": ["sdk_disclosure"],
223
- "impact_level": "high",
224
- "detected_at": "2026-04-23T06:00:00Z"
225
- }
226
- 9.4 主题标签建议
227
- permission_usage
228
- sdk_disclosure
229
- sensitive_personal_info
230
- minor_protection
231
- data_retention
232
- third_party_sharing
233
- cross_border_transfer
234
- user_rights
235
- biometric_info
236
- 10. 入库结构
237
-
238
- 建议至少拆 5 张表 / 5 类对象。
239
-
240
- 10.1 raw_snapshot
241
-
242
- 存原始抓取快照
243
-
244
- {
245
- "snapshot_id": "snap_001",
246
- "source_id": "bank_boc_mobile_privacy",
247
- "fetched_at": "2026-04-23T06:00:00Z",
248
- "content_type": "text/html",
249
- "raw_body": "...",
250
- "raw_hash": "..."
251
- }
252
- 10.2 normalized_document
253
-
254
- 存标准化后的整文
255
-
256
- {
257
- "doc_id": "doc_001",
258
- "source_id": "bank_boc_mobile_privacy",
259
- "version_date": "2026-03-29",
260
- "title": "中国银行股份有限公司手机银行隐私政策",
261
- "normalized_text": "...",
262
- "normalized_hash": "...",
263
- "effective_date": "2026-03-29"
264
- }
265
- 10.3 clause_chunk
266
-
267
- 按条款切片入库
268
-
269
- {
270
- "chunk_id": "chunk_001",
271
- "doc_id": "doc_001",
272
- "section_title": "一、我行如何收集和使用您的个人信息",
273
- "clause_text": "...",
274
- "topic_tags": ["sdk_disclosure", "permission_usage"],
275
- "embedding_status": "ready"
276
- }
277
- 10.4 diff_event
278
-
279
- 存版本变化事件
280
- 见上文 schema。
281
-
282
- 10.5 source_registry
283
-
284
- 存来源注册表
285
- 见上文 schema。
286
-
287
- 11. 与 AGENT-01 的接口
288
-
289
- 你现有 SPEC 里,AGENT-01 输入是:
290
-
291
- peer_updates
292
- regulatory_updates
293
- 它负责输出摘要、参考条款、风险提醒。
294
-
295
- 所以抓取子系统对 AGENT-01 的最优接口不是给“全文”,而是给结构化变化包。
296
-
297
- API-01 获取变化包
298
-
299
- GET /api/crawler/updates?app_name=xxx&business_line=retail&topics=sdk_disclosure,permission_usage
300
-
301
- response
302
- {
303
- "peer_updates": [
304
- {
305
- "source_name": "中国银行手机银行隐私政策",
306
- "source_type": "peer_bank",
307
- "version_date": "2026-03-29",
308
- "topic_tags": ["sdk_disclosure"],
309
- "changed_sections": [
310
- {
311
- "section_title": "第三方SDK信息",
312
- "change_type": "modified",
313
- "excerpt": "..."
314
- }
315
- ]
316
- }
317
- ],
318
- "regulatory_updates": [
319
- {
320
- "source_name": "关于15款App和16款SDK个人信息收集使用问题的通报",
321
- "source_type": "regulator",
322
- "version_date": "2025-05-06",
323
- "topic_tags": ["sdk_disclosure"],
324
- "changed_sections": [
325
- {
326
- "section_title": "SDK收集使用个人信息问题",
327
- "change_type": "new",
328
- "excerpt": "未逐一列出收集使用个人信息的SDK..."
329
- }
330
- ]
331
- }
332
- ],
333
- "sdk_updates": [
334
- {
335
- "source_name": "极光 SDK 产品合规指引说明",
336
- "source_type": "sdk_vendor",
337
- "version_date": "2023-11-23",
338
- "topic_tags": ["sdk_disclosure", "init_after_consent"],
339
- "changed_sections": [
340
- {
341
- "section_title": "合规使用三步走",
342
- "change_type": "current_reference",
343
- "excerpt": "请务必在用户同意《隐私政策》之后,再初始化SDK。"
344
- }
345
- ]
346
- }
347
- ]
348
- }
349
- AGENT-01 升级后的职责
350
-
351
- 从“摘要器”升级成:
352
-
353
- 检索增强型同业/监管条款摘要智能体
354
-
355
- 它仍然不负责抓取,只负责:
356
-
357
- 消费结构化变化包
358
- 输出 peer_summary / reg_summary
359
- 输出 reference_clauses
360
- 输出 risk_alerts
361
- 12. 推荐的 Dify 接入方式
362
- Workflow A:抓取更新流
363
- Schedule Trigger
364
- HTTP Request 调抓取子系统
365
- HTTP Request 调 AGENT-01
366
- Template 生成变化摘要
367
- 写入样本库 / 消息中心
368
- Workflow B:客户重构主流程
369
- 在主流程里先调 GET /api/crawler/updates
370
- 再把结果喂给 AGENT-01 / AGENT-02 / AGENT-03 / AGENT-04
371
- 13. 阶段策略
372
- Phase 1:白名单抓取
373
- 只抓指定官方来源
374
- 目标 10~20 个来源
375
- 先保证稳定和可审计
376
- Phase 2:候选来源池
377
- 人工录入新来源
378
- 系统可推荐候选来源
379
- 但必须人工审核入白名单
380
- Phase 3:有限自动发现
381
- 仅在指定域名集合、指定页面类型、指定关键词下扩展
382
- 不做开放式全网自由抓取
383
- 14. 验收标准
384
- AC-01 来源抓取
385
-
386
- 给定白名单来源
387
- 当定时任务触发
388
- 则系统能抓取正文并生成快照
389
-
390
- AC-02 版本去重
391
-
392
- 给定正文无变化
393
- 当再次抓取
394
- 则不生成新版本
395
-
396
- AC-03 条款切片
397
-
398
- 给定一份隐私政策正文
399
- 当解析完成
400
- 则可生成章节/条款级 chunk
401
-
402
- AC-04 版本比对
403
-
404
- 给定新旧两个版本
405
- 当执行 diff
406
- 则输出 changed_sections 与 topic_tags
407
-
408
- AC-05 AGENT-01 接口
409
-
410
- 给定变化包
411
- 当 AGENT-01 调用
412
- 则返回摘要、参考条款和风险提醒
413
-
414
- AC-06 审计可追溯
415
-
416
- 任一风险提醒项
417
- 必须能回链到:
418
-
419
- 来源站点
420
- 版本日期
421
- 原文条款片段
422
- 最后建议
423
-
424
- 你现在最该做的不是“让 AGENT-01 自己去搜”,而是:
425
-
426
- 新增一个抓取子系统,把“找”和“抽”做稳定;AGENT-01 继续专注于“筛、归类、摘要”。
427
-
428
-
429
- 《AGENT-00 / 抓取子系统:接口定义 + 数据表结构 + 与 AGENT-01 的输入契约》
430
-
431
- 版本:V1.0
432
- 状态:研发开工版
433
- 适用范围:同业/监管/SDK 条款抓取、版本比对、结构化入库、向 AGENT-01 供数
434
-
435
- 1. 目标
436
-
437
- 构建一个独立于 4 个角色智能体之外的抓取子系统,负责:
438
-
439
- 从白名单来源抓取同业隐私协议、监管规则/通报、SDK 官方隐私政策
440
- 抽取正文并保留原始快照
441
- 做版本去重与条款级 diff
442
- 产出结构化的 peer_updates / regulatory_updates / sdk_updates
443
- 为 AGENT-01 提供稳定、可审计、可追溯的输入
444
- 2. 非目标
445
- 不做客户协议重构
446
- 不做合规结论判断
447
- 不做法务审核建议
448
- 不做桌面端文件处理
449
- 不做开放式全网自由爬取
450
- 不直接把抓取结果给终端用户展示为最终结论
451
- 3. 系统定位
452
- 3.1 定位
453
-
454
- AGENT-00 是 抓取与检索服务,不是与 AGENT-01~04 同级的业务判断智能体。
455
-
456
- 3.2 角色关系
457
- AGENT-00:抓取、抽取、比对、供数
458
- AGENT-01:变化归纳与风险摘要
459
- AGENT-02:协议重构
460
- AGENT-03:合规校验
461
- AGENT-04:法务审核包生成
462
- 3.3 核心边界
463
-
464
- AGENT-00 不负责输出:
465
-
466
- “已合规”
467
- “建议通过”
468
- “建议退回”
469
- “建议补材料”
470
-
471
- 它只负责提供 来源可信、结构化、带版本、带原文片段 的变化数据。
472
-
473
- 4. 总体流程
474
- source_registry
475
- → scheduler
476
- → fetcher
477
- → content_extractor
478
- → normalizer
479
- → deduplicator
480
- → clause_splitter
481
- → topic_tagger
482
- → diff_engine
483
- → structured_store
484
- → update_api
485
- → AGENT-01
486
- 5. 模块拆分
487
- 5.1 来源注册表模块
488
-
489
- 负责维护白名单来源。
490
-
491
- 核心字段
492
- source_id
493
- source_name
494
- source_type
495
- domain
496
- entry_url
497
- url_pattern
498
- parser_type
499
- crawl_frequency
500
- priority
501
- enabled
502
- topic_tags
503
- 5.2 抓取调度模块
504
-
505
- 负责定时触发抓取任务。
506
-
507
- 触发方式
508
- cron 定时
509
- 手动触发
510
- webhook 触发
511
- 5.3 内容抓取模块
512
-
513
- 负责下载页面/文档原文。
514
-
515
- 支持类型
516
- HTML 页面
517
- PDF
518
- DOC / DOCX(可选)
519
- 外链附件
520
- 5.4 正文抽取模块
521
-
522
- 负责把原始页面转成正文。
523
-
524
- 输出
525
- 标题
526
- 正文
527
- 更新时间
528
- 生效时间
529
- 章节结构
530
- 附件链接
531
- 5.5 版本去重模块
532
-
533
- 负责判断是否是新版本。
534
-
535
- 策略
536
- raw_hash
537
- normalized_hash
538
- 版本日期
539
- 标题+正文 hash
540
- 5.6 条款切片模块
541
-
542
- 负责把整文拆成可检索的条款片段。
543
-
544
- 切片粒度
545
- 一级章节
546
- 二级章节
547
- 条款段落
548
- 5.7 主题标注模块
549
-
550
- 负责给条款打标签。
551
-
552
- 建议主题标签
553
- permission_usage
554
- sdk_disclosure
555
- sensitive_personal_info
556
- minor_protection
557
- data_retention
558
- third_party_sharing
559
- cross_border_transfer
560
- user_rights
561
- biometric_info
562
- 5.8 版本比对模块
563
-
564
- 负责新旧版本 diff。
565
-
566
- 输出变化类型
567
- added
568
- removed
569
- modified
570
- unchanged
571
- 5.9 对外供数模块
572
-
573
- 负责向 AGENT-01 / Dify 输出结构化变化包。
574
-
575
- 6. 数据表结构
576
-
577
- 下面按最小可落地版本设计。
578
-
579
- 6.1 source_registry
580
-
581
- 来源注册表
582
-
583
- 字段 类型 说明
584
- source_id varchar(64) PK 来源唯一 ID
585
- source_name varchar(255) 来源名称
586
- source_type varchar(32) peer_bank/regulator/sdk_vendor
587
- domain varchar(255) 主域名
588
- entry_url text 入口 URL
589
- url_pattern text 匹配规则
590
- parser_type varchar(64) 解析器类型
591
- crawl_frequency varchar(32) 4h/daily/weekly
592
- priority varchar(16) high/medium/low
593
- enabled boolean 是否启用
594
- topic_tags json 默认主题标签
595
- created_at timestamp 创建时间
596
- updated_at timestamp 更新时间
597
- 示例
598
- {
599
- "source_id": "bank_boc_mobile_privacy",
600
- "source_name": "中国银行手机银行隐私政策",
601
- "source_type": "peer_bank",
602
- "domain": "ebsnew.boc.cn",
603
- "entry_url": "https://ebsnew.boc.cn/bocphone/VuePhone/tools/privacyPolicy/privacyPolicyA.html",
604
- "url_pattern": "privacyPolicy",
605
- "parser_type": "html_main_content",
606
- "crawl_frequency": "daily",
607
- "priority": "high",
608
- "enabled": true,
609
- "topic_tags": ["mobile_banking", "privacy_policy", "sdk_disclosure"]
610
- }
611
- 6.2 crawl_job
612
-
613
- 抓取任务表
614
-
615
- 字段 类型 说明
616
- job_id varchar(64) PK 抓取任务 ID
617
- source_id varchar(64) FK 来源 ID
618
- trigger_type varchar(32) schedule/manual/webhook
619
- status varchar(32) queued/running/success/failed
620
- started_at timestamp 开始时间
621
- ended_at timestamp 结束时间
622
- error_code varchar(32) 错误码
623
- error_message text 错误信息
624
- retry_count int 重试次数
625
- 6.3 raw_snapshot
626
-
627
- 原始快照表
628
-
629
- 字段 类型 说明
630
- snapshot_id varchar(64) PK 快照 ID
631
- source_id varchar(64) FK 来源 ID
632
- job_id varchar(64) FK 抓取任务 ID
633
- fetched_at timestamp 抓取时间
634
- content_type varchar(64) text/html/application/pdf
635
- raw_body longtext 原始内容
636
- raw_hash varchar(128) 原始 hash
637
- http_status int HTTP 状态码
638
- final_url text 最终 URL
639
- 6.4 normalized_document
640
-
641
- 标准化文档表
642
-
643
- 字段 类型 说明
644
- doc_id varchar(64) PK 文档 ID
645
- source_id varchar(64) FK 来源 ID
646
- snapshot_id varchar(64) FK 快照 ID
647
- title varchar(500) 文档标题
648
- version_date date 版本日期
649
- effective_date date 生效日期
650
- normalized_text longtext 标准化正文
651
- normalized_hash varchar(128) 标准化 hash
652
- doc_status varchar(32) active/archived
653
- created_at timestamp 创建时间
654
- 6.5 clause_chunk
655
-
656
- 条款切片表
657
-
658
- 字段 类型 说明
659
- chunk_id varchar(64) PK 切片 ID
660
- doc_id varchar(64) FK 文档 ID
661
- section_path varchar(500) 章节路径
662
- section_title varchar(255) 章节标题
663
- clause_text longtext 条款正文
664
- topic_tags json 主题标签
665
- embedding_status varchar(32) pending/ready/failed
666
- chunk_order int 顺序
667
- created_at timestamp 创建时间
668
- 6.6 diff_event
669
-
670
- 版本变化事件表
671
-
672
- 字段 类型 说明
673
- event_id varchar(64) PK 变化事件 ID
674
- source_id varchar(64) FK 来源 ID
675
- from_doc_id varchar(64) 旧版本文档 ID
676
- to_doc_id varchar(64) 新版本文档 ID
677
- change_type varchar(32) added/removed/modified
678
- section_title varchar(255) 变化章节
679
- old_excerpt text 旧片段
680
- new_excerpt text 新片段
681
- topic_tags json 标签
682
- impact_level varchar(16) high/medium/low
683
- detected_at timestamp 检测时间
684
- 示例
685
- {
686
- "event_id": "evt_001",
687
- "source_id": "bank_boc_mobile_privacy",
688
- "from_doc_id": "doc_20260301",
689
- "to_doc_id": "doc_20260329",
690
- "change_type": "modified",
691
- "section_title": "第三方SDK信息",
692
- "old_excerpt": "......",
693
- "new_excerpt": "......",
694
- "topic_tags": ["sdk_disclosure"],
695
- "impact_level": "high",
696
- "detected_at": "2026-04-23T06:00:00Z"
697
- }
698
- 7. 接口定义
699
- API-00-01 新增来源
700
-
701
- POST /api/crawler/sources
702
-
703
- request
704
- {
705
- "source_name": "中国银行手机银行隐私政策",
706
- "source_type": "peer_bank",
707
- "domain": "ebsnew.boc.cn",
708
- "entry_url": "https://ebsnew.boc.cn/bocphone/VuePhone/tools/privacyPolicy/privacyPolicyA.html",
709
- "url_pattern": "privacyPolicy",
710
- "parser_type": "html_main_content",
711
- "crawl_frequency": "daily",
712
- "priority": "high",
713
- "enabled": true,
714
- "topic_tags": ["privacy_policy", "mobile_banking", "sdk_disclosure"]
715
- }
716
- response
717
- {
718
- "source_id": "bank_boc_mobile_privacy",
719
- "success": true
720
- }
721
- API-00-02 来源列表
722
-
723
- GET /api/crawler/sources
724
-
725
- query
726
- source_type
727
- enabled
728
- priority
729
- response
730
- {
731
- "items": [],
732
- "total": 10
733
- }
734
- API-00-03 手动触发抓取
735
-
736
- POST /api/crawler/jobs
737
-
738
- request
739
- {
740
- "source_ids": [
741
- "bank_boc_mobile_privacy",
742
- "reg_cac_app_notice"
743
- ],
744
- "trigger_type": "manual"
745
- }
746
- response
747
- {
748
- "job_ids": ["job_001", "job_002"],
749
- "status": "queued"
750
- }
751
- API-00-04 查询抓取任务
752
-
753
- GET /api/crawler/jobs/{jobId}
754
-
755
- response
756
- {
757
- "job_id": "job_001",
758
- "source_id": "bank_boc_mobile_privacy",
759
- "status": "success",
760
- "started_at": "2026-04-23T06:00:00Z",
761
- "ended_at": "2026-04-23T06:00:05Z",
762
- "error_code": null,
763
- "retry_count": 0
764
- }
765
- API-00-05 查询版本列表
766
-
767
- GET /api/crawler/documents?source_id=bank_boc_mobile_privacy
768
-
769
- response
770
- {
771
- "items": [
772
- {
773
- "doc_id": "doc_20260329",
774
- "version_date": "2026-03-29",
775
- "effective_date": "2026-03-29",
776
- "normalized_hash": "hash_xxx"
777
- }
778
- ]
779
- }
780
- API-00-06 查询变化事件
781
-
782
- GET /api/crawler/diff-events?source_id=bank_boc_mobile_privacy
783
-
784
- response
785
- {
786
- "items": [
787
- {
788
- "event_id": "evt_001",
789
- "section_title": "第三方SDK信息",
790
- "change_type": "modified",
791
- "impact_level": "high",
792
- "topic_tags": ["sdk_disclosure"]
793
- }
794
- ]
795
- }
796
- API-00-07 获取供 AGENT-01 使用的变化包
797
-
798
- 这是最关键接口。
799
-
800
- GET /api/crawler/updates
801
-
802
- query 参数
803
- app_name
804
- business_line
805
- topics(逗号分隔,可选)
806
- since(可选)
807
- limit(可选,默认 50)
808
- response
809
- {
810
- "peer_updates": [
811
- {
812
- "source_name": "中国银行手机银行隐私政策",
813
- "source_type": "peer_bank",
814
- "version_date": "2026-03-29",
815
- "topic_tags": ["sdk_disclosure"],
816
- "changed_sections": [
817
- {
818
- "section_title": "第三方SDK信息",
819
- "change_type": "modified",
820
- "excerpt": "......"
821
- }
822
- ]
823
- }
824
- ],
825
- "regulatory_updates": [
826
- {
827
- "source_name": "APP个人信息收集使用问题通报",
828
- "source_type": "regulator",
829
- "version_date": "2025-05-06",
830
- "topic_tags": ["sdk_disclosure", "permission_usage"],
831
- "changed_sections": [
832
- {
833
- "section_title": "SDK问题",
834
- "change_type": "new",
835
- "excerpt": "未逐一列出SDK收集使用个人信息情况......"
836
- }
837
- ]
838
- }
839
- ],
840
- "sdk_updates": [
841
- {
842
- "source_name": "极光 SDK 合规指引",
843
- "source_type": "sdk_vendor",
844
- "version_date": "2023-11-23",
845
- "topic_tags": ["sdk_disclosure", "init_after_consent"],
846
- "changed_sections": [
847
- {
848
- "section_title": "合规使用三步走",
849
- "change_type": "current_reference",
850
- "excerpt": "请务必在用户同意《隐私政策》之后,再初始化SDK。"
851
- }
852
- ]
853
- }
854
- ]
855
- }
856
- 8. 与 AGENT-01 的输入契约
857
-
858
- 你现在的主链路里,AGENT-01 吃的是:
859
-
860
- peer_updates
861
- regulatory_updates
862
-
863
- 然后输出:
864
-
865
- peer_summary
866
- reg_summary
867
- reference_clauses
868
- risk_alerts
869
-
870
- 所以 AGENT-00 对 AGENT-01 的最优输入契约如下。
871
-
872
- 8.1 输入字段定义
873
- peer_updates[].source_name
874
-
875
- 来源名称
876
-
877
- peer_updates[].source_type
878
-
879
- 固定值:peer_bank
880
-
881
- peer_updates[].version_date
882
-
883
- 版本日期
884
-
885
- peer_updates[].topic_tags
886
-
887
- 变化标签
888
-
889
- peer_updates[].changed_sections[]
890
-
891
- 变化章节数组
892
-
893
- 变化章节字段
894
- section_title
895
- change_type
896
- excerpt
897
-
898
- 监管和 SDK 更新结构完全相同,只是 source_type 不同。
899
-
900
- 8.2 AGENT-01 输入契约对象
901
- {
902
- "peer_updates": [],
903
- "regulatory_updates": [],
904
- "sdk_updates": [],
905
- "app_name": "手机银行APP",
906
- "business_line": "retail"
907
- }
908
- 8.3 AGENT-01 输出建议升级
909
-
910
- 建议把你现有 PeerRegSummary 升级成下面结构:
911
-
912
- {
913
- "insufficient_context": false,
914
- "peer_summary": "......",
915
- "reg_summary": "......",
916
- "mandatory_requirements": [
917
- "第三方SDK应逐一披露用途与处理信息类型"
918
- ],
919
- "peer_best_practices": [
920
- "头部银行普遍将权限用途绑定到具体业务场景"
921
- ],
922
- "reference_clauses": [
923
- {
924
- "source_name": "中国银行手机银行隐私政策",
925
- "source_type": "peer_bank",
926
- "version_date": "2026-03-29",
927
- "section_title": "第三方SDK信息",
928
- "topic": "sdk_disclosure",
929
- "clause": "......",
930
- "applicability": "reference"
931
- }
932
- ],
933
- "risk_alerts": [
934
- "第三方SDK用途披露不足"
935
- ],
936
- "missing_topics": [
937
- "data_retention"
938
- ]
939
- }
940
- 为什么要升级
941
-
942
- 因为后面的 AGENT-02 / AGENT-03 不只需要“摘要”,还需要:
943
-
944
- 哪条是监管强制
945
- 哪条是同业参考
946
- 哪条缺失了
947
- 原文在哪
948
- 9. 抓取频率
949
- 9.1 推荐频率
950
- 头部银行隐私协议页
951
- daily
952
- 监管通报/规则页
953
- 4h
954
- SDK 官方隐私/合规页
955
- daily
956
- 9.2 重试规则
957
- 抓取失败:10 分钟后重试 1 次
958
- 连续失败 3 次:标记 degraded
959
- 连续失败 7 天:进入人工检查队列
960
- 10. 版本比对规则
961
- 10.1 去重
962
-
963
- 使用:
964
-
965
- raw_hash
966
- normalized_hash
967
-
968
- 二者均未变化则不生成新版本。
969
-
970
- 10.2 diff 粒度
971
- 文档级
972
- 条款级
973
- 10.3 变化分类
974
- added
975
- removed
976
- modified
977
- 10.4 影响等级规则(初版)
978
- high
979
-
980
- 涉及:
981
-
982
- SDK 披露
983
- 敏感个人信息
984
- 权限用途
985
- 跨境传输
986
- 未成年人条款
987
- medium
988
-
989
- 涉及:
990
-
991
- 数据共享表述细化
992
- 用户��利行使方式
993
- 数据保留期限
994
- low
995
-
996
- 涉及:
997
-
998
- 表述润色
999
- 结构调整
1000
- 非实质性排序变化
1001
- 11. 错误码
1002
- 错误码 含义
1003
- 4001 来源配置缺失
1004
- 4002 URL 非法
1005
- 4003 解析失败
1006
- 4004 无正文内容
1007
- 5001 抓取失败
1008
- 5002 版本比对失败
1009
- 5003 入库失败
1010
- 5004 输出结构化失败
1011
- 12. 验收标准
1012
- AC-00-01 来源管理
1013
-
1014
- 新增来源后可被定时任务读取。
1015
-
1016
- AC-00-02 抓取成功
1017
-
1018
- 对启用来源能成功抓取正文并生成原始快照。
1019
-
1020
- AC-00-03 去重成功
1021
-
1022
- 正文无变化时,不生成新版本。
1023
-
1024
- AC-00-04 版本变化识别
1025
-
1026
- 正文有变化时,能生成 diff_event。
1027
-
1028
- AC-00-05 条款切片
1029
-
1030
- 标准化文档可拆成条款级 clause_chunk。
1031
-
1032
- AC-00-06 AGENT-01 供数
1033
-
1034
- GET /api/crawler/updates 能返回 peer_updates / regulatory_updates / sdk_updates。
1035
-
1036
- AC-00-07 可追溯
1037
-
1038
- 任一 risk_alert 最终都能回链到:
1039
-
1040
- source_name
1041
- version_date
1042
- section_title
1043
- 原文 excerpt
1044
- 13. 第一阶段研发建议
1045
- Sprint 1
1046
- source_registry
1047
- crawl_job
1048
- raw_snapshot
1049
- 手动抓取接口
1050
- 单页面正文抽取
1051
- Sprint 2
1052
- normalized_document
1053
- clause_chunk
1054
- diff_event
1055
- GET /api/crawler/updates
1056
- Sprint 3
1057
- 定时调度
1058
- 重试机制
1059
- topic tagging
1060
- 与 AGENT-01 联调
1061
- 14. 最终建议
1062
-
1063
- 你现在不要改 AGENT-01 的主职责。
1064
- 最优做法是:
1065
-
1066
- 新增 AGENT-00 / 抓取子系统,让它产出结构化变化包;AGENT-01 继续做“变化归纳与条款摘要”。
1067
-
1068
- 一句话压缩:
1069
-
1070
- AGENT-00 负责“找、抽、比、存”,AGENT-01 负责“筛、归类、摘要”。