100 Commits
Author SHA1 Message Date
klarkxy 7495d40d4d feat(courseware): add protected PPTX viewer 2026-09-03 18:06:03 +08:00
klarkxy fd53bab639 fix(llm): relax guidance and preserve judge output 2026-07-24 14:06:51 +08:00
klarkxy 4b420d25e9 Merge branch 'master' of https://git.klarkxy.xyz/klarkxy/hustoj 2026-07-23 10:47:56 +08:00
klarkxy 12bea84d8b feat(llm): 引入基于完成度的 AI 提交指导与限流
- 新增 llm_guidance 策略层,根据源码、判题结果与通过率评估完成度分级
- llm-review.php 改为服务端缓冲上游输出,仅下发白名单分类的固定模板
- 新增 llm_review 与 llm_review_rate_limit 表,实现结果缓存与账户/提交两级限流
- ceinfo 模板渲染编译器标出的源码行号/列号,reinfo 仅向高完成度提交展示结构化 diff
- download.php 按完成度授权测试点下载,封堵白卷提交套取隐藏用例
- judge_client 在 ACM 非比赛场景下记录已通过测试点数,前端可显示进度
- 附 llm_guidance_policy_test 单测覆盖空白卷、注释卷、隐藏 SPJ、OJ_FULL_DIFF 等关键路径
2026-07-23 10:47:50 +08:00
klarkxy 5a27c07bba feat(submit): 重构提交流程并加强判题端错误处理
- judge_client 在 solution/problem/source 查询失败时记录系统错误并以 OJ_RE 安全退出,避免判题机崩溃或挂起
- submit.php 抽取 submit_error 助手,AJAX 请求返回纯文本错误,提交页改为 AJAX 流程并增强错误提示
- 修复 reinfo 自动刷新脚本在标签页切回前台后未恢复轮询的 bug
2026-07-09 12:03:12 +08:00
klarkxy 418674806b 🔧 chore(config): 管理员隐藏名单新增 copilot
- 将 copilot 加入 $OJ_RANK_HIDDEN 列表
- 避免该账户出现在比赛排名中
2026-07-09 09:52:03 +08:00
klarkxy 9b13c95e8a ♻️ refactor(reinfo): 重构 diff 解析逻辑并支持多格式
- 将原本分散在 `parse_diff_side_by_side` 与 `parse_pipe_diff_table` 的两套解析逻辑合并,新增统一的 `parse_one_diff_line` 工具函数
- `parse_one_diff_line` 同时识别 `|a|b`、`a | b`、`a<b` / `a>b` 等多种 diff 输出格式,便于后续扩展
- 简化 `parse_diff_blocks` 中 full mode / simple mode 的内联解析流程,消除代码重复
- 优化 `raw_error` 换行符归一化处理,兼容 `\r\n` 与单独 `\r` 结尾的情况
2026-07-08 21:24:08 +08:00
klarkxy 0e5cac3d4e ♻️ refactor(reinfo): 调整 diff 解析函数定义位置
- 将 parse_diff_blocks、parse_pipe_diff_table、parse_diff_side_by_side 移至 dedup_runtimeinfo 之后
- 与相邻辅助函数保持一致的位置,便于阅读和维护
- 精简部分冗余注释
2026-07-08 21:15:49 +08:00
klarkxy c22c788cfa feat(ui): 判题结果页新增输出对比视图
- 新增 parse_diff_blocks 系列函数,将 runtimeinfo 解析为结构化的测试点对比块,支持 simple 表格和 diff -y 两种格式
- 在判题结果页插入"输出对比"区块,逐测试点并列展示期望输出与用户输出,差异行高亮
- 补充 diff-section 相关样式,移动端切换为单列布局
2026-07-08 21:13:13 +08:00
klarkxy 90010113dd feat(ui): 判题结果页 AI 点评区支持折叠
- 为 LLM 点评标题增加点击折叠/展开交互,减少页面占用空间
- 新增标题悬停反馈与图标旋转动画样式
- 移除快捷操作区中的"下载测试数据"按钮入口
2026-07-08 21:07:56 +08:00
klarkxy 2b699a185b ♻️ refactor(reinfo): 简化判错提示并新增自动刷新
- 移除 PHP 中冗余的 verdict_hints 数组及其填充逻辑
- 移除模板中 friendly-explain 区与 errexp-list 错误模式匹配脚本(28 条规则)
- 标题提示简化为单行 verdict-tip,详细的修复建议交由 AI 点评
- 调整页面顺序:AI 点评区提前,原始错误折叠下移
- 新增判题中自动刷新状态指示:轮询 status-ajax.php,完成后自动 reload,并加入后台标签暂停与退避策略
2026-07-08 21:04:50 +08:00
klarkxy 6c462655b9 feat(ui): 重新设计判题结果页与提交页
- 判题结果页引入友好错误解释面板,按 verdict 类型给出提示与改进建议
- 新增 dedup_runtimeinfo() 函数将重复 RE 测试点折叠为区间汇总
- 区分管理员/源浏览者与普通用户视图,原始错误默认折叠
- 错误模式匹配扩展至 28 条,覆盖 glibc/Java/Python/Go 等常见运行时异常
- 提交页改用卡片式布局,编辑器工具栏与测试运行区交互优化
- 中英文语言文件补充相关文案与快捷操作标签
- 切换 LLM 点评 API 至 newapi.klarkxy.xyz,模型改为 minimax-m3
- 新增 .codegraph/.gitignore 忽略本地调试数据
2026-07-08 20:56:17 +08:00
klarkxy c4e0f104b4 修复ai控制 2026-06-14 14:11:03 +08:00
klarkxy 752105e55c Merge branch 'master' of http://klarkxy.xyz:3000/hustoj/hustoj 2026-06-05 18:45:40 +08:00
klarkxy c55b010d6f ♻️ refactor(syzoj-header): restructure navigation menu and upgrade LLM model
- Remove "来源/分类" (category.php) link from main navigation
- Relocate "cppreference" to end of menu, after contest-related items
- Add conditional "AI 聊天" section using `$OJ_AI_HTML` variable
- Update LLM model from `MiniMax-M2.7` to `MiniMax-M3` in db_info.inc.php
- Fix trailing whitespace in header.php template
2026-06-05 18:40:45 +08:00
klarkxy d60458ad35 feat: 切换 AI 点评至 Anthropic 兼容 API(MiniMax)
- 将默认 LLM API 地址改为 MiniMax Anthropic 兼容格式
- 更新默认模型为 MiniMax-M2.7,max_tokens 改为 65536,超时改为 60 秒
- 请求体改为 Anthropic 格式:system prompt 提到顶层,temperature 调整为 1.0
- HTTP 头改用 x-api-key 和 anthropic-version
- 响应解析适配 Anthropic 返回的 content 数组结构
2026-05-29 16:10:50 +08:00
klarkxy b95ede457e feat: 新增 LLM AI 错误点评功能,支持通过 OpenAI 兼容 API 对提交代码进行智能分析 2026-05-29 16:04:42 +08:00
klarkxy 606e0855f9 feat: 支持分类标签使用逗号分隔 2026-05-29 15:52:19 +08:00
klarkxy 2f18fac0c4 ♻️ refactor: 优化流程图结构以增强可读性 2026-04-17 17:50:21 +08:00
klarkxy bfa8083727 ♻️ refactor: 优化流程图文本格式以增强可读性 2026-04-17 17:47:50 +08:00
klarkxy ff359b936a 📝 docs: 更新自定义函数章节,增加示例和流程图以增强理解 2026-04-17 17:43:17 +08:00
klarkxy 0d9274ba3e 📝 docs: 更新流程图讲义,简化内容并增强可读性 2026-04-17 17:40:07 +08:00
klarkxy 145ad7b8ff ♻️ refactor: 优化问题标题样式和响应式设计 2026-04-17 17:17:18 +08:00
klarkxy 687093a134 ♻️ refactor: 优化全局字体大小设置 2026-04-17 15:50:01 +08:00
klarkxy b29a9395f8 📝 docs: 添加调试说明文档 2026-04-17 15:43:33 +08:00
klarkxy c6df6d16c8 ♻️ refactor: 移除全局字体大小和标题大小设置,优化样式 2026-04-17 15:36:56 +08:00
klarkxy 80ac276e17 ♻️ refactor: 优化管理员页面字体大小设置 2026-04-17 15:32:04 +08:00
klarkxy 16e678d924 feat: 优化样例复制功能,增加成功和失败提示 2026-04-12 15:06:21 +08:00
klarkxy bae46aef77 feat: 调整全局和管理员字体大小,优化样式 2026-04-12 13:59:18 +08:00
klarkxy af78359d94 feat: 添加 Sarasa Mono 字体支持并优化样式 2026-04-12 13:29:17 +08:00
klarkxy c0c0cc19b2 feat: 优化样例输入输出处理逻辑并增强复制功能 2026-04-12 12:59:35 +08:00
klarkxy 7334f3a368 feat: 优化问题页面工具栏样式和标签显示 2026-04-12 12:55:45 +08:00
klarkxy e5aadba7fd feat: 优化评测状态页面表单和样式 2026-04-11 20:57:47 +08:00
klarkxy 917ea78c66 feat: 添加 Ace 编辑器支持并优化样式 2026-04-11 20:42:59 +08:00
klarkxy 31c676fc3a feat: 添加 MathJax 字体文件并优化代码加载逻辑 2026-04-11 20:37:53 +08:00
klarkxy ab2a3ca65f feat: 优化问题页面样式并添加复制功能 2026-04-11 19:44:27 +08:00
klarkxy 5a39432029 feat: 添加对 Ace 编辑器的支持和样式优化 2026-04-11 19:43:30 +08:00
klarkxy 7bae6d487d feat: 添加流程图和甘特图的字体样式支持 2026-04-11 19:09:28 +08:00
klarkxy 007425ce81 feat: 添加全局单一字体样式以统一界面字体 2026-04-10 20:56:35 +08:00
klarkxy 5baab4da11 feat: 优化代码编辑器样式和增强预览功能 2026-04-10 20:45:24 +08:00
klarkxy 96b9eb57e2 feat: 添加语言模式映射和获取函数以支持代码编辑器 2026-04-10 19:39:06 +08:00
klarkxy 6abef02001 📝 docs: 删除不必要的说明,简化流程图讲解内容 2026-04-10 18:36:34 +08:00
klarkxy 630142288b 📝 docs: 优化流程图文档内容和结构 2026-04-10 18:34:54 +08:00
klarkxy 470b6ad776 feat: 添加文档标题规范化功能和优化文档显示逻辑 2026-04-10 18:16:03 +08:00
klarkxy d1cd73ccdb feat: 添加文档功能和页面模板 2026-04-10 18:09:36 +08:00
klarkxy f5e00f1f35 feat: 优化管理员操作按钮样式和交互逻辑 2026-04-10 17:14:55 +08:00
klarkxy d30311e9bb feat: 优化管理员菜单样式和交互逻辑 2026-04-10 17:05:28 +08:00
klarkxy c33c28794d 修复dist问题 2026-04-10 16:55:59 +08:00
klarkxy addada1823 移除多余的无用代码 2026-04-10 16:36:57 +08:00
klarkxy f20b7aa61c feat: 新增 WYSIWYG 编辑器功能和相关工具栏事件处理 2026-04-10 16:18:01 +08:00
klarkxy 40b77471b5 feat: 更新问题页面和提交页面,集成Vditor适配器,优化Markdown渲染 2026-04-10 15:47:26 +08:00
klarkxy 0c7297afd7 feat: 添加管理员操作功能以支持重判和删除提交 2026-04-05 13:55:10 +08:00
klarkxy 489f11ce35 feat: re-enable nickname editing in user profile
- Restore nickname field in modify.php SQL update query
- Remove disabled attribute from nickname input in modifypage.php template
- Allow users to update their nickname through profile modification
- Maintain existing HTML entity encoding for security
2026-03-15 13:15:09 +08:00
klarkxy 055223bfdf feat(problem): add copy button to markdown code blocks
Add a copy button to markdown code blocks in the problem view for easier code snippet copying. The button appears in the top-right corner of code blocks and provides visual feedback on copy success or failure. This improves user experience by eliminating the need to manually select and copy code.
2026-03-13 19:32:38 +08:00
klarkxy 3256c00dcd feat(ui): adjust hardness dropdown styling for better vertical alignment
- Increase min-height and line-height to 32px for consistent sizing
- Remove top and bottom padding to improve vertical centering
- Maintain existing width and margin properties
2026-03-13 15:55:40 +08:00
klarkxy aceaaeb272 feat(problemset): replace semantic-ui dropdown with native select for hardness filter
- Replace custom semantic-ui dropdown component with standard HTML select element
- Simplify JavaScript by using native event listener instead of semantic-ui dropdown API
- Remove unnecessary dropdown initialization and selection setting code
- Maintain same functionality while reducing complexity and dependency on semantic-ui
2026-03-13 15:54:04 +08:00
klarkxy 50692cd13a feat(web): implement async git pull with real-time status updates
- Replace synchronous git pull execution with background job system
- Add AJAX endpoints for starting and monitoring git pull operations
- Implement process tracking using PID files and exit code files
- Add real-time log display with tail reading functionality
- Improve user experience with non-blocking UI and status updates
- Maintain backward compatibility with existing sudo permissions setup
2026-03-13 15:50:14 +08:00
klarkxy eb89eeb78e feat(gitpull): replace sudo password auth with NOPASSWD sudoers config
- Remove hardcoded sudo username and password from gitpull.php
- Switch to using `sudo git pull` with NOPASSWD sudoers configuration
- Add helpful error message with setup instructions when git pull fails
- Improve security by eliminating password storage in source code
2026-03-13 15:45:54 +08:00
klarkxy 66bf57911b feat(gitpull): execute git pull on page load and add retry button
- Changed git pull execution from POST-only to always run on page load
- Replaced sudo with su for better user switching in command execution
- Removed form submission in favor of direct execution with retry button
- Simplified UI by always showing result message and conditionally showing retry button
2026-03-13 15:36:13 +08:00
klarkxy 73049b71b6 feat: add admin-only git pull interface and remove auto-pull
- Add new `gitpull.php` page for manual git pull execution by administrators
- Remove automatic git pull on homepage visit to prevent unintended updates
- Include git pull link in admin navigation menu for easy access
- Secure interface with admin-only access and sudo credentials configuration
2026-03-13 15:32:53 +08:00
klarkxy 2a41341e51 feat(problemset): move hardness filter to right side and improve UX
- Relocate hardness dropdown from left to right side of filter controls
- Change form submission behavior to update URL parameters directly
- Preserve selected hardness value on page reload
- Remove page parameter when hardness changes to reset pagination
- Improve visual alignment and spacing in filter interface
2026-03-13 15:25:34 +08:00
klarkxy 10278b55fb feat: add automatic git pull on homepage visit with rate limiting
Introduce a mechanism to automatically pull the latest changes from the git repository when the homepage is accessed. This ensures the application stays up-to-date without manual intervention. The feature includes a lock file (`/tmp/hustoj_git_pull.lock`) to prevent excessive pulls, limiting execution to at most once every 60 seconds. The git pull command runs in the background to avoid blocking the page load, with output logged to `/tmp/hustoj_git_pull.log`.
2026-03-13 15:16:29 +08:00
klarkxy 60f1532eb8 feat(problemset): add hardness filter and improve query parameter handling
- Added hardness filter dropdown in problemset UI with options 1-8
- Implemented server-side hardness parameter validation and filtering
- Refactored query parameter handling to use $filter_params array
- Updated SQL queries to use parameter binding for both search and hardness filters
- Fixed pagination to include hardness parameter in URL
- Improved code organization by centralizing filter parameter management
2026-03-13 15:03:46 +08:00
klarkxy 3f6db1935a 增加只显示未完成题目的按钮 2025-10-31 18:15:15 +08:00
klarkxy c7c1f55cd4 代码块中的尖括号处理 2025-08-04 17:59:33 +08:00
klarkxy 26e0f0fc0a 难度按钮先注释了 2025-08-01 14:03:15 +08:00
klarkxy b62fdbd18a 增加难度分类按钮 2025-08-01 14:01:36 +08:00
klarkxy 196e706fe4 上传cppreference 2025-08-01 12:57:54 +08:00
klarkxy e29892f8cd 增加一个搜索按钮 2025-06-06 16:09:05 +08:00
klarkxy 1d77722c0e 试试gemini的建议 2025-05-10 16:46:14 +08:00
klarkxy 4d65c23bdf 增加判断 2025-05-10 16:35:42 +08:00
klarkxy cdfb67fb3f 改回原来的试试 2025-05-10 16:29:56 +08:00
klarkxy 712c9fbe57 再改回html 2025-05-10 16:25:17 +08:00
klarkxy d62b005cb3 试试append 2025-05-10 16:23:38 +08:00
klarkxy 5f719c78e1 再试试 2025-05-10 16:20:42 +08:00
klarkxy b3f23cf2f0 使用text而非html保证markdown不会被修改 2025-05-10 16:14:33 +08:00
klarkxy 06b4e61de1 增加一些对markdown的判断 2025-05-10 16:02:58 +08:00
klarkxy 48fdf71836 更新markded.min.js 2025-05-10 15:54:40 +08:00
klarkxy df321c3ab1 单独进行处理 2025-05-10 15:50:23 +08:00
klarkxy f1ba072f45 移除bbcode_to_html试试 2025-05-10 15:40:44 +08:00
klarkxy 7094b36a37 增加一个开关用于调试 2025-05-09 18:34:17 +08:00
klarkxy 1997ecf591 测试转义 2025-05-09 18:31:24 +08:00
klarkxy bcb36b4ab9 换个地方再试试 2025-05-09 18:21:42 +08:00
klarkxy e22a8d8d4d trans_md中增加大于小于号转换 2025-05-09 18:12:22 +08:00
klarkxy 969f483693 ??? 2025-05-01 18:02:30 +08:00
klarkxy 01ee421d05 合并搜索框功能 2025-05-01 17:50:34 +08:00
klarkxy beb6e2778b 修改上色 2025-05-01 17:13:49 +08:00
klarkxy b99aa2411c 回滚,就这样吧 2025-05-01 17:11:44 +08:00
klarkxy 63e076a062 增加管理员显示全tag 2025-05-01 17:08:56 +08:00
klarkxy 20c8a1fdcb 修复未分类标签没显示的BUG 2025-05-01 17:05:44 +08:00
klarkxy 8612812011 修复了分类页面的显示问题 2025-05-01 17:03:08 +08:00
klarkxy a1624e5468 增加只显示有效TAG的功能 2025-05-01 16:58:17 +08:00
klarkxy 49787b8e9c 除去空tag 2025-05-01 16:54:05 +08:00
klarkxy 3f07e94063 按照默认来吧,不要颜色了 2025-05-01 16:46:21 +08:00
klarkxy 7ec34ba0fb 未生效修复 2025-05-01 16:45:05 +08:00
klarkxy 7c01920442 统一格式 2025-05-01 16:43:57 +08:00
klarkxy 36cd4dbe85 引入固定常量 2025-05-01 16:41:50 +08:00
klarkxy 3e66bc1a31 重新复原试试 2025-05-01 16:40:41 +08:00
klarkxy 222c6c395f 修复BUG 2025-05-01 16:39:54 +08:00
klarkxy a38260e0f0 修复BUG 2025-05-01 16:38:54 +08:00