iven
26a9781d4f
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
feat(health): 药物提醒后端 API + 后台任务统一 + dead code 清理
P1-3: medication_reminder 全栈实现
- migration 000096: 创建 medication_reminder 表(含患者关联/提醒时间/频率)
- entity + dto + service + handler: 完整 CRUD(乐观锁/软删除/审计日志)
- 路由注册: GET /patients/{id}/medication-reminders, POST/PUT/DELETE
- HealthError 新增 MedicationReminderNotFound
P2-4: 后台任务启动统一
- appointment_reminder 迁移到 HealthModule::on_startup()(启动时立即执行 + 周期循环)
- 删除 main.rs 中重复的 overdue_checker/points_expiration/appointment_reminder 调用
- 所有 Health 后台任务现由模块 on_startup 统一管理
P2-5: Web dead code 清理
- 删除 healthData.ts 中 getMiniTrend/getMiniToday(小程序专用端点,Web 无调用)
- 删除 patients.ts 中 getHealthSummary(标记 TODO 未使用)
2026-04-30 07:18:22 +08:00
..
2026-04-30 07:18:22 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-11 02:03:23 +08:00
2026-04-15 00:49:20 +08:00
2026-04-11 02:03:23 +08:00
2026-04-15 00:49:20 +08:00
2026-04-12 16:58:47 +08:00
2026-04-11 02:03:23 +08:00
2026-04-11 02:03:23 +08:00
2026-04-11 02:03:23 +08:00
2026-04-11 08:09:19 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-11 08:09:19 +08:00
2026-04-15 00:49:20 +08:00
2026-04-11 08:09:19 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 00:49:20 +08:00
2026-04-11 12:49:45 +08:00
2026-04-11 12:49:45 +08:00
2026-04-15 23:32:02 +08:00
2026-04-11 14:16:45 +08:00
2026-04-15 00:49:20 +08:00
2026-04-15 23:32:02 +08:00
2026-04-15 23:32:02 +08:00
2026-04-17 10:08:09 +08:00
2026-04-17 10:32:12 +08:00
2026-04-17 21:42:40 +08:00
2026-04-19 08:46:28 +08:00
2026-04-19 00:49:00 +08:00
2026-04-19 12:16:24 +08:00
2026-04-19 18:25:03 +08:00
2026-04-23 23:25:53 +08:00
2026-04-24 08:05:58 +08:00
2026-04-24 00:58:40 +08:00
2026-04-25 00:21:49 +08:00
2026-04-24 07:50:14 +08:00
2026-04-24 08:36:22 +08:00
2026-04-25 11:31:54 +08:00
2026-04-25 08:58:58 +08:00
2026-04-25 10:22:44 +08:00
2026-04-25 13:45:11 +08:00
2026-04-25 13:51:50 +08:00
2026-04-25 16:51:38 +08:00
2026-04-25 17:24:32 +08:00
2026-04-25 19:44:46 +08:00
2026-04-26 00:54:56 +08:00
2026-04-26 00:54:56 +08:00
2026-04-26 00:54:56 +08:00
2026-04-26 01:55:01 +08:00
2026-04-26 03:37:31 +08:00
2026-04-26 03:37:31 +08:00
2026-04-27 00:21:02 +08:00
2026-04-27 00:21:02 +08:00
2026-04-27 00:21:02 +08:00
2026-04-27 00:21:02 +08:00
2026-04-28 00:20:11 +08:00
2026-04-27 00:21:02 +08:00
2026-04-26 10:37:52 +08:00
2026-04-26 10:27:58 +08:00
2026-04-26 12:17:49 +08:00
2026-04-26 12:17:49 +08:00
2026-04-26 12:23:10 +08:00
2026-04-26 12:23:10 +08:00
2026-04-26 12:35:27 +08:00
2026-04-26 12:35:27 +08:00
2026-04-26 12:35:27 +08:00
2026-04-26 13:10:53 +08:00
2026-04-28 00:20:11 +08:00
2026-04-27 11:31:40 +08:00
2026-04-27 11:45:49 +08:00
2026-04-27 12:50:16 +08:00
2026-04-28 00:20:11 +08:00
2026-04-27 14:40:28 +08:00
2026-04-27 18:52:03 +08:00
2026-04-27 18:52:03 +08:00
2026-04-27 18:52:03 +08:00
2026-04-27 19:38:39 +08:00
2026-04-28 00:57:41 +08:00
2026-04-28 11:31:54 +08:00
2026-04-28 11:34:37 +08:00
2026-04-28 11:47:44 +08:00
2026-04-28 19:24:32 +08:00
2026-04-28 19:57:51 +08:00
2026-04-29 06:17:23 +08:00
2026-04-29 06:28:30 +08:00
2026-04-30 07:18:22 +08:00