# HFB Sys

哈夫币租号平台，面向《三角洲行动》账号租赁场景。

## 开发方式

- 后端：Go + Gin + GORM + MySQL + Redis
- 前端：Vue 3 + TypeScript + Vite + Element Plus
- 开发依赖：Docker Compose 启动 MySQL、Redis、MinIO

## 快速开始

一键启动开发版本：

```bash
./scripts/dev.sh
```

脚本会自动启动 MySQL、Redis、MinIO，首次初始化数据库结构，并同时启动后端和前端。

前端地址：`http://localhost:5173`

后台地址默认：`http://localhost:5173/admin/login`。可通过 `VITE_ADMIN_BASE_PATH` 调整后台页面入口。

如需拆分调试，可手动执行：

```bash
docker compose -f deploy/docker-compose.dev.yml up -d

cd backend
cp .env.example .env
go run github.com/pressly/goose/v3/cmd/goose@v3.27.1 \
  -dir migrations \
  mysql 'hfb:secret@tcp(127.0.0.1:3306)/hfb_sys?charset=utf8mb4&parseTime=True&loc=Local&multiStatements=true' \
  up
go run ./cmd/api

cd ../frontend
npm install
npm run dev
```

## 代码门禁

提交前或部署前在本地执行全量检查，覆盖后端 `go vet` / `go build` / `go test` 与前端 `prettier` / `eslint` / `typecheck` / `vite build`：

```bash
./scripts/check.sh
```

`./scripts/deploy-prod.sh` 在构建镜像前会自动调用 `check.sh`（本地有 `go` 和 `npm` 时）。检查未通过会中止部署；确需跳过用 `--skip-check`（不推荐）。`check.sh` 也支持 `--skip-backend`、`--skip-frontend`、`--skip-tests` 做局部调试。

## 开发态短信与实名

- 后端日志默认同时输出到控制台和 `backend/logs/app-YYYY-MM-DD.log`，按北京时间自动按天切分；可通过 `LOG_LEVEL=debug|info|warn|error` 调整级别。
- 短信验证码默认使用 mock 适配器，验证码会打印在后端日志中；生产环境可通过 `SMS_PROVIDER=aliyun` 接入阿里云短信。
- 阿里云短信需要配置 `ALIYUN_ACCESS_KEY_ID`、`ALIYUN_ACCESS_KEY_SECRET`、`ALIYUN_SMS_SIGN_NAME` 和 `ALIYUN_SMS_LOGIN_TEMPLATE_CODE`，模板变量名默认为 `code`。
- 实名认证使用 mock 适配器，登录后请求 `POST /api/realname/start`，提交合法姓名和 18 位身份证号会直接通过。
- 实名状态可通过 `GET /api/realname/status` 查询。
- 租号发布需要登录并完成实名认证；`POST /api/listings/{id}/submit-review` 会进入待审核，后台通过后才上架。
- 订单创建需要登录；开发态会直接锁定账号并进入待交接，暂不接真实支付和押金冻结。
- 账号交接已支持号主提交说明、租客确认收号，确认后订单进入租赁中。
- 归还流程已支持租客提交归还、号主确认归还，完成后账号重新上架。
- 后端已接入开发态订单超时扫描任务，会按系统配置处理交接超时、确认收号超时、逾期未归还和确认归还超时。
- 文件上传已接入 MinIO，发布账号资产截图和申诉证据可上传 JPG、PNG、WebP 或 PDF。
- 如果本机有代理工具占用 `127.0.0.1:9000`，MinIO 开发地址使用 `http://localhost:9000`。
- 钱包账务当前为开发态模拟流水，可通过 `GET /api/wallet/balance` 和 `GET /api/wallet/ledger` 查看。
- 后台资金流水已接入，支持按用户、订单和业务类型查询。
- 站内信已支持订单关键节点自动写入，可通过 `GET /api/notifications` 查看。
- 订单群聊已支持支付成功后自动创建，租客、号主和客服可在移动端消息页进入会话。
- 申诉仲裁已支持订单双方发起申诉、开发态后台落账处理。
- 系统配置已支持默认配置初始化和后台编辑，更新会写入审计日志。
- 后台已使用独立登录、图形验证码和独立管理 UI，页面入口由 `VITE_ADMIN_BASE_PATH` 控制。
- 后台仪表盘已接入真实统计数据。
- 用户管理后台已接入，支持冻结和解冻用户。
- 订单管理后台已接入，支持查看全量订单和交接记录。
- 商品管理后台已接入，支持查看全量商品、商品详情、强制下架和标记异常。
- 订单详情后台已支持客服关闭和标记异常，相关操作会写入审计日志并通知双方。
- 商品审核后台已接入，审核员可查看账号资产截图后通过或拒绝。
- 审计日志后台已接入，支持查看高风险操作明细。

## 文档

- [项目计划](docs/project-plan.md)
- [数据库设计](docs/database.md)
- [接口规划](docs/api.md)
- [业务规则](docs/business-rules.md)
