122 lines
2.9 KiB
Markdown
122 lines
2.9 KiB
Markdown
# 后台管理系统 - 进度报告
|
||
|
||
## 已完成的工作
|
||
|
||
### 1. 数据库设计和初始化 ✅
|
||
|
||
#### 创建的数据库表:
|
||
- **users** - 用户表
|
||
- id (主键)
|
||
- username (用户名,唯一)
|
||
- password_hash (密码哈希)
|
||
- email (邮箱)
|
||
- full_name (全名)
|
||
- is_active (激活状态)
|
||
- created_at, updated_at, last_login_at (时间戳)
|
||
|
||
- **roles** - 角色表
|
||
- id (主键)
|
||
- name (角色名,如 'admin', 'user')
|
||
- display_name (显示名称)
|
||
- description (描述)
|
||
- created_at, updated_at
|
||
|
||
- **user_roles** - 用户-角色关联表 (多对多)
|
||
- user_id, role_id (复合主键)
|
||
- created_at
|
||
|
||
- **menus** - 菜单表
|
||
- id (主键)
|
||
- parent_id (父菜单ID,支持树形结构)
|
||
- name (菜单名)
|
||
- title (显示标题)
|
||
- icon (图标名)
|
||
- path (路由路径)
|
||
- component (组件路径)
|
||
- sort_order (排序)
|
||
- is_active (激活状态)
|
||
- description (描述)
|
||
- created_at, updated_at
|
||
|
||
- **role_menus** - 角色-菜单关联表
|
||
- id (主键)
|
||
- role_id, menu_id
|
||
- created_at
|
||
|
||
### 2. 初始化数据 ✅
|
||
|
||
#### 角色数据:
|
||
- **admin** - 管理员角色(拥有所有权限)
|
||
- **user** - 普通用户角色(基本访问权限)
|
||
|
||
#### 管理员用户:
|
||
- 用户名:`cosmo`
|
||
- 密码:`cosmo`
|
||
- 邮箱:admin@cosmo.com
|
||
- 角色:admin
|
||
|
||
#### 菜单结构:
|
||
```
|
||
├── 控制台 (/admin/dashboard)
|
||
└── 数据管理 (父菜单)
|
||
├── 天体数据列表 (/admin/celestial-bodies)
|
||
├── 静态数据列表 (/admin/static-data)
|
||
└── NASA数据下载管理 (/admin/nasa-data)
|
||
```
|
||
|
||
### 3. 代码文件
|
||
|
||
#### 数据库模型 (ORM)
|
||
- `/backend/app/models/db/user.py` - 用户模型
|
||
- `/backend/app/models/db/role.py` - 角色模型
|
||
- `/backend/app/models/db/menu.py` - 菜单模型
|
||
|
||
#### 脚本
|
||
- `/backend/scripts/seed_admin.py` - 初始化管理员数据的脚本
|
||
|
||
#### 依赖
|
||
- 新增 `bcrypt==5.0.0` 用于密码哈希
|
||
|
||
### 4. 执行的脚本
|
||
|
||
```bash
|
||
# 1. 创建数据库表
|
||
./venv/bin/python scripts/init_db.py
|
||
|
||
# 2. 初始化管理员数据
|
||
./venv/bin/python scripts/seed_admin.py
|
||
```
|
||
|
||
## 数据库表关系
|
||
|
||
```
|
||
users ←→ user_roles ←→ roles
|
||
↓
|
||
role_menus
|
||
↓
|
||
menus (支持父子关系)
|
||
```
|
||
|
||
## 下一步工作
|
||
|
||
根据用户要求,后续需要实现:
|
||
|
||
1. **后台管理系统 - 天体数据列表**
|
||
- API接口:CRUD操作
|
||
- 前端页面:列表、编辑、新增
|
||
|
||
2. **后台管理系统 - 静态数据列表**
|
||
- API接口:管理星座、星系等静态数据
|
||
- 前端页面:分类管理
|
||
|
||
3. **后台管理系统 - NASA数据下载管理**
|
||
- API接口:查看下载历史、触发数据更新
|
||
- 前端页面:数据下载状态监控
|
||
|
||
## 注意事项
|
||
|
||
- 所有密码使用 bcrypt 加密存储
|
||
- 菜单系统支持无限层级(通过 parent_id)
|
||
- 角色-菜单权限通过 role_menus 表控制
|
||
- 当前已创建管理员用户,可直接登录测试
|