給家中兩個小孩使用的靜態學習平台。根目錄是 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 上下架:暫不上架;未另標記工作狀態。 |
每份任務保留一個來源入口;白板把同系列合成一列,展開後仍可找到每份素材。活動日期、狀態與對象由同一份登錄產生於任務索引。
| 任務 | 找得到什麼 | 可用版本 |
|---|---|---|
| Native Camp Weekly Review 09-14~09-20 | 本週新題與少量較早概念;首次弱項優先。 | 不計分預覽 |
| Native Camp 2026-09-17 Khalid | 來源核對、完整句排列與口說。 | 不計分預覽 |
| Native Camp 2026-09-13 Michael | 來源核對、完整句排列與口說。 | 不計分預覽 |
| Native Camp 2026-09-16 Edon | 來源核對、自主題、口說與跨日複習。 | 不計分預覽 |
| Native Camp 2026-09-14 Edon | 來源核對、自主題、口說與跨日複習。 | 不計分預覽 |
| Native Camp 回放複習試作 | 紙本口說;另供 App 自主題、口說與跨日複習。 | 不計分預覽、孩子版 PDF、家長版 PDF |
| 悠閒午後閱讀心智圖 | 五枝放射圖、各段重點保留、iPad 選詞。 | 網頁 |
| 四上數學第一份短練習 | U1「一億以內的數」15~20 分鐘紙本練習;孩子作答、家長分卷核對。 | 私用成品 |
| 四上第一次段考數學候選卷 | 桃子腳第一次段考前,依概念與實際範圍篩選歷屆數學卷。 | 私用成品 |
| 閱讀心智圖選詞引導 | iPad 選詞、四角放射心智圖、短詞抄寫。 | 網頁 |
| 新竹動物園小小探險 | 火車地理、園區選路、動物特徵觀察、昆蟲分類;卡片可任意中止。 | 列印 PDF |
可跨任務沿用的內容從 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 的版本控制真相源
- 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
- 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 可暫停/恢復隔離雲端。
紙本練習只在孩子實際需要時製作,沿用 四上第一份短練習 的來源與再製方式,不按章自動產生 PDF。
目前學習內容主軸是把已核歷屆題小批加入 iPad 題庫。#55 四上數學 U1:歷屆題庫接入 iPad 練習 已完成最初六題 private pack、家庭權限自動讀取、獨立 review 與正式發布;#59 再把正式題包擴為 U1~U5 共十四題 rev2 並已結案。#60 已沿用相同 runtime,完成 fresh review、正式發布與 private archive,把題包擴為三十題 rev3,U1~U5 分布為 9/6/2/7/6;正常流程不要求家長傳檔。2026-09-14 的 iPad 操作確認只涵蓋先前 #55 六題流程,不代表三十題已完成真機實測;下一步依已採納的 U3 angle-v1 能力路線另批處理,其餘未轉入題目與章節仍待做。程式保護三下題目與現存進度;已放棄的三下歷史紀錄不再追回。詳見 家庭端驗收紀錄、擴題路線圖、執行狀態 與 整合方案。
題庫 app 的 public static data 目前共 1,924 題:自然 1,099、數學 307、社會 452、國語 66。四上數學 U1~U5 三十題 rev3 不加入 public data;ignored 路徑 data/private/study/g4-s1-math-u1/ 保存可重建 source/QA,已驗證的正式 pack 則部署在獨立 Cloudflare KV,由 Study 以 family token 自動唯讀取得。內容不進 progress KV 或同步 payload,既有本機手動匯入保留為備援。重建與驗證方式見 docs-dev/grade4-u1-private-pack-build.md,後續擴題狀態見 docs-dev/grade4-math-expansion-plan.md。詳細公開題庫來源、人工策展規則與踩坑記錄見 docs-dev/期末-實作經驗筆記.md。
# 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。