第 19 堂|登入後,找到同一筆詢問
從真實登入與身份確認開始,讀列表及同id明細,分開載入與找不到。
登入成功不等於前端自行設權限
後端身份確認才讀案件,錯登入沒有私密資料。
先準備
- 自己的service-site/frontend既有inquiry.html、inquiry.js、config.js與styles.css;管理頁本關才新增
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 第18堂實際案件id與主旨;不含認證值的Network證據
後端驗證密碼與session,前端再讀me及案件。私密資料不能先寫在HTML或localStorage後才藏起來。
先分清自己的作品、線上畫面與可啟動參考包;線上參考不提供API,請在本機閱讀隨包OPEN_REFERENCE.html後操作。
一起拆解:權限從後端確認
本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。
這次的輸入
上一堂已建立一筆實際QH-id;這堂新增登入與案件頁。
登入 → 後端設HttpOnly Cookie
GET /api/auth/me → 200
GET /api/admin/cases → 找同id這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 先保留上一堂自己的資料目錄;新的管理頁與admin.js由本關新增,不能要求先附不存在檔案。
- 錯密碼測401;正確登入後由me確認身份,前端不讀或保存Cookie值。
- 在列表及明細核對第18堂同id、主旨與服務,不用預置案替代。
正常應看到
只有真正登入才讀到同一筆案件,密碼不進前端檔或AI對話。
常見錯誤對照
在前端設定isAdmin=true不能讓匿名API請求變成合法。
先預測,再說明原因
只看到登入頁跳轉,足以證明管理API受到保護嗎?
跟著觀察
- 先讀「權限從後端確認」的輸入,指出本關實際檔案或資料。
- 只看到登入頁跳轉,足以證明管理API受到保護嗎?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- 後端身份確認才讀案件,錯登入沒有私密資料。
- 能指出指定檔案與作用範圍。
先確認身份,再讀案件
後端身份確認才讀案件,錯登入沒有私密資料。
先準備
- 自己的service-site/frontend既有inquiry.html、inquiry.js、config.js與styles.css;管理頁本關才新增
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 第18堂實際案件id與主旨;不含認證值的Network證據
先用錯密碼,再用自己設定的密碼登入,記同案id。
跟著做
- 記第18堂實際id、主旨與服務,不貼密碼給AI。
- 請AI依契約加登入、me、列表與明細,安全文字顯示。
- 錯誤登入不見案件;正確登入核對同案列表與明細。
建立真實管理員登入與案件查閱
主要使用 Cursor 內建 AI;先附資料,再送出指令。
- 1.附上這些檔案與資料
- 自己的service-site/frontend既有inquiry.html、inquiry.js、config.js與styles.css;管理頁本關才新增
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 第18堂實際案件id與主旨;不含認證值的Network證據
本關才新增,不用先附檔:service-site/frontend/admin-login.html、service-site/frontend/admin-cases.html、service-site/frontend/admin.js。請讓 AI 建立在指定位置;收到程式碼時核對檔名後自行儲存。
- 2.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 只用 @ 附上上方已存在的指定檔案;「本關才新增」的檔案不需要先找或先建空檔,再貼下方Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
- 3.預期回覆與操作
- 請AI依契約加登入、me、列表與明細,安全文字顯示。
- 列表與明細使用第18堂實際同id。
- 4.自己檢查結果
- 後端身份確認才讀案件,錯登入沒有私密資料。
- 列表與明細使用第18堂實際同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堂同案延續,不以不同預置案假串接。 本堂新增兩個管理頁與admin.js;不從零重做認證、狀態更新及備註留後堂。保留APPA與紫綠色票。
本次任務:起始版已存在的檔案才需附上;本關新增service-site/frontend/admin-login.html、service-site/frontend/admin-cases.html、service-site/frontend/admin.js,不要要求先附不存在的檔案。依提供API契約新增admin-login.html、admin-cases.html與admin.js,沿用config及品牌。登入POST username/password,成功後由GET /api/auth/me確認,再讀受保護GET /api/admin/cases。以穩定id讀/api/admin/cases/:id的case,不用陣列位置。fetch credentials:include,由後端HttpOnly cookie認證,不存或記密碼/Cookie。資料以textContent/表單value呈現,401清私密DOM,錯登入不見案件;保留公開詢問。先完成基本登入、列表與同案查閱,下關才精修載入/404。列錯登入、正確登入、第18堂同id及手機鍵盤驗收。
請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。Cursor AI 無法使用?改用 ChatGPT 備援
把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。
收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。
兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。
複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。
做完,自己確認
- 後端身份確認才讀案件,錯登入沒有私密資料。
- 列表與明細使用第18堂實際同id。
線上只看前端畫面;完整操作請下載。本頁不提供案件API。把參考包解壓到新的資料夾,先讀 OPEN_REFERENCE.html,再啟動隨包後端;不要覆蓋自己的作品或案件。
下載本關可啟動參考包切案前先清舊明細
載入前舊明細清除,404與斷線不混同。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 正常/不存在id與明細請求、顯示前後證據
點另一案時先移除前案內容;404和一般斷線需要不同文字,不能繼續顯示上一筆。
一起拆解:切案先清掉上一筆
本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。
這次的輸入
先開案件A,再開不存在的B或讓B請求失敗。
選B → 先清A → 顯示載入
404 → 找不到B
連線失敗 → 說明讀取失敗這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 先記畫面顯示的id,確定目前是A。
- 開始B請求就清A,不等待B成功;不同錯誤使用對應文字。
- 用?case=not-found重現404,再從列表回A確認可恢復。
正常應看到
看B失敗時不會仍看到A而誤判成B的資料。
常見錯誤對照
只有成功回應才清畫面,失敗分支會殘留上一案。
先預測,再說明原因
B的請求失敗時,畫面還能不能顯示A的聯絡資料?
跟著觀察
- 先讀「切案先清掉上一筆」的輸入,指出本關實際檔案或資料。
- B的請求失敗時,畫面還能不能顯示A的聯絡資料?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- 載入前舊明細清除,404與斷線不混同。
- 能指出指定檔案與作用範圍。
讀取中與找不到,要說清楚
載入前舊明細清除,404與斷線不混同。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 正常/不存在id與明細請求、顯示前後證據
手動列正常id與not-found兩條路線,記預期狀態。
跟著做
- 先看基本版切案與錯id的顯示。
- 請AI只補明細loading與404,不改認證或列表。
- 登入後用?case=not-found,再回列表讀同案,核對沒有殘留。
補明細載入與找不到狀態
主要使用 Cursor 內建 AI;先附資料,再送出指令。
- 1.附上這些檔案與資料
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 正常/不存在id與明細請求、顯示前後證據
- 2.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 用 @ 附上本關指定檔案,核對完整路徑;補實際觀察、輸入與結果,再貼下方 Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
- 3.預期回覆與操作
- 請AI只補明細loading與404,不改認證或列表。
- 回正常id可恢復同案資料,身份機制保留。
- 4.自己檢查結果
- 載入前舊明細清除,404與斷線不混同。
- 回正常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堂同案延續,不以不同預置案假串接。 本堂新增兩個管理頁與admin.js;不從零重做認證、狀態更新及備註留後堂。保留APPA與紫綠色票。
本次任務:只改善admin.js的openCase:切案前清舊明細並顯示載入中;404明示找不到此案,一般斷線顯示讀取失敗;401仍清私密內容並提示登入。保留穩定id、請求路徑與cases列表、公開詢問。避免較早請求晚回而蓋掉新選取;檢查selectedId再顯示。列正常id、?case=not-found、切回正常及手機鍵盤,不重寫認證。
請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。Cursor AI 無法使用?改用 ChatGPT 備援
把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。
收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。
兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。
複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。
做完,自己確認
- 載入前舊明細清除,404與斷線不混同。
- 回正常id可恢復同案資料,身份機制保留。
線上只看前端畫面;完整操作請下載。本頁不提供案件API。把參考包解壓到新的資料夾,先讀 OPEN_REFERENCE.html,再啟動隨包後端;不要覆蓋自己的作品或案件。
下載本關可啟動參考包HTTP成功與資料形狀都要核對
明細URL與點選id一致,讀真正case。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- fault-L19點選id、Network URL與cases回應
明細應走:id並讀case,故障卻請求列表加query,拿到cases陣列。應修路徑,不改後端或假裝第一筆就是選定案。
一起拆解:列表與明細外層不同
本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。
這次的輸入
錯把明細網址寫成/api/admin/cases?id=QH-…;後端回200列表。
列表:/api/admin/cases → {cases:[...]}
明細:/api/admin/cases/實際id → {case:{...}}這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 在Network完整URL確認?id=不是契約的路徑參數。
- 只修明細請求路徑,編碼實際id;保留後端契約。
- 核對200以外的JSON外層與同id,再測不存在id。
正常應看到
明細取到case且id相符;404仍有清楚文字。
常見錯誤對照
把cases[0]當明細可能拿到其他案件,即使畫面暫時有資料也不對。
先預測,再說明原因
若列表第一筆換順序,錯用cases[0]會怎麼影響這項驗收?
跟著觀察
- 先讀「列表與明細外層不同」的輸入,指出本關實際檔案或資料。
- 若列表第一筆換順序,錯用cases[0]會怎麼影響這項驗收?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- 明細URL與點選id一致,讀真正case。
- 能指出指定檔案與作用範圍。
200回應,也可能用錯路徑
明細URL與點選id一致,讀真正case。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- fault-L19點選id、Network URL與cases回應
親手比較點選id、實際URL與回應外層。
跟著做
- 獨立fault-L19點同一案,記錯路徑與cases回應。
- 請AI只把明細請求改成正確:id路徑。
- 重驗同案、找不到、切案與公開詢問。
修復案件明細路徑
主要使用 Cursor 內建 AI;先附資料,再送出指令。
- 1.附上這些檔案與資料
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- fault-L19點選id、Network URL與cases回應
- 2.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 用 @ 附上本關指定檔案,核對完整路徑;補實際觀察、輸入與結果,再貼下方 Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
- 3.預期回覆與操作
- 請AI只把明細請求改成正確:id路徑。
- 不改列表或後端,不用第一筆假串接。
- 4.自己檢查結果
- 明細URL與點選id一致,讀真正case。
- 不改列表或後端,不用第一筆假串接。
修復案件明細路徑 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堂同案延續,不以不同預置案假串接。 本堂新增兩個管理頁與admin.js;不從零重做認證、狀態更新及備註留後堂。保留APPA與紫綠色票。
本次任務:故障openCase把GET明細寫成/api/admin/cases?id=選取id,實際回cases列表,沒有case。只把這一處改/api/admin/cases/加encodeURIComponent(id),保留case外層檢查與loading/404/401。不要拿列表第一筆湊明細、不改後端、不用索引。列同id主旨服務、正常/找不到與手機回歸。
請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。Cursor AI 無法使用?改用 ChatGPT 備援
把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。
收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。
兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。
複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。
做完,自己確認
- 明細URL與點選id一致,讀真正case。
- 不改列表或後端,不用第一筆假串接。
線上只看前端畫面;完整操作請下載。本頁不提供案件API。把參考包解壓到新的資料夾,先讀 OPEN_REFERENCE.html,再啟動隨包後端;不要覆蓋自己的作品或案件。
下載本關可啟動參考包留下自己的檢查紀錄
記下實際做過的操作、差異與結果。還沒做的項目寫「待完成」。
勾選與筆記只保存在這個瀏覽器。
重設只清除勾選,網站檔案與檢查筆記都保留。