靈感取材:劇情裡的髒內褲/籃球/零食日常混亂
目標:把日常雜物變成「可觀測、可追蹤、可自動化」的家庭物資系統
工具:Odoo Inventory / Purchase / Maintenance / Barcode / Studio(選用)
參考資料:《親愛的彼得先生》——改編自知名作家葉揚同名原著,記錄一對新婚夫妻從求婚、結婚、蜜月,到迎接新生命的七百天, 甜蜜、摩擦、無奈、爆炸,真實的像你我身邊的故事!
https://godot.org.tw/web/funwithpeter/
劇情元素 | 痛點 | Odoo 模組 | 設計要點 | 自動化/提醒 |
---|---|---|---|---|
髒內褲(Laundry) | 到處亂丟、洗衣機沒滿不開洗 | Inventory + Project/Tasks | 把「洗衣籃」當庫存地點,內褲當「可消耗品」 | 計數>門檻→自動建立「洗衣任務」 |
籃球(Sports) | 沒充氣/裂痕不知 | Maintenance | 建立「設備:籃球」,記錄 PSI 與狀態 | PSI<門檻→維修單、提醒打氣 |
零食(Snacks) | 突然沒了/過期 | Inventory + Purchase + Barcode | 每種零食都有最小/最大庫存與「到期日」 | <Min 即自動草擬採購單;到期前7天提示 |
HOME/Laundry/Basket_01
(洗衣籃)HOME/Pantry/Snack_Shelf
(儲物櫃零食層)HOME/Sports/Locker
(運動櫃)HOME/Laundry/WashingMachine
(洗衣機)Min Qty
、Max Qty
,有效期限(Lot/Expiration)+條碼。使用 Odoo 的「導入(Import)」把下列 CSV 建成產品與位置。
products.csv
name,default_code,type,route_ids/id,uom_id/id,tracking,sale_ok,purchase_ok
Underwear,HOME-UND,consu,,product.product_uom_unit,none,False,False
Basketball,HOME-BALL,consu,,product.product_uom_unit,none,False,False
Snack - Potato Chips,SNACK-001,product,stock.route_warehouse0_mto,product.product_uom_unit,lot,False,True
Snack - Chocolate Bar,SNACK-002,product,stock.route_warehouse0_mto,product.product_uom_unit,lot,False,True
locations.csv
name,complete_name,usage
Basket_01,HOME/Laundry/Basket_01,internal
Snack_Shelf,HOME/Pantry/Snack_Shelf,internal
Sports_Locker,HOME/Sports/Locker,internal
WashingMachine,HOME/Laundry/WashingMachine,internal
建議:零食產品啟用「到期日」追蹤(Inventory → Configuration → Lots/Expiration)。
Snack_Shelf
。Basket_01
快速輸入計數。到 設定 → 技術 → 自動化 → 伺服器動作 新增。
觸發條件可選 Cron 或 on_write。語法為 Odoo Python(安全範例)。
Basket_01
計數 ≥ 15# Model: stock.quant
# Trigger: On Update (domain: location_id.complete_name ilike 'HOME/Laundry/Basket_01')
threshold = 15
basket_quants = records.filtered(lambda q: 'HOME/Laundry/Basket_01' in (q.location_id.complete_name or ''))
qty = sum(basket_quants.mapped('quantity'))
if qty >= threshold:
project = env['project.project'].search([('name','=','Household Ops')], limit=1) or env['project.project'].create({'name':'Household Ops'})
env['project.task'].create({
'name': f'洗衣任務 - Basket_01(共 {int(qty)} 件)',
'project_id': project.id,
'description': '請把 Basket_01 的內褲丟入 WashingMachine,設定行程:混合、冷水。',
'user_id': env.user.id,
})
min_qty
/ max_qty
(可用 Studio 新增自訂欄位,或用 Reordering Rules)min_qty
→ 產生 RFQ# Model: product.product
# Trigger: Scheduled Action (e.g., daily)
snacks = env['product.product'].search([('default_code','ilike','SNACK-')])
purchase_obj = env['purchase.order']
vendor = env['res.partner'].search([('name','=','FamilyMart')], limit=1) \
or env['res.partner'].create({'name':'FamilyMart'})
for p in snacks:
# 需在 Studio 建兩個整數欄位:x_min_qty, x_max_qty
min_q = getattr(p, 'x_min_qty', 3)
max_q = getattr(p, 'x_max_qty', 8)
onhand = p.qty_available
if onhand < min_q:
to_buy = max_q - onhand
po = purchase_obj.create({
'partner_id': vendor.id,
'order_line': [(0,0,{
'product_id': p.id,
'name': p.display_name,
'product_qty': to_buy,
'product_uom': p.uom_id.id,
'price_unit': 1.0,
'date_planned': fields.Datetime.now(),
})]
})
x_psi
x_psi < 7.5
→ 建 Maintenance Request# Model: maintenance.equipment
# Trigger: On Update (domain: name ilike 'Basketball')
for eq in records:
psi = getattr(eq, 'x_psi', 0)
if psi < 7.5:
env['maintenance.request'].create({
'name': f'籃球打氣/檢查 - PSI {psi}',
'equipment_id': eq.id,
'request_date': fields.Datetime.now(),
'description': 'PSI 低於 7.5,請打氣並檢查縫線/外皮裂痕。',
})
LOC-HOME-LAUNDRY-BASKET01
LOC-HOME-PANTRY-SNACK
LOC-HOME-SPORTS-LOCKER
SNACK-001
(馬鈴薯片,Lot/Exp)SNACK-002
(巧克力棒,Lot/Exp)HOME-UND
(內褲,消耗品)在 Odoo Barcode App 用印表機印出 QR/Code128 貼紙,手機掃碼即入出庫/盤點。
KPI | 定義 | 來源 |
---|---|---|
洗衣等候件數 | Basket_01 當前件數 | stock.quant |
本週洗衣循環 | 本週完成任務數 | project.task |
零食缺貨比 | <min_qty 的 SKU / 總 SKU |
product.product |
零食即將到期 | 7 天內到期的 lot 數量 | stock.production.lot |
籃球健康度 | 最近 30 天平均 PSI | maintenance.equipment |
家務分工平衡 | 各成員關聯任務完成占比 | project.task.user_id |
可用 Odoo 的 Dashboard 或 Spreadsheet 建交互面板;手機即時查看。
Basketball
,加 x_psi
欄位;建 Project:Household Ops
。Basket_01
→ 自動建洗衣任務AI 與 Odoo 只做兩件事:可視化 + 即時回饋。
關係與責任,仍需家人一起定義與維護。
家裡的感情,就像小型企業。
內褲亂丟、籃球漏氣、零食吃光卻沒人補,這些日常的「混亂」其實都像資料延遲、流程卡關。
劇情裡的男女主角吵歸吵、愛歸愛,真正的問題是「資訊不透明」:
誰該洗?誰該補貨?誰該負責?
Odoo 這套雲端 ERP,不只管企業,也能成為家的情緒儀表板——
讓愛情與日常變得有紀律、有回饋、又不失溫度。
家中事件 | 問題本質 | Odoo 對應模組 | 解決邏輯 | 情感隱喻 |
---|---|---|---|---|
髒內褲堆滿洗衣籃 | 無人追蹤、責任模糊 | Inventory + Project | 超過門檻自動建立「洗衣任務」 | 關係需要明確分工與回饋機制 |
籃球扁掉忘了打氣 | 忘維修、狀態不明 | Maintenance | PSI < 門檻自動開維修單 | 愛也需要「打氣」維持彈性 |
零食突然沒了 | 庫存無感、補貨延遲 | Purchase + Reordering Rule | 自動草擬採購單、即時提醒 | 關懷要即時補給,別讓關係餓著 |
家務誰多誰少爭執 | 感覺不平衡 | Project + Dashboard | 記錄每人任務完成率 | 公平是愛情的演算法 |
孩子亂拿零食 | 規則不清、資源浪費 | Barcode + Lot/Exp | 條碼管理+到期提醒 | 教養是從資料治理開始 |
兩人吵架又和好 | 溝通延遲、情緒卡頓 | Automation + Notification | 自動推播提醒「該對話了」 | 愛的修復,需要事件觸發器 |
🎯 一句話總結:
把愛情當系統,
把生活當資料,
把吵架當除錯。
Odoo 不只是企業的 ERP,它其實是「關係的 API」。
一次管理的不只是物品,而是「彼此的在意」。