# 03 · 架构设计 > 用户端(uni-app 多端) + 管理后台(Web) + 腾讯云 VPS 后端(Go·域名·certbot HTTPS) + 本地优先同步。 ## 一、整体架构图 ``` 用户端(unibest / uni-app · Vue3) 后端(腾讯云 VPS · Docker · HTTPS) ┌─────────────────────────────┐ ┌────────────────────────────┐ │ ① 每日打卡 │ │ 域名 + Nginx + certbot │ │ ② 目标进度 & 净资产曲线 │ HTTPS │ Go + Gin + GORM │ │ ③ FIRE 测算器 │ ─REST→ │ ├─ JWT 单用户鉴权 │ │ ④ 持仓 & 分红跟踪 │ ←同步─ │ ├─ API: 打卡/快照/持仓/设置 │ │ 本地缓存(离线优先) │ │ └─ SQLite(纯Go驱动·可备份) │ └─────────────────────────────┘ └────────────────────────────┘ │ 由同一个 Go 进程托管 ▲ ├─ 浏览器 → 网页 / PWA │ html/template ├─ 云打包 → Android (.apk/.aab) │ 渲染(共用DB) └─ 云打包 → iOS (.ipa,需苹果账号) ┌─────────────────────────┐ │ 管理后台(Web · 电脑端) │ │ Gin html/template + │ │ HTMX + Alpine + Tabler │ │ 无构建·数据增删改查/报表 │ └─────────────────────────┘ ``` ## 二、前端结构 - **页面**:四大模块各一主页面 + 设置页,普通 vue 页面(不碰 nvue)。 - **图表**:统一用 qiun-data-charts,图表页避免 nvue,数据做抽稀。 - **状态/数据层**:本地优先,所有读写先走"存储抽象层",再异步同步到后端。 ### 存储抽象层(关键设计) 各端存储能力不同,必须封装统一接口,内部用条件编译分端实现: | 端 | 底层实现 | 注意 | |---|---|---| | H5 | IndexedDB(大数据)/ localStorage | localStorage ~5MB 上限 | | App | uni.storage / 原生 SQLite 插件 | 历史快照/流水量大时用 SQLite | | 小程序 | uni.storage | 总量约 10MB,存流水易爆 | ``` interface Store { get(key), set(key, val), query(table, filter), bulkSave(...) } // #ifdef H5 → IndexedDB 实现 // #ifdef APP-PLUS → SQLite/uni.storage 实现 // #ifdef MP → uni.storage 实现 ``` ## 三、后端结构(腾讯云 VPS · Go) - **技术栈**:**Go + Gin(Web)+ GORM(ORM)+ SQLite**(纯 Go 驱动 `modernc.org/sqlite`,免 CGO,编译/部署最省心)+ **JWT** 鉴权。 - **部署**:编译为**单个静态二进制**,Docker 化部署到腾讯云 VPS;前置 **Nginx 反向代理**,由 **certbot(Let's Encrypt)** 签发并自动续期 HTTPS。 - **域名**:使用用户已有域名,解析到 VPS 公网 IP。 - **数据表(初版)**:`checkins`(打卡)、`snapshots`(资产快照)、`holdings`(持仓)、`settings`(参数)、`users`(单用户)。 - **接口**:标准 REST(增删改查 + 拉取增量),全程 HTTPS;用户端与管理后台**共用同一套 API**。 - **备份**:SQLite 单文件,定时备份到对象存储/本地。 > 为什么用 Go 而非 Node:单二进制、内存占用小、Docker 镜像可压到几 MB,**更适合常驻的小 VPS 自托管**;前后端经 REST/JSON 解耦,后端语言对 uni-app 前端无影响。 ## 三-B、管理后台(Web 管理端 · 无构建) - **定位**:电脑端网页,给本人用来**增删改查数据、查看报表、调整参数**(如目标本金、提取率、收益率假设)。 - **技术(无构建)**:**Gin html/template 服务端渲染 + HTMX(局部刷新)+ Alpine.js(小交互)+ Tabler 后台模板(Bootstrap5,自带登录/侧边栏/仪表盘/表格/表单皮肤)+ Chart.js(图表)**。全部走 `