Commit Graph

35 Commits

Author SHA1 Message Date
38f92ed911 chore: 删 11 个无引用序列化器;撤回一处误判的"修复"
## 撤回:增删题单题目本来就会重算进度,我诊断错了

上一个 commit 我给 ProblemSetProblemAdminAPI 的 post/delete 加了显式的
sync_all_progress_for_problemset,理由是"增删题目不重算进度"。**那是错的。**

problemset/signals.py 里有 post_save / post_delete 信号接收器,
在 ProblemSetProblem 变化时同步进度**并重算奖章**,且 apps.py 的 ready()
确实导入了 signals。我的显式调用只是让同一件事做两遍。

更该记住的是**为什么当时没发现**:那一版测试只看"进度有没有更新",
而信号和我的调用都会让它更新 —— 分不出是谁干的,所以照样是绿的。
这次的测试改成先撤掉调用再验,并直接断言信号已注册在 post_save/post_delete 上,
这样才真的有区分力。6/6 通过。

同一批修复里的另外 5 条经复核都成立,保留。特别是「移除用户留下孤儿奖章」——
signals.py 里**没有**针对 ProblemSetProgress 的 post_delete,那条必须自己清。

## 删无引用序列化器(-78 行)

全仓 106 个序列化器,11 个无任何引用:

  account:   FileUploadForm, GenerateUserSerializer, SSOSerializer,
             UserChangeEmailSerializer, UserChangePasswordSerializer,
             UsernameOrEmailCheckSerializer
  contest:   CreateContestAnnouncementSerializer, EditContestAnnouncementSerializer
  problem:   CreateProblemCodeTemplateSerializer
  flowchart: FlowchartSubmissionMergedSerializer, FlowchartSubmissionSummarySerializer

前 8 个是上一个 commit 删掉的视图留下的(FileUploadForm 正是
SimditorFileUploadAPIView 用的),后 3 个是原本就死的。
检测器同样做了自检:拿 3 个明确在用的序列化器反测,没有误判。
另外确认这 11 个都没有字符串形式的动态引用。

`ruff check .` 全绿。行尾未被改动(上一轮踩过这个坑,这次脚本里加了断言)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 07:19:02 -06:00
625f2466e5 refactor: 统一用户名的 ks 班级前缀处理
同一个剥前缀函数在 submission 和 flowchart 的管理端各有一份逐字相同的
拷贝,conf 里还有一份内联写法,合并到 utils/shortcuts.strip_class_prefix。

改名是因为原名 get_real_name 和 UserProfile.real_name 字段、以及三个
serializer 里的同名方法都容易混。

行为上修了两处:

- 剥前缀改用 removeprefix,不再按长度硬切。班级号对不上时原样返回,
  旧写法会从中间截出乱码(ks999王五 配 class_name=251 会切成「王五」)
- get_class_name 的正则从 \d+ 收紧到 \d{3,4},与前端
  ButtonWithSearch 的 /^ks\d{3,4}/ 对齐。旧的贪婪匹配在姓名部分是纯
  数字时会吃掉整串(ks251001 返回 251001 而不是 251)。顺带 re.search
  换成 re.match,外层的 startswith 判断并进正则

正常数据(ks251张三、ks2510李四)新旧结果一致,已逐例对拍。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:58:13 -06:00
3a9ab83ba5 style: ruff format 全仓库
行宽 180 下把历史遗留的折行表达式合并,无语义改动。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 04:45:26 -06:00
69bd6af6ec update 2026-06-05 09:58:52 -06:00
d7e04adf07 fix 2026-06-05 09:46:49 -06:00
2b65acf91a update 2026-06-05 08:51:57 -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
57c0572fd9 async 2026-05-26 21:25:26 -06:00
65c48437a9 fix 2026-05-24 20:44:02 -06:00
5371b7daf1 fix temperature 2026-05-24 20:34:17 -06:00
b297eb5475 update 2026-05-09 03:29:25 -06:00
cf856857df ai llm 2026-05-09 03:13:30 -06:00
c466dfd3c6 change enum 2026-05-09 02:30:47 -06:00
97a9269e2a fix 2026-05-09 01:38:24 -06:00
031be90445 fix 2026-05-08 20:16:19 -06:00
34f6a2e24a no thinking 2026-05-08 19:25:07 -06:00
df097dd610 fix flowchart 2026-05-07 06:09:13 -06:00
c0c5be9420 change to v4 flash 2026-04-27 06:32:06 -06:00
028ea6e5f9 fmt 2026-04-23 13:57:56 -06:00
94b618c2ac ai prompt 2026-04-11 02:15:06 -06:00
a12a665fde update 2026-03-18 13:26:32 +08:00
ed40019a14 自动生成流程图 2026-01-05 10:23:02 +08:00
3b0beb851f fix 2025-12-29 22:49:19 +08:00
905b84b858 fix 2025-12-29 22:41:56 +08:00
9d1141bdd6 fix 2025-12-29 22:36:01 +08:00
3cf03fc286 add endpoint for flowchart's detail 2025-12-29 22:24:15 +08:00
a103dd6b38 add flowchart list 2025-10-20 20:05:10 +08:00
a02acf76b8 update 2025-10-14 09:25:36 +08:00
52aca0fd8c update 2025-10-14 01:17:59 +08:00
04dcba9091 update 2025-10-14 00:24:05 +08:00
2c8f74b1b6 update 2025-10-13 23:40:26 +08:00
bfd79720a9 fix 2025-10-13 12:27:21 +08:00
4168d41a16 删除无用代码并且新增流程图相关内容 2025-10-11 23:29:56 +08:00