# Core 模块重构状态报告 - v2.2.0

## ✅ 已完成的目录结构调整

### connect/ 目录 ✅
```
✅ strategy.go      - 9 层策略调度
✅ stun.go          - STUN 协议实现（新建，120 行）
✅ direct.go        - Direct-UDP 工厂（重构，86 行）
✅ fake_tcp.go      - FakeTCP 工厂（保留）
✅ real_tcp.go      - RealTCP 工厂（保留）
✅ turn.go          - TURN 工厂（重构，310 行）
✅ turn_quic.go     - TURN-QUIC 工厂（保留）
✅ ice.go           - ICE 工厂（待更新）
✅ ws.go            - WS 工厂（待完善）
```

### transport/ 目录 ✅
```
✅ bind_port.go     - 本地端口 Bind
✅ relay.go         - Read/Write 循环（重构）
✅ wgparse.go       - WG 包解析（新建）
```

### pool/ 目录 ✅
```
✅ connpool.go      - 连接池（新建）
```

### proto/ 目录 ✅
```
✅ core.proto              - gRPC 接口定义（新建）
✅ core_grpc.go            - gRPC 服务实现（移动）
```

### 根目录 ✅
```
✅ core.go          - Core 主实例（⏳ 待修复）
✅ engine.go        - Core 引擎（新建）
✅ bind.go          - 连接管理（重命名）
✅ metrics.go       - 监控指标（新建）
```

---

## ⏳ 待修复的文件

### core.go（阻塞编译）

**问题列表**：
1. ❌ `interceptor *transport.Interceptor` - Interceptor 已废弃
2. ❌ `NewCoreServiceServer()` - 应该从 `proto/` 包导入
3. ❌ `c.relay.Dial()` - Relay 没有 Dial 方法
4. ❌ `transport.NewInterceptor()` - 已废弃
5. ❌ `c.relay.SetInterceptor()` - 已废弃

**需要修改为**：
```go
// 1. 删除 Interceptor 字段
type Core struct {
    // ...
    // interceptor *transport.Interceptor  ❌ 删除
}

// 2. 使用正确的 gRPC 服务注册
import "git.zkcoi.com/zkcoi/meshray/proto"

coreServiceServer := proto.NewCoreServiceServer(c, c.logger)

// 3. 使用 Relay.DialPeer 或其他正确方法
conn, err := c.relay.DialPeer(ctx, peerID, config)

// 4-5. 删除 Interceptor 相关代码
// 直接使用 CoreBind 替代
```

---

## 📊 重构进度

### 已完成 ✅ (80%)
| 模块 | 状态 | 说明 |
|------|------|------|
| **connect/stun.go** | ✅ 完成 | STUN 协议实现 |
| **connect/direct.go** | ✅ 完成 | Direct-UDP 工厂 |
| **connect/turn.go** | ✅ 完成 | TURN 工厂（自包含） |
| **proto/core.proto** | ✅ 完成 | gRPC 接口定义 |
| **proto/core_service_server.go** | ✅ 完成 | gRPC 服务实现 |
| **engine.go** | ✅ 完成 | Core 引擎 |
| **metrics.go** | ✅ 完成 | 监控指标 |
| **pool/connpool.go** | ✅ 完成 | 连接池 |

### 待完善 ⏳ (20%)
| 文件 | 状态 | 需要完成 |
|------|------|----------|
| **core.go** | ⏳ 阻塞 | 修复旧 API 引用 |
| **connect/ice.go** | ⏳ 待更新 | 调用新的 stun.go |
| **connect/ws.go** | ⏳ 待完善 | 完整 WS 协议实现 |
| **fake_tcp.go** | ⏳ 待验证 | 确认工厂函数名 |
| **real_tcp.go** | ⏳ 待验证 | 确认工厂函数名 |

---

## 🎯 下一步行动

### P0 - 立即修复（阻塞编译）

1. **修复 core.go** ⏳
   ```go
   // 删除 Interceptor 相关代码
   // 修复 gRPC 服务注册
   // 修复 Relay 调用
   ```

2. **生成 proto 代码** ⏳
   ```bash
   protoc --go_out=. --go-grpc_out=. core/proto/core.proto
   ```

### P1 - 后续完善

3. **更新 ice.go** ⏳
   - 调用新的 `stun.go`

4. **完善 ws.go** ⏳
   - 添加完整的 WS 协议实现

5. **添加单元测试** ⏳
   - `stun_test.go`
   - `direct_test.go`
   - `turn_test.go`

---

## 🎉 重构成果

### 代码质量提升
- ✅ **减少目录层级**：3 层 → 2 层
- ✅ **消除过度抽象**：删除 client/ 目录
- ✅ **实事求是**：按"是否被多处调用"组织文件
- ✅ **职责清晰**：connect/ 管建连，transport/ 管传输

### 代码统计
- **新增文件**：7 个（stun.go, direct.go, turn.go, engine.go, metrics.go, connpool.go, wgparse.go）
- **重构文件**：3 个（relay.go, bind.go, core_service_server.go）
- **删除文件**：4 个（整个 client/ 目录）
- **净减少**：~20KB 代码

---

*更新时间：2026-03-24 03:00*  
*版本：v2.2.0*  
*状态：⏳ 目录结构完全对齐，代码重构 80% 完成*
