# edict 适配 sanguo_quant 多agent组织架构方案

## 当前现状对比

### 我们 sanguo_quant 现有架构

```
你 (丞相/总军师) → 诸葛亮 (总军师) → 拆解任务 → 分配给 庞统/司马懿/张飞/关羽/赵云/姜维 → 各将军执行 → 回报丞相 → 汇总交付
```

| 角色 | 职责 | 对应三省六部 |
|------|------|--------------|
| 你 | 皇帝/最高决策者 | 皇上 |
| 诸葛亮 | 总军师 | 太子 + 中书省 |
| 庞统 | 副军师/策略设计 | 中书省 + 协助规划 |
| 司马懿 | 质量总监 | 门下省 (审核) |
| 各将军 (张飞/关羽/赵云/姜维) | 六部 (执行) | 六部 |
| 姜维 | 基础设施/运维 | 工部 |

### edict 原有架构

```
皇上 → 太子 (分拣) → 中书省 (规划) → 门下省 (审核) → 尚书省 (派发) → 六部 (执行) → 回奏
```

---

## 适配方案：保持我们现有接口不变，集成edict仪表盘

### 目标
- ✅ **不改变我们现有的组织分工和工作流**
- ✅ **获得edict的实时仪表盘**好处：
  - 可视化任务进度看板
  - 完整审计追踪（每一步谁做了什么都记录）
  - 状态流转清晰
  - 可以随时干预（叫停/恢复）

### 架构设计

```
sanguo_quant                edict
─────────────────┐       ┌──────────────────
 你的需求        │       │
    ↓            │       │
  诸葛亮         │       │
    ↓ 拆解分配   │       │
  创建任务       ┼───────▶│  edict 记录任务状态
    ↓            │       │
  各将军执行     │       │
    ↓ 更新进度   ┼───────▶│  更新状态流转
    ↓            │       │
  司马懿审核     │       │
    ↓ 更新       ┼───────▶│ 更新审核状态
    ↓            │       │
  交付汇总       ┼───────▶│ 标记完成
    ↓            │       │
  你             │◀───────┤  通过看板查看进度
```

### 数据映射

| sanguo_quant 状态 | edict 状态 | 说明 |
|------------------|-----------|------|
| assigned | Assigned/Doing | 已分配给将军执行 |
| in_progress | Doing | 执行中 |
| review | Review | 司马懿审核中 |
| approved | Done | 审核通过，完成 |
| rejected | Blocked | 审核驳回，阻塞 |
| cancelled | Cancelled | 已取消 |

| sanguo_quant 角色 | edict 部门 |
|------------------|------------|
| 诸葛亮 | 中书省 |
| 庞统 | 中书省 |
| 司马懿 | 门下省 |
| 张飞 | 工部 |
| 关羽 | 兵部 |
| 赵云 | 户部 |
| 姜维 | 工部 |

---

## 改造方案：轻量化适配，不侵入原有代码

### 方案A：独立服务 + API同步（推荐，最简改造）

**原理**：edict容器独立运行，我们通过HTTP API同步任务状态到edict

步骤：
1. edict容器保持现在这样运行（端口7891）
2. 在我们现有任务管理脚本中，添加几行HTTP API调用：
   - 创建任务 → `POST /api/create`
   - 更新状态 → `POST /api/update`
3. 我们原有工作流完全不变，只是多了一步同步状态到edict
4. 你可以随时打开 `http://your-host:7891` 查看可视化看板

**优点**：
- ✅ 完全不改动我们现有代码架构
- ✅ 零侵入，只是添加API调用
- ✅ 风险极低，即使edict挂了不影响我们工作
- ✅ 可以随时停用

### 需要做的改造

1. **在edict中添加我们的角色映射**（不改核心，只加配置）
   - 修改 `data/departments.json` 映射我们的角色
   - 修改 `data/states.json` 匹配我们的状态流转

2. **在我们的任务创建脚本中添加同步**
   - `management/workflow/scripts/create_task*.sh` 添加几行curl调用

3. **在我们的任务状态更新脚本中添加同步**
   - `assign_task*.sh` 等脚本添加状态更新调用

### 方案B：深度集成，让edict接管流转控制（不推荐，改变原有接口）

如果让edict原生接管整个流转，会改变我们现有的分工接口，不符合你"不想改变组织接口"的要求，所以不推荐。

---

## 具体实施步骤（方案A）

### 第一步：在edict数据目录添加我们的配置

```
# 进入容器
docker exec -it edict-new bash

# 修改部门配置
cp /app/data/departments.json /app/data/departments.json.backup
# 替换为sanguo_quant的部门配置
```

### 第二步：添加API调用封装

在我们的项目中添加一个小脚本：
`jiangwei-platform/deploy/edict/sync-status.sh`

```bash
#!/bin/bash
# 同步任务状态到edict看板

EDICT_URL="http://localhost:7891"

# 创建任务
# Usage: create-edict-task <task-id> <title> <assignee>
create-edict-task() { ... }

# 更新任务状态
# Usage: update-edict-status <task-id> <state>
update-edict-status() { ... }
```

### 第三步：改造现有脚本

在现有这些脚本中添加一行调用：
- `create_task*.sh` → 创建任务后调用 create-edict-task
- `assign_task*.sh` → 分配后更新状态 to Assigned
- 任务完成后 → 更新状态 to Review
- 司马懿审核通过 → 更新状态 to Done
- 司马懿驳回 → 更新状态 to Blocked

### 第四步：测试验证

1. 创建一个测试任务
2. 检查edict看板是否正确显示
3. 检查状态流转是否正确

---

## 优势总结

| 要点 | 说明 |
|------|------|
| **不改变原有组织接口** | 我们的分工、工作流、角色职责完全不变 |
| **零侵入改造** | 只添加API调用，不修改原有逻辑 |
| **获得可视化收益** | 有了实时看板，任务进度一目了然 |
| **完整审计追踪** | 所有任务状态变化都记录在edict |
| **回滚方便** | 如果不用了，直接停掉docker容器就行，不影响我们系统 |
| **风险极低** | 即使edict出问题，我们原有工作流不受影响 |

---

## 产出物结构（在我们项目中）

```
sanguo_vnpy/
└── jiangwei-platform/
    └── deploy/
        └── edict/
            ├── README.md               # 部署使用说明
            ├── sync-status.sh          # API封装脚本
            └── sanguo-departments.json # 我们的部门配置
```

---

*结论：方案A推荐采用，最快半天就能完成改造，完全满足你的需求"不改变组织接口，获得edict仪表盘能力"。*
