36 lines
2.2 KiB
Markdown
36 lines
2.2 KiB
Markdown
# 肉垫计划
|
||
|
||
核心功能:多宠物档案、日常照顾任务、多宠物遛狗与主动位置分享、约遛。后端用 Gin + GORM + PostgreSQL,管理端用 React + Vite + shadcn/ui + Tailwind,构建后通过 `go:embed` 随服务提供 `/`。
|
||
|
||
## 目录
|
||
|
||
- `cmd/server`:服务入口
|
||
- `internal/config`:配置
|
||
- `internal/model`:数据库模型
|
||
- `internal/database`:PostgreSQL 连接和迁移
|
||
- `internal/storage`:MinIO 文件存储
|
||
- `internal/httpapi`:用户与管理端 API
|
||
- `web/admin`:管理端源码
|
||
- `internal/admin/dist`:嵌入的管理端构建产物
|
||
|
||
## 本地启动
|
||
|
||
1. `cp configs/config.example.yaml configs/config.yaml`,设置 PostgreSQL、MinIO、JWT 和微信参数。配置文件不进入 Git。
|
||
2. `cd web/admin && npm ci && npm run build`。
|
||
3. 若数据库还不存在,在 `pets-be` 目录执行一次 `go run ./cmd/dbinit`。
|
||
4. 执行 `go run ./cmd/server`。
|
||
|
||
默认业务接口 `http://localhost:9090/api`,管理端 `http://localhost:9090/`。小程序生产 API 地址是 `https://pet.sundynix.cn/api`。
|
||
|
||
配置可用 `PETS_` 前缀的环境变量覆盖,例如 `PETS_POSTGRES_PASSWORD`。生产模式必须设置 `PETS_ADMIN_PASSWORD`,微信登录需要 App ID 和 App Secret。`auth.dev_login` 只能在 debug 模式开启。
|
||
|
||
## 数据
|
||
|
||
GORM 使用 `sundynix_` 表前缀、单数 snake_case 表名和字段名,例如 `sundynix_user`。主键均为 PostgreSQL `uuid`,Go 字段为 `string`。文件内容存 MinIO;`sundynix_file` 存 bucket、object_key、md5、url 和元信息。头像与约遛封面只通过 `*_file_id` 关联文件表。上传会先按 MD5 查重。
|
||
|
||
现有 MySQL 数据未自动迁移。新的 PostgreSQL 表在服务启动时自动创建。正式切换旧数据前,应单独设计数据迁移映射并备份。
|
||
|
||
## 部署
|
||
|
||
`../deploy/docker-compose.yml` 使用外部 PostgreSQL 和 MinIO;把 `../deploy/.env.example` 复制为 `.env` 后设置凭据。`pet.sundynix.cn` 用于业务 API;`s3.sundynix.cn` 用于文件上传和图片直链。URL 由 MinIO endpoint、bucket 和 object key 拼接,在上传时写入文件表,格式为 `https://s3.sundynix.cn/sundynix-pet/<object_key>`。`res.sundynix.cn/browser/...` 是 MinIO 控制台页面,不能作为图片直链。
|