⏰ 定时任务规则文档
0任务总览
▼
以下任务均配置在服务器
查看方式:
root@110.42.221.197 的 crontab 中。查看方式:
ssh root@110.42.221.197 → crontab -l
| 状态 | 执行时间 | 任务脚本 | 业务功能 |
|---|---|---|---|
| ✅ 启用 | 01:30 每天 | sync_resident_info.py |
入住协议 → resident_info |
| ✅ 启用 | 02:00 每天 | sync_db.py --full |
护理记录 → nursing_records(全量) |
| ✅ 启用 | 02:10 每天 | analyze_db.py |
护理漏测分析 |
| ✅ 启用 | 02:30 每天 | sync_assessment.py --full |
评估记录 → assessment_analysis(全量) |
| ✅ 启用 | 02:40 每天 | analyze_assessment.py |
评估漏评分析 |
| ✅ 启用 | 03:00 每天 | sync_adverse_events.py |
不良事件全量同步 → adverse_events |
一入住协议同步 → resident_info
▼| 脚本路径 | /opt/leakcheck/sync_resident_info.py |
|---|---|
| 执行时间 | 30 1 * * * 每天凌晨 1:30 |
| 日志文件 | /opt/leakcheck/sync_resident.log |
| 轻流 API | https://care.yckycn.com/openApi/app/8a7fonqg0o02/apply/filter |
| 目标数据表 | nursing.resident_info |
业务逻辑
1. 调用轻流 API 拉取"入住协议"应用中的所有记录(分页,每页500条)
2. 将 API 数据与 MySQL resident_info 表对比
3. 只更新有变化的行(对比所有字段)
4. 变更轨迹记录在 change_log 字段(JSON)
5. 更新 sync_time 字段为当前时间
同步字段映射(共22个)
queId 208533040 → id_number(身份证号,主键)
queId 208533063 → caregiver_name(姓名)
queId 208533042 → gender(性别)
queId 208533035 → institution(机构)
queId 208533046 → admission_date(入住日期)
queId 208533043 → birth_date(出生日期)
queId 208533044 → age(年龄)
queId 208533140 → ethnicity(民族)
queId 208533048 → status(状态)
queId 208533056 → area(休养区/楼层)
queId 208533067 → bed_number(床位号)
queId 208533037 → care_level(护理等级)
...(其余字段见脚本)
⚠️ 注意事项:
- 增量同步:只更新变化的数据,不会删除记录
- 全量同步需加
--full参数(会 DROP TABLE,慎用!) - 数据量:目前约 4427 条记录
- 手动触发 API:
POST /api/resident/sync
二护理记录同步(全量)
▼| 脚本路径 | /opt/leakcheck/sync_db.py |
|---|---|
| 执行时间 | 00 2 * * * 每天凌晨 2:00 |
| 日志文件 | /opt/leakcheck/cron.log |
| 轻流 API | https://care.yckycn.com/openApi/app/...(护理记录应用) |
| 目标数据表 | nursing.nursing_records |
业务逻辑
1. 使用 --full 参数:全量同步,先清空再重新拉取所有数据
2. 分页拉取轻流"护理记录"应用数据
3. 写入 nursing_records 表
4. 同步完成后自动触发 analyze_db.py
⚠️ 注意事项:
- 全量同步,执行时间较长(约几分钟)
- 手动触发:点击工作台"护理漏测检查"卡片旁的同步按钮,或
POST /api/sync - 增量同步(不加 --full):只拉取最新 record_time 之后的数据
三护理漏测分析
▼| 脚本路径 | /opt/leakcheck/analyze_db.py |
|---|---|
| 执行时间 | 05 2 * * * 每天凌晨 2:05(紧接同步后) |
| 日志文件 | /opt/leakcheck/cron.log |
| 输出文件 | /opt/leakcheck/leak_check_result.json |
业务逻辑
1. 读取 nursing_records 表数据
2. 按护理等级判断每周应该测量几次生命体征
3. 检查最近3周内的漏测情况
4. 生成漏测报告,写入 leak_check_result.json
5. 前端 /leak 页面读取此 JSON 展示结果
说明:每次"护理记录同步"完成后会自动串联触发本脚本,无需单独配置依赖。
四评估记录同步(全量)
▼| 脚本路径 | /opt/leakcheck/sync_assessment.py |
|---|---|
| 执行时间 | 30 2 * * * 每天凌晨 2:30 |
| 日志文件 | /opt/leakcheck/sync_assessment.log |
| 轻流 API | 护理记录应用的评估相关数据 |
| 目标数据表 | nursing.assessment_records → assessment_analysis |
业务逻辑
1. 全量同步评估记录(--full 参数)
2. 分页拉取轻流数据
3. 写入 assessment_records 表
4. 同步完成后自动触发 analyze_assessment.py
五评估漏评分析
▼| 脚本路径 | /opt/leakcheck/analyze_assessment.py |
|---|---|
| 执行时间 | 35 2 * * * 每天凌晨 2:35(紧接同步后) |
| 日志文件 | /opt/leakcheck/cron.log |
业务逻辑
1. 读取 assessment_records 表数据
2. 按自然年检查12项必查评估完成情况
3. 最新评估年份决定是否认可(当年评估为有效)
4. 离院老人(is_discharged=1)默认不显示
5. 结果写入 assessment_analysis 表
6. 前端 /assessment 页面从此表读取数据
说明:每次"评估记录同步"完成后会自动串联触发本脚本,无需单独配置依赖。
5b不良事件同步(全量)
▼| 脚本路径 | /opt/leakcheck/sync_adverse_events.py |
|---|---|
| 执行时间 | 00 3 * * * 每天凌晨 3:00 |
| 日志文件 | /opt/leakcheck/sync_adverse_events.log |
| 轻流 API | https://care.yckycn.com/openApi/app/dtonmhf02801/apply/filter |
| 目标数据表 | nursing.adverse_events |
业务逻辑
1. 全量同步,不设日期过滤,拉取轻流所有不良事件记录
2. 使用 upsert(INSERT ... ON DUPLICATE KEY UPDATE)逐条写入
3. 同步完成后,删除 DB 中存在但轻流中已不存在的记录
4. 确保 DB 数据与轻流业务表完全一致
5. 不良事件为永久保留数据,不做增量、不清理旧数据
5c花名册同步(全量)
▼| 脚本路径 | /opt/leakcheck/sync_staff_roster.py |
|---|---|
| 轻流 AppKey | ahf2mv5g0g01 (openApi) |
| 目标表 | staff_roster(主表)、staff_transfers(调动子表) |
| 日志文件 | /opt/leakcheck/sync_staff_roster.log |
| 唯一键 | apply_id(主键)、id_number(业务唯一) |
| 调度方式 | cron 定时(每日 03:10) + 手动触发(API + 同步工具页面) |
1. POST /openApi/app/ahf2mv5g0g01/apply/filter(分页,pageSize=200,pageNum)
2. 解析响应,检查 queId=4(流程状态),仅同步"已通过"记录
3. 提取主表 40+ 字段,写入 staff_roster(ON DUPLICATE KEY UPDATE)
4. 解析岗位调动子表(queId=208716737,type=18),写入 staff_transfers
5. 解析教育经历子表(queId=208897645),取第一行最高学历
6. 同步后删除 DB 中存在但轻流中不存在的记录(全量替换)
💡 说明:手动触发可调用
使用
POST /api/staff-roster/sync,或在同步工具页面点击"花名册同步"按钮。使用
--full 参数可清空表后全量重新导入。
⚠️ 注意:花名册 API 分页参数必须使用
审批状态过滤无法通过 API 参数实现,需在脚本端解析
pageNum(不是 currentPage),否则始终返回第1页。审批状态过滤无法通过 API 参数实现,需在脚本端解析
queId=4 判断。
⚠️ 安全防护:若 API 返回的 apply_id 列表为空,跳过删除操作(防止误删全表)。
💡 说明:手动触发可通过同步工具页面,或调用
POST /api/adverse-events/sync。
5d照护计划同步(全量)
▼| 脚本路径 | /opt/leakcheck/sync_care_plans.py |
|---|---|
| AppKey | c0uduv881c02 |
| 目标表 | biz_care_plans |
| 日志文件 | /opt/leakcheck/sync_care_plans.log |
| 调度方式 | cron 定时(每日 04:30) + 手动触发(API + 同步工具页面) |
同步规则
📋 核心规则:
- 仅同步生效状态:只取
计划状态(queId=208851654)=生效的记录,忽略失效记录 - 一人一条去重:若同一老人有多条生效记录,保留
计划制定日期(queId=208851443)最新的一条 - 多选字段处理:饮食种类、治疗饮食为多选字段,值以逗号拼接存储
- 关联方式:通过
id_number与base_resident_info关联,基础信息以入住协议为准
同步流程
轻流 API (c0uduv881c02)
│ openApi apply/filter 全量拉取
▼
内存过滤 & 去重
│ 1. 筛选 plan_status = 生效
│ 2. GROUP BY id_number, MAX(plan_date)
▼
biz_care_plans (TRUNCATE + INSERT)
│
▼
通过 id_number 关联 base_resident_info 获取基础信息
同步字段(22个业务字段)
| queId | DB列名 | 字段说明 | 类型 |
|---|---|---|---|
| 208851323 | id_number | 身份证号码(主键) | 文本 |
| 208851443 | plan_date | 计划制定日期 | 日期 |
| 208852815 | education | 文化程度 | 下拉 |
| 208852814 | veteran | 退役军人 | 单选 |
| 208853660 | religion | 宗教信仰 | 下拉 |
| 208851669 | medical_history | 既往史 | 文本 |
| 208852816 | smoking | 吸烟 | 单选 |
| 208852817 | drinking | 饮酒 | 单选 |
| 208852829 | diet_restriction | 饮食禁忌 | 单选 |
| 208852830 | diet_restriction_detail | 具体饮食禁忌 | 文本 |
| 208852831 | diet_type | 饮食种类(多选) | 多选 |
| 208852832 | therapeutic_diet | 治疗饮食(多选) | 多选 |
| 208853929 | long_term_goal | 长期目标 | 文本 |
| 208853930 | short_term_goal | 短期目标 | 文本 |
| 208853228 | concern_1 | 1.您当前的关注点是什么 | 文本 |
| 208853229 | concern_2 | 2.您需要什么 | 文本 |
| 208853230 | concern_3 | 3.我们可以为您做什么 | 文本 |
| 208853231 | sleep_habit | 睡眠习惯 | 文本 |
| 208853232 | urination | 小便情况 | 文本 |
| 208853931 | defecation | 大便情况 | 文本 |
| 208852834 | special_note | 特殊服务注意事项 | 文本 |
| 208853932 | personalized_service | 个性化服务(长期) | 文本 |
💡 说明:手动触发可调用
POST /api/care-plan/sync,或在同步工具页面点击"照护计划同步"按钮。
同步耗时约35秒(全量约3350条),无需阻塞其他任务。
六每日执行流程
▼01:30 → sync_resident_info.py (入住协议 → resident_info)
02:00 → sync_db.py --full (护理记录全量同步)
02:10 → analyze_db.py (护理漏测分析)
02:30 → sync_assessment.py --full (评估记录全量同步)
02:40 → analyze_assessment.py (评估漏评分析)
03:00 → sync_adverse_events.py (不良事件全量同步)
03:10 → sync_staff_roster.py (花名册全量同步)
04:30 → sync_care_plans.py (照护计划全量同步)
↓
所有任务在凌晨 4:30 前完成,早间访问时数据已是最新。
✅ 状态:以上8个任务均已在服务器 crontab 中启用,无需手动干预,每天凌晨自动执行。
数据流向示意
轻流 API(入住协议)
│
▼
resident_info ──────────────────────────────────┐
│ JOIN
轻流 API(护理记录) │
│ ▼
nursing_records → analyze_db.py → leak_check_result.json
│
/leak 页面
轻流 API(评估记录)
│
assessment_records → analyze_assessment.py → assessment_analysis
│
/assessment 页面