# Medicine Cabinet v1.0 — 交付说明（2026-10-28）

需求来源：`~/workspace/app-demand-shortlist-v1.md` 第 3 名「家庭药箱·药品有效期管家（创意库 i105）」

## 需求复核结论（开工前快速复核，2026-10-28）

结论：**信号未反转，照计划开工。** 复核证据（Google Play / AppBrain，2026-10）：

- 「药品有效期/库存管理」角度的同类产品存在但全是极小体量独立产品，没有强势头部：My Home Medicine Box（AppBrain 显示总安装 11 次、无评分）、MedBox: Meds & Expiry Tracker（总安装 40 次、Google Play 显示 10+）、Expiree（通用到期提醒，含食品/药品）。HomeMed、MyPilly 体量稍大但主打「服药提醒 + 照片识别」，不是有效期库存角度。
- 如实标注与清单口径的差别：这个角度不是「完全没人做」，而是「有人做、都没做起来」——与清单给的「低」同质化判断一致（竞品少且弱），不构成反转。差异化押三点：极简登记（无照片识别、无账号）、30/7/过期三档分级提醒、完全离线。
- 风险提示：这类产品装机量天花板看起来不高，第一版定位是「低风险高完成度的保底款」（与清单排序理由一致），不要预期它跑量；价值在验证「记录 + 提醒」骨架和上架全流程。

## 产物

- APK：`~/workspace/your_files/MedicineCabinet-v1.0.apk`（15.6 MB，debug 签名，可直接安装）
- 源码：`~/workspace/medicine-cabinet-android/`
- 包名：`com.medicinecabinet.app`
- 版本：versionCode 1 / versionName 1.0
- 系统要求：Android 7.0（minSdk 24）及以上，targetSdk 34
- 技术栈：Kotlin + Jetpack Compose 纯原生（无 WebView）；本地 SQLite 存储（SQLiteOpenHelper）；**零联网**（aapt 校验：仅 POST_NOTIFICATIONS、RECEIVE_BOOT_COMPLETED 两个权限 + AndroidX 内部权限，未申请 INTERNET）、无账号
- UI 语言：英文优先（全球 Play 定位）

## 已实现功能（第一版只做的 2 个功能，已全部落地）

**1. 药品登记与到期排序清单**

- 登记字段：名称（必填）、有效期（日期选择器，口径提示 "The date printed on the packaging"）、存放位置（8 个预设位置 chip + 可自由输入）、用途备注（用户自己的记录，自由文本，无任何预设建议文案）
- 列表按到期日从近到远排序；每条带状态徽标：已过期（红）/ 7 天内（橙）/ 30 天内（黄）/ 正常（绿），文案为 "Expired 5 days ago" / "Expires today" / "Expires in 12 days" 等
- 顶部汇总计数（Expired / Expiring soon / Total）+ 筛选 chip（All / Expired / Expiring soon）
- 点任意一条可编辑、可删除（删除有确认框）

**2. 三档分级本地提醒 + 过期一键清理**

- 提醒三档（全部本地闹钟，统一上午 9:00）：到期前 30 天、到期前 7 天各一条（逐药品调度）；已过期走每日 9:00 汇总提醒一条（列出过期药名，直到清理掉为止）
- 实现：AlarmManager 非精确闹钟（免 SCHEDULE_EXACT_ALARM 权限）+ 开机广播重排 + 每次打开 App 自愈重排；药品增删改后自动重排全部提醒
- Android 13+ 通知权限引导：未授权时首页顶部橙色横幅说明 + 一键申请按钮；设置页同样有状态显示、开启按钮和「系统弹窗不出现时去系统设置开」的兜底说明
- 过期一键清理：有过期项时列表顶部红色卡片「Remove all」→ 确认框 → 一次删光全部过期记录

**设置页（支撑功能）**

- 通知状态与开启入口、提醒机制说明、隐私说明（本地存储、无账号、不联网）
- 免责声明（红线落实）：明确定位为家庭药品库存记录工具，不提供医疗建议/剂量指导/治疗建议，提示看包装与说明书、有疑问咨询医生或药剂师
- 全 App 文案已自查：无剂量建议、无服药指导、无疗效表述；备注字段为用户自由文本，App 不给任何预设用途文案

## 未做事项（第一版按要求砍掉，后续迭代候选）

- 药品数量/剩余量计数、条码扫描、拍照识别（竞品 MyPilly 的 AI 识别路线，第一版不跟）
- 数据导出/备份、多家庭成员共享（清单里的会员点，未接）
- 广告与会员付费（变现未接，先验证产品）
- 多语言（当前仅英文）
- 服药提醒类功能——**按红线永不做**（定位严格限定库存/有效期管理）

## 已知问题

- 提醒使用非精确闹钟，触发可能有分钟级漂移；个别厂商强省电策略下可能延迟到下次亮屏/开 App（打开 App 即自愈重排）。对「天」级提醒无实质影响，但「可靠性」是本品类的生命线，上架前建议在目标机型（尤其国产 ROM）真机实测一轮
- 过期判定口径：有效期当天算「Expires today」（未过期），次日起算过期并进入每日提醒——与「有效期至当日」的通行理解一致，特此明示
- 已过期汇总提醒每天 9:00 重复，直到用户清理过期项为止（有意为之，与竞品 HomeMed 的 daily alerts 口径一致）
- 本次仅完成构建 + aapt 静态校验，未在真机/模拟器实测 UI 与通知全流程
