f8a959b8013ed79255d5c52e6ea1543ecfe08c67
【界面优化】
- 移除权限模板列表和角色概览卡片上的"系统预设"标签,视觉上减少噪音
- 将 PermissionTemplateSelector 改为纯展示组件,重命名为"角色权限概览"
- 移除"应用此模板"按钮及预览面板,卡片仅展示各角色权限统计
- 角色描述改为鼠标悬浮 tooltip 显示,节省卡片空间
- 未生效角色以虚线边框 + 降低透明度区分,悬浮提示状态说明
【生效管理】
- Study 模型新增 active_roles JSON 字段,记录项目已生效角色列表
- 新增 /studies/{study_id}/active-roles GET/PUT 接口
- 数据库迁移 20260518_01:studies 表添加 active_roles 列
- 成员管理的项目角色下拉列表仅显示已生效角色,未生效角色不可分配
【模板管理抽屉重构】
- 抽屉改为三标签页:模板列表 / 生效管理 / 编辑权限
- 生效管理:开关控制各角色生效状态,保存后同步后端
- 编辑权限:左右分栏设计,左侧角色列表点击选中,右侧实时展示权限勾选
- 原独立的角色权限编辑抽屉合并至此,角色概览卡片"编辑权限"直接跳转对应标签页
【操作类型标签统一】
- 系统级权限和编辑权限界面的操作类型标签统一使用细分类型
- 操作类型从粗粒度 read/write 细化为 read/create/update/delete/export
- 颜色规范:读取灰色、创建绿色、更新黄色、删除红色、导出无色
- 权限模板管理接口限制为 ADMIN 角色,修复原先权限过宽的问题
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
CTMS 项目快速上手
生产部署
- 生产入口:
docker-compose.yaml - 初始化方式:
docker compose run --rm backend-init - 启动方式:
docker compose up -d --build - 运行拓扑:
nginx、backend、db - 对外入口:
nginx提供前端静态资源,并同域反代后端 API - 数据库 schema 来源:Alembic migration,不再依赖
database/init.sql - 默认无任何业务预置数据;生产初始化只确保固定管理员
admin@huapont.cn / admin123存在 - 生产环境必须配置
LOGIN_RSA_PRIVATE_KEY;登录密码传输使用 RSA-OAEP 包裹 AES-GCM 密钥,数据库仍只保存 bcrypt 哈希 - 浏览器端加密依赖 WebCrypto 安全上下文;生产访问必须使用 HTTPS,本地
localhost例外 - 当前 challenge 缓存在后端进程内,默认最多保留 1000 个;多实例或多 worker 部署需改为共享缓存或启用粘性会话
- 验证方式:
docker compose configcurl -i http://127.0.0.1:8888/curl -i http://127.0.0.1:8888/health
账号与注册
- 初始化管理员:
admin@huapont.cn / admin123(通过生产初始化命令显式创建) - 自助注册:前端
/register提交邮箱、密码、姓名、角色(CRA/PV/IMP/PM)、部门,状态为 PENDING。 - 管理员审核:
/admin/user-approval列表查看待审核,支持通过/拒绝;仅 ACTIVE 用户可登录。 - 更多账号:管理员也可在
/admin/users直接创建 ACTIVE 账号,再在项目成员中赋予角色。
角色权限概要(前端操作级提示,后端仍最终裁决)
- ADMIN:全权限
- PM:里程碑/任务维护、参与者状态、AE 创建/关闭、Issue 创建/关闭、Finance 创建/审批/支付、IMP 交易、FAQ 维护
- CRA:任务/参与者/AE/Data Query 创建,参与者状态更新,Finance 创建/提交,其他只读
- PV:AE 创建/关闭,Issue 创建/关闭,其余只读
- IMP:IMP 交易/产品/批次维护,其余只读
- 普通成员(无项目角色):仅浏览
访问方式
- 前端:
http://localhost:8888 - 后端 API:同域
/api/v1/* nginx负责托管前端静态资源,并将/api与/health转发到backend
仓库治理文档
- 分支治理规范:
docs/branch-governance.md - 分支环境安装配置:
docs/guides/branch-environment-installation.md - 发布检查清单:
docs/guides/release-checklist.md
本地配置
- 本地编辑器配置(如
.vscode/)不纳入版本库。 - 前端环境变量请使用
frontend/.env,可从frontend/.env.example复制。 - 根目录
.env不作为当前默认启动流程的提交配置文件。 - Postman 本地环境请基于
docs/postman/local.postman_environment.example.json自行复制,不提交个人环境文件。 - 文档入口见
docs/README.md;当前操作手册集中在docs/guides/,审计与治理文档集中在docs/audits/。
常用流程
- 用管理员账号登录前端(默认
admin@example.com / admin123)。 - 进入左侧导航「账号治理」「项目治理」进行用户、项目、中心等全局管理;或在“项目列表”选择项目后进入项目内工作区。
- Dashboard 查看进度、待办;左侧导航进入“里程碑”“任务”等页面。
- 退出登录或切换项目可通过顶部右侧下拉。
管理员全局治理(前端入口)
- 账号治理:
/admin/users(新建/编辑/启用禁用用户,重置密码需二次确认) - 项目治理:
/admin/projects(创建/编辑项目,成员配置 PM/CRA,中心管理) - 中心管理:
/admin/projects/:projectId/sites(中心创建/编辑、CRA 绑定、启用停用)
ADMIN 具备所有 PM 权限,项目内操作与 PM 同步放行。
注意
- 登录使用邮箱 + 密码,前端会先获取登录公钥并加密提交;未审核/已拒绝/已停用账号无法登录。
- 令牌与当前项目上下文保存在浏览器 LocalStorage 中,清除后需重新登录/选择项目。
- 若后端重启,确认数据库容器仍健康,前端会弹出错误提示。
Description
Languages
Vue
44.3%
Python
34.6%
TypeScript
15.6%
Shell
1.9%
JavaScript
1.8%
Other
1.7%