48 lines
2.2 KiB
Markdown
48 lines
2.2 KiB
Markdown
# 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 打包)
|