2.2 KiB
2.2 KiB
EveryPublish 技术栈定版(唯一权威来源)
2026-08-20 · 其他文档中与本文件冲突之处,以本文件为准。
1. 总览
| 端 | 层 | 技术 |
|---|---|---|
| 网页端 | 页面(UI) | React 18 + TypeScript + TDesign React(Tencent starter,MIT,已拉取 apps/web) |
| 网页端 | 服务端/API | Go:gin + coder/websocket + asynq + GORM + argon2 |
| 客户端 | UI 壳 | WinUI 3(C# / .NET 8) |
| 客户端 | 核心 | Go:WSS 客户端 + go-rod(CDP)+ 凭据保险库 |
| 数据 | 数据库 | MySQL 8.x(GORM + go-sql-driver/mysql;迁移 golang-migrate) |
| 数据 | 队列/缓存 | Redis 7(asynq) |
| 存储 | 一期 | 服务器本地盘(签名直链下载) |
| 存储 | 二期 | OSS 双桶(StorageDriver 抽象预留) |
2. 「网页端与后端都用 Go」的说明
- 页面层仍是 React + TDesign(starter 已拉取预览,MIT 可商用),不写自定义样式。
- 「用 Go」指两处:网页端的服务端/API 层 与 客户端 agent-core,统一 Go 语言。
- 二者共享同一协议 Go module(server 与 agent-core 引用同一 shared/proto 包),消息 Schema 只写一次。
3. Go 选型明细
- Web 框架:gin
- WebSocket:github.com/coder/websocket(原生 JSON 协议,不用 Socket.IO)
- 任务队列:asynq(Redis)
- ORM/DB:GORM + go-sql-driver/mysql(MySQL 8.x);迁移 golang-migrate
- 鉴权:golang-jwt + x/crypto/argon2(用户);Ed25519 设备签名(Agent)
- 浏览器自动化(客户端):go-rod + rod-stealth,驱动系统 Chrome/Edge
- 常驻服务(二期):kardianos/service
4. 目录结构(monorepo)
- web/ —— React 前端(现有 apps/web 的 starter)
- server/ —— Go 服务器(REST + WSS 网关 + 队列 worker)
- client/ui —— WinUI 3 壳(C#)
- client/core —— agent-core(Go)
- shared/ —— 协议 Go module(server 与 core 共用)
- tools/ —— 联调诊断(diag-connection.mjs 等)
5. 版本与工具
- Go 1.23+;Node 20 LTS(前端,starter 依赖升级见交付文档 D1);.NET 8;MySQL 8.x;Redis 7
- 包管理:pnpm(前端)、go mod(后端)
- CI:GitHub Actions(前端构建 / Go 单测 / WinUI 打包)