程序聚合 软件案例 推优评价系统

推优评价系统

2026-10-10 21:07:29
行业:在线教育
载体:小程序
技术:Java、Spring Boot

业务和功能介绍

项目背景和目标
高校推优(推荐优秀团员作为入党积极分子)工作长期依赖 Excel 和纸质材料,存在几个痛点:
评分口径不统一:不同班级、不同团支书对同一份文件的理解不同,算出来的分数不一致。
材料收集散乱:入党申请书、学习心得、活动证明分散在微信群、邮箱、纸质档案中,难汇总。
推优依据不透明:学生不知道自己的分数怎么来的,容易产生争议。
数据无法沉淀:每学期的推优数据难以跨期对比、难以追溯。

目标: 做一个面向高校党建推优场景的量化评分系统,把"分数怎么算"标准化、"材料怎么交"线上化、"评分依据"透明化。
软件功能
系统有四种角色:

角色 主要功能
学生 上传入党申请书、学习心得;查看自己的推优总分和分项明细
班级团支书 录入本班学生的思政课成绩、群众评议分、缺勤次数
教师 查看本学院排名、导出成绩数据
管理员 用户管理、班级填报解锁、数据中台同步、孤儿文件清理、审计日志

核心功能
推优总分自动计算:把"政治理论与表现(40 分)+ 实践与创新(30 分)+ 群众评议(30 分)"三部分,按规则自动算分。

数据中台积分同步:对接学校数据中台的积分认定接口,自动拉取学生的活动、获奖、志愿服务记录,作为评分的客观依据。
材料上传与管理:学生上传入党申请书、学习心得,后端用签名 URL 保护文件访问。
班级填报闭环:团支书录入班级数据,24 小时后锁定,管理员可解锁。
排名与导出:教师查看本班/本院排名,导出 CSV。
业务流程:
学生登录——上传材料——系统自动计算得分
团支书登录——录入班级数据——提交——24h锁定
管理员登录——同步数据中台——管理用户——解锁填报——导出数据


功能路径描述:
学生:登录 ——首页(查看总分和分项)——理论研学与思考(上传材料)——材料保存后自动重算分数
团支书:登录 ——录入成绩 ——选择班级 ——填写思政课成绩/群众评议/缺勤 ——24 小时内可修改
登录 ——首页(查看排名)——选择班级 ——查看排名 ——导出 CSV
登录 —— 管理首页 ——用户管理 / 班级填报管理 / 数据中台同步 / 孤儿文件清理 / 审计日志

项目实现

整体架构:微信小程序通过 HTTPS 向 Nginx 发送请求,Nginx 进行 SSL 终止后将请求以 HTTP 转发给 Spring Boot 后端服务,Spring Boot 通过 JDBC 操作 MySQL 数据库,同时通过 HTTPS 调用学校数据中台的积分认定接口。

设计思路:
前后端分离:小程序只负责 UI 和交互,业务逻辑在后端。
数据中台作为客观数据源:学生的活动、获奖记录从中台拉取,避免手工录入。
本地缓存 + 定时同步:中台数据拉取后落库,学生查询读本地,减少对中台的实时压力。
文件签名 URL:上传文件不公开,用 HMAC 签名 URL 保护,2 小时有效。
异步任务 + 暂存表:全量同步用"暂存表 + 原子替换",同步中断不影响线上数据。

我负责的模块和结果
我负责全部模块:
后端:3 个 Controller、5 个 Service、4 个安全组件。
前端:15 个页面、14 个工具模块。
部署:Docker Compose 部署、Nginx 反代、MySQL 字符集迁移。

结果:
成功同步 549,418 条中台记录,与中台报告总数完全一致。
覆盖 24,396 名学生。
解决了 8 天无法成功同步的问题(根因是 token 过期处理不当 + 同步并发竞争)。
优化了批量导入:从 1.1 秒/人降到几秒完成 100 人。
修复了文件访问 403(Nginx 反代 + 签名 URL 主机错误)。
遇到的难点
难点 1:中台 token 过期导致整轮同步报废
现象: 定时同步经常失败,拉了 1058/1099 页就差 41 页,功亏一篑。
根因: 中台 token 有效期 2 小时,一轮同步要 27 分钟。token 过期时中台返回 HTTP 400(不是 HTTP 200 + 业务错误码),原代码没处理这种形态,异常穿透所有重试,整轮报废。
解决方案:
executeWithRetry 新增 HTTP 400 形态的 token 失效检测。
请求时动态取 token,重试时自动换新 token。
修复后,token 过期只造成单页重试(几秒),不报废整轮。

难点 2:Nginx 反代导致签名 URL 主机错误
现象: 学生上传的图片显示不出来,URL 是 http://127.0.0.1/api/files/access?...(80 端口,没有 :8080)。
根因: 后端生成签名 URL 时,取 request.getServerName() 和 getServerPort()。Nginx 反代把 Host 头改成 127.0.0.1,端口是 80,后端误判为"本地开发",生成了错误的主机。
解决方案:
后端加判断:如果是反代请求(有 X-Forwarded-* 头),用配置的公网域名

示例图片视频


七贤
1天前活跃
方向: 后端-Java、移动端-安卓、
交付率:100.00%
相似推荐
H5麻将(3D版)
本方案以 H5 技术结合 3D 渲染引擎打造麻将游戏前端,无需下载安装,浏览器内即开即玩,呈现立体生动的牌局画面与流畅交互体验,适配多类设备。后端采用 C 语言开发高性能服务端,凭借底层执行效率与精细内存管理,可稳定承载高并发访问,满足大量玩家同场竞技,保障牌局同步及时、操作响应迅速。整体架构高内聚低耦合,迁移方便,灵活部署于各类服务器与云平台,快速扩容、成本可控,兼顾画质、性能与运维便利。
掼蛋H5版
本方案以 H5 技术打造掼蛋游戏前端,免安装、即点即玩,浏览器内即可流畅开局,适配各类设备,用户体验出色。后端采用 C 语言开发高性能服务端,凭借底层执行效率与内存优化,能够稳定承载高并发访问,满足大量玩家同时在线的对局需求,保证牌局快速同步、响应及时。整体架构高度解耦,迁移方便,可灵活部署于各类服务器与云环境,快速扩容、低成本运维,兼顾稳定性、性能与部署灵活性,是成熟的棋牌平台解决方案。
H5斗地主
本方案采用 H5 技术构建斗地主游戏前端,无需安装客户端,通过浏览器即可随时随地开玩,兼容性强、体验流畅。后端基于 C 语言开发高性能服务端,凭借 C 语言的底层优势与极佳的执行效率,能够稳定支撑大规模并发访问,轻松应对海量玩家同时在线的压力,保证对局稳定、响应迅速。整体架构耦合度低、迁移方便,可灵活部署至多种服务器环境与云平台,实现低成本快速扩展,兼顾用户体验、性能与运维便利性。
基于神经网络的游戏动画系统
MotionWeaver 是一套面向 Unreal Engine 游戏开发的 AI 驱动角色动作生成系统,旨在解决传统游戏动画制作成本较高、动画资产复用困难、复杂动作衔接不自然,以及角色运动与动画表现难以协调等问题。 项目以神经网络动作生成技术为核心,结合游戏引擎的角色运动系统,实现从动画数据采集、模型训练到动作推理与引擎集成的完整技术流程。 主要功能包括: 动画数据采集与处理: 支持从 Unreal Engine 动画资产中提取骨骼姿态、位置、旋转及时间序列信息,完成骨骼映射、数据清洗、质量审核与训练数据集构建。 AI 动作模型训练: 提供基于深度学习的动作表示学习、姿态预测与生成模型训练功能,支持模型检查点管理、训练指标记录及实验评估。 条件动作生成: 利用角色根运动轨迹、历史动作状态及参考姿态等条件,生成连续骨骼动作,研究不同运动条件下的动画生成效果。 复杂动作约束: 针对跑酷、跨越障碍等复杂场景,支持参考姿态引导及关键帧约束,改善动作准确性与空间匹配效果。 UE 动画集成与验证: 提供模型推理与 Unreal Engine 动画系统的集成和实验验证能力,支持生成动作的预览、重建、测试及效果分析。 模型评测与对比: 通过骨骼位置误差、运动连续性、关键帧约束误差等指标,对不同模型及优化方案进行定量分析。 项目主要面向游戏角色动画生成、AI 动画技术研究和游戏开发工具链建设,为智能角色运动与游戏动画自动化提供技术基础。
H5休闲解压益智游戏(拖拽对齐,单文件纯前端)-拉线解压 KNOT OUT
《拉线解压》(KNOT OUT)是一款纯前端、零后端的 H5 休闲解压益智游戏。核心操作:拖动一根线的控制点,把线的中点精确送入目标环;吸附越准,评级越高(金/银/铜),并触发连击。 功能模块:① 操作与判定——拖拽线并实时吸附判定,按精度分金/银/铜三档(金档才续连击),配连击上行音反馈;② 关卡与难度包络——线数随关卡从 3 递增到 10、吸附窗口逐关收紧(78→48px),目标环视觉与判定窗口一致;③ 风格目标——按关卡轮换「全金档 / 全程无错位 / 由外向内(目标环标 1..N 序号)」,达成即得星;④ 每日挑战——以本地日期为种子的独立关卡,布局与主题由种子确定;⑤ 留痕世界——把逐关评级、星与每日印记,按存档确定性重算成一条「世界路径」;⑥ 音频——音效全部由 Web Audio 实时合成(C 大调音阶),BGM 三首可轮播。 主要功能路径:打开即玩 → 拖线对齐 → 评分/连击 → 过关结算 → 下一关 / 每日挑战 → 世界回顾。
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服