給家中兩個小孩使用的靜態學習平台。根目錄是 registry 驅動的 hub,站內 app 共用 child 身分、Cloudflare Worker 進度同步與獎勵素材;題庫資料處理 pipeline 仍保留在同一個 monorepo。
線上入口:https://kids.linshuhuan.com/(煦誠學習/秉樸學習/家長後台)
此區塊由 App registry 與 task catalog 自動產生,勿手改。相同資料供家長作品白板使用;操作與歸檔規則見任務庫。
包含 draft/parked 與外部 App;對象是 registry 預設,不是孩子目前的家庭設定。App 上下架不代表工作已完成,沒有明確工作狀態就顯示「未標記」。
| App | 來源 | 可用版本 | 工作狀態 |
|---|---|---|---|
| Native Camp Review | aiden-study/docs/nativecamp | 不計分預覽 | 未標記;App 上下架:啟用;未另標記工作狀態。 |
| 題庫練習 | aiden-study/docs/study | 網頁 | 未標記;App 上下架:啟用;未另標記工作狀態。 |
| 長除法練習 | aiden-study/docs/math | 網頁 | 未標記;App 上下架:啟用;未另標記工作狀態。 |
| 英文拼字 | aiden-study/docs/spelling | 網頁 | 未標記;App 上下架:啟用;未另標記工作狀態。 |
| 數織解謎 | aiden-study/docs/math/nonogram | 網頁 | 未標記;App 上下架:啟用;未另標記工作狀態。 |
| 注音練習 | aiden-study/docs/zhuyin | 家長試玩 | 未標記;App 上下架:啟用;未另標記工作狀態。 |
| 動物守護者 | animal-fight | 探險卡 PDF、任務狀態卡 PDF、規則與用法 | 未標記;列印作品;舊 GitHub Pages 網址已失效,改用公開 PDF 與規則。未另標記工作狀態。 |
| 英文閱讀 | aiden-english | 外部網頁 | 未標記;App 上下架:草稿;未另標記工作狀態。 |
| 隕石數學防衛隊 | 99-meteor | 外部網頁 | 未標記;App 上下架:暫不上架;未另標記工作狀態。 |
每份任務保留一個來源入口;白板把同系列合成一列,展開後仍可找到每份素材。活動日期、狀態與對象由同一份登錄產生於任務索引。
可跨任務沿用的內容從 shared 索引 找;例如兒童閱讀心智圖。這些是經驗或資源,不另外計為一份作品。
下列作品保留其明確分支來源,不複製或合併其他裝置的工作。網站可用與來源已整合是兩件事;最新工作狀態仍回查該分支/PR,不把遠端日期當成尚未推送的即時變動。
| 作品 | 來源 | 已有成果入口 | 工作狀態 |
|---|---|---|---|
| 怎麼和 AI 一起做出探險卡 | aiden-study/learning-tasks/ai-collaboration-showcase(codex/ai-collaboration-showcase) | Cloudflare Pages 故事網站 | 未標記;網站已發布;來源仍為主線外工作分支,工作狀態回查該分支。 |
白板的 create/update 取作品來源範圍的 Git commit 日期(臺灣時間),不是活動日、發布日或孩子作答時間;create 指目前來源位置首次收錄。完整歷史不足時建置失敗,未知日期顯示「—」。遠端同步失敗保留上次已知值並明示過期;不以同步嘗試時間更新作品日期。
docs/registry.json 定義平台可用 App。獨立 /parent/ 家長後台已於 2026-09-15 正式發布,實際顯示對象、排序、題庫學期、頭像與練習安排可從後台調整。新版孩子首頁、累計與永久積木徽章已上線,預設 LEGO 頭像,指定的扁平版保留供替換;規則與驗證見 UI/UX 改版說明。既有進度同步仍共用 docs/shared/sync-v1.js 與 docs/shared/wiring-v1.js,新增家庭設定/累計使用 family-*,後端都位於 worker/。
2026-09-16「家長首次連接、記住入口」已正式發布。此版將家庭金鑰換成 HttpOnly Cookie、保留帶金鑰舊圖示的自動轉移,並新增首頁前景更新及失敗提示。kids.linshuhuan.com 已啟用 Cloudflare proxy,僅 /api/* 交由 Worker,其餘頁面仍由 GitHub Pages 提供;步驟與驗證見 入口連線說明。
五個 app 已提供回孩子首頁的連結,兩個首頁的頁面名稱分別為「煦誠學習」「秉樸學習」,沿用原本的 child 網址。自訂網域 kids.linshuhuan.com 已啟用 HTTPS,舊 GitHub Pages 網址會自動轉向。#35 主畫面跨頁與 Safari 儲存隔離已驗收結案;#34 網站端檢查完成,家長已確認兩個 iPad 主畫面圖示安裝,依本輪範圍結案。注音 14 段正式親錄已補齊並獲家長接受,沿用已免除逐項 iPad checklist 的決定;見 收尾紀錄。2026-09-15 家長確認尚未正式給孩子使用,本次不備份/還原/對帳舊進度;詳見 正式網域上線紀錄。
docs/ GitHub Pages 部署根目錄
index.html child 首頁;未指定孩子時選擇入口
parent/ 家長設定、練習安排與維護入口
registry.json hub app registry
study/ 1,924 題公開題庫 app;家庭權限按單元讀取私用分包,另有不記錄進度的家長試玩
math/ 長除法與 nonogram
spelling/ 英文拼字 app
nativecamp/ 全英文課後複習;首次表現、口說與每週新題
zhuyin/ 注音 app 與錄音工具
shared/ 同步、接線與獎勵共用資源
worker/ Cloudflare Worker 同步 API 與固定家庭唯讀題包端點
scripts/ Python 題庫萃取、分類與建置 pipeline
data/ 題庫中間資料與人工策展資料
tests/ pytest 與 Node.js test runner 測試
docs-dev/ ADR、設計稿與人工驗收文件
learning-tasks/ 一次性家庭學習任務、可重建成品與重用經驗
wiki/ GitHub Wiki 頁面連結;知識正本在 aiden-study.wiki.git
- Python 3.13,由 uv 管理。
- Node.js 24 以上,用內建的 test runner;目前沒有 npm 相依。
claudeCLI 只在重跑 AI 分類 pipeline 時需要,一般開發與測試不需要。
uv sync --locked本機與 GitHub Actions 使用同一組兩道 gate:
uv run pytest
node --test "tests/*.mjs"測試數量會隨功能與資料更新;執行工作時以當次命令的實際輸出為準,不把舊快照數字當成目前結果。注音正式親錄已齊備;缺少 .m4a 現在會使測試失敗,避免發布後再出現缺音。
uv run python -m http.server 8765 -d docs- Hub:http://localhost:8765/
- 題庫:http://localhost:8765/study/?child=aiden
- 四上數學/自然/社會家長試玩:http://localhost:8765/study/preview.html?child=aiden(一般靜態 server 沒有家庭 Cookie session,只能驗未連接提示)
- iPad spike:http://localhost:8765/platform-ipad-spike.html?child=test-spike&k=test-spike-token
localhost 不在正式 Worker 的 CORS 白名單,一般靜態伺服器上的同步失敗是預期行為。完整本機驗證可用 node tests/helpers/serve-family.mjs,開啟輸出的 /test/start;該工具使用隔離 test-token、記憶體 KV 與合成題目,不動正式資料。/test/controls 可暫停/恢復隔離雲端;Study 試玩隔離驗收從 /test/study-preview?mode=ok 開始,完成後由 /test/study-preview/inspect 核對 browser/KV 哨兵與 request allowlist。
紙本練習只在孩子實際需要時製作,沿用 四上第一份短練習 的來源與再製方式,不按章自動產生 PDF。
目前學習內容主軸是把已核歷屆題小批加入 iPad 題庫。#55 建立最初六題 private pack 與家庭權限讀取;#59、#60、#101 依序擴題,#117、#119、#129、#134 加入自然題。#148 數學文字補題 曾發布 revision 9、104 題;#151 角度看圖題 已加入四道有官方答案的 PNG 圖題,正式發布 revision 10,共 108 題(數學 68/自然 40);#154 社會首批再加入 19 題,revision 11 共 127 題(數學 68/自然 40/社會 19)。精確發布基線與重建方式見私用題包重建說明。#103 Study 家長試玩 提供不寫入孩子進度的獨立試玩頁。後續選題依概念/出題方法覆蓋報告及擴題路線圖評估;既有進度與三下題目保護仍沿用。家庭端驗收紀錄與執行狀態保存其他背景。
題庫 app 的 public static data 目前共 1,924 題:自然 1,099、數學 307、社會 452、國語 66。四上家庭私用內容不加入 public data;#160 分包交付改為先讀目錄、開始練習才讀所選單元,保留 stable IDs、既有進度與舊單包相容。最新正式內容基線與重建入口見私用題包重建說明,長期容量與載入決策維護於 GitHub Wiki。ignored 路徑 data/private/study/g4-s1-math-u1/ 保存可重建 source/QA,正式 pack 部署在獨立 Cloudflare KV,由 Study 以家庭連線自動唯讀取得。內容不進 progress KV 或同步 payload,既有本機手動匯入保留為備援。後續擴題狀態見 docs-dev/grade4-math-expansion-plan.md。詳細公開題庫來源、人工策展規則與踩坑記錄見 docs-dev/期末-實作經驗筆記.md。
私人封存的 Windows 長路徑複製/還原須使用 extended-length paths,並核對完整檔案集合與 hash;見第五批封存入口及封存旁補充驗證目錄的 LONG-PATH-RESTORE.md。本機 Dropbox 副本核對不代表跨裝置同步已完成。
#117 四上自然首批 Study 練習 已完成 20 題內容覆核與 revision 5 正式發布,原數學 57 題逐值維持不變;自然首批選題與整合紀錄保留首批歷史。#119 第二批 新增 12 個完整活動、29 個原卷作答位置,revision 6 共 89 題已正式發布;見第二批狀態。#129 第三批 新增 5 個完整活動、13 個原卷作答位置,revision 7 共 94 題已正式發布;見第三批整合與發布紀錄。#134 第四批 從翰林卷增加 3 個完整活動、5 個原卷作答格,revision 8 已正式發布;見第四批整合紀錄。實體 iPad 尚未驗收,尚未取得校方正式範圍。
# PDF 萃取範例
uv run python scripts/extract.py --input pdfs_期末 --output data/raw_questions_期末.json
# AI 分類;依資料切換 mid|final|math|social
uv run python scripts/classify.py --semester final
# 冪等合併成部署題庫 docs/study/questions.json
uv run python scripts/build_questions.pydocs-dev/development-readiness.md:子專案開工/收尾檢查,確認來源、工作目錄、跨裝置與私人素材界線。CLAUDE.md:專案架構背景與歷史技術快照;當前狀態仍回查 code、Git 歷史與 issues。AGENTS.md:Codex 的 repo 導覽與家庭學習任務路由規則。CONTEXT.md:平台詞彙與 registry 欄位語意;不存工作計畫。learning-tasks/README.md:家庭學習任務索引、分類邊界與歸檔規格。docs-dev/adr/:架構決策紀錄。wiki/Home.md:給人的穩定導覽;長期方向見wiki/Roadmap.md,執行順序見wiki/Plan.md,當前交接見HANDOFF.md。現況仍以 code、Git 歷史與 GitHub issues 為準。
family token 是 secret,只能放在 Cloudflare Worker secret、家長的密碼管理器與裝置網址,不得寫進 repo、issue、測試 fixture 或 log。