第 22 堂|留下內部備註,守住公開邊界
在同案保存內部處理紀錄,核對重載與失敗保留,再檢查公開JSON沒有內部欄位。
備註保存要有後端重讀
同id保存重讀一致、他案備註不變。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 同id案件、internalNote契約、自己的虛構備註與前後資料
textarea有字不代表已保存。PATCH成功後GET同id,重新整理仍一致,才是這堂的保存證據。
先分清自己的作品、線上畫面與可啟動參考包;線上參考不提供API,請在本機閱讀隨包OPEN_REFERENCE.html後操作。
一起拆解:看見備註,不代表保存
本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。
這次的輸入
A案textarea輸入「已確認素材」,尚未按保存。
輸入 → 未保存(只在此頁記憶體)
PATCH → 保存中
GET同id核對 → 已保存這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 先編輯A,再切B回A,區分頁內暫存與後端資料。
- 按保存後等待PATCH,再GET同id核對internalNote;不存localStorage。
- 重整或重啟後重新登入讀A,檢查真實保存值。
正常應看到
已保存文字能由後端同案重讀;未保存文字清楚標示限制。
常見錯誤對照
textarea.value存在不能證明資料已寫入持久檔。
先預測,再說明原因
按保存後立刻斷線,應顯示已保存還是尚未確認?
跟著觀察
- 先讀「看見備註,不代表保存」的輸入,指出本關實際檔案或資料。
- 按保存後立刻斷線,應顯示已保存還是尚未確認?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- 同id保存重讀一致、他案備註不變。
- 能指出指定檔案與作用範圍。
替同一筆案件留下處理紀錄
同id保存重讀一致、他案備註不變。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 同id案件、internalNote契約、自己的虛構備註與前後資料
親手寫虛構處理紀錄,記同id,保存後重載。
跟著做
- 先核對同案id與另一案原備註。
- 請AI加internalNote保存、重讀與安全文字,不寫localStorage。
- 實際保存、重載、換案及標籤字串,核對他案不變。
建立同案內部備註保存
主要使用 Cursor 內建 AI;先附資料,再送出指令。
- 1.附上這些檔案與資料
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 同id案件、internalNote契約、自己的虛構備註與前後資料
- 2.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 用 @ 附上本關指定檔案,核對完整路徑;補實際觀察、輸入與結果,再貼下方 Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
- 3.預期回覆與操作
- 請AI加internalNote保存、重讀與安全文字,不寫localStorage。
- 標籤呈普通文字,不存localStorage且失效清暫存。
- 4.自己檢查結果
- 同id保存重讀一致、他案備註不變。
- 標籤呈普通文字,不存localStorage且失效清暫存。
建立同案內部備註保存 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堂同案延續,不以不同預置案假串接。 備註PATCH同id,internalNote最多2000字,成功後GET同id核對;只在目前頁面記憶體暫存未保存文字,不用localStorage或公開欄位。公開GET /api/services白名單只有services,詢問成功receipt只有id/status/createdAt。獨立故障後端在services回應洩漏debugNotes,只能在本機隔離測試,不公開部署。
本次任務:在現有案件明細加入internalNote textarea最多2000字及手動保存button,只PATCH /api/admin/cases/:id的internalNote,成功GET同id核對完全相同才標保存。保留進度、篩選、身份及其他案件,資料以value/textContent顯示,<strong>測試</strong>不執行HTML。不用localStorage;未保存內容只在此頁記憶體按id暫存,401/登出清掉。失敗保留目前文字,公開回應不應有備註;後端缺項列需講師修,不以藏畫面通過。列重載、他案不變、匿名拒絕與公開欄位驗收。
請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。Cursor AI 無法使用?改用 ChatGPT 備援
把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。
收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。
兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。
複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。
做完,自己確認
- 同id保存重讀一致、他案備註不變。
- 標籤呈普通文字,不存localStorage且失效清暫存。
線上只看前端畫面;完整操作請下載。本頁不提供案件API。把參考包解壓到新的資料夾,先讀 OPEN_REFERENCE.html,再啟動隨包後端;不要覆蓋自己的作品或案件。
下載本關可啟動參考包四種回饋要配合實際階段
四狀態依實際請求變化,未保存不假成功。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 四狀態預期與normal/update-error回應
輸入改變就未保存;請求進行中不能假成功;失敗保留文字,後端重讀一致後才是已保存。
一起拆解:保存舊版本時又繼續打字
本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。
這次的輸入
按保存A文字v1後,回應尚未到就把目前文字改v2。
送出v1 → 保存中
目前輸入v2 → 保留v2
後端確認v1 → 提示v1已存、目前v2未存這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 先分送出版本、目前輸入及後端重讀值三個位置。
- 保存成功只能確認送出版本;不可用舊回應覆蓋較新的頁內草稿。
- 另測503失敗保留文字、401清私密暫存,提示配合實際階段。
正常應看到
新輸入不遺失,保存回饋不把v2誤標已保存。
常見錯誤對照
每次成功都重畫textarea為v1,會吞掉使用者剛打的v2。
先預測,再說明原因
重讀v1正確時,為何仍不能把目前v2標示為已保存?
跟著觀察
- 先讀「保存舊版本時又繼續打字」的輸入,指出本關實際檔案或資料。
- 重讀v1正確時,為何仍不能把目前v2標示為已保存?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- 四狀態依實際請求變化,未保存不假成功。
- 能指出指定檔案與作用範圍。
讓保存狀態說真話
四狀態依實際請求變化,未保存不假成功。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 四狀態預期與normal/update-error回應
親手走一次改字、保存與503,分別記四種狀態。
跟著做
- 在正常備註版記目前提示與真實請求。
- 請AI只補四狀態回饋,不改API或加自動保存。
- 503保留文字,恢復後手動存並重讀,401清私密內容。
補齊備註四種保存回饋
主要使用 Cursor 內建 AI;先附資料,再送出指令。
- 1.附上這些檔案與資料
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 四狀態預期與normal/update-error回應
- 2.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 用 @ 附上本關指定檔案,核對完整路徑;補實際觀察、輸入與結果,再貼下方 Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
- 3.預期回覆與操作
- 請AI只補四狀態回饋,不改API或加自動保存。
- 失敗保留文字,恢復手動保存後同案一致。
- 4.自己檢查結果
- 四狀態依實際請求變化,未保存不假成功。
- 失敗保留文字,恢復手動保存後同案一致。
補齊備註四種保存回饋 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堂同案延續,不以不同預置案假串接。 備註PATCH同id,internalNote最多2000字,成功後GET同id核對;只在目前頁面記憶體暫存未保存文字,不用localStorage或公開欄位。公開GET /api/services白名單只有services,詢問成功receipt只有id/status/createdAt。獨立故障後端在services回應洩漏debugNotes,只能在本機隔離測試,不公開部署。
本次任務:只改善備註未保存、保存中、已保存、保存失敗四種回饋:input改變標未保存,請求中禁用保存,收到成功並GET同id一致才已保存;失敗保留文字並可手動再試。保留記憶體暫存、401/登出清理、不用localStorage、不自動保存。不要改後端、進度與篩選,列四狀態與重載驗收,未實測不填成功。
請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。Cursor AI 無法使用?改用 ChatGPT 備援
把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。
收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。
兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。
複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。
做完,自己確認
- 四狀態依實際請求變化,未保存不假成功。
- 失敗保留文字,恢復手動保存後同案一致。
線上只看前端畫面;完整操作請下載。本頁不提供案件API。把參考包解壓到新的資料夾,先讀 OPEN_REFERENCE.html,再啟動隨包後端;不要覆蓋自己的作品或案件。
下載本關可啟動參考包公開欄位白名單是後端責任
公開JSON無內部備註,非僅畫面不顯示。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 隔離fault-L22公開/管理JSON、API白名單與去敏感server片段
故障services API多出debugNotes,公開頁沒顯示仍能在JSON取得。要修後端輸出,不是再藏一層HTML。
一起拆解:沒有畫出,不代表沒有洩漏
本關18分鐘觀念:3分鐘看輸入、6分鐘逐步推演、5分鐘正常與錯誤對照、4分鐘先預測再說明。
這次的輸入
公開services JSON的故障副本多帶debugNotes,頁面沒有顯示它。
公開允許:{services:[{id,name}]}
不允許:debugNotes、internalNote、password這段是觀念縮圖,完整可操作檔案在本關參考成果;請依當前階段判讀,不把片段直接貼到任意位置。
一步一步推演
- 先在自己的隔離後端看實際公開JSON,不只看畫面。
- 只修公開輸出白名單,不刪真正私有備註資料或管理功能。
- 測公開清單、receipt及匿名管理拒絕,再登入讀原備註。
正常應看到
公開JSON不含內部欄位,合法管理仍能讀原備註。
常見錯誤對照
前端不渲染debugNotes不能防止其他人直接下載JSON。
先預測,再說明原因
為何修復公開輸出不應刪除資料庫的internalNote?
跟著觀察
- 先讀「沒有畫出,不代表沒有洩漏」的輸入,指出本關實際檔案或資料。
- 為何修復公開輸出不應刪除資料庫的internalNote?
- 依例子逐步說明正常結果與錯誤差別,再記下自己的預測;參考結果不是已完成的實測。
做完,自己確認
- 公開JSON無內部備註,非僅畫面不顯示。
- 能指出指定檔案與作用範圍。
畫面沒顯示,JSON也不能洩漏
公開JSON無內部備註,非僅畫面不顯示。
先準備
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 隔離fault-L22公開/管理JSON、API白名單與去敏感server片段
在隔離8781虛構案件保存備註,再匿名讀公開JSON。
跟著做
- 用獨立fault-L22與資料目錄啟動8781,保存一段虛構備註。
- 請AI依契約指出debugNotes無權公開,列後端最小修正交講師核對。
- 正常參考後端重驗匿名公開無備註、管理拒絕與合法讀寫。
修復公開回應的內部備註洩漏
主要使用 Cursor 內建 AI;先附資料,再送出指令。
- 1.附上這些檔案與資料
- 自己的service-site/frontend/admin-login.html、admin-cases.html、admin.js、config.js與styles.css
- 隨包API_CONTRACT.html與真實教學後端;只用虛構案件,不把密碼或Cookie貼給AI
- 隔離fault-L22公開/管理JSON、API白名單與去敏感server片段
- 2.貼到哪裡
- 在 Cursor 開啟自己的本關練習副本,進入內建 AI 對話;正常版與故障副本分開。
- 用 @ 附上本關指定檔案,核對完整路徑;補實際觀察、輸入與結果,再貼下方 Prompt。
- 先讀回覆與差異,只保存指定範圍;回到瀏覽器實際檢查。版本保存由自己操作,不讓 AI 代替驗收或提交。
- 3.預期回覆與操作
- 請AI依契約指出debugNotes無權公開,列後端最小修正交講師核對。
- 匿名管理仍拒絕,合法管理保存與同id重讀正常。
- 4.自己檢查結果
- 公開JSON無內部備註,非僅畫面不顯示。
- 匿名管理仍拒絕,合法管理保存與同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堂同案延續,不以不同預置案假串接。 備註PATCH同id,internalNote最多2000字,成功後GET同id核對;只在目前頁面記憶體暫存未保存文字,不用localStorage或公開欄位。公開GET /api/services白名單只有services,詢問成功receipt只有id/status/createdAt。獨立故障後端在services回應洩漏debugNotes,只能在本機隔離測試,不公開部署。
本次任務:只針對本機隔離fault-L22的教學後端:公開GET /api/services多出debugNotes,前端未顯示仍洩漏。依附公開/管理JSON與契約指出後端白名單缺口,最小修正是移除services回應的debugNotes,保留services id/name與合法管理備註讀寫。由講師核對後端差異;不能用隱藏HTML、刪真實資料或放寬授權結案。列匿名公開、匿名管理讀寫401、合法管理同id保存重讀三種驗收,未修到後端明示未完成。
請先閱讀我附上的相關檔案或資料,資訊缺漏時精確列出需要補充的項目,不猜檔名、API 或測試結果。說明以繁體中文撰寫,指出檔案與修改位置;檢查結果區分已知、待驗與未完成。只處理學生自己的練習副本,不改現有展示網站,不要求付費訂閱。Cursor AI 無法使用?改用 ChatGPT 備援
把上方指定的檔案內容、清單與補充資料,連同同一份 Prompt 貼入 ChatGPT 對話。只貼電腦上的路徑,無法讓它讀取你的檔案。
收到程式碼時,先核對檔名與修改位置,再手動存回自己的練習副本;若收到檢查表或補檔步驟,就逐項操作。不要把 Prompt 或程式碼框的反引號貼進 HTML/CSS。
兩邊都受限時,可先看既有參考成果、檢查差異與手動修改;未做過的 AI 生成或公開發布仍記待完成。不要貼入帳密、金鑰或真實個資。
複製只取得 Prompt 文字,檔案需自行在 Cursor 附上;本頁不會呼叫 AI 或自動完成關卡。
做完,自己確認
- 公開JSON無內部備註,非僅畫面不顯示。
- 匿名管理仍拒絕,合法管理保存與同id重讀正常。
線上只看前端畫面;完整操作請下載。本頁不提供案件API。把參考包解壓到新的資料夾,先讀 OPEN_REFERENCE.html,再啟動隨包後端;不要覆蓋自己的作品或案件。
下載本關可啟動參考包留下自己的檢查紀錄
記下實際做過的操作、差異與結果。還沒做的項目寫「待完成」。
勾選與筆記只保存在這個瀏覽器。
重設只清除勾選,網站檔案與檢查筆記都保留。