技术栈与选型
后端(Go)
| 层 | 选型 | 理由 |
|---|---|---|
| 语言/框架 | Go 1.26 / Gin | 单静态二进制,Docker 镜像小(~20MB),长驻稳 |
| 数据层 | GORM + SQLite(默认)/ PostgreSQL(可选) | 纯 Go glebarez/sqlite 无 CGO;GORM 抽象使 DB 切换零业务改动 |
| 调度 | robfig/cron v3 | 定时自动化;goroutine + ticker 做轮询 loop |
| HTTP 抓取 | net/http + cookiejar + goquery | goquery 贴近 Jsoup;自封装重试/限流/Cloudflare/SSRF 防护 |
| 事件/扩展 | Chain + Module + Event | 借鉴 MoviePilot;不做 Go 动态插件(平台受限),改内置 Module + YAML 钩子 |
| 鉴权/加密 | golang-jwt/v5 + bcrypt + AES-GCM | JWT/APIKey 双轨;敏感凭据 AES-GCM 加密入库;好学 VIP 准入校验 |
| 日志 | slog(stdlib) | 结构化、零依赖;审计+访问日志带 req_id |
| 限流 | golang.org/x/time/rate | 按 IP 令牌桶,登录/激活端点更严(防爆破) |
| WebSocket | coder/websocket | 下载器实时状态推送 |
| 前端内嵌 | go:embed all:dist | 单镜像即完整产品(API + Web UI) |
借鉴来源
| 来源 | 借鉴了什么 | 落点 |
|---|---|---|
| MoviePilot | Chain/Module/Event 架构、Oper 模式、Scheduler 配置热重载、post_message 路由、AUTH_SITE 准入 | chain/ + core/ + scheduler/ + notification/ + auth/ |
| PT-depiler | Schema/Definition 两层、ISiteMetadata 契约、noLoginAssert、keepUpload 辅种 | site/ + definitions/ + keepseed/ |
| pt_mate | SiteAdapter 接口签名、聚合搜索、CookieCloud 解密 | site/adapter.go + cookiecloud/ |
| qBitController | rid 增量同步 MainData.merge、403 重登、版本分支 | downloader/qb/ |
| 好学源码 (F:\www.hxpt.org) | tr_small/tr/torrenttable HTML 结构、中文标签、attendance.php 签到、jgg/magic_scratch/medal 游戏 | definitions/hxpt.yaml + entertainment/ + schemas/checkin.go |
| 财神源码 (F:\cspt\cspt-web) | Laravel ScratchCard API、ret 信封 | entertainment/cspt.go |
前端
| 层 | 选型 |
|---|---|
| Web UI | Vue3 + Vite + Element Plus(按需引入)+ Pinia + Tailwind(manualChunks 分包 + ElementPlusResolver 按需) |
| 视觉 | 液态玻璃(iOS 26 Liquid Glass):backdrop-filter + 大圆角 + 内高光边 |
客户端
| 层 | 选型 |
|---|---|
| 框架 | Flutter + fl_chart |
| 视觉/降级 | 液态玻璃 GlassCard(BackdropFilter)+优雅降级:sigma=0 跳过 BackdropFilter / Web 默认关模糊 / 账户页「性能模式」开关(shared_preferences 持久化,glassReduced ValueNotifier 全局响应);故不做脆弱的原生设备分级自动检测 |
| 实时推送 | web_socket_channel(WS 客户端 + 指数退避重连) |
| WebView | flutter_inappwebview(取含 HttpOnly 的 cookie) |
| 鸿蒙 | 需华为 flutter 分支(标准 Flutter 无 ohos target) |
部署
| 维度 | 选型 |
|---|---|
| 镜像 | 多阶段 Dockerfile:前端 npm build → go:embed → alpine 运行时 |
| CI | GitHub Actions:ci.yml(三端测试)+ docker.yml(tag→多架构镜像)+ flutter-release.yml(apk/windows) |
| 编排 | docker-compose.yml(可选 PostgreSQL profile) |