Skip to content

技术栈与选型 ​

后端(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 + goquerygoquery 贴近 Jsoup;自封装重试/限流/Cloudflare/SSRF 防护
事件/扩展Chain + Module + Event借鉴 MoviePilot;不做 Go 动态插件(平台受限),改内置 Module + YAML 钩子
鉴权/加密golang-jwt/v5 + bcrypt + AES-GCMJWT/APIKey 双轨;敏感凭据 AES-GCM 加密入库;好学 VIP 准入校验
日志slog(stdlib)结构化、零依赖;审计+访问日志带 req_id
限流golang.org/x/time/rate按 IP 令牌桶,登录/激活端点更严(防爆破)
WebSocketcoder/websocket下载器实时状态推送
前端内嵌go:embed all:dist单镜像即完整产品(API + Web UI)

借鉴来源 ​

来源借鉴了什么落点
MoviePilotChain/Module/Event 架构、Oper 模式、Scheduler 配置热重载、post_message 路由、AUTH_SITE 准入chain/ + core/ + scheduler/ + notification/ + auth/
PT-depilerSchema/Definition 两层、ISiteMetadata 契约、noLoginAssert、keepUpload 辅种site/ + definitions/ + keepseed/
pt_mateSiteAdapter 接口签名、聚合搜索、CookieCloud 解密site/adapter.go + cookiecloud/
qBitControllerrid 增量同步 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 UIVue3 + 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 客户端 + 指数退避重连)
WebViewflutter_inappwebview(取含 HttpOnly 的 cookie)
鸿蒙需华为 flutter 分支(标准 Flutter 无 ohos target)

部署 ​

维度选型
镜像多阶段 Dockerfile:前端 npm build → go:embed → alpine 运行时
CIGitHub Actions:ci.yml(三端测试)+ docker.yml(tag→多架构镜像)+ flutter-release.yml(apk/windows)
编排docker-compose.yml(可选 PostgreSQL profile)