## Context C3 后端 record/abnormal/order.today 已就绪。护理员 APP(Flutter)是录入主战场。技术栈 Riverpod+dio+sqflite+go_router。 ## Goals / Non-Goals **Goals:** 登录、M1 今日任务、M2 服务执行、拍照分档、异常上报、扑空、离线队列。 **Non-Goals:** 家属端、质控/派单、结算金额。 ## Decisions 1. 技术栈 Riverpod+dio+sqflite+go_router,token 落 shared_preferences。 2. feature-first 目录:core/(api/db/router/theme/auth)+ features/{auth,today,service,abnormal}/。 3. API base 可配置(--dart-define);统一响应 {code,message,data};token Authorization: Bearer。 4. 离线队列 sqflite + client_md5 + POST /record/offline/sync。 5. 签到/签退时间不传(服务器取时);定位失败不阻塞;必拍未拍 3001 双保险(前端签退前置 + 后端硬拒)。 ## 数据流 登录 → GET /order/today → POST /record/checkin → item/save → photo/upload → checkout;POST /abnormal(异常/扑空);离线 sync。 ## Risks 离线幂等(client_md5);必拍未拍双保险;照片压缩 ≤500KB。 ## 验收 nurse01 登录 → 今日任务 → 签到勾项目拍照签退 → 留痕 submitted;异常/扑空落库;断网补传。