fix(health): 数据完整性 + 代码规范修复 — FK约束/版本类型统一/软删除过滤
Some checks failed
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

数据完整性:
- 新增 8 个 FK 约束 (follow_up_task→appointment, points_transaction→account/rule/order,
  points_order→product/patient, offline_event_registration→event/patient)
- critical_alert/critical_alert_response version 字段 i64→i32 统一
- vital_signs_daily_service 聚合查询添加 DeletedAt.is_null() 过滤

代码规范:
- 新增 api/upload.ts 封装文件上传,ArticleEditor 改用 service 层
- 新增 messages.updateSubscription,NotificationPreferences 改用 service 层
- 修复 erp-message SSE 测试编译错误 (移除 serde_urlencoded 依赖)
This commit is contained in:
iven
2026-05-04 11:22:54 +08:00
parent 30a578ee00
commit 444dc7dd8d
11 changed files with 245 additions and 20 deletions

View File

@@ -251,7 +251,7 @@ mod tests {
#[test]
fn sse_query_parses_patient_ids() {
let query: SseQuery = serde_urlencoded::from_str("patient_ids=id1,id2,id3").unwrap();
let query = SseQuery { patient_ids: Some("id1,id2,id3".into()) };
assert!(query.patient_ids.is_some());
let ids = query.patient_ids.unwrap();
assert_eq!(ids, "id1,id2,id3");
@@ -259,17 +259,17 @@ mod tests {
#[test]
fn sse_query_default_is_empty() {
let query: SseQuery = serde_urlencoded::from_str("").unwrap();
let query = SseQuery::default();
assert!(query.patient_ids.is_none());
}
#[test]
fn subscribed_patient_ids_parsing() {
let query: SseQuery = serde_urlencoded::from_str("patient_ids=aaa,bbb,ccc").unwrap();
let set: Option<HashSet<String>> = query.patient_ids.map(|s| {
let query = SseQuery { patient_ids: Some("aaa,bbb,ccc".into()) };
let set: Option<HashSet<String>> = query.patient_ids.map(|s: String| {
s.split(',')
.map(|id| id.trim().to_string())
.filter(|id| !id.is_empty())
.map(|id: &str| id.trim().to_string())
.filter(|id: &String| !id.is_empty())
.collect()
});
assert!(set.is_some());