# 03 拆票 每票固定開場句:**開工前先讀:00-resume.md、02-contract.locked.md、03-tech-spec.md、本票全文。** 家規:先寫會失敗的測試、親眼看它失敗、再實作;不准為了過關改測試;產物寫進本資料夾;遇到不能決定的丟 00-parking.md,不停下來問;收工前逐條自評認領的合約條號(做到/沒做到/為什麼)。 所有票都在 `app/` 資料夾,**不准改 `toeic-drill-01.html`**(合約 40)。票之間共用檔案,一律依序做、不平行。 | 票 | 名稱 | 認領合約條號 | 目標(打開就能實測) | 主要檔案 | 阻塞 | |---|---|---|---|---|---| | A | 骨架與題目資料 | 36、40 | 用 server 或直接開檔,看到與舊頁相同的「全部題目」畫面,功能照舊 | index.html、app.css、js/book.js、js/ui.js、tools/extract_book.py、audio/ | 無 | | B | 排程邏輯 | 6–17、20、21 | node 測試全綠:一次學習、6-1 起的新學順序、1/3/7 次複習、上限 10、完成判定 | js/plan.js、tests/plan.test.js | 無 | | C | 本機進度與搬家 | 31、32、33、38 | 重新整理不掉進度;舊 tq1v2 自動匯入;匯出/匯入 | js/store.js | A | | D | 這一次的三區+完成 | 4–12、21–24 | 打開就是三區;新學從 6-1;完成按鈕;左側進度與分鐘;看全部切換 | js/ui.js | B、C | | E | 點字+耳朵缺口清單 | 28、30 | 點字變色、學完有點字就排進複習;缺口清單可播 | js/ui.js、js/plan.js | D | | F | 複習區 | 13–18 | 到期句出現、淡色舊標記、兩個按鈕照規則排程 | js/ui.js | E | | G | 連續聽 | 19、20 | 一鍵連播這次的新學句,播完打勾 | js/ui.js | D | | H | 方法說明+看的時機提示+學習方法手冊子頁 | 1、2、3、25、26、27、29、42、43 | 第一次打開出現說明;每題提示;翻譯提示;手冊子頁 guide.html 與雙向連結 | js/ui.js、app.css、guide.html | D | | I | server 與同步 | 31、34、35、37 | server.py;密碼;換裝置接著讀;離線暫存;兩台不互蓋 | server.py、js/store.js、tests/server_test.py | C | | J | 手機版面 | 39 | 390px 寬度下全部可用;底部條+展開面板 | app.css、js/ui.js | D–H | | K | 部署說明+學習方法手冊 | (交付物) | DEPLOY.md;學習方法手冊 HTML | DEPLOY.md、docs/ | I | 孤兒條目檢查:1–43 都有票認領(40、41 為所有票共同遵守;42、43 來自 02-contract-amend-1.md)。