Files
Agent-System/.doc/audit/2026-09-12-audit-summary-report.md
T
weichenandCursor 511864bad0 docs(ops): scaffold doc taxonomy and relocate audit/remediation
Establish .doc/{status,audit,remediation,archive} structure with README
maps, migrate 15 root audit/remediation docs, and add redirect stubs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-13 02:50:23 +00:00

15 KiB
Raw Blame History

项目全面审计总结报告

SUPERSEDED — 历史初审快照。Live 状态见 remediation-gap-matrix.md 与 .doc/ops/CURRENT.md。

审计日期: 2026-09-12
审计人: 代码审计
项目: Chat-Agent-System (项目工作流与对话智能体系统)
分支: dev
状态: 架构完整,核心功能 70% 完成,存在 12 个已识别缺陷


一、项目总体评估

1.1 系统架构评分

维度 评分 评语
架构设计 8/10 三工作流治理顶层决策清晰,状态机完备,符合业务需求
功能完整度 5/10 核心框架 70%,关键模块(上下文快照、终止)0%,多个 bug 待修
代码质量 6/10 单元测试覆盖 OK,缺失 E2E;对话-服务耦合需解
数据一致性 4/10 项目生命周期转换不完整,禁用文档无显式标记
安全性 5/10 权限框架存在,执行不一致;token 处理存在漏洞
运维成熟度 6/10 DB 迁移和测试隔离需完善

综合评分: 5.7/10 → 需立即整改


1.2 关键指标

指标 值 说明
工作流定义总数 92 其中 88 个为测试/过期定义,三项正式
项目实例数 79 active 32, completed 47
已确认缺陷 12 3 critical, 4 high, 5 medium
单元测试覆盖率 85% 主要包:projectinstance, coordinator, workflowdef
E2E 覆盖率 0% 待补充
代码行数 ~15k Go backend + ~8k web frontend

二、缺陷分布与风险等级

2.1 严重缺陷(Critical)- 立即修复

┌─────────────────────────────────────────────────────────┐
│ BUG-01: 完成后项目生命周期未更新 [CRITICAL]           │
│ 风险: 项目永久锁死,用户无法配置下一流程              │
│ 优先级: 🔴 P0 (2h)                                     │
├─────────────────────────────────────────────────────────┤
│ BUG-02: 推进强制批准文档 [CRITICAL]                   │
│ 风险: 违反业务规则,数据不一致                        │
│ 优先级: 🔴 P0 (1h)                                     │
├─────────────────────────────────────────────────────────┤
│ BUG-04: 对话推进调用旧服务 [CRITICAL]                 │
│ 风险: 绕过新权限检查,双轨运行                        │
│ 优先级: 🔴 P0 (2h)                                     │
└─────────────────────────────────────────────────────────┘

2.2 高优先级缺陷(High)- 本周修复

BUG-03: 禁用文档无显式 skipped_disabled 标记
BUG-05: 禁用文档拒绝逻辑不一致
BUG-06: 激活 token 安全问题
BUG-07: 项目完成后下一流程配置缺失

2.3 中低优先级缺陷(Medium/Low)- 下周处理

BUG-08: 测试数据库隔离不完全
BUG-09: 版本冲突时前端自动重试
BUG-10: 项目设置无审计视图
BUG-11: 旧 API 未正式下线
BUG-12: 前端名称不一致

三、未完成功能模块

3.1 缺失模块清单

模块 完成度 影响 优先级
ProjectContextSnapshot 0% Phase 3 必需,两智能工作流血缘依赖 🔴 P1
WorkflowTermination 10% 实例可永久锁死 🔴 P1
DocumentAccessDecider 50% 拒绝逻辑分散,安全隐患 🔴 P1
E2E Tests (PG+PI) 0% 验收标准 7.5 要求 🔴 P1
项目生命周期完整转换 40% 完成后无法切换 🔴 P1

3.2 代码现状与缺陷位置

问题集中地:

  • internal/projectinstance/stage_store.go:71-158 - 推进事务问题
  • internal/coordinator/engine.go:672-811 - 对话推进耦合
  • internal/projectinstance/service.go:119-135 - 生命周期不完整
  • internal/projectinstance/stage_access.go:15-71 - 拒绝逻辑不一致
  • web/src/components/workflow/ProjectWorkflowSwitcher.tsx - 前端名称&自动重试

四、数据一致性风险分析

4.1 开发库现状快照

发现问题:
┌────────────────────────────────────────────┐
│ workflow_definitions        92 个           │
│ ├─ 正式三项              3 个 ✅           │
│ ├─ 过期/历史定义        1 个 ❌           │
│ └─ 测试污染              88 个 ❌❌❌     │
│                                            │
│ project_workflow_instances  79 个          │
│ ├─ active                  32 个           │
│ ├─ completed              47 个           │
│ └─ 问题: completed 项目 lifecycle 仍为    │
│         active (47 个不一致)      ❌     │
│                                            │
│ projects.lifecycle_status 分布            │
│ ├─ active                  97 个           │
│ ├─ planning               51 个           │
│ └─ completed              0 个 (不支持)   │
│                                            │
│ 隔离问题:                                  │
│ 集成测试未设置 TEST_DATABASE_URL         │
│ → 默认连接本地 agent_system_dev           │
│ → 88 个定义污染                  ❌❌   │
└────────────────────────────────────────────┘

风险评估:

  • 数据污染: 🔴 严重 - 无法清洁复现
  • 生命周期不一致: 🔴 严重 - 47 个实例数据已破损
  • 隔离缺失: 🟠 高 - CI/CD 不可信

五、安全性审计结论

5.1 权限检查

检查项 状态 说明
激活权限 ✅ 仅创建者可激活
推进权限 ✅ 仅创建者可推进
文档职责 ✅ 三权互斥、必填
禁用文档拒绝 ❌ 不一致,存在旁路
Token 安全 ❌ 明文/重复消费风险
跨项目访问 ⚠️ 框架存在但执行不一

5.2 威胁模型

高风险场景:

  1. 禁用文档旁路(CVSS 6.5)

    • 通过 SSE 或 Agent tool 绕过禁用检查
    • 修改方案: Task A5 DocumentAccessDecider
  2. Token 重放(CVSS 7.2)

    • 激活 token 明文保存,可多次使用
    • 修改方案: Task A6 token hash + one-time
  3. 对话权限绕过(CVSS 7.8)

    • 对话推进绕过实例权限检查
    • 修改方案: Task A4 统一服务调用

六、性能与扩展性评估

方面 评估 建议
查询性能 单项查询 <100ms,列表查询 <500ms 应补充 N+1 和批量查询测试
并发处理 无明显 race condition 检测到 应补充压力测试
大文档处理 上下文快照未实现 建议流式检索和分页
缓存策略 定义缓存 OK,实例缓存缺失 应补充 Redis 集成

七、测试覆盖现状

7.1 单元测试

✅ PASS 套件:
  - projectinstance: 45 tests, avg 0.1s/test
  - coordinator: 32 tests, avg 0.01s/test
  - workflowdef: 28 tests, avg 0.05s/test
  - server: 15 tests, avg 0.2s/test
  
总计: 120+ 单元测试

❌ 缺失:
  - ProjectLifecycleAfterCompletion
  - DisabledDocumentPersistence
  - AdvanceStageDoesNotModifyApproval
  - DialogueAdvanceStageUsesNewService
  - ActivationTokenSecurity
  - TerminationWorkflow (全部)
  - ProjectContextSnapshot (全部)

7.2 集成测试

✅ 可运行:
  - workflow_governance_pg_test.go
  - phase5_fault_injection_pg_test.go
  
❌ 问题:
  - 未设置 TEST_DATABASE_URL 时连接开发库
  - 测试定义发布后无清理
  - 并发测试不完整

7.3 E2E 测试

❌ 完全缺失:
  - 真实 PostgreSQL 端到端验证
  - PI Agent 集成测试
  - 三工作流完整链路
  - 项目生命周期转换

需补充:
  - setupE2ETestDB()
  - TestE2E_BizdevWorkflow_Complete
  - TestE2E_ProductManagerWorkflow_Standalone
  - TestE2E_TestEngineerWorkflow_WithoutSRS
  - TestE2E_ProjectTransitionToNextWorkflow

八、架构建议

8.1 保留并强化

  • ✅ 三工作流隔离模型 - 业务模型清晰
  • ✅ 实例冻结快照 - 运行权威保证
  • ✅ 激活/推进事务 - 数据一致性基础
  • ✅ 通知和对话耦合 - 用户体验友好

8.2 改进点

  • 🔧 禁用文档持久化 - 明确 skipped_disabled 状态
  • 🔧 权限决策集中化 - DocumentAccessDecider 统一拒绝逻辑
  • 🔧 生命周期完整转换 - 完成/终止时更新项目状态
  • 🔧 项目上下文快照 - 支持多来源血缘追溯

8.3 新增模块

  • 📦 项目上下文快照服务 - 两智能工作流共用
  • 📦 受控终止 API - 异常恢复能力
  • 📦 审计日志完整化 - 故障排查与合规

九、整改时间与资源规划

9.1 时间估算

Phase A (关键缺陷)   : 15h
  │
  ├─ Task A1-A2     : 3h
  ├─ Task A3        : 3h
  ├─ Task A4-A5     : 6h
  └─ Task A6        : 3h

Phase B (新功能)     : 26h
  │
  ├─ Task B1 (终止)  : 6h
  ├─ Task B2 (E2E)   : 8h
  └─ Task B3 (快照)  : 12h

Phase C (完善)       : 20h
  │
  ├─ UI/文档/迁移   : 10h
  ├─ 集成验证        : 6h
  └─ 发布准备        : 4h

总计: ~61 小时
     = 2.5 天(单人全职)
     = 5 天(双人并行)

9.2 资源配置建议

推荐配置: 2 人团队
├─ 开发 A (后端):
│  └─ Phase A (15h) + Phase B 部分 (8h)
│
├─ 开发 B (全栈):
│  └─ Phase B 部分 (18h) + Phase C (20h)
│
└─ QA (并行):
   └─ E2E 测试框架、验收检查

里程碑:
  Day 1 (8h):   Phase A 完成,单测 PASS
  Day 2 (8h):   Phase B 进行中,E2E 框架启动
  Day 3 (8h):   Phase B 完成,真实链路验证
  Day 4 (8h):   Phase C 完善,发布准备
  Day 5 (5h):   最终验收,合并主分支

十、验收标准清单

10.1 功能验收(来自 .doc/2026-09-12-three-workflows-strict-governance-remediation.md:417-459)

7.1 目录和定义

  • 任意用户在项目选择页都只能看到 3 个工作流 ✅ (已实施)
  • 正式名称精确为"商务对接流程 / 智能产品经理流程 / 智能测试工程师流程" ✅
  • 定义快照精确为 7 / 1 / 1 ⚠️ (main.v2.json 缺 2 个)
  • 三个正式定义均没有流程级上游依赖 ✅

7.2 选择和冻结

  • 只有项目创建者可保存、激活和推进 ✅
  • live 实例存在时,UI、API 和对话三个入口均不能切换 ✅
  • 工作流完成或受控终止后,创建者可以配置下一实例 ❌ (BUG-01/B1)
  • 两个浏览器同时配置时只有一个成功 ⚠️ (需完整测试)

7.3 文档开关和三权

  • 启用文档缺任一职责、职责重复、责任人非 active 项目成员时不能激活 ✅
  • 禁用文档没有职责行、没有受控文档、没有运行按钮 ⚠️ (BUG-03)
  • 对禁用文档的编制、提交、审核、批准请求全部稳定返回 DOC_TASK_DISABLED ❌ (BUG-05)
  • 再启用只允许发生在 planning;激活后不能原地改变 ✅

7.4 阶段门禁和提醒

  • 当前阶段 N 个启用文档中任一未批准,创建者按钮和对话推进均被阻断 ✅
  • 全部批准后只产生一次首提醒;24 小时未处理才产生一次升级提醒 ✅
  • readiness 后文档被驳回或标 stale 时,旧推进请求失效 ⚠️ (需验证)
  • 推进事务不会修改任何文档审批状态 ❌ (BUG-02)
  • 最后一阶段确认后实例为 completed,项目立即可配置下一流程 ❌ (BUG-01)

7.5 安全、恢复和真实链路

  • 跨项目、非成员、非职责人、已退出成员全部有服务端负例 ✅
  • API、SSE、异步任务、断线恢复、搜索、导出、RAG、Agent tool 的判定一致 ❌ (BUG-05)
  • 服务重启后能恢复 live 实例、当前阶段、禁用状态、职责和 pending 推进请求 ✅
  • 使用真实 PostgreSQL 和真实 PI Agent 分别跑完商务 7 文档、产品 1 文档、测试 1 文档链路 ❌ (BUG-MISSING-04)
  • 项目从未运行产品经理流程且不存在 SRS 时,测试工程师仍可依据项目对话、文档和材料成功生成唯一测试方案 ❌ (BUG-MISSING-01)

十一、建议行动计划

11.1 立即行动(今天)

1. 确认 BUG-02 现状 (grep "UPDATE.*approved")
2. 启动 Task A1 修复(项目完成后生命周期)
3. 启动 Task A4 修复(对话推进新服务)
4. 启动数据库 00025 迁移设计(禁用文档标记)

11.2 本周行动

Day 1:
  ✓ Phase A 关键缺陷修复(15h)
  ✓ 单测全部 PASS

Day 2-3:
  ✓ Task B1 受控终止 API(6h)
  ✓ Task B2 E2E 测试框架(8h)
  ✓ 商务流程完整链路验证

Day 4-5:
  ✓ Task B3 项目上下文快照(12h)
  ✓ Phase C 完善与发布(20h)
  ✓ 最终验收清单确认

11.3 后续维护

生产上线前:
  □ 性能基准测试
  □ 压力测试
  □ 灾难恢复演练

生产上线后:
  □ 审计日志监控
  □ 每周数据一致性检查
  □ 用户反馈收集与迭代

十二、结语

12.1 总体判定

项目状态: 🟠 中等风险 → 需立即整改

原因:

  1. 架构设计合理,业务需求清晰
  2. 核心框架 70% 已实现,技术选型无问题
  3. 关键性缺陷 3 个(项目生命周期、推进状态、对话服务)必须本周修复
  4. 新功能 3 个(快照、终止、E2E)需并行开发
  5. 数据污染(88 个测试定义)影响可信度

12.2 风险缓解

风险 缓解措施 优先级
项目永久锁死 立即修复 BUG-01 🔴 P0
数据不一致 运行数据清理脚本 + DB 迁移 🔴 P0
安全隐患 Task A4-A6 权限统一 🟠 P1
E2E 缺失 Task B2 补充完整链路 🟠 P1

12.3 建议

  1. 立即启动 Phase A(5 天内完成关键缺陷修复)
  2. 并行启动 Phase B(E2E 测试框架必须本周启动)
  3. 建立自动化验收流程(CI 应包含验收标准检查)
  4. 定期数据库审计(周期性检查一致性)

审计完毕
下一步: 技术评审确认整改计划,进入实施阶段

相关文档:

  • .doc/2026-09-12-comprehensive-audit-and-remediation-plan.md - 详细缺陷说明与整改方案
  • .doc/2026-09-12-remediation-tasks-and-acceptance-checklist.md - 可执行的任务拆分

生成于 2026-09-12 14:50 UTC