Lexiverse
Lexiverse - AI contextual reading engine for English learners. Your next article is your next review.
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Interactive quiz application built with Next.js, TypeScript, Tailwind CSS, and Supabase.
question_type 正確率產生 約 50–80 字 繁體小結(鼓勵語氣、含強項、弱項與生活化建議)。目前不呼叫 LLM(純規則);要更口語可接 OpenAI 等,仍寫入同欄位。quiz_sessions.session_practice_summary(學生向)、session_practice_summary_parent(老師視角給家長);RPC save_session_practice_summaries(p_session_id, p_student_id, p_student_summary, p_parent_summary)。get_quiz_email_data 含 session_practice_summary_parent(電郵正文);完成練習時 Body 可傳 session_summary_parent 作後備。supabase_session_practice_summary.sql(欄位 + 函數 + 更新 get_quiz_email_data)。npm test;手動清單見 test_plan_practice_session_summary.md。Math/Chinese/English)→ ② 同級排名(ParentGradeRankPanel,隨科目:與列表/圖表同一 p_subject)→ ③ 月份導航與列表/圖表。純前端順序;排名改為按科目需執行 supabase_grade_ranking_per_subject.sql 並重跑 recalculate_student_grade_rankings()。recalculate_student_grade_rankings();讀取:get_parent_student_grade_rank(p_student_id, p_subject))
student_grade_rankings 每列含 subject(Math/Chinese/English…);Math 統計含 quiz_sessions.subject 為 Math 或 數學。sum(questions_attempted),僅 questions_attempted > 0 的次數)的同級學生。grade_level + subject 內用 RANK 排名。vercel.json → /api/cron-recalculate-averages)先 recalculate_student_grade_rankings(),再 recalculate_grade_averages()。get_parent_student_grade_rank(p_student_id, p_subject) — 前端與 get_parent_sessions / get_student_chart_data 傳相同科目鍵。supabase_grade_ranking_per_subject.sql(會清空舊排名表並改 schema),然後手動或等 cron 執行 recalculate_student_grade_rankings()。若 GRANT 失敗,再執行 supabase_grade_cron_delete_and_grants.sql 內相關 GRANT(或於該檔補上 get_parent_student_grade_rank(uuid, text))。DELETE requires a WHERE clause:在 Supabase 執行 supabase_fix_batch_delete_require_where.sql(將 DELETE FROM … 改為 DELETE FROM … WHERE true)。canceling statement due to statement timeout:資料量較大時,原先排名批次對每位學生子查詢掃表會過慢;請在 Supabase 執行 supabase_optimize_ranking_batch_performance.sql(加索引、改寫成集合式查詢,並在函數內 SET LOCAL statement_timeout = '5min')。Vercel 路由 /api/cron-recalculate-averages 已設 maxDuration = 300(秒),需重新部署才生效。?part=rank(0:00 UTC)與 ?part=grade(0:02 UTC),見 vercel.json。(可選)在 Vercel 專案加入 SUPABASE_SERVICE_ROLE_KEY 讓 API 以 service role 呼叫 RPC。依序執行:supabase_optimize_grade_averages_batch.sql → supabase_split_grade_averages_cron.sql → supabase_grade_averages_two_step_per_grade.sql;若**單一年級的「全部題型」**仍超時,執行 supabase_grade_by_question_type_fine.sql;若 ?part=grade 仍失敗,再執行 supabase_grade_cron_v2_query_plans.sql(索引+從 students/questions 驅動的 overall / one_type);務必在 Vercel 設定 SUPABASE_SERVICE_ROLE_KEY(僅專案密鑰,勿入庫)。test_plan_grade_ranking.md。supabase_grade_cron_delete_and_grants.sql:新增 delete_grade_averages_for_grade(grade_level),並補齊 GRANT EXECUTE 給 cron 會呼叫的函數。API 在 fallback 到 recalculate_grade_by_type_for_grade 前可刪除該年級列,避免 unique 衝突。CRON_SECRET (bearer for /api/cron-recalculate-averages), SUPABASE_SERVICE_ROLE_KEY (strongly recommended for long RPCs). Rotate CRON_SECRET immediately if previously exposed.…optimize_grade… → …split… → …two_step… → …by_question_type_fine… → supabase_grade_cron_v2_query_plans.sql → supabase_grade_cron_delete_and_grants.sql.use_service_role: true when the service key is set.The app is deployed on Vercel (custom domain q.hkedutech.com; Vercel project quiz-deploy under scope colinwong-clouds-projects).
Production URL: https://q.hkedutech.com
Link once: vercel link (scope colinwong-clouds-projects, project quiz-deploy). Ship to production: npx vercel deploy --prod.
PWA / icons: src/app/apple-icon.png serves /apple-touch-icon (iOS “Add to Home Screen”); src/app/icon.png is the favicon. Both use the banana mascot artwork.
Latest production deploy: 2026-06-23 — deployment dpl_79DmeNLXGwFv4qYCt7iSRPyyJU7Z, alias Ready at https://q.hkedutech.com (inspect: https://vercel.com/colinwong-clouds-projects/quiz-deploy/79DmeNLXGwFv4qYCt7iSRPyyJU7Z). Release scope: Admin「教師編號維護」新增 Part 3 密碼重設(重設為 123456、清除鎖定、強制下次登入改密碼),並把成功提示訊息顯示於 Part 3 區塊底部。
docs/release-sop.mddocs/release-deploy-checklist.mdPurpose: prevent any regression where older features become missing or non-functional after new development.
This is the beginning of the README. Read the rest at the original. Read the full README ↗