# A股工具 · 用户体系

基于 **Go + PostgreSQL + Docker Compose** 的用户权限管理模块，角色覆盖：系统管理员、管理员、用户。前端界面复用 `refer/` 目录下的暗色主题设计语言。

## 技术栈

| 层 | 技术 |
|---|---|
| 后端 | Go 1.25 + Gin + GORM + JWT + bcrypt |
| 数据库 | PostgreSQL 18 |
| 前端 | React 18 + Vite + Tailwind CSS |
| 部署 | Docker Compose |

## 快速启动

```bash
# 1. 复制环境变量
cp .env.example .env

# 2. 启动服务（首次会编译 Go 后端，可能需要几分钟）
docker compose up -d

# 3. 等待数据库健康检查通过后，访问前端
open http://localhost:3018
```

## 默认端口

| 服务 | 端口 |
|---|---|
| 前端 | 3018 |
| 后端 API | 3019 |
| PostgreSQL | 5432 |

## 默认系统管理员

系统启动时会自动创建一个系统管理员账号（仅当不存在时）：

| 用户名 | 密码 |
|---|---|
| `system_admin` | `system_admin` |

整个系统只能有一个系统管理员账号，无法通过管理后台再创建或提升其他系统管理员。

## 角色说明

| 角色 | 权限 |
|---|---|
| 系统管理员 | 管理管理员、用户、系统配置 |
| 管理员 | 管理普通用户 |
| 用户 | 访问业务功能、修改个人资料 |

## 主要 API

| 方法 | 路径 | 说明 | 权限 |
|---|---|---|---|
| POST | /api/auth/login | 登录 | 公开 |
| GET | /api/auth/me | 当前用户 | 需登录 |
| POST | /api/auth/logout | 登出 | 需登录 |
| GET | /api/admin/users | 用户列表 | admin / system_admin |
| POST | /api/admin/users | 创建用户 | admin / system_admin |
| PUT | /api/admin/users/:id | 更新用户/角色 | admin / system_admin |
| DELETE | /api/admin/users/:id | 删除用户 | system_admin |
| GET | /api/admin/roles | 角色列表 | admin / system_admin |

## 目录结构

```
stock/
├── backend/              # Go 后端
│   ├── cmd/api/main.go
│   ├── internal/
│   │   ├── config/
│   │   ├── db/
│   │   ├── handlers/
│   │   ├── middleware/
│   │   ├── models/
│   │   └── routes/
│   ├── go.mod
│   └── Dockerfile
├── frontend/             # React 前端
│   ├── src/
│   ├── package.json
│   └── Dockerfile
├── docker-compose.yml
├── .env.example
└── README.md
```

## 开发

```bash
# 后端本地运行（需先启动 PostgreSQL）
cd backend
go run ./cmd/api

# 前端本地运行
cd frontend
npm install
npm run dev
```

## 注意事项

- 生产环境请务必修改 `JWT_SECRET`。
- 首次启动时 GORM 会自动创建表并插入默认角色。
