# template **Repository Path**: wuchunxu/template ## Basic Information - **Project Name**: template - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-06 - **Last Updated**: 2026-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Personal Template 本仓库包含管理端前端与后端服务: - `client/admin`:管理后台前端 - `server/admin-api`:FastAPI 管理端 API ## 授权设计(简化版) 当前采用“默认登录放行 + 高敏接口显式授权”的策略,目标是降低 RBAC 维护成本,同时保留关键操作安全边界。 ### 1) 普通业务接口 - 只要求用户已登录(Bearer Token 有效) - 不做逐个 API 权限点分配 - 不依赖 `api` 类型权限进行日常鉴权 ### 2) 高敏接口 - 在代码中显式声明角色约束(如 `super_admin`) - 推荐用于:菜单管理、角色管理、系统配置变更、批量/破坏性操作 - 未满足角色要求时返回无权限 ### 3) 菜单权限 - 菜单权限(`type=menu`)用于侧栏导航与页面访问控制 - 动作权限(`type=action`)表示从列表跳转的二级页面(如新增、详情),维护路由路径后可用于 Tab 标题/图标(`menuMetaByPath`) - 动作路由路径支持动态段,如 `/system/users/detail/:id` - 前端路由 `meta.permission` 使用菜单级权限码(如 `user`、`role`、`permission`、`menu`) ### 4) 种子数据约定 - 初始化 RBAC 种子包含菜单权限(`type=menu`)及示行动作页(`type=action`,如用户新增/详情) - 不再为普通接口初始化 `type=api` 权限点 ## 菜单图标约定(管理端) - 默认使用 [Remix Icon](https://remixicon.com/),数据库字段 `icon` 存 `ri:xxx`(如 `ri:user-line`) - 前端解析:`ri:` 前缀渲染为 ``(与 `remixicon.css` 一致);其它带前缀的值(如 `mdi:...`、`ep:...`)走 Iconify - 未配置图标时默认 `ri:file-list-line` - 布局内固定控件可直接写 class(如 `ri-menu-fold-line`),见 `client/admin/src/components/Layout/ToggleButton.vue` ## 设计文档 产品与交互设计见 [`spec/`](spec/README.md),其中 [用户账号与密码](spec/user-account-password.md) 描述默认密码、改密策略、欢迎页与顶栏行为。 ## 开发初始化(后端) ```bash mysql -uroot -p -e "CREATE DATABASE IF NOT EXISTS exam CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" cd server/admin-api cp .env.example .env uv sync uv run alembic upgrade head uv run uvicorn app.main:app --app-dir src --reload ```