【学习工作赛道】学情洞察台 — 学情看得见,决策有依据

学情洞察台Demo 介绍


0. 先和大家打个招呼吧 :waving_hand:

我是一名独立开发者,本职是给教育行业做数据工具的"造轮子的人"。

这个项目(学情洞察台),它能从一坨空文件夹变成今天能跑、能分析的桌面应用,绝大部分代码是 TRAE 帮我一行一行敲出来的——我只是那个在键盘旁边说"我想这样做"“这里不对”"再试一次"的人。

我和 TRAE「配合」的真实感受:

  • 把脑子里的想法一句句讲给它听:我最开始对它说的不是"帮我写一个分析系统",而是"我要一个能上传宽表、自动识别多学科、跑 54 种分析算法的桌面应用"。TRAE 会先把我这段口语化的需求拆成模块(数据采集 / 单次分析 / 历次分析 / 区域均衡),然后我们一个模块一个模块往下推。每次开会话前我都会把昨天的进度翻一遍 memory 文件夹,确保 TRAE 不忘事。

  • 哪一步让我觉得"原来这么简单":IRT 项目反应理论在 GRM 估计那里卡了我很久——多级评分题里有些等级边界没人答,girth 库返回 NaN 难度阈值,原代码一遇到 NaN 就抛异常降级到 CTT,把 girth 辛苦算出来的 Ability 全丢了。我本来以为要重写整条估计链路,结果跟 TRAE 说"保留 Ability,只对 NaN 阈值做插值",它立刻给出 _clean_polytomous_difficulty 方法:Inf→NaN、全 NaN 行填线性等距、部分 NaN 行做边界延拓的线性插值。一个看起来很吓人的测量学问题,被它拆成了三段十几行代码。

  • 它帮我跨过的坎:PyInstaller 打包。我第一次把 EduData 打成 exe 的时候,xgboost、pingouin、matplotlib 这几个库的依赖扫描乱七八糟,Cronbach α 信度直接返回 0.0、XGBoost 预测无法用。TRAE 帮我把 spec 文件改对:collect_all('xgboost')collect_all('pingouin')collect_all('matplotlib'),再把 matplotlib 从 excludes 里挪走。那一刻我才明白"工具链对齐"这件事,AI 比我熟练得多。


1. Demo 简介

是什么:学情洞察台是一款桌面端教育数据分析系统——Windows 上的 .exe,前端 Vue.js + Element UI,后端 FastAPI + SQLite/StarRocks,PyInstaller onedir 模式打包,支持离线单机运行,也能切到服务器部署。

面向谁:教研员、命题人员、学科组长、学校教师、学科组长、年级组长、市区县教育局——一句话,所有需要从考试数据里看出门道的人

主要功能(共 54 种分析算法,挑 3 个最能代表产品形态的):

  • 数据采集模块:统一上传表格模型数据(支持宽表 / 长表、多学科、多地区),自动识别"省—市—区县—学校"层级,生成数据集画像(学科数、题目数、平均分、市/县区/学校数量等)。

    建议配图:

    (登录后主菜单)

  • 单次数据分析(34 种算法):CTT 经典测验理论、IRT 项目反应理论(含 ICC / TIC 曲线)、试卷质量分析、DIF 题目功能差异、知识点掌握、ZPD 最近发展区评价等。

    建议配图:

    (IRT 分析结果)

  • 历次数据分析(17 种算法)+ 区域教育均衡专项:学生成绩追踪、增值评价、学生预警、上线率预测、知识遗忘曲线、县区教育均衡度、县区差异贡献分解、县区增值性评价 HLM。

    建议配图:


2. Demo 创作思路

灵感来源: 教育测量学的算法本身是成熟的(CTT、IRT、DIF、HLM 增值评价都在教科书里),但它们散落在 SPSS、R、Mplus 这些专业统计软件里,使用门槛极高、操作割裂、对教育场景缺乏封装。一线教研员做一次完整的试卷分析,往往要在 Excel、SPSS、题库系统之间反复切换。我想把这一堆专业算法"工程化、产品化",做成一个教师打开就能用的工具。

想解决的问题(用户真实存在的痛点):

  • 工具碎片化:一张试卷要分析难度、区分度、信度、选项分布、知识点掌握……每看一项指标就要换一个软件

  • 专业门槛高:IRT、因子分析、DIF 这些高价值方法几乎只有测量学专家会用,普通教师触达不到

  • 区域视角缺失:市/区县教育局想要看区域内教育均衡、校际差异、增值评价,没有统一的分析手段

  • 历次数据断层:单次考试分析工具多,但跨考试的趋势追踪、成长轨迹、遗忘曲线这类纵向分析工具稀缺

为什么做这个方向(判断和取舍):

  • 算法壁垒:54 种分析类型(34 单次 + 17 历次 + 3 区域专项),所有阈值参数化在 YAML 配置里,避免硬编码——兼顾专业性与易用性

  • 场景聚焦:不做通用 BI,深耕教育测量垂直场景,按"命题质量 → 教学诊断 → 学业预警 → 区域均衡"四大方向组织功能

  • 形态取舍:选择桌面端单机部署而非纯 Web SaaS——教育局内网隔离、离线使用、数据本地化是现实约束;

  • 数据模型统一:一套数据结构兼容宽表 / 长表、单学科 / 多学科、单次 / 历次分析,降低数据准备成本


3. Demo 体验地址

由于本项目定位为桌面端离线应用, 无法提供在线访问地址,已打包成压缩包放到云盘:


4. TRAE 实践过程

4.1 开发流程

整个项目从 2026 年 6 月底启动,到 7 月 8 日,几乎全部代码由 TRAE 协助完成。开发流程大致分为以下几个阶段:

  1. 需求拆解阶段:把"教育数据分析系统"这个大命题拆成数据采集、单次分析、历次分析、区域均衡四个模块,每个模块再拆成"上传 / 列表 / 新建 / 记录 / 结果"五个子页面

  2. 算法集成阶段:54 种分析算法逐个接入,每种算法都包含后端实现、参数配置、前端结果展示三部分

  3. UI/UX 迭代阶段:标题栏边界、界面过暗、学科切换、加载页教育风格、结果分层显示等大量细节打磨

  4. 打包部署阶段:PyInstaller spec 配置、依赖收集、启动速度优化(onedir 模式 + 排除 llvmlite)、授权码机制

  5. 回归测试阶段:51 种分析类型全流程验证,修复闪退、数据错乱、图表重叠等问题

4.2 关键步骤截图(不少于 3 张)

以下是我用 TRAE 开发这个项目的几个关键节点截图:

  1. 第一步:把脑子里的想法讲给 TRAE 听 项目最开始,我对着 TRAE 说了一大段口语化的需求——我想做一个"学生考试作业数据分析系统",要支持多用户、多角色,还要分单次和历次两种分析模型……我自己都觉得说的有点乱。结果 TRAE 几下就给我拆解成了功能模块、技术栈选型、角色权限这些结构化的内容,右边还自动生成了待办任务列表。

  2. 架构大改之前,TRAE 先帮我做设计 做到一半我觉得方向不对——我想把整个程序改成 Windows 单机桌面版,还要把数据分析拆成单次和历次两套模型。这俩都是架构级的改动,我本来以为直接说让它改就行,结果 TRAE 识别到这是大变更,先调用了 brainstorming 技能跟我一起做需求和设计探索,不贸然动手写代码。这点我挺意外的,原来它不会一味听指令瞎写,会先帮我把方向想清楚。

  3. 用着不顺手?跟 TRAE 说一声就给你重排 前端做出来第一版,我用着觉得栏目太多了——侧边栏 11 个菜单、12 条路由,找个功能都费劲。我跟 TRAE 说"操作路径不连贯,要改",它直接给我把侧边菜单砍到 2 项,路由精简到 6 条,还建了统一的工作台页面,把上传、列表、启动分析、查看结果、日志、导出全部整合到一个页面的行内操作里。右边那个待办列表还能实时看到进度,做了啥没做啥一目了然。

  4. 攒了一堆问题?一次甩给 TRAE 它全给你修了 测试了几天,我攒了 5 个问题一起甩给 TRAE:二级栏目背景色不对、查看结果别用抽屉要用整页、软件重启后任务状态丢了、运行中的任务看不到、已完成结果入口太绕。我本来以为要分好几天改,结果它一条一条找根因,一个会话就全修完了——新增了全页面结果展示、加了启动僵尸任务清理、做了按状态分组的任务页面,最后还顺手给我打了个新的 EduData.exe 安装包。

  5. 想到新功能就让它加,55 分钟搞定 8 项 用着用着想法就多了:我要加删除功能、登录后要有个首页 Dashboard、上传页能不能自动填文件名、多任务一起跑会闪退……前前后后想到了 8 项新需求,还有一份高级分析功能的评估报告要写。我把这一堆想法告诉 TRAE,它 55 分钟就全部干完了——代码改了、功能加了、连《高级分析功能分析报告.md》这种文档都给我写好了。

  6. 细节 bug 也逃不掉,14 分钟修 6 个 后面又测出来一些小问题:上传时前端报错、列表里"更多"按钮折行了、日志按钮样式不一致、日志时间是空的、错误日志没法复制、历次分析的流程太繁琐。都是些细碎但影响体验的问题。我一次性列给 TRAE,它 14 分钟全修完了——从 Vue ref 自动解包的坑,到字段名写错了(timestamp vs log_time),再到历次分析流程简化,啥细节都没漏。

4.3 关键任务对话 Session ID(共 7 个)

  1. 6a3aff87ddc9bfefb12f2657(主力开发会话,跨多日 2026-06-24 ~ 2026-07-07)

    • 项目启动与全流程开发:从 14 项功能测试(用户注册 / 登录 / 上传 / CTT 分析 / 导出)到 51 种分析类型全流程验证

    • 表格模型支持:实现宽表 / 长表、多学科、多地区数据上传与解析

    • 单机版打包(子项目 A):ABC 抽象层 + SQLite 后端 + RSA 授权机制 + PyInstaller onedir 打包 + Inno Setup 安装器

    • 修复 IRT GRM 估计失败问题(NaN 难度阈值插值处理)

    • 解决 PyInstaller 打包依赖问题(xgboost / pingouin / matplotlib 收集)

    • 解决 openpyxl SegFault 崩溃(替换为 python-calamine Rust 引擎)

    • 实现分析结果分层显示(市 → 区县 → 学校三级嵌套 + 按需加载)

    • 实现学科切换 Tab、图表帮助图标、错误面板等 UI 优化

    • 新增县区专项分析(52 均衡度 / 53 差异分解 / 54 HLM 增值评价)

    • 启动速度优化(onefile → onedir、排除 llvmlite、splash 前置)

  2. 6a461eed669218f4ad19e064(2026-07-02,单机版架构精简)

    • 清除 server 模式相关配置和代码,确保单机版零外部依赖

    • 删除 7 个 server 模式相关文件,修改 13 个文件移除 server 模式依赖

    • 保留 db_abstraction.py 抽象层但内部仅走 SQLitePool 单分支

    • edu_data.spec 排除 celery / redis 防止传递依赖打包

  3. 6a4a8b3d99b7f6dca2e168f5(2026-07-06,模块化重构)

    • 完成模块化重构:将上传功能从"单次 / 历次分析"中抽离,集中到"数据采集"模块

    • 新建 Collection/Upload.vueCollection/List.vueSingle/New.vueMultiple/New.vueSingle/Records.vueMultiple/Records.vue 等组件

    • 更新路由配置,旧路径重定向到新路径以保持兼容

    • 修正分析类型 52 / 53 名称显示(从"类型52"改为"县区教育均衡度分析")

    • 图表高度优化(480→560、500→600)防止内容重叠

  4. 6a4be2b5ad01d61f37ab4f4b(2026-07-07,数据集使用计数重构)

    • 重构数据集使用计数机制(基于 single_analysis_records 表而非 analysis_tasks

    • 新增 DELETE /datasets/{id}/analysisDELETE /dataset-groups/{id}/analysis API

    • 实现 has_tasks 过滤参数,区分"新建分析"和"分析记录"页面的数据集展示

    • 重写"历次分析"新建流程,要求 ≥2 数据集组队

    • SQLite 迁移补建 single_analysis_records 为现有数据保留历史

  5. 6a4b881ead01d61f37ab4a72(2026-07-07,前后端联调)

    • 配合主力会话进行数据集列表、单次 / 历次分析记录的前后端联调

    • 验证 has_tasks 过滤、使用计数显示、"清除分析记录"按钮逻辑

  6. 6a4d71d3f6cc43e4d08b9f63(2026-07-08,环境适配与首次启动体验)

    • 实现 WebView2 运行时自动检测与静默安装(注册表三处检测 + 离线安装包查找)

    • 修改 edu_data.spec 条件打包 redist 安装包

    • 首次启动弹窗提示默认账号密码(init_admin() 返回值 + MessageBoxW)

    • SQL 建表脚本与实际数据表一致性校验(14 张表 + 5 个迁移字段)

  7. 6a4d8fc6f6cc43e4d08ba42e(2026-07-08,UI 细节打磨与数据表排序)

    • Loading 界面背景色优化(深蓝紫改为清新浅蓝白,符合明亮不压抑风格)

    • 修复按钮文字颜色在所有主题下均为蓝色看不清的问题(theme.js 定义 --el-color-primary 变量)

    • 实现分析结果数据表表头列名排序功能(smartSort 支持空值、数字、含数字字符串、中文字符串)

    • 统一按钮文字颜色规则:有背景色按钮用白色 #fff,文字 / 链接按钮用主题色


5. 对应的报名审核通过的帖子链接

【学习工作】学情洞察台 — 学情看得见,决策有依据

1 个赞