1 架构总览图

以下为当前系统的数据流向与架构分层示意图:

数据架构总览 ① 轻流业务系统(数据源 · Source of Truth) 所有业务数据写入轻流,保持唯一录入端,不反向同步 护理记录 120条/天 评估记录 12种类型 入住协议 在住状态 不良事件 待接入 照护计划 待接入 培训考核 待接入 人力资源 待接入 医生巡诊 待接入 API 拉取 ② ETL 同步层(数据抽取 · Transform · Load) 定时任务(cron)凌晨自动执行,增量同步 + 全量同步两种模式 sync_db.py 护理记录同步 sync_assessment.py 评估记录同步 sync_resident_info.py 入住信息同步 sync_XXX.py 待扩展 analyze_db.py 护理分析计算 analyze_assessment.py 评估分析计算 写入 / UPSERT ③ MySQL 数据仓库(数据副本 · 只读分析库) 所有数据以副本形式存储,不修改轻流原始数据,支持跨表关联分析 nursing_records ~50000条 assessment_records ~50000条 resident_info ~2800条 assessment_analysis 计算缓存 ... 待扩展 SQL 查询 / 分析 ④ 应用层(Flask Web · 业务功能) 护理漏测检查 评估漏测检查 数据规则查阅 同步工具页面 待扩展... 用户通过浏览器访问 → Flask(server.py) → MySQL查询 → 返回结果 → 前端渲染
架构模式:ETL(Extract-Transform-Load)+ 数据副本(Data Replica)+ 读写分离(Read/Write Split)。轻流是唯一的业务数据录入端(Source of Truth),MySQL 是只读分析副本。

💧 数据流向:饮水系统类比

将六层数据流比作城市供水系统,便于非技术人员理解各模块的作用:

轻流 API
水源
(数据源头)
同步脚本
抽水机
(sync_*.py)
MySQL
蓄水池
(数据仓库)
分析脚本
净水器
(analyze_*.py)
中间结果
直饮水
(result.json)
server.py
水管
(API接口)
前端页面
水龙头
(HTML页面)
层级 比喻 实际模块 缺了会怎样
1. 数据源水源轻流 API(入住协议/护理/评估等)无水可抽,整个系统空转
2. 同步层抽水机sync_*.py(7个同步脚本)数据库是空的,分析跑不了
3. 存储层蓄水池MySQL(10张表,base_/biz_ 前缀)数据无处存放
4. 分析层净水器analyze_*.py(漏测/漏评分析)原始数据有但核心指标出不来
5. 接口层水管server.py(Flask API 路由)前端调不到数据,页面打不开
6. 展示层水龙头HTML 前端页面(漏测/评估/HR/报表等)数据有但你看不见
⚠️ 核心结论:六层缺一不可。同步脚本虽不直接面向用户,但它是数据链路的起点——没有它,后面五层都是空的。四块核心代码(同步+分析+server+前端)合计 11,139 行,占总代码量的 49%。