merge: feature/w7-d7-data-inventory

This commit is contained in:
weichen
2026-09-17 04:58:52 +00:00
27 changed files with 469 additions and 5 deletions
@@ -52,6 +52,7 @@ FEATURE-MATRIX「对话数据治理(D7)」为 `deferred`。收口计划 W7
## 后果
- W7 可按本草案启动盘点;物理删除与备份清除在 `pending-compliance-signoff` 解除前禁止按建议数字自动执行。
- 2026-09-17 只读盘点:[../audit/2026-09-17-d7-data-inventory.md](../audit/2026-09-17-d7-data-inventory.md)(未删数据、未升矩阵 done、未写 gap-matrix blocker)。
- 日志/DLQ/reconciliation 实现与审计须持续满足 Track E ID-only 红线。
- 合规改数后:更新本 ADR 数字表、`updated` 日期,并将 `compliance` 改为 `signed` / `accepted`;再开 W7 整改实现。
@@ -0,0 +1,62 @@
---
title: "D7 对话数据分类盘点"
status: done
created: 2026-09-17
updated: 2026-09-17
severity: medium
---
# D7 对话数据分类盘点
## 现象
FEATURE-MATRIX「对话数据治理(D7)」为 `deferred`;ADR 数字 `pending-compliance-signoff`。W7 只盘点当前基线:会话正文、派生副本、共享 KB、日志、备份、事件敏感字段。本轮**未**按草案 365/180/30 天执行物理删除或备份清除。
## 根因分析
当前基线是「热库明文 + 软删除列预留 + 事件 ID 化」,不是已签字的留存作业。缺口是**尚未实现**的治理能力,不是已确认合规数字被违反。
## 严重度
`medium`(实现缺口;**不**升 gap-matrix blocker)
## 分类盘点
| 数据类 | 位置 | 形态 | 现状 |
|--------|------|------|------|
| 会话正文 | `chat_sessions` / `chat_messages.content` | 热库明文 TEXT;`deleted_at` 列存在 | dev 619 sessions / 3291 messages;`deleted_at` 全 NULL;Go 无 `SET deleted_at`、无 `DELETE FROM chat_*` |
| 派生摘要 | `chat_daily_digests` | headline / key_points JSON | 0 行 |
| 向量记忆 | `context_memory_chunks` | `content` TEXT + embedding | 102 行:`project_doc` 71、`chat_history` 24、`approved_case` 7。聊天派生副本会随正文留存 |
| 私密文档 | `freeform_documents` | `is_deleted` / `deleted_at` + version markdown | 122 份,其中 113 已软删(聊天消息无对等写路径) |
| 共享 KB | `shuimu-kb-shared` / `regulations` | 法规 chunks,无 chat 表 | `reg_documents` 2907、`reg_chunks` 312919;与对话库隔离 |
| 事件 envelope | `event_envelopes.payload` BYTEA | JSON 字段 | 4 条;keys 均为 ID/digest/`summary_ref`,`has_content=false` |
| 事件 DLQ / attempts | `event_dead_letters` / `event_delivery_attempts` | ID + reason / error_code | DLQ 0;attempts 4;无正文列 |
| 日志 | Docker `json-file` 无 max-size | 应用 slog | 抽检 rebuild 日志:DSN 已 `***`,无 chat content |
| 备份 | `scripts/backup-system-db.sh` `pg_dump -Fc` | 整库含 chat 明文 | 宿主机无 `./backups` 目录;CI 有 backup-restore-drill |
| Agent workspace | `data/dev/workspaces` 150M | 非终态工作区 | 无 30 天清理作业(ADR 草案待签字) |
| FAV | `final_artifacts` | 1 行;consumer mode=off | 与聊天口径解耦;W6 shadow 不写 |
事件 payload 比 `StaticContracts` allowlist **多出** `workspace_id` / `manifest_sha256` 等 ID 字段,但仍无聊天正文。属契约收紧 follow-up,不是 Track E 正文泄漏。
## 违规判定
对照已签字约束(Track E ID-only 日志/DLQ、R13 出站最小化、ADR 明确「签字前禁止按数字删除」):
- **未发现**已确认安全/合规基线被当前实现违反。
- **因此不写** `gap-matrix` blocker。
- 缺 365 天热库清理、缺聊天 soft-delete 写路径、缺字段级加密,均属 ADR 签字后的 W7 整改实现,不得在本轮当「已违规」执行删除。
## 关联整改
- ADR 草案: [../adr/2026-09-17-d7-chat-data-retention.md](../adr/2026-09-17-d7-chat-data-retention.md)
- 签字后整改:soft-delete 写路径 → 观察窗 → 物理清理;同步清 `context_memory_chunks` 的 `chat_history`;备份二次批准 + delete manifest(R22)
## 证据
`.doc/test-reports/assets/2026-09-17-w7-d7-inventory/`(counts / columns / event keys / KB / logs / health)。查询只读,未 `DELETE`/`UPDATE`。
## 开放问题
- 合规何时签字或改数(365/180/30)?
- 聊天 UI 删除是否要与 freeform 回收站对齐?
- `taskrun.completed` payload 额外 ID 字段是否收紧 allowlist?
+4 -3
View File
@@ -5,7 +5,7 @@
## 焦点
1. **partial/deferred 全量收口**:W1–W4 **done**;W5a **done**(矩阵自举行仍 partial);W6 **shadow done**(矩阵 FAV 仍 partial,live 未放量);续 W7
1. **partial/deferred 全量收口**:W1–W4 **done**;W5a **done**(矩阵自举行仍 partial);W6 **shadow done**(矩阵 FAV 仍 partial);W7 **盘点 done**(矩阵 D7 仍 deferred,无物理删除)
2. **运维**:nightly `DATA_DIR=dev` 已对齐;KB 宿主机分层加载 / fail-closed **done**(`fix/kb-host-auth-layered-load`)
3. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`(升 `confirm` 须 W4 闭环后独立授权);`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 顺序 staging→artifact→publication、每级观察窗证据驱动(下限 ≥7 天)、`FAV_DEGRADED_READ=false`;flag 默认 off;项目 143 只读
@@ -19,7 +19,7 @@
| Cursor | 2026-09-17-w4-multi-intent-u9-u12 | feature/w4-u9-segment-live | - | intent-plan | done |
| Cursor | 2026-09-17-w5a-software-bootstrap-ui | feature/w5a-software-bootstrap-ui-pi | - | workflow-design | done |
| Cursor | 2026-09-17-w6-fav-subscriber-shadow | feature/w6-fav-subscriber-shadow | - | events | done |
| Cursor | 2026-09-17-w7-d7-inventory | feature/w7-d7-data-inventory | - | chat | planned |
| Cursor | 2026-09-17-w7-d7-inventory | feature/w7-d7-data-inventory | - | chat | done |
| Cursor | 2026-09-17-kb-host-auth-fix | fix/kb-host-auth-layered-load | - | infra | done |
| Cursor | 2026-09-17-w1-ci-e2e-green-nightly | feature/w1-ci-e2e-green-nightly | - | ci | done |
| Cline | 2026-09-16-partial-deferred-completion | docs/partial-deferred-completion-plan | - | architecture-docs | in_progress |
@@ -118,7 +118,7 @@
| holder | phase | since | scope | queue |
|--------|-------|-------|-------|-------|
| - | idle | - | - | W7 |
| - | idle | - | - | - |
**phase**: `idle` | `merging` | `smoke` | `e2e`
@@ -141,6 +141,7 @@
| 发布缺口 | [gap-matrix](../remediation/gap-matrix.md)(`production_ready=yes`;Wave 0 IAM 只读未发现旁路) |
| 连续性审计/计划 | [audit](../audit/2026-09-16-feature-matrix-production-readiness-audit.md) · [remediation](../remediation/2026-09-16-feature-matrix-production-readiness-plan.md) · [Wave 0 任务](./short-term/2026-09-16-feature-matrix-wave0-calibration.md) |
| 测试报告 | [test-reports/](../test-reports/) |
| D7 盘点(W7) | [audit](../audit/2026-09-17-d7-data-inventory.md) · [报告](../test-reports/2026-09-17-w7-d7-inventory-test-report.md) · ADR 仍 `pending-compliance-signoff` |
| Agent 手册 | [AGENTS.md](../../AGENTS.md) |
| 意图双标签 busy 交接 | [./handoffs/2026-09-15-conversation-intent-dual-tab.md](./handoffs/2026-09-15-conversation-intent-dual-tab.md) |
| 受控正文 hash 漂移 W1–W6 | [../ops/handoffs/2026-09-14-controlled-content-canonical-hash.md](../ops/handoffs/2026-09-14-controlled-content-canonical-hash.md) |
@@ -28,7 +28,7 @@ mutex: architecture-docs
4. [x] W4 PU8 U9–U12(mutex `intent-plan`;逐 action 独立 flag,U9→U12 顺序;升 confirm 另开独立授权,不升 full)
5. [ ] W5 纯软件自举(mutex `workflow-design`;SWBOOT-10 非 stub + 真实 PI + UI 二次验收)
6. [ ] W6 FAV(mutex `events`;**shadow 已合** → live staging→artifact→publication 仍未开;每级观察窗 ≥7 天;`FAV_DEGRADED_READ=false`;禁止整支 merge)
7. [ ] W7 D7 数据治理(mutex `chat`,排在 W2 后;盘点 → 按 ADR 口径整改;合规签字前数字 `pending-compliance-signoff`;违规升 gap-matrix)
7. [ ] W7 D7 数据治理(mutex `chat`;**盘点已合**;按 ADR 口径整改仍待合规签字;数字 `pending-compliance-signoff`;本轮未发现已确认违规、未写 gap-matrix)
8. [ ] 逐行升 done(保留 lineage)+ CURRENT / 契约状态同步
9. [x] §7 四项开放问题决策落盘(2026-09-17)
@@ -0,0 +1,46 @@
---
title: "W7 D7 对话数据分类盘点"
status: done
created: 2026-09-17
updated: 2026-09-17
owner: Cursor
branch: feature/w7-d7-data-inventory
worktree: "-"
mutex: chat
---
# W7 D7 对话数据分类盘点
## 目标
只做数据分类盘点 audit(sessions/messages、KB、日志、备份、event 敏感字段与流转)。无合规签字不物理删除、不清备份。矩阵 D7 保持 `deferred`。
## 范围
- 只读盘点:表、派生副本、日志、备份脚本、事件 payload
- 若发现**已确认**安全/合规基线违规 → 立即写 gap-matrix blocker
## 非目标
- 按 ADR 草案数字(365/180/30)执行物理删除或备份清除
- 字段级加密实现
- 升 FEATURE-MATRIX D7 为 `done`
- 翻转 `production_ready`
## 步骤
1. [x] 只读盘点系统库 / 共享 KB / 宿主 traces / 事件 payload keys
2. [x] 写 audit + test-report;违规判定(无已确认违规,未写 gap-matrix)
3. [x] 合 `dev`;矩阵保持 deferred
## 验收标准
- [x] 盘点覆盖 sessions/messages、KB、日志、备份、event
- [x] 未执行物理删除
- [x] D7 仍 deferred;ADR 仍 `pending-compliance-signoff`
## 相关链接
- ADR: [../../adr/2026-09-17-d7-chat-data-retention.md](../../adr/2026-09-17-d7-chat-data-retention.md)
- Audit: [../../audit/2026-09-17-d7-data-inventory.md](../../audit/2026-09-17-d7-data-inventory.md)
- Test report: [../../test-reports/2026-09-17-w7-d7-inventory-test-report.md](../../test-reports/2026-09-17-w7-d7-inventory-test-report.md)
+1 -1
View File
@@ -52,7 +52,7 @@
| 多意图扩面(U9–U12) | U9 LLM 分段实验;U10 mutate;U11 docgov;U12 workflow/run-control | done | deferred_enhancement | [设计](../system-design/2026-09-15-multi-intent-hitl-plan.md);[go/no-go GO](../ops/research/2026-09-16-wave3-pu6-pu8-go-no-go.md);[脚手架](../test-reports/2026-09-16-pu8-u9-u12-flags-test-report.md);[U9](../test-reports/2026-09-17-w4-u9-segment-test-report.md);[U10](../test-reports/2026-09-17-w4-u10-mutate-test-report.md);[U11](../test-reports/2026-09-17-w4-u11-docgov-test-report.md);[U12](../test-reports/2026-09-17-w4-u12-run-control-test-report.md) | **before**:独立 flag 脚手架。**after**:U9 可开 flag 走产品 PI proposer(规则已切则不出 proposal);U10–U12 分 flag dry-run→confirm 证据。**未升** `MULTI_INTENT_PLAN_TIER`(升 `confirm` 另开授权;永不默认 `full`)。U10–U12 领域 live 写仍须专项批准 | `intent-plan` |
| 对话 / ctxmgr baseline | 多轮上下文、刷新/重登/重启恢复、授权同集正文与计数、U10 端口化停止扩面 | done | non_blocker | [multi-turn](../system-design/multi-turn-dialogue/);[刷新审计](../audit/2026-09-13-chat-history-refresh-disappears.md);[U10](../test-reports/2026-09-15-chatlog-contextasm-u10-test-report.md);[门禁 B3](../test-reports/2026-09-16-chat-refresh-gate-test-report.md)(项目 6359) | **before**:语义摘要误标 D5 混入 → **after**:摘要迁「语义摘要 D3」;D7 数据治理独立。U10 停止扩面 | `chat` |
| 语义摘要(D3) | 授权后可见集合上的语义摘要;shadow → 可选替换 deterministic | done | deferred_enhancement | [chat-agent-p6-backlog](../backlog/chat-agent-p6-backlog.md);[go/no-go GO](../ops/research/2026-09-16-wave3-pu6-pu8-go-no-go.md);[pu6](../ops/long-term/2026-09-16-pu6-semantic-summary-contract.md);[脚手架](../test-reports/2026-09-16-pu6-semantic-summary-test-report.md);[W2 真 PI](../test-reports/2026-09-17-w2-semantic-summary-shadow-test-report.md) | **before**:flag 脚手架 + heuristic。**after**:dev 可开 `SEMANTIC_SUMMARY_SHADOW` 走产品 PI no-tool summarizer(默认 off)。**REPLACE 未启用**(独立后置,不在本行关闭条件内) | `chat` |
| 对话数据治理(D7) | 留存/删除口径、库·备份·日志控制、敏感字段加密边界 | deferred | deferred_enhancement(违规则升 blocker) | [计划](../remediation/2026-09-16-feature-matrix-production-readiness-plan.md) Scope Boundaries;[收口 §7.1](../remediation/2026-09-16-partial-deferred-completion-plan.md);[D7 ADR 草案](../adr/2026-09-17-d7-chat-data-retention.md) | 口径草案已确认(365/180/30;`pending-compliance-signoff`);先盘点;确认违规 → 立即写 gap-matrix | `chat` |
| 对话数据治理(D7) | 留存/删除口径、库·备份·日志控制、敏感字段加密边界 | deferred | deferred_enhancement(违规则升 blocker) | [计划](../remediation/2026-09-16-feature-matrix-production-readiness-plan.md) Scope Boundaries;[收口 §7.1](../remediation/2026-09-16-partial-deferred-completion-plan.md);[D7 ADR 草案](../adr/2026-09-17-d7-chat-data-retention.md);[W7 盘点](../audit/2026-09-17-d7-data-inventory.md);[报告](../test-reports/2026-09-17-w7-d7-inventory-test-report.md) | **after W7**:只读盘点完成(sessions/messages/KB/日志/备份/event)。**未发现**已确认基线违规,未写 gap-matrix。口径仍 `pending-compliance-signoff`;禁止按 365/180/30 物理删除。本行不升 done | `chat` |
| 智能体小队 | 角色-任务-工作区-黑板 | done | non_blocker | [agent-squad](../system-design/agent-squad/);[test 2026-09-07](../test-reports/2026-09-07-dynamic-squad-planning-test-report.md) | 非关键步骤降级(A5/A6)属 backlog | `squad` |
| 工作流治理 | 三正式工作流、设置页/DutyMode、动作级鉴权、真实 PI 三工作流 E2E、full/none 混合长链 | done | non_blocker | [三工作流整改](../remediation/2026-09-12-three-workflows-strict-governance-remediation.md);[409/职责](../test-reports/2026-09-14-workflow-plan-409-frozen-and-optional-duties-test-report.md);[鉴权](../test-reports/2026-09-14-governance-action-level-authz-test-report.md);[PI E2E](../test-reports/2026-09-16-pi-three-workflow-e2e-test-report.md);[Wave2 full/none](../test-reports/2026-09-16-wave2-real-pi-evidence-test-report.md) | full 跨用户审批 + none 免审批不阻塞已签。纯软件自举仍独立 planned | `workflow` |
| 纯软件项目自举 | 软件项目创建、Bootstrap、Delivery、受控工程交接 | partial | deferred_enhancement(明确不挡首发) | [设计](../system-design/2026-09-14-software-project-bootstrap-workflow.md);[ADR](../adr/2026-09-16-software-project-bootstrap-keys.md);[L1 报告](../test-reports/2026-09-16-software-project-bootstrap-test-report.md);[W5a](../test-reports/2026-09-17-w5a-software-bootstrap-ui-pi-test-report.md) | **before**:L1 + UI 仍克隆医疗模板。**after W5a**:catalog 驱动创建、软件不挂医疗 key、docs_only 真 PI 建议 delivery 且不自动激活。**SWBOOT-10 仍 stub**(W5b);本行不升 done | `workflow-design` |
@@ -0,0 +1,103 @@
# W7 D7 对话数据分类盘点 测试报告
## 一、 测试背景 (Background)
D7 ADR 数字标 `pending-compliance-signoff`。W2 已释放 `chat` mutex。本波只做只读盘点,禁止按草案数字物理删除或清备份,矩阵保持 `deferred`。
## 二、 测试目标 (Test Objectives)
- 盘点 sessions/messages、KB、日志、备份、event 敏感字段与流转
- 确认无已签字基线违规;若有则写 gap-matrix
- 零物理删除、零备份清除
- FEATURE-MATRIX D7 保持 `deferred`
## 三、 测试方案与环境 (Test Plan & Environment)
| 项 | 值 |
|----|----|
| OS | Linux 7.0.0-31-generic |
| 分支 | `feature/w7-d7-data-inventory`(自 `dev@cb4fbb6` W6 merge 后) |
| 环境 | dev schema 48;共享 KB `regulations` |
| 方法 | 只读 SQL / `docker logs` / 目录 `du` / `go vet` / `arch-check` |
| 证据 | `.doc/test-reports/assets/2026-09-17-w7-d7-inventory/` |
核心用例矩阵:
| ID | 用例 | 期望 |
|----|------|------|
| I1 | chat 热库计数与 `deleted_at` | 只读;不 UPDATE |
| I2 | 事件 payload keys | 无 `content` |
| I3 | 共享 KB | 无法规库外的 chat 表 |
| I4 | 应用日志抽检 | 无消息正文;DSN 脱敏 |
| I5 | 备份脚本 | `pg_dump -Fc` 整库;本轮不执行 dump |
| I6 | 违规升级 | 无已确认违规 → 不写 gap-matrix |
## 四、 预期结果 (Expected Results)
- 盘点表完整
- 判定:缺口是未实现治理,不是已签字数字被违反
- health/ready PASS;FAV 仍 off
## 五、 实际测试结果与判定 (Actual Results & Evaluation)
### 5.1 I1 热库
- **测试输入 (Input)**:`docker exec shuimu-context-pg-dev psql` 只读 `COUNT` / `MIN/MAX(created_at)`
- **实际输出 (Actual Output)**:sessions=619;messages=3291;soft_deleted=0;older_than_365d=0;oldest=2026-09-10。`chat_messages` 5.4MB。Go 检索无 `SET deleted_at`。见 `pg-counts.tsv`、`pg-chat-age.txt`
- **评价判定 (Evaluation / Verdict)**:PASS(盘点完成;未删数据)
- **性能与耗时 (Duration & Latency)**:<1s
### 5.2 I2 事件
- **测试输入 (Input)**:`jsonb_object_keys(convert_from(payload,'UTF8')::jsonb)`;`? 'content'`
- **实际输出 (Actual Output)**:4 envelopes;`has_content=f`;keys 为 `run_id`/`plan_id`/`summary_ref` 等。DLQ=0。fav mode=off,notify/projection/workflow_advance=live。见 `pg-event-payload-keys.txt`
- **评价判定 (Evaluation / Verdict)**:PASS(Track E 正文未进事件)
- **性能与耗时 (Duration & Latency)**:<1s
### 5.3 I3 共享 KB
- **测试输入 (Input)**:`shuimu-kb-shared` `\dt` + counts
- **实际输出 (Actual Output)**:库名 `regulations`;法规 2907 文档 / 312919 chunks;无 chat 表。见 `kb-tables.txt`
- **评价判定 (Evaluation / Verdict)**:PASS(对话与 KB 隔离)
- **性能与耗时 (Duration & Latency)**:<1s
### 5.4 I4 日志
- **测试输入 (Input)**:`docker inspect` LogDriver;`docker logs --tail 30 shuimu-agent-app-dev`
- **实际输出 (Actual Output)**:`json-file` 无 max-size。日志含 `dsn=postgres://regkb:***@...`,无 chat content。见 `app-logs-tail.txt`
- **评价判定 (Evaluation / Verdict)**:PASS
- **性能与耗时 (Duration & Latency)**:<1s
### 5.5 I5 备份
- **测试输入 (Input)**:阅读 `scripts/backup-system-db.sh`;`ls ./backups`
- **实际输出 (Actual Output)**:脚本 `pg_dump -Fc` 整库(含 chat 明文);宿主机无 `./backups`。本轮**未**运行 dump。CI `backup-restore-drill` 仍在。
- **评价判定 (Evaluation / Verdict)**:PASS(未清备份、未新造 dump)
- **性能与耗时 (Duration & Latency)**:N/A
### 5.6 I6 违规升级
- **测试输入 (Input)**:对照 ADR `pending-compliance-signoff` + Track E ID-only
- **实际输出 (Actual Output)**:无已确认基线违规。**未**修改 `gap-matrix.md`。
- **评价判定 (Evaluation / Verdict)**:PASS
- **性能与耗时 (Duration & Latency)**:N/A
### 5.7 冒烟 / health
- **测试输入 (Input)**:`go vet ./...`;`arch-check --mode block`;`curl :8080/health` `/ready`
- **实际输出 (Actual Output)**:VET_EXIT=0;`arch-check block: production gate passed`;schema_version=48;vault `consumer_mode=off`、`live_not_opened=true`。见 `health.json`、`smoke.txt`
- **评价判定 (Evaluation / Verdict)**:PASS
- **性能与耗时 (Duration & Latency)**:vet+arch ~1.4s
## 六、 自动化测试套件汇总 (Test Suite Execution)
```text
go vet ./... VET_EXIT=0
./scripts/arch-check.sh --mode block production gate passed
W7 无代码变更;go test -short 以 W6 合入后基线为准(TEST_EXIT=0)
只读 SQL 盘点 无 DELETE/UPDATE
```
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
W7 **盘点 PASS**。FEATURE-MATRIX D7 **保持 deferred**。合规签字前禁止按 365/180/30 执行删除。签字后整改应覆盖:聊天 soft-delete 写路径、派生 `context_memory_chunks.chat_history`、workspace 非终态、备份二次批准。`production_ready` 不翻转。
@@ -0,0 +1,30 @@
time=2026-09-17T04:26:50.573Z level=INFO msg="goose: no migrations to run. current version: 48"
time=2026-09-17T04:26:50.588Z level=INFO msg="[kb] online=true dsn=postgres://regkb:***@shuimu-kb-shared:5432/regulations?sslmode=disable"
time=2026-09-17T04:26:50.640Z level=INFO msg=taskrun_orphans_marked_interrupted count=1
==================================================================
🤖 医疗器械商务与研发智能参谋系统 - HTTP / SSE API 守护服务
==================================================================
服务环境: dev | 智能体后端: pi-agent
监听地址: http://0.0.0.0:8080
核心服务路由:
• [GET] /api/v1/health - 服务健康检查与基础设施状态
• [GET] /api/v1/projects - 查询项目当前上下文与黑板事实
• [POST] /api/v1/chat - 标准阻塞式对话协同接口
• [POST] /api/v1/chat/stream - 核心 SSE 流式长连接对话协议 (分层按需)
• [GET] /api/v1/chat/stream - SSE 流式长连接对话调试接口 (EventSource)
• [POST] /api/v1/tasks/run/stream - 独立任务与阶段执行 SSE 监控流 (精简进度与拦截)
• [GET] /api/v1/context/user - 获取单用户私有上下文与习惯偏好画像
• [PUT] /api/v1/context/user/preference - 整理或更新用户个性化产出风格
• [GET] /api/v1/context/project - 获取项目多方协同黑板事实与里程碑决策流
• [GET] /api/v1/chat/sessions - 分页查询用户/项目历史会话列表
• [GET] /api/v1/chat/messages - 分页拉取指定会话多轮历史消息记录
• [GET] /api/v1/context/cases/recommend - 往期受控标杆案例与历史报价语义自推荐
• [GET] /api/v1/docgov/document - 查询受控文档治理状态看板
• [POST] /api/v1/docgov/claim - 查阅并认领受控文档 (正式稿方可认领)
• [POST] /api/v1/docgov/proposal/decide - 编制负责人拍板同意/拒绝变更提案
• [POST] /api/v1/docgov/submit-review - 编制完成提交审核 (文档正文锁定)
• [POST] /api/v1/docgov/review-decision - 审核通过或驳回 (驳回必填原因且解锁)
• [POST] /api/v1/docgov/approver-decision - 最终批准或驳回
• [GET/POST] /api/v1/docgov/comments - 批注与修改建议管理
• [GET] /api/v1/docgov/audit-logs - 全生命周期审计轨迹流
==================================================================
@@ -0,0 +1 @@
LogDriver=json-file Config={}
@@ -0,0 +1 @@
{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5432,"kb_ready":true,"database_ready":true,"schema_version":48,"schema_ready":true,"task_store_ready":true}
@@ -0,0 +1,6 @@
data/dev:
150M data/dev
workspaces:
150M data/dev/workspaces
chat files under data/dev (names only):
data/dev/agent_sessions
@@ -0,0 +1,13 @@
=== agent_sessions ===
4.0K data/dev/agent_sessions
data/dev/agent_sessions
file count: 0
oldest:
newest:
=== workspaces sample names ===
bizdev
dialogue
tmp
workspace dirs: 3
=== backups on host ===
no ./backups dir
@@ -0,0 +1,7 @@
rel | count
---------------+--------
reg_documents | 2907
reg_chunks | 312919
asset_chunks | 0
(3 rows)
@@ -0,0 +1,5 @@
current_database
------------------
regulations
(1 row)
@@ -0,0 +1,28 @@
List of relations
Schema | Name | Type | Owner
--------+--------------------------+-------+-------
public | asset_chunks | table | regkb
public | asset_documents | table | regkb
public | asset_projects | table | regkb
public | reg_catalog_entries | table | regkb
public | reg_chunks | table | regkb
public | reg_chunks_legacy | table | regkb
public | reg_clause_links | table | regkb
public | reg_doc_aliases | table | regkb
public | reg_doc_relations | table | regkb
public | reg_doc_relations_legacy | table | regkb
public | reg_documents | table | regkb
public | reg_documents_legacy | table | regkb
public | reg_ingest_job_events | table | regkb
public | reg_ingest_jobs | table | regkb
public | reg_ingest_jobs_legacy | table | regkb
public | reg_ingest_quota | table | regkb
public | reg_kb_settings | table | regkb
public | reg_nodes | table | regkb
public | reg_nodes_legacy | table | regkb
public | reg_normative_refs | table | regkb
public | reg_sections_legacy | table | regkb
public | staff_experience_records | table | regkb
public | staff_profiles | table | regkb
(23 rows)
@@ -0,0 +1,5 @@
oldest_msg | newest_msg | older_than_365d | soft_deleted
-------------------------------+-------------------------------+-----------------+--------------
2026-09-10 16:00:55.791352+00 | 2026-09-17 04:23:14.217905+00 | 0 | 0
(1 row)
@@ -0,0 +1,65 @@
column_name | data_type
----------------------+--------------------------
id | bigint
session_id | text
user_id | bigint
role | text
content | text
intent | text
branch | text
metadata | jsonb
day_key | date
category | text
deleted_at | timestamp with time zone
created_at | timestamp with time zone
content_kind | text
export_policy | text
content_revision | integer
content_sha256 | text
workflow_instance_id | bigint
stage_instance_id | bigint
stage_key | text
scope_kind | text
id | bigint
session_id | text
project_id | bigint
user_id | bigint
title | text
current_stage | text
pending_exp | jsonb
status | text
created_at | timestamp with time zone
updated_at | timestamp with time zone
event_id | text
consumer | text
reason | text
created_at | timestamp with time zone
id | bigint
event_id | text
consumer | text
attempt | integer
lease_owner | text
fencing_token | text
started_at | timestamp with time zone
finished_at | timestamp with time zone
outcome | text
error_code | text
correlation_id | text
event_id | text
event_name | text
schema_version | integer
environment | text
project_id | bigint
aggregate_type | text
aggregate_id | text
aggregate_version | bigint
actor_ref | text
correlation_id | text
causation_id | text
idempotency_key | text
payload_digest | character
producer | text
occurred_at | timestamp with time zone
payload | bytea
(61 rows)
@@ -0,0 +1,8 @@
consumer | mode
------------------+------
fav | off
notify | live
projection | live
workflow_advance | live
(4 rows)
@@ -0,0 +1,12 @@
chat_daily_digests 0
chat_messages 3291
chat_messages_deleted 0
chat_sessions 619
chat_turns 19
context_memory_chunks 102
event_dead_letters 0
event_delivery_attempts 4
event_envelopes 4
final_artifacts 1
freeform_deleted 113
freeform_documents 122
1 chat_daily_digests 0
2 chat_messages 3291
3 chat_messages_deleted 0
4 chat_sessions 619
5 chat_turns 19
6 context_memory_chunks 102
7 event_dead_letters 0
8 event_delivery_attempts 4
9 event_envelopes 4
10 final_artifacts 1
11 freeform_deleted 113
12 freeform_documents 122
@@ -0,0 +1,27 @@
column_name
----------------
event_id
consumer
reason
created_at
id
event_id
consumer
attempt
lease_owner
fencing_token
started_at
finished_at
outcome
error_code
correlation_id
event_id
consumer
classification
reason
payload_digest
operator
approval_ref
decided_at
(23 rows)
@@ -0,0 +1,8 @@
event_name | payload_bytes | has_content | keys
----------------------------+---------------+-------------+---------------------------------------------------------------------------------
taskrun.completed | 218 | f | {doc_id,run_id,status,task_key,workspace_id,manifest_sha256,storage_identity}
taskrun.completed | 246 | f | {doc_id,run_id,status,task_key,workspace_id,manifest_sha256,storage_identity}
intent.plan.awaiting_input | 201 | f | {status,plan_id,user_id,revision,project_id,session_id,environment,summary_ref}
intent.plan.awaiting_input | 201 | f | {status,plan_id,user_id,revision,project_id,session_id,environment,summary_ref}
(4 rows)
@@ -0,0 +1,5 @@
db | usr
------------------+-----
agent_system_dev | app
(1 row)
@@ -0,0 +1,7 @@
domain | count
---------------+-------
approved_case | 7
chat_history | 24
project_doc | 71
(3 rows)
@@ -0,0 +1,5 @@
chat_messages | chat_sessions | event_envelopes | mem_chunks
---------------+---------------+-----------------+------------
5384 kB | 256 kB | 48 kB | 1232 kB
(1 row)
@@ -0,0 +1 @@
{"status":"ok","env":"dev","agent_backend":"pi-agent","version":"v1.0","shared_kb_port":5432,"kb_ready":true,"database_ready":true,"schema_version":48,"schema_ready":true,"task_store_ready":true}
@@ -0,0 +1,16 @@
=== go vet ===
VET_EXIT:0
=== arch-check ===
arch-check mode=block
boundaries=/home/weichen/projects/Agent-System/.doc/system-design/module-boundaries.yaml
ok chat-agent-system/internal/archtest 0.144s
ok chat-agent-system/internal/archtest 0.145s
arch-check block: production gate passed
ARCH_EXIT:0
ok chat-agent-system/internal/workflow/runtime (cached)
ok chat-agent-system/internal/workflowdef (cached)
ok chat-agent-system/internal/workspace (cached)
? chat-agent-system/templates [no test files]
TEST_EXIT:0
--- short ---
TEST_EXIT:0
@@ -0,0 +1 @@
{"consumer":"fav","consumer_mode":"off","degraded_read":false,"live_not_opened":true,"note":"fav consumer remains OFF until separate approval; shadow computes intended outcome only; full FAV branch not merged","publisher_enabled":false,"publisher_running":false,"shadow_observe":true,"status":"ok","store_configured":false,"subscriber_default":false,"would_publish":false,"would_stage":false}