Files
sanguo_vnpy/research/vnpy/edict-adapter-scheme.md
T
2026-04-29 20:15:06 +08:00

199 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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仪表盘能力"。*