diff --git a/project_analysis.md b/project_analysis.md index 410a3fa..5da50ec 100644 --- a/project_analysis.md +++ b/project_analysis.md @@ -11,12 +11,12 @@ | 层级 | 模块 | 语言/框架 | 核心依赖 | |---|---|---|---| -| **1. 客户端** | `sundynix-desktop` | Wails + React 19 + TypeScript | @xyflow/react (React Flow), shadcn/ui, TailwindCSS 3, lucide-react, react-force-graph-2d, Vite 5 | +| **1. 客户端** | `sundynix-desktop` | Wails + React 19 + TypeScript | @xyflow/react (React Flow), 自建 UI 原语(`src/ui`,非 shadcn), TailwindCSS 3, lucide-react, react-force-graph-2d, Vite 5 | | **1b. 运维控制台** | `sundynix-admin` | React 19 + TS + Vite | react-router-dom 7, TailwindCSS | | **2. 网关** | `sundynix-gateway` | Go · Gin | GORM + PostgreSQL 16, Redis 7, NATS JetStream, 雪花 ID, bcrypt 鉴权 | | **3. 消息总线** | NATS Server | Go | NATS 2 (Alpine), JetStream 持久化 | | **4. 调度器** | `sundynix-dispatcher` | Go · CloudWeGo Eino | eino (图编排/ReAct Agent), nats.go, 熔断器, LLM 自动化评测 | -| **5a. MCP 工具 (I/O)** | `sundynix-mcp-go` | Go | Milvus SDK, Bleve, Neo4j Driver, UniOffice (.docx), Snowflake ID, GORM | +| **5a. MCP 工具 (I/O)** | `sundynix-mcp-go` | Go | Milvus SDK, Bleve, Neo4j Driver, 自建零依赖 OOXML(.docx,刻意不用商业授权的 UniOffice), Snowflake ID, GORM | | **5b. MCP 工具 (算法)** | `sundynix-mcp-py` | Python ≥3.11 | nats-py, python-docx, openpyxl, pypdf, docker (沙箱) | | **共享层** | `sundynix-shared` | Go | nats.go, JetStream, 内嵌 NATS (devnats) | | **基础设施** | Docker Compose | - | NATS, PostgreSQL 16, Redis 7, Milvus 2.4, Neo4j 5, MinIO | @@ -53,7 +53,7 @@ ### 3.3 报告生成 - **多步编排**:规划大纲 → 各章节并行(有界并发=4)→ RAG 检索 + LLM 撰写 → 汇聚渲染 -- **Word 渲染**:UniOffice 渲染 .docx 文档,一键下载 +- **Word 渲染**:自建零依赖 OOXML 渲染 .docx 文档(不引第三方 Office 库),一键下载 - **流式进度**:规划/撰写进度实时流回客户端 - **报告源持久化**:title + sections 持久存储,支持导出 Word/PDF/Markdown @@ -70,6 +70,7 @@ - **ExecEvent 轨迹**:每个节点的生命周期事件(start/end/error/info)+ 耗时 - **双流并行**:Token 流 (`sundynix.streams.`) + 执行事件流 (`sundynix.exec.`) 分离 - **实时节点点亮**:前端 SSE 订阅轨迹,逐节点展示执行状态 +- **Token 流可回放 + 断点续传**:网关把 Token 流落 Redis Stream,SSE 带 `Last-Event-ID`,连晚/刷新/网络抖动重连均不丢 token(Redis 降级时回退 live NATS) ### 3.6 安全与工程化护栏 - **熔断降级** (`CircuitBreaker`):连续失败触发熔断,快速拒绝新任务 + 友好提示 @@ -87,6 +88,7 @@ - **Wails 原生应用**:macOS/Windows/Linux 跨平台桌面端 - **Go/TS 强绑定**:前端调用 Go 后端(本地文件 I/O 等) - **命令面板**:⌘K / Ctrl+K 全局命令面板(键盘优先工作站) +- **GitHub Releases 分发 + 自动检查更新**:打 `vX.Y.Z` 标签经 release workflow 自动构建 mac/win 安装包发布到 Releases;桌面端启动查 `releases/latest`,有新版弹横幅引导下载 --- @@ -173,15 +175,15 @@ | 问题 | 现状 | 建议 | |---|---|---| | **API Key 明文传输/存储** | ModelConfig 中 `api_key` 明文存 PG、经 NATS 广播 | API Key 加密存储(AES-256),NATS 传输走 TLS | -| **CORS 配置** | 未见显式 CORS 配置 | 生产环境需严格限制允许源 | -| **Rate Limiting** | Redis 存 session/rate limit 但实现程度不明 | 确保关键 API(登录/任务提交)有完善的速率限制 | +| **CORS 收紧** | 已有显式 `cors()` + `CORS_ALLOW_ORIGIN`(缺省 `*` 仅供开发) | 生产环境把 `CORS_ALLOW_ORIGIN` 设为具体源 | +| **Rate Limiting** | 已实现:Redis 滑动窗口、按客户端 IP 每分钟限流(`middleware.RateLimit` + `store.Allow`) | 可对登录/任务提交等关键 API 单独配更严阈值 | | **依赖安全审计** | 无 dependabot / 漏洞扫描 | 启用 GitHub Dependabot + `go vet` / `govulncheck` CI | ### 6.5 运维与部署 | 问题 | 现状 | 建议 | |---|---|---| -| **无 CI/CD 流水线** | `.github/` 目录存在但未见完整 workflow | 配置 GitHub Actions:lint → test → build → deploy | +| **CI/CD(部分完成)** | ✅ 已加 `ci.yml`(go build+vet+test / 前端 tsc / mcp-py 守卫)+ `release.yml`(tag 触发构建发布到 GitHub Releases) | 后续补:自动部署、govulncheck/Dependabot 安全扫描 | | **无 Kubernetes 部署** | 仅 docker-compose(开发环境) | 补充 Helm Chart 或 Kustomize,面向生产集群 | | **健康检查不统一** | dispatcher 走 NATS ping,其它走 HTTP | 统一为 Kubernetes 标准的 liveness/readiness probe | | **无数据备份策略** | PG/Milvus/Neo4j 数据卷无备份配置 | 配置 pg_dump 定时备份 + 对象存储归档 | @@ -197,7 +199,7 @@ | **Wails** | ⭐⭐⭐⭐ | Go+WebView 跨平台桌面端,避免 Electron 臃肿;但 WebView 兼容性不如 Electron | | **Milvus + Bleve + Neo4j** | ⭐⭐⭐⭐ | 三路 RAG 架构领先;但三套存储的运维复杂度高 | | **React Flow** | ⭐⭐⭐⭐⭐ | 低代码编排标配,生态成熟,@xyflow/react v12 性能好 | -| **Python MCP 层** | ⭐⭐⭐ | 算法型工具用 Python 合理;但 MCP/MinerU 仍为桩,实际价值待兑现 | +| **Python MCP 层** | ⭐⭐⭐ | 算法型工具用 Python 合理;代码沙箱已可用,但 MinerU 多模态解析仍为桩 | --- @@ -229,7 +231,7 @@ **主要风险**在于: 1. 基础设施复杂度高(6 个存储组件),运维压力大 2. 前端缺少测试和路由,随功能增长技术债务会快速累积 -3. Python MCP 层实现深度不足,核心差异化功能(MinerU OCR、安全沙箱)仍为桩 -4. 缺少 CI/CD、链路追踪、集中配置等生产级工程化基础设施 +3. Python MCP 层较薄:MinerU/PaddleOCR 多模态解析仍为桩(代码执行沙箱已实现可用,run_code 已接入自主 agent) +4. 链路追踪、集中配置、k8s 部署、API Key 加密等生产级工程化设施待补(CI/CD 已具备) **项目成熟度**:处于 **高完成度 MVP** 阶段,核心数据流和关键功能闭环已通,具备向生产环境演进的基础。