iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
ChatGPT & Codex

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

【Day 17】保存期限與即期提醒規則

  • 分享至 

  • xImage
  •  

雜談

這幾天都在外,沒有帶硬體出門,就先繼續開發一些 API 晚點再來實測

前言

當前面的進出都已經做好之後,再來應該就要利用資料庫,來解決記性不好常常把食物放到過期的問題了

Design API

食材期限

  • 實作一個 API 用來撈出所有庫存的期限喔!
GET /api/alerts/expiration

Output

{
  "count": 3,
  "items": [
    {
      "name": "豆腐",
      "remaining_days": 1
    },
    {
      "name": "光泉鮮乳",
      "remaining_days": 2
    },
    {
      "name": "優格",
      "remaining_days": 3
    }
  ]
}

Implement

  • 真實案例中,有些食物可以放超久,也不會一次吃超多的那種,就應該提早個 30 天告知。 有些可以放兩週的食物,那過期前三天提醒。
  • 以下先用預設過期前三天提醒。
from datetime import date


def get_expiration_status(
    expiration_date: date | None,
    warning_days: int = 3,
):
    if expiration_date is None:
        return {
            "remaining_days": None,
            "status": "UNKNOWN",
        }

    today = date.today()

    remaining_days = (
        expiration_date - today
    ).days

    if remaining_days < 0:
        status = "EXPIRED"

    elif remaining_days == 0:
        status = "TODAY"

    elif remaining_days <= warning_days:
        status = "SOON"

    else:
        status = "NORMAL"

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

Data Flow

InventoryItem
   │
   ├── expiration_date
   ├── status
   └── product_id
           │
           ▼
        Product
           │
           └── warning_days
           │
           ▼
   ExpirationService
           │
      ┌────┼────┐
      ▼    ▼    ▼
   NORMAL SOON EXPIRED
           │
           ▼
 NotificationService
           │
           ▼
        Alert API
           │
           ▼
       Dashboard

上一篇
【Day 16】出庫管理
系列文
窮鬼冰箱升級計劃 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言