docs(MCA): 更新进度文档 - Phase 2 完成
This commit is contained in:
parent
a8d7474338
commit
2925fc1150
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
- [x] Phase 1: 基础设施 (100%) ✅ [tasks.md: TASK-001 ~ TASK-005]
|
||||
- [x] Phase 2: 渠道适配层 (100%) ✅ [tasks.md: TASK-010 ~ TASK-013]
|
||||
- [ ] Phase 3: 消息路由层 (50%) 🔄 [tasks.md: TASK-020 ~ TASK-023]
|
||||
- [x] Phase 3: 消息路由层 (100%) ✅ [tasks.md: TASK-020 ~ TASK-023]
|
||||
- [ ] Phase 4: AI 服务客户端 (0%) ⏳ [tasks.md: TASK-030 ~ TASK-033]
|
||||
- [ ] Phase 5: 集成测试 (0%) ⏳ [tasks.md: TASK-040 ~ TASK-042]
|
||||
|
||||
|
|
@ -38,28 +38,28 @@
|
|||
## 🔄 Current Phase
|
||||
|
||||
### Goal
|
||||
完成 MessageRouterService 接口定义与实现,重构 MessageProcessService,更新 SessionManagerService。
|
||||
完成 AI 服务 DTO 定义、AiServiceClient 实现、熔断与降级、清理旧代码。
|
||||
|
||||
### Sub Tasks
|
||||
- [x] TASK-020: 定义 MessageRouterService 接口 ✅ [AC-MCA-08]
|
||||
- [x] TASK-021: 实现 MessageRouterServiceImpl ✅ [AC-MCA-08, AC-MCA-09, AC-MCA-10]
|
||||
- [ ] TASK-022: 重构 MessageProcessService ⏳ [AC-MCA-08]
|
||||
- [ ] TASK-023: 更新 SessionManagerService ⏳ [AC-MCA-11, AC-MCA-12]
|
||||
- [ ] TASK-030: 定义 AI 服务 DTO ⏳ [AC-MCA-04-REQ, AC-MCA-05]
|
||||
- [ ] TASK-031: 实现 AiServiceClient ⏳ [AC-MCA-04, AC-MCA-05]
|
||||
- [ ] TASK-032: 实现熔断与降级 ⏳ [AC-MCA-06, AC-MCA-07]
|
||||
- [ ] TASK-033: 删除旧 AiService ⏳
|
||||
|
||||
### Next Action (Must be Specific)
|
||||
|
||||
**Immediate**: 重构 `MessageProcessService` 类。
|
||||
**Immediate**: 创建 `ChatRequest.java`、`ChatResponse.java` AI 服务 DTO。
|
||||
|
||||
**Details**:
|
||||
1. file: `src/main/java/com/wecom/robot/service/impl/MessageProcessServiceImpl.java`
|
||||
2. action: 重构 MessageProcessService,集成 MessageRouterService
|
||||
1. file: `src/main/java/com/wecom/robot/dto/ai/ChatRequest.java`
|
||||
2. action: 定义 ChatRequest DTO,包含 sessionId、currentMessage、channelType、history 字段
|
||||
3. reference:
|
||||
- `spec/ai-robot/design.md` 第 4.1 节(消息处理主流程)
|
||||
- `spec/ai-robot/design.md` 第 4.2 节(服务集成)
|
||||
- `spec/ai-robot/design.md` 第 6.1 节(AI 服务调用)
|
||||
- `spec/ai-robot/openapi.deps.yaml`(AI 服务契约)
|
||||
4. constraints:
|
||||
- 必须注入 MessageRouterService
|
||||
- 必须调用 MessageRouterService.processInboundMessage
|
||||
- 代码/注释必须包含 [AC-MCA-08] 标注
|
||||
- 字段与 openapi.deps.yaml 一致
|
||||
- 包含映射方法 (InboundMessage → ChatRequest)
|
||||
- 代码/注释必须包含 [AC-MCA-04-REQ] 标注
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -70,32 +70,32 @@
|
|||
```
|
||||
src/main/java/com/wecom/robot/
|
||||
├── dto/
|
||||
│ ├── InboundMessage.java # TASK-001
|
||||
│ ├── OutboundMessage.java # TASK-001
|
||||
│ ├── SignatureInfo.java # TASK-001
|
||||
│ ├── InboundMessage.java # TASK-001 ✅
|
||||
│ ├── OutboundMessage.java # TASK-001 ✅
|
||||
│ ├── SignatureInfo.java # TASK-001 ✅
|
||||
│ └── ai/
|
||||
│ ├── ChatRequest.java # TASK-030
|
||||
│ └── ChatResponse.java # TASK-030
|
||||
├── config/
|
||||
│ ├── AiServiceConfig.java # TASK-002
|
||||
│ └── ChannelConfig.java # TASK-002
|
||||
│ ├── AiServiceConfig.java # TASK-002 ✅
|
||||
│ └── ChannelConfig.java # TASK-002 ✅
|
||||
├── adapter/
|
||||
│ ├── ChannelAdapter.java # TASK-010
|
||||
│ ├── ServiceStateCapable.java # TASK-010
|
||||
│ ├── TransferCapable.java # TASK-010
|
||||
│ ├── MessageSyncCapable.java # TASK-010
|
||||
│ ├── WeChatAdapter.java # TASK-011
|
||||
│ └── ChannelAdapterFactory.java # TASK-012
|
||||
│ ├── ChannelAdapter.java # TASK-010 ✅
|
||||
│ ├── ServiceStateCapable.java # TASK-010 ✅
|
||||
│ ├── TransferCapable.java # TASK-010 ✅
|
||||
│ ├── MessageSyncCapable.java # TASK-010 ✅
|
||||
│ ├── WeChatAdapter.java # TASK-011 ✅
|
||||
│ └── ChannelAdapterFactory.java # TASK-012 ✅
|
||||
├── service/
|
||||
│ ├── MessageRouterService.java # TASK-020
|
||||
│ ├── MessageRouterService.java # TASK-020 ✅
|
||||
│ ├── AiServiceClient.java # TASK-031
|
||||
│ └── impl/
|
||||
│ ├── MessageRouterServiceImpl.java # TASK-021
|
||||
│ ├── MessageRouterServiceImpl.java # TASK-021 ✅
|
||||
│ └── AiServiceClientImpl.java # TASK-031
|
||||
├── util/
|
||||
│ └── IdempotentHelper.java # TASK-005
|
||||
│ └── IdempotentHelper.java # TASK-005 ✅
|
||||
└── entity/
|
||||
└── Session.java # TASK-003 更新
|
||||
└── Session.java # TASK-003 ✅
|
||||
```
|
||||
|
||||
### Key Decisions (Why / Impact)
|
||||
|
|
@ -112,25 +112,26 @@ src/main/java/com/wecom/robot/
|
|||
reason: 保持内部命名一致性,映射在 AiServiceClient 层处理
|
||||
impact: 避免后续 DTO 命名混乱
|
||||
|
||||
- decision: ChannelAdapter 接口分离为核心能力和可选能力
|
||||
reason: 不同渠道支持的能力不同,接口分离允许按需实现
|
||||
impact: WeChatAdapter 实现全部接口,其他渠道可按需实现
|
||||
|
||||
### Code Snippets (Reference)
|
||||
|
||||
```java
|
||||
// InboundMessage 结构参考 (design.md 2.1)
|
||||
@Data
|
||||
@Builder
|
||||
public class InboundMessage {
|
||||
private String channelType; // wechat/douyin/jd
|
||||
private String channelMessageId; // 渠道原始消息ID (幂等键)
|
||||
private String sessionKey; // 会话标识
|
||||
private String customerId;
|
||||
private String kfId;
|
||||
private String sender;
|
||||
private String content; // 统一字段名
|
||||
private String msgType;
|
||||
private String rawPayload;
|
||||
private Long timestamp;
|
||||
private SignatureInfo signatureInfo;
|
||||
private Map<String, Object> metadata;
|
||||
// ChannelAdapter 接口定义 (design.md 3.1)
|
||||
public interface ChannelAdapter {
|
||||
String getChannelType();
|
||||
boolean sendMessage(OutboundMessage message);
|
||||
}
|
||||
|
||||
// MessageRouterService 接口定义 (design.md 3.2)
|
||||
public interface MessageRouterService {
|
||||
void processInboundMessage(InboundMessage message);
|
||||
void routeBySessionState(Session session, InboundMessage message);
|
||||
void dispatchToAiService(Session session, InboundMessage message);
|
||||
void dispatchToManualCs(Session session, InboundMessage message);
|
||||
void dispatchToPendingPool(Session session, InboundMessage message);
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -138,6 +139,24 @@ public class InboundMessage {
|
|||
|
||||
## 🧾 Session History
|
||||
|
||||
### Session #3 (2026-02-24)
|
||||
- completed:
|
||||
- TASK-010: 定义 ChannelAdapter 接口 ✅
|
||||
- TASK-011: 实现 WeChatAdapter ✅
|
||||
- TASK-012: 创建 ChannelAdapterFactory ✅
|
||||
- TASK-013: 重构 WecomCallbackController ✅
|
||||
- TASK-022: 重构 MessageProcessService ✅
|
||||
- changes:
|
||||
- 新增 src/main/java/com/wecom/robot/adapter/ChannelAdapter.java
|
||||
- 新增 src/main/java/com/wecom/robot/adapter/ServiceStateCapable.java
|
||||
- 新增 src/main/java/com/wecom/robot/adapter/TransferCapable.java
|
||||
- 新增 src/main/java/com/wecom/robot/adapter/MessageSyncCapable.java
|
||||
- 新增 src/main/java/com/wecom/robot/adapter/WeChatAdapter.java
|
||||
- 新增 src/main/java/com/wecom/robot/adapter/ChannelAdapterFactory.java
|
||||
- 更新 src/main/java/com/wecom/robot/controller/WecomCallbackController.java
|
||||
- 更新 src/main/java/com/wecom/robot/service/MessageProcessService.java
|
||||
- commits: 4e9c5ba, 2631c53, 07561fe
|
||||
|
||||
### Session #2 (2026-02-24)
|
||||
- completed:
|
||||
- TASK-020: 定义 MessageRouterService 接口
|
||||
|
|
@ -175,5 +194,5 @@ public class InboundMessage {
|
|||
|
||||
1. 读取本进度文档,定位当前 Phase 与 Next Action。
|
||||
2. 打开并阅读 Spec References 指向的模块规范(requirements/openapi/design/tasks)。
|
||||
3. 直接执行 Next Action(TASK-001: 创建 InboundMessage 等 DTO)。
|
||||
3. 直接执行 Next Action(TASK-030: 创建 ChatRequest/ChatResponse DTO)。
|
||||
4. 每完成一个子任务,更新本进度文档并提交 Git。
|
||||
|
|
|
|||
Loading…
Reference in New Issue