fix(mp): 修复小程序角色路由 + 前后端字段对齐 + E2E 测试报告

- 修复 stores/auth.ts 三种登录方式从错误路径提取 roles(resp.roles → resp.user.roles)
- 首页添加医护人员自动跳转医生端(useDidShow + isMedicalStaff)
- services/auth.ts credentialLogin 返回类型补全 roles 字段
- Web 前端 healthData.ts 字段对齐后端 DTO(indicators→items, content→overall_assessment)
- Web 前端 medicationReminders.ts 字段对齐(time_slots→reminder_times)
- 小程序 report.ts / reports 页面字段对齐后端(indicators→items, doctor_interpretation→doctor_notes)
- 小程序 patient.ts / followup.ts / alert.ts 补全缺失字段
- 后端 stats_handler.rs 权限码修正(health.patient.list→health.dashboard.manage)
- 新增 V1 E2E 测试报告和五专家组评审报告
This commit is contained in:
iven
2026-05-17 01:51:02 +08:00
parent aa27c5174c
commit c38967a36e
17 changed files with 898 additions and 67 deletions

View File

@@ -17,7 +17,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.patient.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let result = stats_service::get_patient_statistics(&state, ctx.tenant_id).await?;
Ok(Json(ApiResponse::ok(result)))
}
@@ -30,7 +30,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.consultation.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let result = stats_service::get_consultation_statistics(&state, ctx.tenant_id).await?;
Ok(Json(ApiResponse::ok(result)))
}
@@ -43,7 +43,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.follow-up.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let result = stats_service::get_follow_up_statistics(&state, ctx.tenant_id).await?;
Ok(Json(ApiResponse::ok(result)))
}
@@ -56,7 +56,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.patient.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let patients = safe_aggregate(
stats_service::get_patient_statistics(&state, ctx.tenant_id),
@@ -95,7 +95,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.patient.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let result = safe_aggregate(
stats_service::get_lab_report_statistics(&state, ctx.tenant_id),
"化验报告统计",
@@ -112,7 +112,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.patient.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let result = safe_aggregate(
stats_service::get_appointment_statistics(&state, ctx.tenant_id),
"预约统计",
@@ -129,7 +129,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.patient.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let result = safe_aggregate(
stats_service::get_vital_signs_report_rate(&state, ctx.tenant_id),
"体征上报率统计",
@@ -146,7 +146,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.patient.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let lab_reports = safe_aggregate(
stats_service::get_lab_report_statistics(&state, ctx.tenant_id),
"化验报告统计",
@@ -181,7 +181,7 @@ where
HealthState: FromRef<S>,
S: Clone + Send + Sync + 'static,
{
require_permission(&ctx, "health.patient.list")?;
require_permission(&ctx, "health.dashboard.manage")?;
let result = stats_service::get_personal_stats(&state, ctx.user_id, ctx.tenant_id).await?;
Ok(Json(ApiResponse::ok(result)))
}