返回任務地圖

讓案件有明確的進度

第 21 堂 · 第 1/3 關 · 觀念 18 分鐘+實作 42 分鐘

查看本堂完整六步
先接任務,準備開始

讓案件有明確的進度,每一步都有依據。

畫面用中文名稱,請求用契約字串。排序與篩選改的是顯示順序,不是案件身份。

這關帶走:狀態映射與結果數符合資料,PATCH使用所選id。

步驟 1/6 · 觀念 18 分鐘

先學一招:狀態顯示與實際值分開

狀態映射與結果數符合資料,PATCH使用所選id。

帶上你的裝備

  • 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
  • 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
  • 兩筆不同id與狀態映射、排序前後與PATCH證據

畫面用中文名稱,請求用契約字串。排序與篩選改的是顯示順序,不是案件身份。

先分清自己的作品、線上畫面與可啟動參考包;線上參考不提供API,請在本機閱讀隨包OPEN_REFERENCE.html後操作。

一起拆解:排序位置不是案件身份

本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。

這次的輸入

原資料A、B;排序後B排第一,但點B仍應更新B。

顯示索引0 → 可能是B
穩定id QH-B → 永遠指B
PATCH /api/admin/cases/QH-B

這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。

一步一步推演

  1. 先記兩案id、主旨與原狀態,改排序觀察位置。
  2. 事件帶row.id,狀態用pending/in_progress/completed,不拿顯示文字當API值。
  3. 更新B後重讀同id並核對A未變。

正常應看到

操作跟著id,排序不會改到另一案。

常見錯誤對照

把顯示第0筆對到原陣列第0筆,排序後可能更新A。

先預測,再說明原因

為何一筆案的id不能隨排序重編?

跟著觀察

  1. 先讀「排序位置不是案件身份」的輸入,指出本關實際檔案或資料。
  2. 為何一筆案的id不能隨排序重編?
  3. 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
列表排第二,就能用索引1當案件id嗎?

選一個試試看,答錯也可以再試。

這是你的實際操作確認,小測不會替你勾選。

步驟 2/6 · 實作 42 分鐘

動手挑戰:讓案件有明確的進度

狀態映射與結果數符合資料,PATCH使用所選id。

先準備

  • 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
  • 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
  • 兩筆不同id與狀態映射、排序前後與PATCH證據

親手記兩筆id、主旨與原狀態,再選其中一筆更新。

照這個順序開始

  1. 保留原同案,必要時seed兩筆虛構案供比較。
  2. 請AI加狀態/順序篩選、結果數及明細PATCH與重讀。
  3. 先反轉順序再更新指定id,確認另一案未變。

建立案件進度篩選與更新

主要使用 Cursor 內建 AI;先附資料,再送出指令。

1.附上這些檔案與資料
  • 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
  • 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
  • 兩筆不同id與狀態映射、排序前後與PATCH證據
2.貼到哪裡
  1. 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
  2. 用 @ 附上本關指定檔案,核對完整路徑;補實際觀察、輸入與結果,再貼下方 Prompt。
  3. 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
3.預期回覆與操作
  • 請AI加狀態/順序篩選、結果數及明細PATCH與重讀。
  • 成功重讀同案,未選案不變,失敗不假保存。
4.自己檢查結果
  • 狀態映射與結果數符合資料,PATCH使用所選id。
  • 成功重讀同案,未選案不變,失敗不假保存。
建立案件進度篩選與更新 Prompt(可收合)

你是協助零基礎學員的網站開發助手。我使用 Cursor 免費版編輯原生 HTML、CSS、JavaScript;必要時把你提供的內容手動貼入檔案。

情境與本次輸入:沿用提供的Node教學後端與HttpOnly session cookie,前端fetch credentials:include,不把認證存在localStorage。POST /api/auth/login、GET /api/auth/me、POST /api/auth/logout;受保護GET /api/admin/cases回cases摘要,GET /api/admin/cases/:id回case明細,PATCH同路徑只接受status及/或internalNote。未登入401、找不到404、欄位422、教學更新失敗503。案件使用實際穩定id,從第18堂同案延續,不以不同預置案假串接。 狀態值pending=待處理、in_progress=處理中、completed=已完成,三者可互轉。用manage seed補兩個不同id虛構固定案,原第18堂案件保留。前端可依狀態及新舊順序顯示,但更新必須用所選id,不用顯示索引。

本次任務:依契約加入全部/pending/in_progress/completed篩選與結果數、新到舊/舊到新順序;明細可選三狀態,PATCH /api/admin/cases/:id只傳status,成功後GET同id核對再重讀列表。永遠用所選穩定id,pending防連點,失敗保留選擇與提示,不改其他案件、不存localStorage。保留身份與公開詢問,本關先建立基本流程,下關再限定保留當前篩選。列兩筆id、反轉排序、篩選後更新與503回歸。

請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。
Cursor AI 無法使用?改用 ChatGPT 備援

把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。

收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。

兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。

複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。

卡住時,APPA 給你一點線索

線索 1|先找現象與證據

中文進度只顯示,請求傳契約值。

線索 2|再縮小修改範圍

先記兩案原狀態,才能看出是否誤改他案。

回到自己的作品,逐項檢查

  • 狀態映射與結果數符合資料,PATCH使用所選id。
  • 成功重讀同案,未選案不變,失敗不假保存。
  • 未實際完成的AI、發布或裝置驗收記待完成。
需要對照?看這一關的參考成果

先檢查自己的作品,再對照差異。開啟參考不會算完成。

查看前端參考畫面(完整操作請下載參考包)(另開分頁)

線上只看前端畫面;完整操作請下載。本頁不提供案件API。把參考包解壓到新的資料夾,先讀 OPEN_REFERENCE.html,再啟動隨包後端;不要覆蓋自己的作品或案件。

下載本關可啟動參考包

看參考包啟動與資料保留步驟

尚未完成可以先往下看,之後再回來補做。

保留依據與結果,再帶著作品往下走。

保留自己的修改差異與檢查結果。完成兩項操作確認再往下一關;也可以先閱讀,稍後補做。

關卡紀錄由你自行確認;本頁不會讀取 Cursor 檔案或自動驗收作品。

留下自己的檢查紀錄

這是第 21 堂共用筆記,換關卡仍會保留。未實際做過的操作寫「待完成」。

重設會清除第 21 堂六步勾選,筆記、另一堂進度與網站檔案保留。