1. 立项背景与目标
项目面向长沙望城区社区居家养老服务中心/站,解决三大真实痛点:机构上门服务后人工电话回访费时费力、易漏访,家属对服务过程不透明;工单派发靠微信口头通知、服务记录靠手写,难以留痕;老人多药易漏服错服、健康数据无法持续追踪。目标是打造一套轻量、低成本、可本地部署的数字化系统,通过「AI 服务回访(P0)」「居家服务工单(P1)」「用药提醒 + 健康档案(P2)」三个产品,实现机构、护理员、家属三端协同闭环,并满足数据加密与机构隔离的隐私要求。
2. 核心模块
- AI 服务回访:Excel 名单导入与手机号校验(错误标红)、创建回访任务(可全选/单选,短信/微信/电话三种方式,立即或定时)、短信/微信生成满意度链接供 1–5 星打分、电话模拟外呼并支持未接自动重试、结果记录与按护理员统计、Excel 报表导出。
- 居家服务工单:管理员建单派单、护理员接单/拒单(必填原因)/出发/到达签到(GPS + 拍照防作假)、提交服务记录(项目/时长/老人状态/至少 1 张照片/备注)、家属查看记录与照片并评价、服务类型字典管理。
- 用药提醒 + 健康档案:用药计划录入(多时段、批量 Excel 导入)、到点自动提醒、点击「已服用」确认、超时最多再提醒 3 次后标记漏服并通知家属、周/月依从率统计、血压血糖记录、健康档案打印/导出 PDF 供医生参考。
- 通用支撑:定时调度、模拟通道 + 站内通知 + 审计日志、Fernet 敏感字段加密、机构数据隔离、老年友好交互(大字模式、语音配置预留)。
3. 业务流程与功能路径
- 回访链路:管理员后台「回访」→ 下载模板填 Excel → 导入并校验 → 新建回访任务(选名单、方式、时间)→ 定时任务到点自动执行 → 家属点短信/微信链接打 1–5 星,或电话外呼后管理员登记结果 → 未接按策略自动重试 → 查看统计报表并导出 Excel。
- 工单链路:管理员「创建工单」(选老人、服务项目、护理员、时间)→ 派单并通知家属 → 护理员端接单 → 标记出发 → 到达签到(GPS + 拍照)→ 填写服务记录并提交完成 → 家属端查看照片、打 1–5 星评价,全程每步推送站内通知。
- 用药健康链路:管理员录入或批量导入用药计划 → 到点自动生成提醒(微信/短信/语音)→ 老人或家属点击「已服用」确认 → 超时自动升级再提醒,3 次未确认则标记漏服并告警家属;护理员/管理员录入血压血糖 → 家属端打印健康档案给医生。
项目采用「一个 Flask 进程 + 一个 SQLite 数据库 + 三端 Web 门户」的轻量单体架构,服务管理后台、护理员端、家属端三类角色,默认走模拟通道、不依赖任何云服务密钥,做到本地开箱即跑,先验证业务闭环,再按需接入真实服务。
设计上采用清晰分层:config.py 统一配置与环境变量,db.py 负责建表、种子数据与机构隔离(业务表带 org_id),crypto.py 处理敏感字段加密与哈希,channels.py 抽象短信/微信/外呼通道(provider 可插拔),scheduler.py 用 APScheduler 驱动定时任务,reports.py 用 openpyxl 处理 Excel 导入导出,routes/ 按角色拆成四个蓝图。前端为 Jinja2 模板 + 原生 HTML/CSS/JS,并针对老年用户做了字体放大与大字按钮。
模块技术栈:Flask 3.1 + Jinja2(Web 层)、SQLite(存储)、APScheduler(调度)、cryptography Fernet + Werkzeug + SHA-256(数据安全)、openpyxl(报表)、Pillow / Playwright / edge-tts / ffmpeg(演示物料)。我负责从需求到交付的整体实现,覆盖 P0/P1/P2 三个产品:
- P0 AI 服务回访:Excel 名单导入校验、三类回访任务、满意度链接、未接自动重试、统计报表导出;
- P1 居家服务工单:建单派单、接单/出发/GPS 签到/拍照/服务记录/家属评价全链路;
- P2 用药提醒 + 健康档案:用药计划与批量导入、到点提醒、服药确认、漏服告警、血压血糖与打印导出。
结果:三个产品 MVP 全部落地,配套 27 项端到端自测(用独立临时库、不污染演示数据)全部通过,README、PRD、验收清单与实现一一对应,可完整演示三端业务闭环。隐私与检索的矛盾:字段加密后无法按手机号查询,解决方式是手机号另存 SHA-256 哈希用于「姓名+手机号」校验,避免每次全表解密。
到点触发与重试策略:无外部消息队列,采用 APScheduler 每 15 秒轮询,用 attempt_no 递增控制回访重试与用药超时升级(3 次后告警家属),保证策略可观测、可演示。
三端实时协同:本地环境无真实推送,用站内通知表模拟订阅消息,每一步状态变更都落通知,家属端刷新即见,形成完整交互闭环。
无云资质也能演示真实业务:将短信/微信/外呼抽象为通道接口,默认 simulate 模式写审计日志并生成站内通知,同时预留腾讯云/阿里云 SDK 接入点,后续切换配置即可接真实服务。