第二时钟
你的药,开封后还能用多久
药盒上印着的是第一个时钟;药品开封后重新开始的倒计时,是第二个时钟。
使用手册
出品人:inoichi
▶ 打开应用(建议与本手册并排放,照着第二节点)
一、作品简介
一句话:把「开封那天起还能用多久」算清楚,并在快到期时用颜色和横幅提醒你。
「第二时钟」这个名字
每一盒药身上其实有两个时钟。
- 第一个时钟:药盒上印刷的有效期。它从出厂就开始走,谁都看得见。
- 第二个时钟:开封(首次启用)那一刻重新起算的那个期限。它没有印在任何地方,一旦拆封就开始倒数,而且经常比第一个时钟先走完。
眼药水拆封 28 天、混悬液配好 14 天、碘伏棉签开罐 7 天、75% 酒精倒出使用 1 个月——这些数字只写在说明书里,看完就忘。本作品做的就是把这块看不见的表盘显示出来,所以叫「第二时钟」。
解决的真实问题
- 药盒上写着 2027 年过期,其实上个月就该扔了。家里绝大多数误用都发生在这里:印刷效期还很久,但开封期限早已走完。
- 说明书里的天数记不住、也不好查。应用内置 1363 条常见药品开封效期数据 + 23 条剂型通用规则,打出药名就自动填好天数,不用翻纸片。
- 没人会主动去数日子。卡片按剩余天数排序,绿 / 黄 / 红三档一眼可辨;一旦有药到期,页面顶部直接压一条红色横幅。
二、30 秒快速体验路径(评委专用)
30 秒版:在「药品名称」输入 红霉素眼膏 → 点「确认添加」→ 展开页面最下方「⏱ 时间模拟」,连点 +20天 → +1天 → +7天。卡片依次由绿转黄转红,顶部弹出红色提示。就这三下。
下面是逐步版(约 90 秒),每一步会看到什么都写明了。
按下面的步骤,可以依次看到绿 → 黄 → 红三档预警。请按顺序照做。
路径 A · 手动路径(离线可跑,推荐先看这条)
- 打开应用,向下找到 添加产品 区域,它默认就停在 手动填写 页签,无需切换。
- 在 产品名称 里输入 红霉素眼膏,稍等片刻(或点一下输入框外面)。 输入框下方会出现提示:「📚 已按内置药库预填:开封后可用 28 天,储存 阴凉 · 眼用制剂启用后最多使用4周(《中国药典》对眼用制剂的通用规定)」。开封后可用天数 自动变成 28,下方小字写「已根据产品规则填写,可修改」。
- 首次启用日期 保持默认的 今天启用,直接点最下方 确认添加。 上方的药品卡片区域立刻出现一张绿色卡片:当前剩余天数「剩余28天」,并列出「开封截止日期」与「实际停用日期」。
- 展开页面下方的 ⏱ 时间模拟 面板,依次点:+20天 → +1天 → +7天。 三次点击后的卡片状态见下表。
- 看完后点 恢复今天(或点顶部黄条上的「点此恢复今天」)即可回到真实日期。
| 操作 | 剩余天数 | 卡片颜色 | 你会看到 |
|---|---|---|---|
| 刚添加 | 28 天 | 绿 | 「剩余28天」 |
| 点 +20天 | 8 天 | 绿 | 「剩余8天」,仍在绿档(绿档判据是 >7 天) |
| 再点 +1天 | 7 天 | 黄 | 「剩余7天」,卡片转黄——这一下正好压上 7 天黄线 |
| 再点 +7天 | 0 天 | 红 | 卡片写「今天到期,请停止使用」;页面顶部弹出红色横幅「红霉素眼膏已超期,请停止使用」 |
怎么知道自己在不在模拟日期:只要快进过,页面最上方就会常驻一条黄色提示条「⏱ 当前处于模拟日期 YYYY-MM-DD(非真实日期),点此恢复今天」,点一下即可回到今天。刷新页面也会自动回到真实日期,所以不必担心把模拟状态留给下一个人。
路径 B · 拍照路径(需要网络)
这条路径会把照片发给第三方 AI 服务做识别,请在有网络时体验;离线时应用会提示改用手动填写。
- 点 拍照识别 页签,再点 📷 拍照或选择图片。 提示语原文:「可上传1—4张,建议至少包含一张有效期特写」。一次最多取前 4 张。
- 选好图后进入「图片预览」,确认无误点 开始识别。 识别中显示「正在识别产品……」,旁边有 取消识别 可随时中断。
- 识别完成后出现「识别结果」列表,逐条列出产品名称 / 产品类别 / 规格 / 印刷有效期 / 识别依据。 若有效期没拍清楚,该条会就地给出一个日期输入框让你人工核对,或选择 暂不填写。
- 每条结果各带两个按钮:确认并添加 直接入库;修改信息 把该条内容灌进手动表单再改。 结果区底部还有 重新识别 与 切换为手动填写。
入库之后,颜色档与时间模拟的看法与路径 A 完全一致。
三、功能详解
3.1 两个时钟与颜色档
每张卡片同时跑两个时钟,谁先到期就听谁的:
- 印刷有效期——盒子上印的那个日期(可留空)。
- 开封后可用天数 + 首次启用日期——两者都填齐,才会算出「开封截止日期」。
卡片上的 实际停用日期 取两者中较早的一个,并注明停用原因,文案只有两种:「停用原因:因印刷有效期到期」或「停用原因:因开封后有效期到期」。颜色按这个较早的剩余天数判定:
| 剩余天数 | 颜色档 | 卡片文案 |
|---|---|---|
| 8 天及以上 | 绿 | 剩余 N 天 |
| 4 – 7 天 | 黄 | 剩余 N 天 |
| 1 – 3 天 | 红 | 剩余 N 天 |
| 正好 0 天 | 红 | 今天到期,请停止使用 |
| 已超过 | 红 | 已过期 N 天 + 「已超过开封有效期,请停止使用」或「已超过印刷有效期,请停止使用」 |
只要药箱里存在剩余天数 ≤ 0 的药,页面顶端就会出现红色横幅,把这些药名连起来写「……已超期,请停止使用」。
3.2 添加产品:两个入口
「添加产品」面板上有两个页签:拍照识别 与 手动填写,默认停在手动填写。两边内容都在,切换时若已有草稿或已选照片,会弹一个确认框(文案为「切换后将保留图片,但不再使用AI识别。」/「切换后将保留已填写内容。」),不会静默丢弃你填的东西。
手动填写的字段
- 产品名称(必填,也是药库匹配的钥匙)
- 使用人(见 3.5)
- 产品类别、规格
- 印刷有效期(日期选择)
- 首次启用日期:三个按钮 尚未启用 / 今天启用(默认) / 选择日期
- 开封后可用天数
- 更多信息 折叠区:品牌、剂型、储存说明、规则来源、备注
校验规则(实际生效的三条):产品名称不能为空;印刷有效期与开封后可用天数至少填一项;选「选择日期」时该日期不能晚于当前(模拟)日期。此外,若药箱里已有同名且尚未到停用日期的药,保存时会先问一句「药箱里已有「XX」,仍要再添加一条吗?」。
3.3 内置药库预填(离线可用)
在 产品名称 里打字,停手约 0.4 秒(或失焦)就会去查内置药库,命中后自动填 开封后可用天数、储存说明、规则来源三个字段。药库共 1363 条药品条目(含 1030 条别名,例如打「美林」能命中「布洛芬混悬液」)与 23 条剂型通用规则(如「滴剂 28 天」)。匹配结果分四种,提示语各不相同:
| 匹配情况 | 提示语 | 是否自动填 |
|---|---|---|
| 药名精确命中 | 📚 已按内置药库预填 | 是 |
| 近似命中 | 📚 已按内置药库近似匹配预填(药名未完全一致,请核对) | 是 |
| 只命中剂型规则 | 📚 已按内置剂型规则预填 | 是 |
| 命中多个期限不一致的条目 | ⚠️ 药库中有多个条目含该名称(……),开封期限不一致,未自动预填;请补全完整通用名(含剂型)或联网查询 | 否(宁可不填,也不猜) |
| 完全没收录 | 🔍 内置药库未收录「XX」,可点下方按钮联网查询开封效期 | 否 |
- 你亲手改过的开封天数不会被覆盖。只要你在 开封后可用天数 里输入过内容,该字段小字会变成「已手动修改」,此后药库预填不再动它。
- 但由药库自动填进去的值,会随药名改动被清空并重新计算。这是有意为之:药名从 A 改成 B 之后,还留着 A 的天数会更危险。所以「填完就此永远不再变动」的说法并不成立,请以字段下方那行小字(「已根据产品规则填写,可修改」/「已手动修改」)为准。
- 储存说明、规则来源同理:自动填的会随药名重算,你自己写过的不会被动。
3.4 联网查询开封效期
当药库没收录、判为歧义、或只命中剂型规则时,产品名称下方会出现 🔍 联网查询开封效期 按钮(药库精确/近似命中时该按钮不出现,因为没必要花这一次请求)。点击后会把药名发给第三方 AI 服务检索并提炼,回填天数与储存条件,提示语以「🌐 联网查询结果,以说明书为准」开头。
- 结果在本机缓存 30 天(最多 200 条),重复查同一个药名会直接命中缓存并标注「(本地缓存结果,未重复计费)」。
- 同一药名有 8 秒冷却;不同药名互不影响,可以连着查。
- 单次会话最多 20 次联网查询,超出后提示改为手动填写。
- 失败时提示「🌐 联网查询失败:……,请手动填写」,不会污染已有字段。
3.5 按家人分类
手动表单里有一个 使用人 下拉框,预置选项为:未指定 / 爸爸 / 妈妈 / 爷爷 / 奶奶 / 我自己 / 其他…。选「其他…」会出现一个输入框,可自己写(占位提示「填写使用人(可留空)」)。它的实际作用只有两处:
- 填了使用人的卡片,右上角显示一枚姓名徽章。
- 只要药箱里至少有一条记录填了使用人,药品卡片列表顶部就会出现一排筛选按钮:全部 加上各个使用人名字,点一下即可只看某个人的药。该人名下没有药时显示「这位成员名下暂无药品」。
3.6 药品卡片上能做的事
- 排序:按剩余天数从少到多自动排,最危险的排最上面。
- 标记开封:填了开封天数但还没启用的卡片,右侧有 标记开封 按钮,点一下把首次启用日期设为当前日期,倒计时立即开始。
- 无需开封计时:药库中有 148 条药品本来就没有开封天数(例如独立铝箔袋颗粒剂「拆袋当次冲服完,整盒按外盒效期」)。这类记录的卡片右侧显示灰字「无需开封计时」,只跑印刷有效期这一个时钟。
- 照片:拍照识别入库的卡片带缩略图,点击可看大图;手动录入的显示 💊 占位。
- 编辑 / 删除:卡片右上角 ··· 展开菜单。删除会二次确认:「确定删除“XX”吗?删除后无法恢复。」
- 冷藏提示:储存说明以「冷藏」开头的卡片会多一行「❄️ 离开冷藏环境请尽快使用」。
3.7 时间模拟
页面下方 ⏱ 时间模拟(评审体验用:快进日期即可看到到期预警效果) 可展开,内含:当前模拟日期显示、+1天 +7天 +20天 +30天 恢复今天 五个按钮,以及一个自定义日期输入框配 应用日期。
模拟日期会被保存、刷新后仍然生效,因此只要处于模拟状态,页面最顶端始终有一条黄色横条说明这一点,点它即可一键恢复真实今天。
四、数据与隐私
这一节按「哪些数据留在本机、哪些会离开本机」如实分开写。
留在本机的
- 全部药品记录(名称、使用人、规格、两个日期、备注等)保存在浏览器本地存储 localStorage 里,没有账号体系,没有服务器数据库,不上传、不同步。
- 拍照识别保留的照片:会被压缩到最长边 1024 像素的 JPEG,以内嵌数据的形式一并存进同一份本地记录。
- 联网查询的结果缓存(药名 → 天数)也存在本地,保留 30 天。
- 模拟日期状态同样存在本地,所以刷新后不会丢。
会离开本机的(务必知悉)
- 拍照识别 → 阿里云百炼(dashscope.aliyuncs.com):点「开始识别」后,你选中的照片本身会被上传到该服务处理。若照片里拍到了药盒之外的东西(处方、姓名、家庭环境等),这些内容也会一并被上传。
- 联网查询开封效期 → 智谱 AI(open.bigmodel.cn):点该按钮后,你填写的药名文本会被发送到该服务用于检索与提炼。
部署在服务器上的版本,请求由本站的服务端代理分别转发给上述两家,浏览器不携带任何密钥;代理只记录请求方法、路径、状态码、耗时与来源 IP,不记录照片内容与药名内容。
由此带来的取舍
- 清除浏览器数据 / 换浏览器 / 换设备 ⇒ 记录全部消失且无法找回,因为云端没有任何副本。重要记录请自行截图或另行记录。
- 无痕窗口关闭即清空。
- 本地存储写满时会提示「本地存储空间不足,请删除部分旧记录」——照片是主要占用来源。
五、常见问题
内置药库里没有我的药,怎么办?
提示会写「🔍 内置药库未收录「XX」……」。三个办法:①点 🔍 联网查询开封效期;②直接在 开封后可用天数 里按说明书手填;③若说明书没写开封期限,就只填 印刷有效期,卡片会只跑第一个时钟。
为什么提示说「有多个相近条目,未自动预填」?
因为你输入的名字同时像药库里好几条、而它们的开封天数并不一致(例如「碘伏」在库里就分蘸取使用、罐装棉签、独立包装单支三种,分别是 7 天、7 天、1 天)。这种情况下应用拒绝替你猜,请补全到完整通用名(最好带剂型),或改用联网查询。
我改了药名,开封天数怎么跟着变了?
这是有意设计。凡是药库自动填进去的值,都会随药名改动清空重算,以免把上一个药的天数留在新药身上。你自己手动输入过的天数不会被改——此时字段下方小字显示「已手动修改」。看这行小字就能分辨当前值的来路。
为什么点了 +30天,直接就「已过期」了?
因为大部分常见药的开封期是 28 或 30 天,加 30 天必然跨过终点。要逐档看到绿 → 黄 → 红,请按第二节的顺序点 +20天 → +1天 → +7天,或用自定义日期精确落在某一档。
顶部一直挂着红色横幅/黄色横条,是出错了吗?
不是。黄色横条表示你还停在模拟日期,且这个状态会跨刷新保留;红色横幅表示当前日期下确实有药已到期。点黄条上的「点此恢复今天」或时间模拟里的 恢复今天 即可回到真实日期,红色横幅通常随之消失。
没有网络还能用吗?
能。手动填写 + 1363 条内置药库 + 全部计时与提醒功能都不依赖网络。只有拍照识别和联网查询需要联网;识别服务未配置时,拍照页会直接提示「未配置识别服务,可直接使用「手动填写」,内置药库离线可用」。
拍照识别认错了怎么办?
识别结果区每条都可就地改:有效期没拍清会给出日期输入框让你人工确认(也可以选 暂不填写),开封天数可直接改数字,或点 修改信息 把整条灌进手动表单再改。结果区底部写着「识别仅辅助录入,请确认包装信息后保存。」——请务必核对后再保存。
「使用人」能让家人各自登录、各看各的吗?
不能。使用人只是记录上的一个标签,用于卡片徽章和列表筛选。本作品没有账号、没有多人共享、没有云同步,所有记录只在本机浏览器内。
换手机 / 清了浏览器缓存,记录还在吗?
不在了,且无法恢复——数据只存在原设备的浏览器本地存储里,没有云端副本。这是「不需要注册、不上传数据」这一选择的代价。
为什么有的药显示「无需开封计时」?
因为药库对这类药本来就不给开封天数(独立铝箔袋、单支独立包装、按外盒效期使用等)。这类记录只跑印刷有效期一个时钟,所以添加时需要填印刷有效期,否则无法保存。
六、免责声明
开封后有效期为参考值,请以药品说明书为准。
本应用不构成用药建议,不判断药品是否变质。
- 内置药库的天数为按公开资料与药典通则整理的保守参考值,同一药品不同厂家的说明书口径可能不同;一旦与说明书冲突,以说明书为准。
- 联网查询与拍照识别的结果由第三方 AI 生成,可能出错,仅作录入辅助,请核对包装与说明书后再保存。
- 本应用只按日期做算术,无法判断药品是否已经变质。即使卡片仍是绿色,出现变色、分层、异味、絮状物、结块等情况,请立即停止使用。
- 用药相关问题请咨询医师或药师。废弃药品请按当地规定处理。