Cheng Zhou
|
ab4f0d93ed
|
统一项目权限读取模型
1、合并列表与详情读取权限,统一使用 subjects:read、project_members:read、monitoring_issues:read 等业务读取 key。
2、增加历史读取权限 key 的兼容映射,确保存量项目权限覆盖值不会丢失。
3、同步前端权限工具、路由权限与权限管理页面,避免继续引用已合并的旧权限 key。
4、补充项目角色启停保护与抽屉未保存变更守卫,防止停用 PM 或仍有关联成员的角色。
|
2026-06-04 11:06:03 +08:00 |
|
Cheng Zhou
|
44d69c2d7b
|
清理全局角色残留并修复项目权限判断
|
2026-05-29 10:20:42 +08:00 |
|
Cheng Zhou
|
63457aab11
|
支持开发环境局域网登录测试
|
2026-05-29 09:39:18 +08:00 |
|
Cheng Zhou
|
8611bd66f8
|
补齐业务路由与页面权限控制
|
2026-05-28 10:56:28 +08:00 |
|
Cheng Zhou
|
fa961f1391
|
新增电子试验主文件目录与文件归档
|
2026-05-28 10:54:47 +08:00 |
|
Cheng Zhou
|
31fcb7e6f2
|
按业务模块拆分附件权限
|
2026-05-28 10:53:00 +08:00 |
|
Cheng Zhou
|
d2b41ae454
|
将知识库笔记迁移为注意事项
|
2026-05-28 10:52:05 +08:00 |
|
Cheng Zhou
|
8da7fc715c
|
整合合同费用并移除旧财务合同
|
2026-05-28 10:49:08 +08:00 |
|
Cheng Zhou
|
2c85742040
|
统一项目角色与接口权限配置
|
2026-05-28 10:48:33 +08:00 |
|
Cheng Zhou
|
c909fc9387
|
优化前后端权限一致性
|
2026-05-26 14:53:17 +08:00 |
|
Cheng Zhou
|
41bd423be0
|
统一项目角色展示与预设文案
|
2026-05-26 14:46:01 +08:00 |
|
Cheng Zhou
|
3c168565ce
|
移除QA预设角色并收紧角色模板编辑
|
2026-05-26 11:32:14 +08:00 |
|
Cheng Zhou
|
934d114a29
|
feat(perm/frontend): PM 视角的权限管理界面与个人有效权限接入
- store/study 与 router 改为读取 /api-permissions/me 拉取当前用户在
当前项目的有效权限,菜单与路由守卫据此判定,并在 PM 项目缺省时
主动 ensureDefaultPmStudy。
- api/projectPermissions 暴露 fetchMyApiEndpointPermissions,并允许
调用方关闭统一错误提示,便于在批量项目权限拉取场景下静默失败。
- 项目管理:Projects 页根据每个项目的有效权限决定项目入口的可点击
状态,缺权限时禁用项目名跳转;ProjectDetail 据 setup_config 写权限
渲染保存/回填/清空/发布按钮,并在无读取权限时提示并退出页面。
- 权限管理:PermissionManagement 切换为按角色提交,Admin 视角才能
编辑 PM 行;按系统模块美化系统级权限展示并标注 PM 可访问项;项目
成员表的角色下拉受 PM 等级约束,自定义角色入口下线。
- 监控:PermissionMonitoring/PermissionAccessLogs 增加 isAdmin 与
showSecurityLog 入参,仅 ADMIN 才能看到底层安全日志与统计。
- ApiEndpointPermissions 表格根据当前用户角色禁用不可写行,避免
误操作 PM 行;MODULE_LABELS 增加 setup_config 的中文展示。
- 测试同步覆盖以上行为:新版 router/Layout/Projects/PermissionManagement
/PermissionAccessLogs/PermissionMonitoring/PermissionIpLocations 等
组件均补足检测,并按需为相关组件提供 pinia + localStorage stub。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-25 12:38:54 +08:00 |
|
Cheng Zhou
|
a2add43fa5
|
feat(subject): 参与者状态依赖筛选日期并支持后续编辑
- 未填写筛选日期的参与者不再默认进入 SCREENING,状态显示为占位符。
- SubjectUpdate 不再开放 status 入参,改由后端依据日期推导,并新增
screening_date 字段允许 PM/CRA 后续补录筛选日期。
- 参与者管理页与详情页同步:详情页支持编辑筛选日期,列表页与详情页
在没有筛选日期时显示占位符而非旧 enum 值。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-25 12:36:33 +08:00 |
|
Cheng Zhou
|
78247a8149
|
Remove non-admin workbench
|
2026-05-21 15:48:19 +08:00 |
|
Cheng Zhou
|
da6f2f2d41
|
feat: derive subject status from visits
|
2026-05-21 14:47:42 +08:00 |
|
Cheng Zhou
|
9305ced664
|
整理项目文档并优化权限监控与安装脚本
|
2026-05-21 11:39:00 +08:00 |
|
Cheng Zhou
|
6d682103f3
|
项目总览界面UI美化与入组数据统计修复
- 重构总览页面布局:卡片化设计、顶部标题栏、图标装饰
- 美化进度时间线:hover高亮、呼吸动画、渐变连接线
- 重写入组图表:去除边框、虚线网格、渐变柱子、柔和背景
- 修复入组统计:同时匹配enrollment_date和ENROLLED状态
- 移除adapter中hasEnrollmentStage过滤,显示真实入组数
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-20 16:53:36 +08:00 |
|
Cheng Zhou
|
5b97ea32ab
|
移除用户系统级角色,权限完全迁移至项目级管理
- 用户注册/创建不再需要选择角色,账号管理只管资料和状态
- 移除前后端所有系统级 role 字段的暴露,改用 is_admin 标识管理员
- PM(项目负责人)角色自动拥有全部项目权限且不可修改
- 系统管理员在项目中的成员身份不可被删除
- 管理界面全面美化
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-20 15:52:17 +08:00 |
|
Cheng Zhou
|
6cefa620e4
|
权限监控与管理界面全面美化
重新设计权限系统所有 UI 组件的视觉风格,统一配色、圆角、阴影和交互动效:
- 实时概览:统计卡片加图标和渐变色条,健康评分改为环形进度,告警改为卡片式
- 趋势分析:图表卡片加彩色图标标识,ECharts 配色升级为渐变面积填充
- 访问日志:指标卡片带图标,日志审计改为卡片式入口,IP排行前三高亮
- IP属地:工具栏重设计,排行列表前三渐变高亮,指标卡片统一新风格
- 系统级权限:从 el-table 改为自定义卡片列表,模块块独立圆角卡片
- 项目权限配置:空状态引导优化,成员表格加头像,工具栏加背景容器
- 角色概览卡片:加进度条可视化,hover 微动效
- 接口权限矩阵:工具栏分离布局,表格圆角包裹
- 角色管理抽屉:侧边栏选中态渐变,操作行 hover 高亮
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-20 14:36:35 +08:00 |
|
Cheng Zhou
|
e95eeed90e
|
完善权限缓存与监控指标
|
2026-05-19 16:03:27 +08:00 |
|
Cheng Zhou
|
f8a959b801
|
权限管理界面重构:角色概览、生效管理与编辑权限整合
【界面优化】
- 移除权限模板列表和角色概览卡片上的"系统预设"标签,视觉上减少噪音
- 将 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>
|
2026-05-19 08:48:07 +08:00 |
|
Cheng Zhou
|
20ce6bccef
|
完全移除模块级权限系统,迁移至接口级权限
后端:
- 删除 StudyRolePermission 模型和 project_permissions API 文件
- 重写 project_permissions.py core,移除所有模块级权限函数
- 重写 permission_cache.py,移除模块级权限缓存逻辑
- 新增权限模板功能(PermissionTemplate 模型、API、服务层)
- 新增 permission_templates 数据库迁移
- 迁移 8 个模块(attachments、audit_logs、dashboard、faqs、
faq_categories、fees_attachments、knowledge_notes、
material_equipments、overview、subject_histories、subject_pds)
至接口级权限检查
- 删除所有模块级权限相关测试文件,新增权限模板测试
前端:
- 删除 ProjectPermissions.vue 和 ProjectPermissionsModule.vue
- 重写 projectRoutePermissions.ts,改为基于接口级权限格式
- 更新 store/study.ts、router/index.ts、AuditLogs.vue、Projects.vue
中的权限 API 调用,从 fetchProjectRolePermissions 改为
fetchApiEndpointPermissions
- 清理 types/api.ts 中的旧模块级权限类型定义
- 新增 PermissionTemplateSelector.vue 组件
- 更新权限管理页面,移除模块级权限 tab
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-15 09:07:43 +08:00 |
|
Cheng Zhou
|
5327e00cf1
|
将接口级权限改为业务语言
1. 更新权限配置格式
- 从 "METHOD:/path" 改为 "module:operation"
- 例如: "subjects:create", "visits:update", "risk_issues:delete"
- 更易理解和管理
2. 新增权限操作列表 API
- GET /api/v1/api-permissions/operations
- 返回所有权限操作及其描述
3. 更新前端权限管理界面
- 显示业务语言的权限名称
- 按模块和操作类型筛选
- 改进用户体验
4. 修复导入错误
- 更新 MODULE_TO_ENDPOINTS 为 OPERATION_TO_ENDPOINTS
- 禁用 API 端点注册表初始化
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 11:00:41 +08:00 |
|
Cheng Zhou
|
6eea6b35fd
|
修复权限管理页面错误
1. 修复 ApiPermissions.vue 中的数据绑定错误
- 从 axios 响应中正确提取 .data 属性
- 修复 loadPermissionData、loadMonitoringData、save 函数
2. 禁用 FastAPI 响应验证
- 在 api_permissions.py 中添加 response_model=None
- 避免 Pydantic 验证错误
3. 注册权限监控 API 路由
- 在 router.py 中导入并注册 permission_monitoring 模块
- 修改 permission_monitoring.py 的路由前缀
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 10:41:16 +08:00 |
|
Cheng Zhou
|
ebbb6aed25
|
权限管理:修复前端导航指向新的接口级权限管理页面
- 修改 Projects.vue 中权限管理按钮导航到新的 /api-permissions 路由
- 前端重新构建以应用 ApiPermissions 组件的最新更改
- 用户点击权限管理按钮现在会进入三标签页面(模块级、接口级、监控)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 10:18:11 +08:00 |
|
Cheng Zhou
|
cb36606607
|
修复路由前缀重复导致的502错误
问题:api_permissions.py 中的路由已包含 /studies/{study_id},
但在 router.py 中又添加了相同前缀,导致路径重复:
/studies/{study_id}/api-permissions/studies/{study_id}
修复:移除 api_permissions.py 中的 /studies/{study_id} 路径前缀,
只保留相对路径 "" 和 "",由 router.py 的 include_router 提供前缀。
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 09:50:28 +08:00 |
|
Cheng Zhou
|
7b397640b9
|
修复:添加 Vite 路径别名配置
问题:Docker 构建时 Vite 无法解析 @/ 路径别名
原因:vite.config.ts 缺少 resolve.alias 配置
解决:添加 @ 别名指向 ./src 目录
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 09:31:40 +08:00 |
|
Cheng Zhou
|
77b16ffa82
|
修复:添加 sass-embedded 依赖以支持 SCSS 编译
问题:Docker 构建时前端编译失败,缺少 sass-embedded 依赖
原因:新增的 Vue 组件使用了 SCSS 样式,需要 sass-embedded 来编译
解决:在 package.json 的 devDependencies 中添加 sass-embedded
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 09:29:42 +08:00 |
|
Cheng Zhou
|
35acf96d6b
|
前端权限管理:添加单元测试
新增测试文件:
- ApiPermissions.test.ts: 权限管理主页面测试
- ApiEndpointPermissions.test.ts: 接口级权限矩阵组件测试
- PermissionMonitoring.test.ts: 权限监控仪表板组件测试
测试覆盖:
- 组件渲染验证
- 事件发出验证
- 搜索和筛选功能测试
- 数据显示验证
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 09:23:17 +08:00 |
|
Cheng Zhou
|
c73c00d932
|
前端权限管理:修复组件数据结构和路由参数处理
修复内容:
- 修复 ApiPermissions.vue 中的路由参数处理,支持 id 和 projectId 两种参数
- 修复 ApiEndpointPermissions.vue 中的权限数据结构处理
- 修复 PermissionMonitoring.vue 中的缓存统计显示
- 修复 ProjectPermissionsModule.vue 中的权限矩阵更新逻辑
- 优化保存逻辑,保存后重新加载数据以确保同步
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 09:21:33 +08:00 |
|
Cheng Zhou
|
387d035b08
|
前端权限管理:实现接口级权限管理UI和监控仪表板
新增功能:
- 新增 ApiPermissions.vue 主页面,支持模块级/接口级权限切换
- 新增 ProjectPermissionsModule.vue 组件,展示模块级权限矩阵
- 新增 ApiEndpointPermissions.vue 组件,展示接口级权限矩阵
- 新增 PermissionMonitoring.vue 组件,展示权限系统监控仪表板
- 更新 projectPermissions.ts API 客户端,支持接口级权限和监控API
- 新增权限相关的 TypeScript 类型定义
- 更新路由配置,添加接口级权限管理路由
- 更新国际化文本,添加权限管理相关的中文文本
API 客户端新增函数:
- fetchApiEndpointPermissions: 获取接口级权限矩阵
- updateApiEndpointPermissions: 更新接口级权限矩阵
- fetchPermissionMetrics: 获取权限检查指标
- fetchCacheStats: 获取缓存统计
- fetchPermissionAlerts: 获取告警列表
- fetchPermissionHealth: 获取系统健康状态
- resetPermissionMetrics: 重置指标
- clearPermissionAlerts: 清除告警
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
|
2026-05-14 09:19:07 +08:00 |
|
Cheng Zhou
|
a17f4cc522
|
完善项目级权限与项目管理入口
- 新增项目成员候选用户接口,避免 PM 读取全局用户列表
- 按项目角色和权限矩阵控制项目管理、成员、中心与审计入口
- 合并侧边栏管理后台入口,统一从项目管理进入成员等模块
- 加强成员管理安全约束,禁止 PM 修改自己、系统管理员或更高权限角色
- 修复多项目角色缓存串用问题,并补充前后端回归测试
|
2026-05-13 14:16:15 +08:00 |
|
Cheng Zhou
|
ab1975d3c6
|
登录注册:优化协议弹窗与PM后台落点
授权项目负责人登录后,若当前项目具备项目成员、中心管理或审计导出读取权限,优先进入对应管理后台页面,避免仍停留在我的工作台。
抽取登录协议为共享内容模块,注册页新增服务条款和隐私政策弹窗,并在注册成功后展示待管理员审核提示。
补充路由、登录页和注册页静态回归测试,覆盖 PM 管理后台默认落点和协议弹窗行为。
|
2026-05-13 11:03:46 +08:00 |
|
Cheng Zhou
|
89cecce6b5
|
权限管理:新增医学审核项目角色
新增 MEDICAL_REVIEW 项目角色,界面显示为医学审核,并通过 Alembic 迁移扩展 user_role 枚举。
为医学审核配置独立默认权限:项目总览、参与者、风险问题、监查稽查、FAQ、共享库按医学审核职责开放,不再复制 PV 默认权限。
同步前后端类型、项目成员角色下拉、权限矩阵展示、文件分发角色兜底和用户协议文案,并补充权限矩阵回归测试。
|
2026-05-13 09:25:37 +08:00 |
|
Cheng Zhou
|
939fc70532
|
权限管理:接入项目级权限矩阵
新增项目级角色权限矩阵,覆盖 PM、CRA、PV、IMP、QA 等项目角色,并通过迁移表持久化各业务模块的读写权限。
后端将参与者、合同费用、物资、启动、里程碑、风险问题、监查稽查、FAQ、共享库、文件版本等接口接入矩阵校验,修复审计日志导出权限和登录 502 的依赖导入问题。
前端新增权限管理页面和项目路由权限映射,按矩阵控制导航显示、直接访问拦截、操作按钮启停,并限制管理后台仅 admin 和授权 PM 可进入。
补充后端权限归一化与接口静态测试、前端路由/权限工具/权限管理页面/工作台等回归测试。
|
2026-05-13 08:58:03 +08:00 |
|
Cheng Zhou
|
77e842637d
|
中文:收口权限与中心/立项配置改造
|
2026-05-12 10:16:52 +08:00 |
|
Cheng Zhou
|
6e90370a5f
|
移除特殊费用模块
|
2026-05-12 10:15:18 +08:00 |
|
Cheng Zhou
|
20d45cfdfe
|
修复项目配置草稿原子保存逻辑
|
2026-05-11 11:03:06 +08:00 |
|
Cheng Zhou
|
8d061a1520
|
兼容旧草稿避免项目信息被清空
|
2026-05-11 09:02:14 +08:00 |
|
Cheng Zhou
|
917ab7ccf1
|
feat: refine subject visits and project workflows
Add early termination visit workflow with ordering, non-applicable visit handling, visit window display, and medication adherence support.
Extend monitoring visit issue template fields, site scoping, setup draft project info handling, login security UI, attachment behavior, and related tests/migrations.
|
2026-05-09 17:10:34 +08:00 |
|
Cheng Zhou
|
74feca4467
|
feat: harden auth and study workflows
- replace plaintext login and unlock requests with RSA-OAEP/AES-GCM encrypted payloads
- add login challenge replay protection, production RSA key validation, and auth tests
- wire compose to environment-driven dev/prod settings without committing local secrets
- update setup-config smoke scripts and Postman docs for encrypted login
- add visit schedule migrations/tests and update study/subject setup workflows
|
2026-05-08 22:16:43 +08:00 |
|
Cheng Zhou
|
a7bbcaa5dc
|
fix: 优化业务表格展示与登录会话体验
|
2026-03-31 14:37:06 +08:00 |
|
Cheng Zhou
|
ceda34fd1d
|
fix: 修复筛选栏空关联告警
|
2026-03-31 12:16:04 +08:00 |
|
Cheng Zhou
|
4bebc64662
|
feat: 清理示例数据并统一空态体验
|
2026-03-31 11:20:57 +08:00 |
|
Cheng Zhou
|
fc74d1e9a9
|
fix: 对齐用户接口尾斜杠路径
|
2026-03-31 10:08:26 +08:00 |
|
Cheng Zhou
|
ba880dad9a
|
fix: 移除前端 API 环境入口
|
2026-03-31 09:44:49 +08:00 |
|
Cheng Zhou
|
9535fece6c
|
feat: 按历史痕迹恢复 nginx 同域入口
|
2026-03-31 09:16:41 +08:00 |
|
Cheng Zhou
|
27ba5eabff
|
feat: 移除仓库内 nginx 并拆分前端运行时
|
2026-03-30 22:04:15 +08:00 |
|
Cheng Zhou
|
3a1415d1e1
|
chore: 清理本地配置并重组文档结构
|
2026-03-30 17:36:09 +08:00 |
|