iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
ChatGPT & Codex

窮鬼冰箱升級計劃系列 第 14 篇

【Day 14】冰箱內容物 Dashboard

  • 分享至 

  • xImage
  •  

前言

  • 由於目前還沒有一個 UI 可以快速又直覺看出內容物,所以先想像最想要知道的事情
  • 例如:什麼食材、放了多久、還剩多久、已經過期?

呈現方始構思

┌──────────────────────────────────────────────────────┐
│  🧊 beggarFridge                         9/28        │
│                                                      │
│  庫存 12 項       即將到期 3 項       已到期 1 項    │
├──────────────────────────────────────────────────────┤
│                                                      │
│  優先處理                                            │
│                                                      │
│ ┌──────────────────┐  ┌──────────────────┐           │
│ │ 豆腐             │  │ 光泉鮮乳         │           │
│ │                  │  │                  │           │
│ │ 距到期  1 天     │  │ 距到期  3 天     │           │
│ │ 已存放  4 天     │  │ 已存放  3 天     │           │
│ │ 9/29 到期        │  │ 10/1 到期        │           │
│ └──────────────────┘  └──────────────────┘           │
│                                                      │
│  其他庫存                                            │
│                                                      │
│ ┌──────────────────┐  ┌──────────────────┐           │
│ │ 雞蛋             │  │ 優格             │           │
│ │ 距到期  8 天     │  │ 距到期  5 天     │           │
│ │ 已存放  2 天     │  │ 已存放  1 天     │           │
│ └──────────────────┘  └──────────────────┘           │
└──────────────────────────────────────────────────────┘

後端 / API

from datetime import date


def calculate_inventory_status(
    added_at: date,
    expiration_date: date | None,
):
    today = date.today()

    stored_days = (
        today - added_at
    ).days

    if expiration_date is None:
        return {
            "stored_days": stored_days,
            "remaining_days": None,
            "freshness_status": "UNKNOWN",
        }

    remaining_days = (
        expiration_date - today
    ).days

    if remaining_days < 0:
        status = "EXPIRED"

    elif remaining_days == 0:
        status = "TODAY"

    elif remaining_days <= 3:
        status = "SOON"

    else:
        status = "NORMAL"

    return {
        "stored_days": stored_days,
        "remaining_days": remaining_days,
        "freshness_status": status,
    }

上一篇
【Day 13】實作條碼辨識程式
下一篇
【Day 15】從 Barcode 到庫存:讓掃描結果真正進入智慧冰箱
系列文
窮鬼冰箱升級計劃 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言