一、立项背景和目标
篆刻等素质教育学科长期依赖纸质作业与人工批改,存在名师资源稀缺、批改口径不一致、教学效果难以量化沉淀等问题;同时连锁加盟模式下校区分散,总部难以对学生、师资、服务权益与经费进行统一管控。本项目立项旨在建设"AI伴学中心"教师端智能学习管理平台,打通学生作业采集、AI 切图识别、智能批阅、结果回写的全链路,以机器批阅替代重复性人工劳动,实现校区、师资、学生、服务与考点的一体化线上管理,降低运营成本并形成可持续的教学数据资产。
二、软件功能、核心功能模块
系统管理:菜单管理、角色管理(角色新增/编辑、菜单权限分配)。
用户管理:平台用户(运营人员)管理;加盟商管理(新增/编辑/启停、余额充值、扣款与冲正);伴学师管理(新增/编辑/启停、绑定学生);学生管理(新增/编辑、开通服务、服务变更、绑定伴学师)。
校区管理:校区(门店)建档、编辑、删除、启停,关联校长与伴学师。
数据采集:按权限获取所辖学生列表,支持学生作业拍照上传、按科目自动打包、排序与图片类型/科目修改、图片详情查看、题目区域框选。
切图批阅:批阅任务列表与状态轮询、任务处理(对错模式/打分模式切换、AI 自动批阅、人工框选批阅、批量打分、跨页选择、参考答案维护、确认完毕)。
考点区域管理:按授权学段(小学/初中/高中)维护各科目的考点开通范围。
基础支撑:登录鉴权与验证码、细粒度权限指令、业务字典、图片跨域代理、安卓客户端下载。
三、业务流程、功能路径
主干流程为"数据采集 → 切图批阅":登录后进入数据采集,筛选学生 → 拍照上传作业 → 图片处理(按科目打包、排序、调整类型)→ 图片详情 → 图片框选,框选题目区域后提交 AI 批阅任务;随后进入切图批阅查看任务列表 → 任务处理,选择批阅模式,执行 AI 自动批阅或人工框选批阅,进行批量打分或对错结论判定,最终"确认完毕"回写学生作业结果。
管理链路为:系统管理配置角色与菜单权限 → 校区管理完成校区建档 → 用户管理依次完成加盟商充值、伴学师绑定学生、学生开通服务 → 考点区域管理配置授权范围。对应页面路径:数据采集 /collectMark/dataCollect 及其拍照、图片处理、图片详情、图片框选子页,切图批阅 /collectMark/clipMark 与任务处理 /collectMark/clipMark/:packageId,校区管理 /store/operate,用户管理 /user/*,系统管理 /system/*,考点区域管理 /exam-area/operate
一、整体架构和设计思路、技术栈
前后端分离 SPA,分视图、接口、状态、公共四层。技术栈为 Vue 3.5(组合式 API)+ Vite 7、Vue Router 4、Pinia 3、Element Plus 2、Axios、Sass,Nginx 静态部署。按业务域纵向切分:views 分 system、user、store、collectMark、exam 五大模块,路由经 menuList 拆为 19 条业务路由并与 menuCode 权限对应;接口层拆为 8 个文件共 105 个接口,统一由 base-request.js 暴露;Pinia 拆为 user、base、cachedViews 三个 store;公共层沉淀 16 个组件与 4 个权限指令。
二、我负责的模块和结果
我负责整体前端架构与工程化基建。搭建 230 个源文件、约 2.7 万行的工程框架与分层规范;封装 182 行统一请求层,收敛全站 105 个接口的 token 注入、全局 loading 与 401 自动登出,业务侧接入单接口平均不超过 3 行代码;沉淀 16 个公共组件与 4 个权限指令供五大模块复用;搭建 5 套环境配置与 3 套 Dockerfile,实现四套环境一键发布;接入按需引入、gzip 压缩与版本轮询刷新。
三、我遇到的难点、坑和解决方案
1. 老式硬件 SDK 集成。拍照依赖 Eloam 高拍仪的 jQuery 全局插件,经本机 38088 端口通信且非 ESM,直接引入即报错。方案:封装为独立 SDK 文件,动态 import 先注入 window.jQuery 再加载插件,并用 Promise 包装其回调接口供上层 await 调用。
2. 数组参数不兼容后端。axios 默认产生 `ids[]=1`,后端无法解析。方案:自定义 paramsSerializer 用 URLSearchParams 逐项 append;文件上传须删除 Content-Type 交由浏览器生成 boundary。
3. 图片跨域与防盗链。OSS 图片校验 Referer,直连被拦。方案:开发态经 Vite /image-proxy 代理并改写 Referer,生产态由 Nginx 同源转发。