Files
ny-exam-platform/docs/guide/introduction.md
T
nxxy335 d05fd4a9b5 feat(export/dashboard): 导出增强与大屏公开化
导出-每次考试/多考试对比:
- 合格次数阈值等标记项抽为常显区块,三类成绩表共用
- 附缺考名单扩展到多考试导出(取所选考试全都没交的人)
- 块表每场固定2列(成绩+合并空位),修复漏推空串导致的整行左移/串列
- 列宽按实际内容估算,合并区空位只给最小宽度
- 合格次数始终显示实际次数(含0),仅 ≥ 阈值标绿底
- 打印标题改为「成绩明细」,缺考名单分页单独成页
- 打印样式加 print-color-adjust:exact,绿底/红字可正常印出

数据大屏:
- ?class= 班级大屏免登录公开访问,接口侧放行并按班级裁剪后回传
- 单班大屏移除退出按钮,仅首页保留
- 修复红绿判定真bug:membersTable 误用 window.DASH(DASH为let声明取不到)
  改为 scoreGrade() 直接读自由变量,按后台合格率正确判红/黄/绿

测试/样例/文档同步更新,全量回归通过。
2026-09-27 22:04:17 +08:00

61 lines
3.2 KiB
Markdown

# 平台简介
NY 问卷考试系统数据平台是一个**零第三方运行依赖**的 PHP 8 应用,直接对接
[卷王问卷系统(SurveyKing)社区版 v1.13](https://gitee.com/surveyking/surveyking) 的开放 API。
它不改变卷王本身的任何数据,只读拉取答卷,然后在本地做「姓名 → 学号」关联、
统计聚合、导出与展示。
## 它能解决什么问题
卷王自带的考试统计偏"问卷视角",而实际教学/培训场景通常需要的是"名单视角":
- 谁**没考**(而不是谁考了)—— 需要拿完整名单去比对;
- 某个班 / 某个组的成绩分布如何 —— 需要按班级、组别切片;
- 同一个人考了多次,该看哪一次 —— 需要去重策略 + 完整的考试次数;
- 不同试卷满分不同 —— 需要每卷独立的满分与合格率;
- 成绩要交给教务系统 —— 需要干净的 `.xlsx` 导出;
- 要抽查 / 抽考 —— 需要可去重、可留痕的随机抽取。
## 功能总览
### 主系统 `index.php`
| 模块 | 说明 |
| --- | --- |
| 试卷切换 | 下拉选择卷王中的问卷 / 考试,自动拉取该卷全部答卷 |
| 姓名关联 | 自动识别答卷中的「姓名」题,也可手动指定字段;未匹配答卷单独面板 + 一键补入名单 |
| 统计卡片 | 名单总人数、已提交、缺考、平均分、最高分、最低分、合格率、平均用时;选择班级后全部联动 |
| 成绩明细 | 虚拟滚动(无分页)、点击表头排序、搜索(提示同步显示命中数)、考试次数、新提交绿色高亮(30 秒自动清除) |
| 缺考名单 | 名单中有但未提交的人,支持复制学号 / 姓名、打印(按班级分组) |
| 试卷设置 | 为当前选中的试卷单独设置满分 / 合格率 / 免考名单,试卷间互相隔离 |
| 导出 / 打印 | 成绩明细、缺考名单 `.xlsx`;成绩明细按成绩降序打印,支持分组小计、合格标记、附缺考名单、签字栏 |
### 数据大屏 `dashboard.php`
首页先选试卷,再用卡片列出该卷的班级;点卡片进入该班专属大屏。
大屏页支持全屏切换与自动刷新,**没有返回按钮,浏览器后退键也被屏蔽**(只能靠地址栏或关标签页离开)。
### 随机抽取 `draw.php`
从「学号名单」或「某试卷已提交人员」中随机抽取,支持:
- 按班级 / 组别筛选;
- 名额分配四种模式:按人数加权(默认)、各组均分、自定义比例、不分组;
- 排除已抽中(本次会话内去重)、排除管理(手动指定不参与的人);
- 历史批次留痕、白名单导入模板 / 白名单列表导出。
![名单管理](/images/roster.png)
## 设计约束
- **零 Composer 依赖**:不使用任何 PHP 第三方库,XLSX 读写、ZIP 打包均由仓库内代码完成;
- **不修改卷王数据**:全程只读(登录 + 项目列表 + 答卷列表 + 答卷详情);
- **可降级**:没有 `zip` 扩展时用内置解析器读 xlsx;没有 `pdo_sqlite` 时自动回落到 JSON 文件存储;
- **单目录部署**:整个目录复制到站点目录即可,只需保证 `data/` 可写。
## 下一步
- [环境要求与部署](./install.md)
- [快速上手](./quickstart.md)