← 返回工作台

1总体概览

本系统共有 5 个数据同步模块,数据来源 全部为轻流 API,同步后写入本地 MySQL 数据库(nursing 库)。

轻流平台 (care.yckycn.com) │ ├── openApi ────────── ① 入住协议 (resident_info) │ └─ 脚本: sync_resident_info.py │ └─ AppKey: 8a7fonqg0o02 │ ├── VIEW API ──────── ② 护理记录 (nursing_records) │ └─ 脚本: sync_db.py │ └─ AppKey: 8h0q8g841402 │ ├── openApi ────────── ③ 评估记录 (assessment_records) │ └─ 脚本: sync_assessment.py │ └─ AppKey: 8hjq5k381401 │ └── openApi ────────── ④ 机构-休养区 (org_area_mapping) └─ server.py 内嵌逻辑 └─ AppKey: 8a7fonqg0o02 │ └── openApi ────────── ⑤ 不良事件 (adverse_events) └─ 脚本: sync_adverse_events.py └─ AppKey: dtonmhf02801
模块目标表数据来源同步脚本同步方式
① 入住协议resident_info轻流 openApisync_resident_info.py增量(默认)/ 全量(勾选)
② 护理记录nursing_records轻流 VIEW APIsync_db.py增量(按 record_time)
③ 评估记录assessment_records轻流 openApisync_assessment.py全量(--full)
④ 机构-休养区org_area_mapping轻流 openApiserver.py 内嵌全量
⑤ 不良事件adverse_events轻流 openApisync_adverse_events.py全量(唯一模式)
💡 关键结论:所有同步模块的数据来源均为轻流 API,并非 MySQL 数据库。本地 MySQL 是"目标",不是"来源"。

2入住协议同步(resident_info)

resident_info(入住/离院状态,护理等级,床位等)
轻流 openApi — AppKey: 8a7fonqg0o02
/opt/leakcheck/sync_resident_info.py
187f968c-48a4-4874-95bc-edb084a4083d

同步方式

模式触发方式行为耗时
增量同步 直接点击"开始同步" 对比数据库已有记录与轻流最新数据,只更新有变化的行(新增/更新/标记离院),无变化跳过 快(秒级)
全量同步 勾选"全量同步"后点击 DELETE FROM resident_info 清空整表,再从轻流逐条重新写入 慢(1-2分钟)

删除行为

⚠️ 增量同步:不删除。轻流已删除的人,本地数据库仍保留(脏数据)。
✅ 全量同步:会删除。先清空再全量写入,保证与轻流100%一致。

删除逻辑总结

场景增量同步全量同步
轻流新增一条入住协议新增新增
轻流更新一条入住协议更新更新
轻流删除一条入住协议不删除同步删除
📌 建议:日常同步直接点按钮(增量);如果怀疑数据不一致,或数据库被手动改过,再勾选"全量同步"彻底刷新。

3护理记录同步(nursing_records)

nursing_records(生命体征:体温、脉搏、呼吸、血压、血氧等)
轻流 VIEW API — AppKey: 8h0q8g841402
/opt/leakcheck/sync_db.py
6f206710-dbc6-43ac-9414-9d13842a2f41
https://care.yckycn.com/api/view/8h0q8g841402/apply/filter

同步方式

模式触发方式行为
增量同步 点击"开始同步" 获取数据库最新 record_time,仅从轻流拉取比它更新的数据,插入或更新
全量同步(30天) 内部脚本参数 拉取最近30天全量数据(非清空表),自动清理30天前的旧记录

删除行为

⚠️ 不会同步删除。轻流里删除了某条护理记录,本地数据库不会删除它。该记录会一直保留在 nursing_records 表中。

唯一的删除操作是自动清理 30天前 的旧记录(DELETE FROM nursing_records WHERE record_date < ...),与轻流是否删除无关。

删除逻辑总结

场景增量/全量同步
轻流新增一条护理记录新增
轻流更新一条护理记录更新
轻流删除一条护理记录不删除(本地保留)
记录超过30天自动清理(与轻流无关)
💡 说明:如果需要"轻流删除后本地也同步删除",需要修改 sync_db.py 增加对比删除逻辑(当前未启用此能力)。

4评估记录同步(assessment_records)

assessment_records(12项必查评估:能力、压疮、跌倒等)
轻流 openApi — AppKey: 8hjq5k381401
/opt/leakcheck/sync_assessment.py
187f968c-48a4-4874-95bc-edb084a4083d

同步方式

模式行为后续步骤
全量同步(--full) 清空表 → 从轻流分页拉取全部数据 → 逐条写入 自动运行 analyze_assessment.py 重新分析漏评

删除行为

✅ 会同步删除。全量同步先清空表再重新写入,轻流里已删除的评估记录不会出现在本地数据库中,等于同步删除。

删除逻辑总结

场景全量同步
轻流新增一条评估记录新增
轻流更新一条评估记录更新
轻流删除一条评估记录同步删除(表中不出现)

5机构-休养区同步(org_area_mapping)

org_area_mapping(机构 ↔ 休养区域映射关系)
轻流 openApi — AppKey: 8a7fonqg0o02
server.py 内嵌(_run_org_area_sync_in_background 函数)
19 家养老机构及其休养区

同步方式

模式行为
全量同步 从轻流拉取最新机构与休养区数据 → 清空并重新写入 org_area_mapping

删除行为

✅ 会同步删除。每次同步都是全量重建,轻流删掉的机构或休养区不会保留在本地。

删除逻辑总结

场景全量同步
轻流新增机构/休养区新增
轻流更新机构/休养区更新
轻流删除机构/休养区同步删除

5b不良事件同步(adverse_events)

adverse_events(不良事件类型、事发时间、地点、班次等)
轻流 openApi — AppKey: dtonmhf02801
/opt/leakcheck/sync_adverse_events.py
187f968c-48a4-4874-95bc-edb084a4083d(Header 传 accessToken)

同步方式

ℹ️ 不良事件为永久保留数据,始终采用全量同步模式,不做增量、不清理旧数据。
模式行为
全量(唯一模式) 不设日期过滤,拉取轻流所有记录;同步后删除轻流中已不存在的记录,确保 DB 与轻流完全一致

删除行为

✅ 会同步删除。每次全量同步后,比对本次拉取到的所有 apply_id,删除 DB 中存在但轻流中已不存在的记录:
DELETE FROM adverse_events WHERE apply_id NOT IN (本次拉取的所有apply_id)
这样确保 DB 数据与轻流业务表完全一致:轻流新增的会插入,轻流修改的会更新,轻流删除的也会从 DB 删除。

删除逻辑总结

场景全量同步
轻流新增一条不良事件新增(upsert)
轻流更新一条不良事件更新(upsert)
轻流删除一条不良事件同步删除
⚠️ 安全防护:若 API 返回的 apply_id 列表为空,跳过删除操作(防止误删全表)。

6删除逻辑对比总结

以下汇总:当轻流端删除了某条数据后,本地 MySQL 是否会同步删除。

模块同步方式轻流删除 → 本地同步删除?原因
🏠 入住协议 增量(默认) ❌ 不会 只对比差异,不检测删除
🏠 入住协议 全量(勾选) ✅ 会 先 DELETE 整表再全量写入
💊 护理记录 增量(按 record_time) ❌ 不会 只拉取新数据,不对比已删除
📋 评估记录 全量(--full) ✅ 会 清空表+全量写入,无残留
🏥 机构-休养区 全量 ✅ 会 每次全量重建映射表
⚠️ 不良事件 全量(唯一模式) ✅ 会 upsert + 删除轻流中不存在的记录
⚠️ 特别注意:护理记录同步是目前唯一一个完全不会同步删除的模块。无论增量还是30天全量,轻流删除的记录都会一直保留在本地,直到超过30天被自动清理。 如果需要"轻流删、本地也删"的能力,需要修改 sync_db.py 增加对比删除逻辑。
📌 快速记忆:
  • 全量同步(清空+重建)→ 会删除:入住协议(全量)、评估记录、机构-休养区
  • 全量同步(upsert+删除不存在记录)→ 会删除:不良事件
  • 增量同步(追加+更新)→ 不删除:入住协议(增量)、护理记录