3.5 KiB
3.5 KiB
数据库设计(SQLite)
数据库文件默认位置:/data/csp.db(Docker volume csp_data 持久化)。
1. 核心表
users
idINTEGER PK AUTOINCREMENTusernameTEXT UNIQUEpassword_saltTEXTpassword_hashTEXTratingINTEGER DEFAULT 0created_atINTEGER
sessions
tokenTEXT PKuser_idINTEGER FK -> users.idexpires_atINTEGERcreated_atINTEGER
problems
idINTEGER PK AUTOINCREMENTslugTEXT UNIQUEtitleTEXTstatement_mdTEXTdifficultyINTEGERsourceTEXTstatement_urlTEXT(原始 PDF/题面链接)llm_profile_jsonTEXT(固定 JSON:难度、答案、讲解、知识点、标签等)sample_inputTEXTsample_outputTEXTcreated_atINTEGER
problem_tags
problem_idINTEGER FK -> problems.idtagTEXT- PK(
problem_id,tag)
submissions
idINTEGER PK AUTOINCREMENTuser_idINTEGER FK -> users.idproblem_idINTEGER FK -> problems.idcontest_idINTEGER NULL FK -> contests.idlanguageTEXTcodeTEXTstatusTEXT (Pending/Compiling/Running/AC/WA/TLE/MLE/RE/CE/Unknown)scoreINTEGERtime_msINTEGERmemory_kbINTEGERcompile_logTEXTruntime_logTEXTcreated_atINTEGER
wrong_book
user_idINTEGER FK -> users.idproblem_idINTEGER FK -> problems.idlast_submission_idINTEGER NULL FK -> submissions.idnoteTEXTupdated_atINTEGER- PK(
user_id,problem_id)
contests
idINTEGER PK AUTOINCREMENTtitleTEXTstarts_atINTEGERends_atINTEGERrule_jsonTEXT
contest_problems
contest_idINTEGER FK -> contests.idproblem_idINTEGER FK -> problems.ididxINTEGER- PK(
contest_id,problem_id)
contest_registrations
contest_idINTEGER FK -> contests.iduser_idINTEGER FK -> users.idregistered_atINTEGER- PK(
contest_id,user_id)
kb_articles
idINTEGER PK AUTOINCREMENTslugTEXT UNIQUEtitleTEXTcontent_mdTEXTcreated_atINTEGER
kb_article_links
article_idINTEGER FK -> kb_articles.idproblem_idINTEGER FK -> problems.id- PK(
article_id,problem_id)
import_jobs
idINTEGER PK AUTOINCREMENTstatusTEXT(running/success/partial_failed/failed)triggerTEXT(auto/manual)total_count/processed_count/success_count/failed_countoptions_jsonTEXT(本次导入参数快照)last_errorTEXTstarted_at/finished_at/updated_at/created_at
import_job_items
idINTEGER PK AUTOINCREMENTjob_idINTEGER FK -> import_jobs.idsource_pathTEXTstatusTEXT(queued/running/success/failed)titleTEXTdifficultyINTEGERproblem_idINTEGER NULL FK -> problems.iderror_textTEXTstarted_at/finished_at/updated_at/created_at- UNIQUE(
job_id,source_path)
2. 关键索引
idx_submissions_user_created_atidx_submissions_problem_created_atidx_submissions_contest_user_created_atidx_problem_tags_tagidx_kb_article_links_problem_ididx_import_jobs_created_atidx_import_jobs_statusidx_import_job_items_job_status
3. 初始化与演示数据
系统启动时会自动:
- 执行
ApplyMigrations - 执行
SeedDemoData
演示数据包含:
- 基础题目(A+B、Fibonacci、排序)
- 题目标签(math/dp/sort 等)
- 知识库文章(快速 IO、DP 入门)
- 示例模拟赛(含题目关联)