現在的tasks資料表其實已經有很多資料欄位了,所以今天要做的事讓這些欄位有 「明確規則」。
例如:
| 欄位 | 規則 |
|---|---|
title |
任務名稱 |
description |
任務詳細內容 |
estimated_minutes |
預估需要幾分鐘 |
importance |
1~3,越大越重要 |
deadline |
截止日期與時間 |
progress |
0~100% |
status |
todo / doing / done |
因為以後 AI 看到 importance = 3,我們要能告訴它 3 代表高重要性,而不是今天 3 代表重要,明天突然變成「不重要」。
{
"title": "完成 Python 作業",
"description": "完成 ZeroJudge 練習題",
"estimated_minutes": 120,
"importance": 3,
"deadline": "2026-09-10 23:59:00",
"progress": 0,
"status": "todo"
}
{
"title": "寫鐵人賽文章",
"description": "完成 Day 8 文章",
"estimated_minutes": 90,
"importance": 2,
"deadline": "2026-09-09 22:00:00",
"progress": 20,
"status": "doing"
}
{
"title": "準備考試",
"description": "複習離散數學",
"estimated_minutes": 180,
"importance": 3,
"deadline": "2026-09-12 18:00:00",
"progress": 0,
"status": "todo"
}
現在我們有:
Python 作業
120 分鐘
重要程度 3
9/10 截止
進度 0%
鐵人賽文章
90 分鐘
重要程度 2
9/9 截止
進度 20%
離散數學
180 分鐘
重要程度 3
9/12 截止
進度 0%
如果現在是:9/9 下午 6:00
你覺得應該先做哪個?
下意識會覺得:
「鐵人賽文章吧,因為今天就要截止。」
但如果今天只剩:30 分鐘
那可能又會變成:「90 分鐘的文章現在做不完,那先做其他事情?」
(只是舉例!)(只是舉例!)(只是舉例!)(鐵人賽文章沒做完根本不敢睡覺)
--
這就是我們的專案真正有趣的地方,任務不是固定排序的,它會受到很多條件影響。
/tasks/ai-data順便加入任務剩餘時間的功能。
現在的資料:
estimated_minutes = 120
progress = 50
代表:
原本預估 120 分鐘,目前完成 50%。
那我們可以先在 Python 算:剩餘時間 ≈ 120 × (1 - 50 / 100)
也就是剩餘 60 分鐘
就會得到:
{
"estimated_minutes": 120,
"progress": 50,
"remaining_minutes": 60
}
我們可以把這個資訊也整理給 AI,這是AI 排程系統後面一定會用到的資訊。
因為預估時間 ≠ 剩餘時間
@app.route("/tasks/ai-data")
def get_ai_data():
conn = get_connection()
cursor = conn.cursor(dictionary=True)
cursor.execute("""
SELECT
task_id,
title,
description,
estimated_minutes,
importance,
deadline,
progress,
status
FROM tasks
""")
tasks = cursor.fetchall()
for task in tasks:
task["remaining_minutes"] = (
task["estimated_minutes"]
* (100 - task["progress"])
/ 100
)
cursor.close()
conn.close()
return tasks
/tasks/ai-data?原本的GET /tasks是給一般 Todo List 使用的。
以後我們會需要:GET /tasks/ai-data
專門整理成「提供給 AI 分析的任務資料」
未來可能變成:
MySQL
↓
Flask
↓
整理任務資料
↓
LLM
↓
分析
↓
任務排序
所以現在先把這個中間層準備好。
今日架構:
MySQL
↓
任務原始資料
↓
Flask
↓
┌────────┴────────┐
↓ ↓
GET /tasks GET /tasks/ai-data
↓ ↓
一般 Todo List AI 分析資料
↓
LLM
↓
任務重新排序
下一篇我們可以開始來了解要怎麼呼叫AI。