ARTIFACT / EMOGUARD_PROJECT
emoguard_project(智情守护 · EmoGuard)
ACTIVE SYSTEM给失智症家庭照护者进行日常情绪追踪与心理健康筛查的微信小程序后端:记录情绪日记、早晚生态瞬时评估(EMA)、提交六项临床认知量表并生成健康报告,同时由定时任务向微信推送打卡提醒。
◈ System Profile ◈
◈ Access · 访问入口 ◈
◈ Sections · 章节 ◈
◈ README ◈
emoguard_project(智情守护 · EmoGuard)
给失智症家庭照护者进行日常情绪追踪与心理健康筛查的微信小程序后端:记录情绪日记、早晚生态瞬时评估(EMA)、提交六项临床认知量表并生成健康报告,同时由定时任务向微信推送打卡提醒。
状态:稳定运维期(功能开发冻结,生产单实例稳定运行);入口:https://cg.aoxintech.com(生产 API);仓库:fire-disposal/emoguard_project
本质
把微信小程序端的情绪打卡、EMA 日常抽样与多维度认知评估量表转化为时序健康档案并提供报告生成的后端服务系统。
选型
基于 Django 5.2 + Django-Ninja Extra 的容器化后端单体,数据落 PostgreSQL 15,缓存与定时队列走 Redis 7 + Celery,部署为单机 Docker Compose。
- 运行时
- Python 3.13(uv 管理依赖锁定)
- 后端
- Django 5.2
- Django-Ninja Extra (REST API)
- Gunicorn (WSGI)
- Django 5.2
- 数据与缓存
- PostgreSQL 15(生产)/ SQLite(本地开发)
- Redis 7
- 异步与调度
- Celery 5.5 + django-celery-beat(
-B参数内嵌于 Worker 节省内存)
- Celery 5.5 + django-celery-beat(
- 部署
- Docker Compose + Nginx 反向代理 + GitHub Actions
功能
- 微信用户认证:微信小程序 OpenID 快速登录与管理员账号密码登录,双 JWT Token 鉴权。
- 情绪日记与趋势:记录主观心情、文字日记、情绪日统计与 30 天变化趋势分析。
- EMA 日常抽样:每日早晚(9:00 与 21:00)情绪自评(抑郁/焦虑/精力/睡眠),服务端判定采样时段有效性。
- 综合认知评估:支持一次性提交 6 项标准量表(SCD-Q9 / MMSE / MoCA / GAD-7 / PHQ-9 / ADL)。
- 插件化量表引擎:基于 Python 类继承与自动注册机制(Registry),服务端独立完成分数计算与等级判定。
- 健康评估报告:多维度风险评级、雷达图与照护干预建议输出。
- 微信订阅推送:配额管理与 Celery Beat 驱动的早晚提醒消息下发。
- 未完成:端到端知识图谱问答;与可穿戴生理采集硬件的实时协议打通。
启动流程
uv sync # 安装 Python 依赖
cp .env.example .env # 配置 Django 密钥、数据库连接与微信凭证
uv run python manage.py migrate # 运行数据库迁移
uv run python manage.py runserver 8000 # 启动本地开发服务
前置:PostgreSQL 15 与 Redis 7 在跑;运行时密钥以 .env 为准(必需 SECRET_KEY、JWT_SIGNING_KEY、POSTGRES_PASSWORD);生产部署由 GitHub Actions 触发并走宿主统一备份层 CLI(datasets.toml 保留 30 份)。
边界与已知问题
- 架构假设:单 worker Gunicorn 运行,适用于当前小规模照护者样本,不支持多副本分布式部署。
- 状态冻结:项目已进入功能冻结期,不再接受新特性开发,仅修复安全漏洞与基础设施迁移。
- 数据库恢复:CI 部署前自动执行
pre-deploy-backup.sh备份数据库,但数据库崩溃时镜像回滚不会自动恢复 DB,需手动执行db-restore.sh --yes。 - 媒体文件边界:用户上传媒体保存在
/var/www/emoguard/media,不随 SQL 备份打包,需依赖独立宿主机备份。 - 微信通知配额:受微信小程序订阅消息单次授权机制限制,用户未在小程序内补充授权时推送会静默失败。
文档索引
- docs/deploy.md — 部署与运维指南
- docs/architecture.md — 系统分层与量表引擎设计
- docs/api.md — API 端点列表与数据契约