# 更新日志 (CHANGELOG) 所有关于 KECE(综合编程与全真技术技能评测平台)的重要迭代与更新变动均记录于此。 --- ## 2026-11-08 · 评测机分池与扩容 ### 调度与评测 - 将 C++、Java、Python、MySQL 和 ArkTS 拆为独立评测池。提交与评测任务通过同一数据库事务保存,节点主动领单和续租,迟到结果受租约代次约束。 - 用例清单按版本固定,节点按 SHA-256 拉取和校验制品。移除编程题与 SQL 题的旧 Redis 投递和结算代码。 - 修复长任务续租、本地节点排空恢复和自检确认重试。代码运行使用独立容器和只读工作目录,区分学生判题结果与 Docker 基础设施故障。 ### 管理与发布 - 后台支持登记评测节点、分配宿主机槽位、HTTPS 探测、自检、启用和排空。首页与顶栏展示真实分池状态。 - 增加五池部署模板、协议样本、历史用例清单回填和排空对账工具。Flyway 新增 V26~V31。 - 本地验证通过 124 项后端测试和 Go 竞态、Docker 隔离回归。五池样题取得 AC,九个容量批次的 1290 单全部收敛,独立混合复测通过排空对账。 [验收报告](./docs/评测机容量与灰度对账报告.md) - 线上核验确认后端 JAR 和前端入口与本地构建一致,五个专池服务均在运行,公开状态为 5/5 就绪。容量数据来自本地隔离环境。 --- ## 2026-11-04 ### 首页与题库检索 - 移除首页扑克扇形导航矩阵,接入真实公开题目检索、分页和题目入口。 - 练习模块调整为横向标题带与通栏列表,消除左右卡片高矮失衡;保留全模块自动乱码复原,移除重放入口及旧布局样式。 - 题集编排检索器拆分为独立组件,支持算法、数据库、客观题的题号精确查询和分页;改进候选题操作区及窄屏显示。 ### 排名页 - 重构为分类导航、个人成绩横条、搜索工具栏与通栏榜单;窄屏采用带指标标签的条目布局。 - 筛选条件和页码同步到 URL,切换分类保留关键词;复用支持直接跳页的分页组件。 - 使用请求序号阻止旧响应覆盖新筛选结果,区分加载、错误、空结果和未上榜状态。 - 将「最后活跃时间」修正为「最近通过」,补充通过率、排序和缓存延迟说明。 - 恢复逐行掉落与轻微回弹动画,限制累计延迟并支持减少动态效果设置。 - 移除旧个人卡片、通过率进度条及冗余样式;用户名改用可键盘访问的主页链接。 ### 课练管理与文档 - 逐题统计从网格卡片改为横向条目;题目支持换行,人数、满分和通过率可直接对照。 - 无作答记录显示「未作答」,与真实 0% 通过率区分。 - 补充算法优化与高可用高容错架构方案、排名页设计方案及效果稿。 - 验证:前端类型检查、生产构建和改动文件 lint 通过;排名重构阶段现有 50 项单元测试通过。三处最新页面的线上 JS/CSS 已与本地构建校验一致;浏览器预览连接超时,尚未完成实机视觉复核。 --- ## [v0.4.1] - 2026-11-01 ### 题库排序重构与侧边栏体验优化 * **全平台题库题号正序递增排序 (ID ASC)**: * 修改算法编程 (QuestionMapper.xml)、数据库题 (DbQuestionMapper.xml)、客观题库 (ObjectiveQuestionMapper.xml) 分页查询逻辑,由 ORDER BY id DESC 全量统一调整为 ORDER BY id ASC。 * 用户进入题库第 1 页直接从 #1 基础题起步由浅入深刷题,符合主流 OJ 心智模型。 * 依托 InnoDB PRIMARY KEY (id) 正向聚簇索引顺序扫描,优化分页读取性能;执行生产 Redis 业务列表缓存刷新 (DEL question:cache:list:* db:question:cache:list:*)。 * **侧边栏初始状态与手风琴折叠优化**: * 首页 (/) 及未激活路由访问时,侧边栏「题库」与「题集」手风琴默认保持干净收起状态,避免过多子项展开造成的视觉杂乱。 * 手风琴标题点击纯粹作为垂直折叠/展开开关,绝对不触发无关路由跳转;仅在路由命中相应子模块时自动展开并高亮子项。 * **侧边栏身份标签配色体系对齐**: * 统一侧边栏底部当前登录用户身份徽章色彩规范,管理员角色标签( ole-admin)统一为纯紫色背景 (#7048e8),与个人中心及全站设计规范严格对齐。 --- ## [v0.4.0] - 2026-10-31 ### 全局前台左侧垂直侧边栏导航架构全面落地 (Left Vertical Sidebar Navigation) * **前台母版全面重构为左右双栏工业风布局**: * 废除原有顶部横向悬浮导航栏(`AppHeader.vue`),重构前台母版(`DefaultLayout.vue`)为「左侧固定粘性侧边栏 + 右侧自适应工作区」架构。 * **全新工业级侧边栏组件**(`AppSidebar.vue`):全面遵循直角工业风设计(`border-radius: 0`),提供 236px 展开与 68px 折叠两档自适应尺寸,折叠状态通过 `localStorage` 自动持久化记忆。 * **8 大前台主导航矩阵统一归集**: 1. `首页` (`/`):集群遥测概览与技术矩阵大厅; 2. `题库 ▾` (`/questions`):垂直手风琴折叠子菜单,展开包含算法编程 (ALGO)、数据库题 (SQL)、客观题库 (QUIZ);在 68px 折叠态下鼠标悬停触发右侧直角悬浮气泡菜单(Flyout Popover); 3. `题集` (`/problem-sets`):独立顶级精选题集流式大厅; 4. `课练` (`/practice`):随堂课练与协同训练; 5. `考试` (`/exams`):防作弊全真在线限时考核系统; 6. `排名` (`/rankings`):全域天梯算法、SQL 与客观题多榜天梯榜单; 7. `公告栏` (`/announcements`):官方更新通知与系统公告看板; 8. `个人主页` (`/profile`):个人综合数据打卡热力图与提交记录聚合。 * **高反差工业风激活高亮**:激活项采用 `3px` 纯黑左侧重指示条与柔和灰阶高反差视觉呈现;支持深度子路由自动匹配高亮。 * **品牌区域视觉对齐**:侧边栏顶部品牌区无冗余文字干扰,直接纯净呈现官方 Logo(展开态展示 `kece-logo.png`,折叠态展示 `kece-mark.png`),顶部高 50px 与右侧辅助顶栏底部分割线实现像素级水平基线对齐。 --- ### 个人主页快捷直达与操作流转优化 (Profile Fast Access & User Card) * **双通道直达个人主页**: * 主导航栏第 8 项独立新增「个人主页」入口; * 侧边栏底部常驻已登录用户卡片,用户头像(悬浮带纯黑直角线框微动效)与用户名(悬浮带下划线动效)点击均可秒级直达个人主页。 * **独立登出与访客态管控**: * 底部用户卡片配备独立直角 `[退出]` 按钮,登出后自动调用 `userStore.clearAuth()` 并跳转登录页; * 游客身份展示直角 `[登录 / 注册]` 引导按钮。 --- ### 方案 C 特权管理控制台与全链路 Fail-Secure 鉴权隔离 (Scheme C RBAC & 404 Disguise) * **DOM 树节点级物理消除**: * 侧边栏底部、用户卡片上方设立独立 `// ADMINISTRATION` 特权控制台模块; * 采用严格 `v-if="userStore.isLoggedIn && (userStore.hasRole('ADMIN') || userStore.hasRole('TEACHER'))"` 条件渲染,普通学生与游客在页面 DOM 树中物理消除该节点。 * **全链路 Fail-Secure 404 防嗅探防御**: * 全局路由守卫 `router.beforeEach` 升级为递归安全核验(`to.matched.some`); * 针对未授权角色或未登录访客尝试探测 `/admin/**` 路径时,一律静默伪装重定向至 `{ name: 'not-found' }`(404 Not Found),消除 `403 Forbidden` 暴露后台路径存在性的安全漏洞。 * **后端零信任数字签名保障**:所有 `/api/admin/**` 管理接口严格受 Spring Boot `@RequireRole` 拦截器与 HMAC-SHA256 JWT 双重数字签名守护。 --- ### 动效体验升级:全域排名与公告栏动态流式入场 (Cascade Drop-in Animation) * **瀑布流阶梯式掉落入场**: * 全域天梯排名(`RankingsView.vue`)与公告看板(`AnnouncementsBoardView.vue`)全面接入与题集大厅同款的自上而下阶梯式卡片掉落动效; * 结合 CSS 变量 `--drop-index` 自动计算错位延迟,页面初次加载或切换标签时呈现连贯流畅的物理下落阻尼质感。 --- ## [v0.3.0] - 2026-10-29 ### 身份认证现代化:邮箱与密码体系升级 (Email & Password Authentication) * **全面升级邮箱账号登录与注册体系**: * 废除传统的单一用户名强依赖,用户注册模式精简为**邮箱 + 密码**两项输入。 * **昵称智能推导与防撞机制**:注册时自动从邮箱前缀截取并规范化清洗生成用户初始昵称;若遇重名自动附加 4 位随机哈希防撞后缀,确保账号唯一性与友好体验。 * **大小写不敏感与平滑向下兼容**:后端登录接口(`AuthService`)支持不区分大小写的标准邮箱检索,同时无缝兜底兼容历史测试账号与老旧用户名直接登录。 * 前端登录/注册窗体重构为单输入框动态自适应模式,提升交互流转效率。 --- ### 高可用精选题集系统上线 (Problem Sets Module) * **进阶题集流式大厅与精选专题**: * 全新设计题集系统(`ProblemSetListView.vue` 与 `ProblemSetDetailView.vue`),对齐题目大厅的单列流式工业化直角风格与自上而下按序掉落入场动效。 * **单集题型强隔离设计**:每个题集严格限定单一题型(算法编程 / 数据库 SQL / 客观理论),避免混杂,精准对齐阶段性教学训练场景。 * **连贯攻克进度与快照容错**:详情页实时呈现紧凑型进度徽章卡片与已攻克题目完成比例;支持 Markdown 格式题集深度导读与说明。 * **管理端独立编排能力**:后台提供独立题集管理工作台,支持快速收录、拖拽排序与发布状态管控。 --- ### 题目算法与知识点分类标签系统 (Algorithm & Topic Category Tags) * **全链路多维标签体系沉淀**: * 数据库层新增标签实体与关联表结构,后端建立高命中率缓存与聚合查询通道。 * **直角单色高反差视觉呈现**:标签采用工业科技蓝高对比度直角设计,紧随语言支持微标右侧清晰排盘。 * **折叠筛选栏与双向智能联动**:题目大厅新增可折叠标签过滤抽屉;支持点击任意卡片标签直接按需筛选,过滤态自动展开并高亮定位。 --- ### 评测集群遥测控制台去伪存真 (Cluster Telemetry Grounding & Zero Fake Load) * **彻底清除死代码与模拟探针脉冲**: * 全面移除组件内原先用于演示的 `probeActive`、`startProbePulse` 周期性伪随机微脉冲。 * **严格直连后端真实任务队列**:评测机负载完全绑定由后端上报的真实执行任务数(`node.currentTasks`)。系统闲时绝对维持 `0/8` 空闲状态,唯有在 Redis 任务队列被 Worker 真实认领时才点亮对应负载格,彻底杜绝无人提交时的虚假负载。 * **剔除虚构未实现节点**: * 彻底移除未经底层落地的「前端 AI 评测机」占位节点,真实准确映射系统当前运行的 2 节点集群(算法评测机 + 数据库评测机,`2/2 在线`)。 --- ### 评测测试点存储与性能体系重构 (Test Cases Disk Storage & High Performance) * **评测点从 MySQL 大文本彻底解耦**: * 重构编程评测点存储架构,测试数据彻底迁出 MySQL 数据库字段,转为服务器独立磁盘文件存储,解决数据库大字段引发的 Buffer Pool 污染与网络 I/O 阻塞。 * **流式 Zip 批量导入导出与大包优化**: * 支持题目的测试点集一键流式打包导出为标准 Zip 格式,支持多组用例批量导入并自动解包落盘。 * 导出操作全程携带 JWT 安全鉴权,调优 Nginx `client_max_body_size` 与 Multipart 解析限制,攻克大测试集导入超时缺陷。 --- ### 全域天梯排名系统与个人主页深度聚合 (Rankings & Profile Aggregation) * **全域天梯排行榜单上线**: * 推出全新全域天梯排行页面,支持按编程题 AC 数、数据库题通过数、客观题理论得分三榜分离与综合榜单呈现。 * 排行卡片遵循直角单色灰阶工业美学规范,左侧通栏大头像,整行点击直达开发者主页。 * **打卡热力图预聚合加速**: * 新增 `user_daily_ac` 预聚合统计表,避免个人主页每次加载均全表扫描用户历史提交,大幅提升 365 天 AC 热力图渲染性能。 --- ### 高并发性能深度优化与容量规范 (High Performance & Capacity Engineering) * **评测结果流转零轮询(BRPOP 异步唤醒)**: * 后端判题结果监听彻底告别周期性短轮询,采用 `JudgeResultBlockingListener` 配合常驻守护线程池执行 `BRPOP` 阻塞式秒级唤醒,任务完成即刻双写 Redis 状态总线并同步落库。 * **判题集群并发度扩容**: * Go 判题沙箱 Worker 默认并发处理能力全面由 4 并发扩容至 8 并发(配置文件、systemd 守护进程、docker-compose 编排与启动脚本全线对齐)。 * **二级缓存与索引优化**: * 题目列表与榜单全面引入 Redis 缓存层,配合题目写操作自动驱逐失效机制; * 执行 Flyway V20 迁移,针对题目检索、用户作答状态等核心高频慢查询字段落地高选择性复合覆盖索引。 * **高负载容量测算与文档脱敏**: * 建立平台全链路高并发吞吐容量模型(支持 2,500~3,500 在线、300~500 提交/s、8~12 评测/s); * README 全文重构并引入 GitHub Alert 结构化块引用(`> [!NOTE]`, `> [!TIP]`, `> [!IMPORTANT]`, `> [!WARNING]`); * 全量完成所有文档中真实服务器 IP 地址的脱敏处理,替换为标准架构拓扑标识。 ## [v0.2.3] - 2026-10-21 ### 官网全新工业化主页与 Trae 风格动效 (Homepage Redesign & Cyber Slicing) * **核心标语 Trae 风格故障风切片交互 (Glitch Slicing)**: * 为 Hero 主标语「多维度编程与技能评测平台」引入对标 Trae 官网的 Cyber 阶梯水平切片撕裂动效。 * **动量驱动与防抽搐设计**:采用完全由光标真实滑动位移(`mousemove`)驱动的切片算法,并在鼠标停下 130ms 后自动静止收敛(Debounce)。彻底解决传统 `:hover` 无限循环导致光标静止悬停时文字抽搐颤动的问题,实现“滑移撕裂、静止如初”的极佳操作质感。 * **沙箱评测集群控制台 (Cluster Telemetry Console)**: * 在 Hero 右侧构建硬核极简的真实评测机遥测控制台(`ClusterConsole.vue`),摒弃杂乱拥挤的信息堆砌,保持 Swiss 极简直角工业风格。 * 实时透出算法沙箱(ALGO - Cgroups v2)、数据库评测机(DATABASE - 物理隔离临时库)、前端 AI 智能评测(FRONTEND_AI - Playwright+多模态审计)三类核心节点的健康度、当前负载与并发度。 * **全宽 5 大能力评测矩阵 (5-Engine Capability Bento Matrix)**: * 重构全宽 5 列等高直角 Bento 矩阵卡片,涵盖算法 OJ、数据库 OJ、前端 AI 评测、客观题系统与全真模拟机考 5 大支柱。 * 强化直角微标、架构规格标签与极简悬浮反馈,层次清晰、严谨规整。 --- ### 评测机心跳与优雅停机体系加固 (Judger Lifecycle & Heartbeat) * **判题机即时心跳注册**: * Go 判题机(`judger`)启动时立即上报首发心跳并登记入 Redis `judge:workers` 注册表,无需等待首个周期。 * **捕获信号即刻移除心跳 (Graceful Shutdown)**: * 判题机进程捕获 `SIGTERM` / `SIGINT` 时,即刻调用 `ClearHeartbeat` 抹除 Redis 心跳键,避免掉线后仍残留在活跃列表,实现秒级状态同步。 * **后端集群遥测端点与心跳聚合**: * 后端新增 `/api/system/judgers` REST 接口(`SystemStatusController` 与 `SystemStatusService`),打通前端控制台与真实集群节点的遥测通道。 --- ## [v0.2.2] - 2026-10-15 ### 课堂练习系统安全与权限重构 (Classroom Practice Security & Permissions) * **隐蔽暗号与口令保护**: * 课堂练习大厅移除标题直接泄露 6 位暗号明文的设计,替换为直角状态微标(`[ 🔒 需口令 ]` / `[ 🔓 已解锁 ]`),确保学生入场受控。 * **学生编程练习权限修复**: * 修复学生进入课练编程实战时报 4003「无权限」的缺陷:移除前端对管理端私有评测用例列表(`GET /questions/:id/test-cases`)的越权调用,直接取用题目详情自带的公开样例测试点(`sampleTestCases`)。 * **课练结束历史复盘支持**: * 修复课练结束后已参与学生无法查看题目与作答的缺陷:后端放行已入场成员(`myMember != null`)在练习结束后的详情读取权限,保障赛后复盘与学习沉淀。 * **教师端交互与表单校验强化**: * 课练发起与编辑页补充必填项与题目为空时的前端 Toast 拦截,标题缺失自动平滑滚动定位,并增加底部校验警示条,消除教师点击“保存”无响应的困惑。 --- ### 评测机选择体系与后台管理升级 (Judger Selection & Admin) * **算法题目评测机多选矩阵**: * 将管理后台原本以逗号分隔的“支持语言”单行输入框全面重构为**多选卡片网格**。 * 内置常用语言沙箱(C++、Java、Python、ArkTS),支持一键快捷预设(「全选」、「常用」、「仅 ArkTS」、「清空」)与实时勾选计数,保存时自动校验至少启用一种评测机。 --- ### 基础设施、字符集与部署加固 (Infrastructure & Deployment) * **静态资源跨平台字符集加固**: * 彻底解决 Logo 中文文件名(`KECElogo浅色版-trim.png`)在 Windows 压缩至 Linux 解压过程中的 GBK/UTF-8 字符集乱码导致 404 破图的问题,规范重构为纯 ASCII 文件名 `kece-logo.png`。 * **静态头像资源路径兼容**: * 后端 `WebConfig` 补齐 `/avatars/**` 映射至本地 `uploads/avatars/` 目录,修复历史头像丢失时的资源定位异常。 * **本地与远端运维加固**: * 修复 `deploy/start.ps1` 后台启动后端时未能显式继承外部 `JAVA_HOME` 环境变量的问题。 * 完成远端生产服务器(生产 Web 服务器)Nginx 站点前端产物的自动化发布与平滑部署。 --- ## [v0.2.1] - 2026-10-14 ### 新特性 (New Features) * **开发者个人主页与专属名片系统 (User Profile)**: * **硬朗直角名片**:配备 128×128px 纯直角大头像(本人悬浮即刻呼出更换蒙层)、个性签名引用式沉浸框、UID、系统注册时间及 GitHub 开发者认证外链。 * **52-周打卡热力图 (AC Heatmap)**:真实沉淀并统计过去 365 天每日真实 AC 提交量,配套高反差展示「年度 AC 题数」、「当前连击天数」与「历史最长连击」三大核心指标卡。 * **考试实战档案归档**:按时间倒序汇聚已完成的在线机试成绩,公开展示得分、全场排名、耗时与交卷时间,支持一键跳转回溯详细试卷与题目作答快照。 * **全量做题记录深度整合**:将原本独立的「我的提交」页面深度整合至个人主页,提供三合一题型切换(算法编程题、数据库 SQL、客观题作答)并实时统计各分类总提交数。 * **代码与作答快照弹窗**:在主页内点击任意提交状态即可唤起高亮代码/SQL/客观题作答详情弹窗,内置一键剪贴板复制能力。 * **全公开开发者档案体系 (GitHub / LeetCode 范式)**:支持通过 `/profile/:id` 开放互访任意用户的个人主页与技术提交流。严格进行视角权限隔离:访客视角下自动隐藏编辑资料、修改密码及头像修改操作,并悬挂「访客视角」安全标识。 --- ### 界面视觉与交互工业化重构 (UI & Design System) * **全站纯色设计规范体系 (Solid Color Specification)**: * **身份角色**:管理员纯紫(`#7048e8`)、教师纯绿(`#2b8a3e`)、学生纯黑(`#1e1e1e`)。 * **题目难度**:简单实心绿(`#2b8a3e`)、中等实心橙(`#e67700`)、困难实心红(`#c92a2a`)。 * **数据库题型**:SELECT 查询纯黑(`#1e1e1e`)、DML 操作钛金深灰(`#495057`),彻底终结红蓝色彩冲突。 * **顶栏导航悬浮滑块动效 (Hover Slider)**: * 精简顶栏主导航链接,去除多余 Emoji 与小图标,保留纯净文字排盘; * 引入鼠标悬浮灰色方块跟随滑块(34px 直角 `#ececec`),移动时使用 `cubic-bezier(0.16, 1, 0.3, 1)` 曲线平滑跟随,离开时优雅淡出。 * 将顶栏身份纯色标签整合进用户卡片内部,解决原先悬浮独立的突兀感。 * **算法题库大厅单列富信息重构 (Questions Problemset)**: * 告别过去大面积空旷白色方块,单列卡片完整呈现做题状态圈(已攻克/未解答)、等宽题号(`#1`)、无 Emoji 时空限制(`1000ms / 256MB`)、编程语言微标(`C++`、`Java`、`Python`)、纯色难度标签以及「开始做题 →」右侧交互入口。 * 工具栏左右平衡:左侧搜索与纯色难度切换,右侧增设做题状态过滤(全部/未解答/已通过)以及「随机刷题」功能(优先抽取未做题目直接挑战)。 * 顶部新增个人「攻克进度看板」,实时呈现已解题数、总题量及绿色动态进度条。 * **数据库题库大厅工业化重构 (Database Problemset)**: * 采用黑灰极简工业风配色,展示数据库引擎、比对模式(按序/无序)与测试集规模。 * 左右均衡工具栏与顶部攻克进度看板与算法题库完全看齐。 --- ### 缺陷修复与后端加固 (Bug Fixes & Hardening) * **头像上传 500 异常修复**: * `application.yml` 配置 Servlet 上传最大请求容量 `max-request-size=10MB` 与 `max-file-size=10MB`(突破 Spring Boot 默认 1MB 限制)。 * 在 `GlobalExceptionHandler` 中增加对 `MaxUploadSizeExceededException` 异常拦截,转为客户端友好业务状态码 `4001` 与明确提示,严防抛出 500 报错。 * 个人主页与弹窗图片上传上限放宽至 5MB,并支持本地静态资源安全映射。 * **跨用户做题查询能力支持**: * `ProfileController`、`SubmissionController`、`DbSubmissionController`、`ObjectiveSubmissionController` 全部接入可选参数 `userId`,无缝支撑访客模式下的数据获取。 * **路由向后兼容**: * 前端路由 `/submissions` 自动平滑重定向至 `/profile?tab=code`,保持历史链接与书签可用。