Commit Graph

2242 Commits

Author SHA1 Message Date
513743c767 update 2026-06-04 08:44:58 -06:00
6a870875ee add ai report 2026-06-04 08:06:31 -06:00
3d5ace65f2 feat: register ai admin URL routes 2026-06-04 07:31:14 -06:00
baed3b80f1 feat: add AIAnalysisAdminAPI for listing and reading reports 2026-06-04 07:27:24 -06:00
39f1e8b35e fix: use utils.api serializers import instead of rest_framework directly 2026-06-04 07:26:08 -06:00
f8cbcf28c1 feat: add AIAnalysis serializers for admin list/detail 2026-06-04 07:25:45 -06:00
b28301bbb1 fix 2026-06-04 05:31:23 -06:00
f6e41dc349 fix 2026-06-04 04:48:25 -06:00
745ddb56f9 fix 2026-06-03 07:38:07 -06:00
734f596e1a update 2026-06-03 07:29:03 -06:00
0764946c17 add wc 2026-06-03 07:19:57 -06:00
809673e64f fix 2026-06-03 04:50:46 -06:00
59dbb6868f update 2026-06-03 00:01:29 -06:00
d1fdbcf52b fix 2026-06-02 23:13:06 -06:00
385d04505b feat: open teaching analytics to Teacher Admin
StuckProblems, TopACTrend, AI user analysis, and problemset user
progress are now accessible to Teacher Admin (previously super-only).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-02 18:17:26 -06:00
f94d29cf93 feat: add Teacher Admin role to four-tier permission system
Introduces a four-tier role system: Regular User → Student Admin →
Teacher Admin → Super Admin. Teacher Admin can manage own contests,
problemsets, and view classroom data. Student Admin (renamed from Admin)
retains problem management only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-02 18:13:33 -06:00
125d57b123 update 2026-06-02 10:48:24 -06:00
fd7384980a update 2026-05-28 19:13:14 -06:00
6ab2886f77 remove contest type 2026-05-26 23:10:27 -06:00
6b81856bfd refactor: replace sync_to_async aggregate with aaggregate in problemset views 2026-05-26 21:48:30 -06:00
48a16d91b5 refactor: replace sync_to_async aggregate with aaggregate in problem views 2026-05-26 21:46:56 -06:00
b041de8c4a refactor: replace sync_to_async aggregate with aaggregate in CommentStatisticsAPI 2026-05-26 21:44:56 -06:00
e47923758e refactor: replace sync_to_async queryset slice with async for comprehension 2026-05-26 21:42:43 -06:00
c49a6af066 refactor: replace sync_to_async cache wrappers with native cache.aget/aset/adelete 2026-05-26 21:25:48 -06:00
57c0572fd9 async 2026-05-26 21:25:26 -06:00
8731012f47 use asgi 2026-05-26 07:37:05 -06:00
759593a224 fix 2026-05-26 07:08:23 -06:00
1217ee3eaf update 2026-05-26 02:19:26 -06:00
bf2a95ef01 update 2026-05-25 23:55:19 -06:00
1498e1046f fix 2026-05-25 23:06:01 -06:00
92eeb91fd7 update 2026-05-25 22:58:43 -06:00
92bc3ac221 update 2026-05-25 22:40:22 -06:00
c6b368dc82 update 2026-05-25 22:24:53 -06:00
ed8a2f575f update 2026-05-25 21:57:38 -06:00
2e7c6fb404 update 2026-05-25 21:56:11 -06:00
4187fe6891 feat: update ai/views/oj.py query filters to treat AST_CHECK_FAILED as accepted 2026-05-25 20:46:11 -06:00
980b803517 feat: update all query filters to treat AST_CHECK_FAILED as accepted
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 20:45:15 -06:00
4d7eabd607 feat: integrate AST check into JudgeDispatcher with is_accepted() statistics
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 20:42:45 -06:00
dab36f35c4 feat: add check_ast entry point 2026-05-25 20:40:13 -06:00
811b065e05 feat: add AST checker engine framework with 9 Phase 1 engines 2026-05-25 20:39:31 -06:00
c36e6623bd feat: add AST_CHECK_FAILED status, is_accepted helper, ast_rules field
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 20:37:58 -06:00
3b4dfe2fe2 feat: add ast_checker mappings for Python3 and C 2026-05-25 20:35:56 -06:00
9c6c8c6406 deps: add tree-sitter with Python and C grammars 2026-05-25 20:34:58 -06:00
2c65802778 docs: add AST checker implementation plan (9 tasks)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 09:12:50 -06:00
42549af346 docs: consolidate AST checker design spec into clean structure
Reorganize the spec from 6 incremental updates into a well-structured
document with numbered sections, consistent formatting, and no
redundancy.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 08:58:58 -06:00
7b4426b441 docs: enable AST check in contests, add contest impact details
Remove contest_id guard — AST check applies uniformly.
Add 7 contest-specific changes: update_contest_problem_status (5)
and _update_acm_contest_rank (2). Note: without the rank fix,
AST_CHECK_FAILED would incorrectly increment ACM error_number.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 08:53:20 -06:00
7878da48aa docs: contests skip AST check in Phase 1
Add contest behavior section: AST check is skipped when contest_id
is set. Contest AST support with enable_ast_check flag deferred to
Phase 2.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 08:49:15 -06:00
d60adc19ca docs: complete impact audit for AST checker
Add 10 more backend locations missed in first pass:
- problemset/views/oj.py, fix_problemset_progress command
- class_pk/views/oj.py (2 query filters)
- problem/views/oj.py (2 first-AC queries)
- problem/views/admin.py (2 TopACTrend aggregates)
- submission/views/admin.py (2 accepted_count aggregates)

Add 3 more frontend locations:
- SubmitCode.vue line 162: must set my_status=0 for AST_CHECK_FAILED
- ProblemInfo.vue: statistic_info chart auto-renders new status
- types.ts: SUBMISSION_RESULT union needs | 10

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 08:46:21 -06:00
cf29184503 docs: add comprehensive impact checklist to AST checker spec
Enumerate every location that checks JudgeStatus.ACCEPTED across
backend (dispatcher, account, comment, contest views) and frontend
(SubmitCode, SubmissionResult, api.ts). Key finding: user profile
status must store ACCEPTED(0) not AST_CHECK_FAILED(10) to keep
my_status green.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 08:44:11 -06:00
7ac9b8fe37 docs: add legacy data policy to AST checker spec
Existing submissions are not retroactively checked. AST re-check
for existing AC submissions deferred to Phase 2.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 08:40:44 -06:00