xuyue
c1ec9eab8f
update
2026-06-14 09:43:33 -06:00
xuyue
124a1d84d3
update
2026-06-14 09:42:25 -06:00
xuyue
9949ebf1c5
fix
2026-06-14 09:27:21 -06:00
xuyue
90d1a2aa30
fix
2026-06-14 09:19:01 -06:00
xuyue
dab6734d03
switch docker image
2026-06-14 09:13:05 -06:00
xuyue
fa6736b855
docs: design Debian slim backend image
2026-06-14 09:08:36 -06:00
xuyue and Claude Sonnet 4.6
322acc543f
build: install clang-extra-tools for clang-format in backend image
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-14 08:07:50 -06:00
xuyue and Claude Sonnet 4.6
7974d12475
build: move ruff from dev to main dependencies (needed at runtime for code formatting)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-14 08:05:12 -06:00
xuyue and Claude Sonnet 4.6
f7fbfdba7d
fix(submission): revert unnecessary CSRF exemption on FormatCodeAPI
...
The CSRF 403 error was expected Django behavior (no CSRF cookie in curl).
FormatCodeAPI should follow SubmissionAPI's pattern (APIView, not CSRF-exempt).
Verified with GET request: /api/format_code returns 405 (correct route resolution).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-14 08:02:06 -06:00
xuyue and Claude Sonnet 4.6
5cc5c64625
feat(submission): register /api/format_code route and fix CSRF exemption
...
Task 4: Register the FormatCodeAPI view to the /api/format_code endpoint.
Also fix: Make FormatCodeAPI extend CSRFExemptAPIView instead of APIView
so that the manual verification curl commands receive JSON responses
(login-required error) instead of HTML 403 Forbidden responses. This is
necessary for the view to work with the @login_required decorator which
expects to return JSON errors, not be blocked by CSRF middleware.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-14 07:57:24 -06:00
xuyue
be1610faa6
feat(submission): add FormatCodeAPI view
2026-06-14 07:51:41 -06:00
xuyue and Claude Sonnet 4.6
bfeb69434e
feat(submission): add FormatCodeSerializer
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-14 07:48:58 -06:00
xuyue
4cd37cef78
feat(submission): add ruff/clang-format code formatting helper
2026-06-14 07:46:41 -06:00
xuyue and Claude Sonnet 4.6
69eb15ac27
Add implementation plan for pre-submit code auto-formatting
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-14 07:43:51 -06:00
xuyue and Claude Sonnet 4.6
1bbc149e55
Add design spec for pre-submit code auto-formatting
...
Plan: ruff for Python3, clang-format (LLVM/4-space/Attach) for C/C++,
called via new /api/format_code endpoint before submission.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-14 07:41:03 -06:00
xuyue
95949e565c
update
2026-06-09 05:04:43 -06:00
xuyue
69bd6af6ec
update
2026-06-05 09:58:52 -06:00
xuyue
d7e04adf07
fix
2026-06-05 09:46:49 -06:00
xuyue
2b65acf91a
update
2026-06-05 08:51:57 -06:00
xuyue
84e972b174
update
2026-06-05 00:58:51 -06:00
xuyue
6a7be0e97a
fix
2026-06-04 23:59:20 -06:00
xuyue
513743c767
update
2026-06-04 08:44:58 -06:00
xuyue
6a870875ee
add ai report
2026-06-04 08:06:31 -06:00
xuyue
3d5ace65f2
feat: register ai admin URL routes
2026-06-04 07:31:14 -06:00
xuyue
baed3b80f1
feat: add AIAnalysisAdminAPI for listing and reading reports
2026-06-04 07:27:24 -06:00
xuyue
39f1e8b35e
fix: use utils.api serializers import instead of rest_framework directly
2026-06-04 07:26:08 -06:00
xuyue
f8cbcf28c1
feat: add AIAnalysis serializers for admin list/detail
2026-06-04 07:25:45 -06:00
xuyue
b28301bbb1
fix
2026-06-04 05:31:23 -06:00
xuyue
f6e41dc349
fix
2026-06-04 04:48:25 -06:00
xuyue
745ddb56f9
fix
2026-06-03 07:38:07 -06:00
xuyue
734f596e1a
update
2026-06-03 07:29:03 -06:00
xuyue
0764946c17
add wc
2026-06-03 07:19:57 -06:00
xuyue
809673e64f
fix
2026-06-03 04:50:46 -06:00
xuyue
59dbb6868f
update
2026-06-03 00:01:29 -06:00
xuyue
d1fdbcf52b
fix
2026-06-02 23:13:06 -06:00
xuyue and Claude Opus 4.6
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
xuyue and Claude Opus 4.6
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
xuyue
125d57b123
update
2026-06-02 10:48:24 -06:00
xuyue
fd7384980a
update
2026-05-28 19:13:14 -06:00
xuyue
6ab2886f77
remove contest type
2026-05-26 23:10:27 -06:00
xuyue
6b81856bfd
refactor: replace sync_to_async aggregate with aaggregate in problemset views
2026-05-26 21:48:30 -06:00
xuyue
48a16d91b5
refactor: replace sync_to_async aggregate with aaggregate in problem views
2026-05-26 21:46:56 -06:00
xuyue
b041de8c4a
refactor: replace sync_to_async aggregate with aaggregate in CommentStatisticsAPI
2026-05-26 21:44:56 -06:00
xuyue
e47923758e
refactor: replace sync_to_async queryset slice with async for comprehension
2026-05-26 21:42:43 -06:00
xuyue
c49a6af066
refactor: replace sync_to_async cache wrappers with native cache.aget/aset/adelete
2026-05-26 21:25:48 -06:00
xuyue
57c0572fd9
async
2026-05-26 21:25:26 -06:00
xuyue
8731012f47
use asgi
2026-05-26 07:37:05 -06:00
xuyue
759593a224
fix
2026-05-26 07:08:23 -06:00
xuyue
1217ee3eaf
update
2026-05-26 02:19:26 -06:00
xuyue
bf2a95ef01
update
2026-05-25 23:55:19 -06:00
xuyue
1498e1046f
fix
2026-05-25 23:06:01 -06:00
xuyue
92eeb91fd7
update
2026-05-25 22:58:43 -06:00
xuyue
92bc3ac221
update
2026-05-25 22:40:22 -06:00
xuyue
c6b368dc82
update
2026-05-25 22:24:53 -06:00
xuyue
ed8a2f575f
update
2026-05-25 21:57:38 -06:00
xuyue
2e7c6fb404
update
2026-05-25 21:56:11 -06:00
xuyue
4187fe6891
feat: update ai/views/oj.py query filters to treat AST_CHECK_FAILED as accepted
2026-05-25 20:46:11 -06:00
xuyue and Claude Sonnet 4.6
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
xuyue and Claude Sonnet 4.6
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
xuyue
dab36f35c4
feat: add check_ast entry point
2026-05-25 20:40:13 -06:00
xuyue
811b065e05
feat: add AST checker engine framework with 9 Phase 1 engines
2026-05-25 20:39:31 -06:00
xuyue and Claude Sonnet 4.6
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
xuyue
3b4dfe2fe2
feat: add ast_checker mappings for Python3 and C
2026-05-25 20:35:56 -06:00
xuyue
9c6c8c6406
deps: add tree-sitter with Python and C grammars
2026-05-25 20:34:58 -06:00
xuyue and Claude Sonnet 4.6
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
xuyue and Claude Sonnet 4.6
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
xuyue and Claude Sonnet 4.6
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
xuyue and Claude Sonnet 4.6
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
xuyue and Claude Sonnet 4.6
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
xuyue and Claude Sonnet 4.6
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
xuyue and Claude Sonnet 4.6
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
xuyue and Claude Sonnet 4.6
86f9644341
docs: update AST checker spec — post-judge flow, statistics, frontend conflicts
...
- AST check moves to AFTER judging (only on AC submissions)
- AST_CHECK_FAILED treated as AC for accepted_number and user profile
- statistic_info keeps separate count for drill-down visibility
- Status code changed to 10 (9 conflicts with frontend submitting)
- Added frontend impact analysis for SubmissionResult, WebSocket, problem list
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-25 08:38:42 -06:00
xuyue and Claude Sonnet 4.6
953b4dc851
docs: add AST checker design spec
...
Tree-sitter based code structure validation for submissions,
with per-problem per-language rule configuration.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-25 08:31:25 -06:00
xuyue
2cd1e2701f
fix
2026-05-24 23:43:18 -06:00
xuyue
c1d2e960bd
add all in duration
2026-05-24 23:11:53 -06:00
xuyue
4af186a1ab
revert
2026-05-24 21:20:08 -06:00
xuyue
0213ab4a72
fix
2026-05-24 21:05:30 -06:00
xuyue
65c48437a9
fix
2026-05-24 20:44:02 -06:00
xuyue
5371b7daf1
fix temperature
2026-05-24 20:34:17 -06:00
xuyue
8a0bfb6b24
update
2026-05-21 19:52:37 -06:00
xuyue
fdf4bb1ad9
fix
2026-05-21 19:30:22 -06:00
xuyue
083747c241
fix: use pk=None pattern for problem cloning, consistent with AddContestProblemAPI
2026-05-21 19:24:08 -06:00
xuyue
9c1b958444
feat: add contest clone API endpoint
2026-05-21 19:21:04 -06:00
xuyue
c3ce76bc47
fix
2026-05-21 18:46:40 -06:00
xuyue
1d08b29255
fix
2026-05-21 01:55:46 -06:00
xuyue
f5df51f7b2
fix problemset
2026-05-20 09:31:45 -06:00
xuyue
25e78b2fb2
update
2026-05-19 07:44:29 -06:00
xuyue
a744baf4c9
fix
2026-05-17 07:31:05 -06:00
xuyue
c9751c095f
update
2026-05-11 04:32:49 -06:00
xuyue
ee84a0abe3
update
2026-05-11 04:27:15 -06:00
xuyue
25bd43676e
update
2026-05-11 00:55:01 -06:00
xuyue
128745f4f8
update yearly ac rate
2026-05-11 00:43:08 -06:00
xuyue
238adf441f
fix: remove duplicate return statement in ProblemYearlyACRateAPI
2026-05-11 00:19:37 -06:00
xuyue and Claude Sonnet 4.6
74d5c7256d
feat: add problem yearly AC rate API endpoint
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-11 00:19:16 -06:00
xuyue
ae783c3a89
docs: add problem yearly AC rate implementation plan
2026-05-11 00:17:02 -06:00
xuyue
1e7a3051c0
docs: add problem yearly AC rate feature design spec
2026-05-11 00:13:31 -06:00
xuyue
e4e8b7759d
update for django6
2026-05-09 05:57:30 -06:00
xuyue
b297eb5475
update
2026-05-09 03:29:25 -06:00
xuyue
cf856857df
ai llm
2026-05-09 03:13:30 -06:00
xuyue
c466dfd3c6
change enum
2026-05-09 02:30:47 -06:00