- 06 Mar, 2026 10 commits
-
-
375242562@qq.com authored
后端:新增 DELETE /matching/batch/jobs/{id},运行中/待启动状态拒绝删除 前端: - batchMatchingService 新增 deleteJob() 方法 - 操作日志操作列:运行中/待启动显示停止按钮,其余状态显示删除按钮 - 删除前弹出 MUI Dialog 确认,展示试验名称、状态和进度信息 - 删除成功后自动刷新当前页,末页无数据时自动回退一页 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
trialService.list 加 status=recruiting 过滤,确保两个 Tab 的 临床试验选择器中只出现状态为"招募中"的试验项目。 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
后端:新增 PATCH /trials/{id}/status 接口,校验状态值合法性 前端: - trialService 新增 updateStatus() 方法 - TrialDataGrid 操作列新增状态变更按钮(SwapHorizIcon) 点击弹出 Menu,列出4种状态(招募中/已关闭/已完成/已暂停) 当前状态自动禁用,选中新状态后立即调用接口更新 - TrialsPage 处理 onStatusChange,乐观更新列表和详情面板状态 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
安装 recharts,将 DashboardPage 所有数据展示替换为图表: - 匹配状态分布 → 环形饼图(PieChart,4色区分符合/不符合/待审核/需补充) - 试验招募状态 → 环形饼图(招募中 vs 其他) - 最近批量匹配 → 柱状图(BarChart,完成对数/失败对数分色展示) - 系统关键指标 → 径向进度图(RadialBarChart,三项指标同轴对比) - 移除所有 Table/LinearProgress 进度条展示 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
- WorkStationPage: list 请求加 unread_only=true,仅拉取未读通知 - RecommendationDrawer: 移除已读/未读条件渲染,列表项统一以未读样式展示 - 标为已读 / 全部已读后触发 onRefresh,已读条目从列表消失 - 空列表提示改为"暂无未读通知" Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
- 表头补全"操作"列(此前数据行有对应单元格但表头缺失导致列不显示) - 运行中/待启动的任务显示停止按钮(StopCircleIcon),点击后调用 cancelJob 并刷新日志列表,停止中显示 CircularProgress - 同步更新当前追踪的 batchJob 状态 - colSpan 更新为 9(含新操作列) Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
- "开始时间"改用 created_at(HTTP 请求触发时即记录,早于后台任务) 避免 0 配对任务中 started_at 与 completed_at 在同一秒内赋值显示相同 - 新增"耗时"列:自动计算 created_at → completed_at 差值并格式化 (< 1 秒 / X 秒 / X 分 Y 秒),直观反映任务运行时长 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
matching_service.py: - run_matching 改为 upsert:同一 (patient_id, trial_id) 存在记录时 直接更新 LLM 结果,不再插入新行,彻底消除重复记录 - 仅首次匹配时向医生发送通知,重新匹配不重复推送 batch_matching_service.py: - existing_pairs 查询从全表扫描改为按目标试验过滤,提升性能 - 只查 MatchingResult 的 patient_id/trial_id 列(select 子集) Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
TopBar 的 AppBar zIndex 设置为 drawer+1,导致右侧抽屉面板被遮挡。 为 MatchingDetailDrawer、RecommendationDrawer、PatientDetailDrawer 统一设置 zIndex: theme.zIndex.modal(1300),高于 AppBar 层级。 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
- 后端:新增 DELETE /matching/results/{id} 接口(需登录权限) - 前端:matchingService 增加 delete() 方法 - 前端:WorkStationPage 操作栏加删除图标按钮,点击弹出 MUI Dialog 确认弹窗(含警告提示、患者/试验详情展示) 风格与系统其他删除确认框保持一致 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
- 05 Mar, 2026 6 commits
-
-
375242562@qq.com authored
将批次数据、同步任务、连接配置三处删除操作的 window.confirm() 替换为统一的 MUI Dialog 确认弹窗,包含警告高亮区、详情信息展示 和"确认删除"/"取消"操作按钮。 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
将引用 loadData 的轮询 useEffect 从 useCallback 定义之前移至之后, 消除 JavaScript 暂时死区(TDZ)导致的 ReferenceError。 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
375242562@qq.com authored
- SyncSource 模型新增 is_running 字段(SQLite 已迁移) - sync_service: 同步开始前设 is_running=True,try/finally 确保完成或报错后置 False - SyncSourceResponse 返回 is_running 字段 - 前端: 按钮禁用以 source.is_running(后端状态)为准,而非本地临时状态 有任务运行时每3秒自动轮询刷新,完成后停止轮询 禁用状态下 Tooltip 提示「同步中,请等待完成...」
-
375242562@qq.com authored
后端: - 新增 SyncBatch 模型(sync_batches 表): 记录每次同步的来源、模式、新增/更新数量 - Patient 模型增加 sync_batch_id 字段,打上每次同步的批次号 - sync_service: 每次同步生成 UUID 批次号,新增/更新患者均标记,结束后写入批次记录 - GET /sync/batches: 列出所有批次(含当前存活患者数) - DELETE /sync/batches/{id}: 删除该批次所有患者数据及批次记录 - SQLite 迁移: patients.sync_batch_id 列 + sync_batches 表 前端: - DataSyncPage 底部新增「同步批次记录」表格 展示批次号(hover显示完整UUID)、来源任务、模式、获取/新增/更新/当前患者数、时间 删除按钮: 当前患者数=0时禁用,点击弹确认框后批量删除 - syncService 新增 listBatches / deleteBatch 方法 - 同步成功提示带上批次号前8位 -
375242562@qq.com authored
- sync_adapters: thick mode 失败时抛出明确错误(含路径提示和操作指引) 路径不存在时提前检测并打印日志,不再静默吞异常 - main.py: 应用启动时提前初始化 Oracle thick mode 并输出日志 - DataSyncPage: 新建任务向导步骤间加载动画 Step0→1 获取表列表时显示半透明覆盖层 + 转圈 + 提示文字 Step1→2 切换时显示过渡动画 预览数据时右侧区域显示加载状态(转圈 + 说明文字) 下一步/上一步按钮加载期间自动禁用防重复触发
-
375242562@qq.com authored
后端新增: - 数据同步模块: SyncSource/ConnectionProfile 模型, sync_adapters/sync_service 支持 MySQL/PostgreSQL/Oracle/MSSQL, Oracle thick mode, SID/ServiceName 3步向导式同步任务配置, 表发现(list-tables), 增量同步 - 批量匹配模块: BatchMatchingJob 模型, 按试验筛选, 进度追踪, 取消支持 操作日志 trial_title 字段, 分页接口 - Dashboard 统计接口: 患者/试验/匹配/批量任务/通知 聚合数据 前端新增: - DashboardPage: KPI卡片, 匹配状态分布, 最近批量记录, 系统概况 - DataSyncPage: 连接管理(支持Oracle SID/ServiceName), 3步向导同步任务 - 批量自动匹配: 必须选择试验项目, 操作日志分页(每页10条) - AI匹配页面: Tab分离手动/批量匹配, 批量为默认 - 侧边栏新增数据概览入口, 首页跳转至 /dashboard
-
- 02 Mar, 2026 1 commit
-
-
375242562@qq.com authored
后端: - 新增用户、科室、角色、权限数据模型(SQLAlchemy) - 实现 JWT 认证(PBKDF2-SHA256 密码加密) - 新增 auth/users/roles/permissions/departments REST API - 用户-角色、角色-权限通过关联表直接操作(避免异步懒加载问题) - 新增 init_auth_data 初始化脚本(默认科室/角色/权限/管理员) 前端: - 新增登录页(LoginPage)与 AuthContext 认证上下文 - 新增 PrivateRoute 路由守卫、PermissionButton/PermissionGuard 权限组件 - Sidebar 根据用户菜单权限动态过滤,TopBar 展示用户信息与退出登录 - 新增系统管理页(用户管理、角色管理含权限树、科室管理) - 所有业务页面的新增/编辑/删除按钮接入权限控制,无权限时自动隐藏 Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
-
- 27 Feb, 2026 3 commits
-
-
375242562@qq.com authored
-
375242562@qq.com authored
Excludes: .venv, node_modules, dist, .env, *.db, __pycache__, .DS_Store, .idea
-
375242562@qq.com authored
-