# FssAdmin_school **Repository Path**: fsscms/fss-admin_school ## Basic Information - **Project Name**: FssAdmin_school - **Description**: 智慧学校管理系统(模块目录名 schoole):面向教务、班主任、科任教师的后台管理、教师移动端,以及面向家长的家长端。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: https://school.phpframe.org/ - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-07 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# 🎓 NovaSchool · 智慧校园管理系统 **一套后端 API,同时驱动 Web 管理后台、教师端小程序与家长端小程序** [![PHP](https://img.shields.io/badge/PHP-8.3+-777BB4?logo=php&logoColor=white)](https://www.php.net/) [![Workerman](https://img.shields.io/badge/Workerman-5.2-00AFF0)](https://www.workerman.net/) [![Vue](https://img.shields.io/badge/Vue-3.5-4FC08D?logo=vue.js&logoColor=white)](https://vuejs.org/) [![Element Plus](https://img.shields.io/badge/Element%20Plus-2.13-409EFF)](https://element-plus.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![UniApp](https://img.shields.io/badge/UniApp-3.x-2B9939)](https://uniapp.dcloud.net.cn/) [![MySQL](https://img.shields.io/badge/MySQL-8.0+-4479A1?logo=mysql&logoColor=white)](https://www.mysql.com/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
--- ## 📖 项目简介 **NovaSchool** 是运行在 [Fssphp](https://github.com/xuey490) 全栈框架之上的 **K12 智慧校园管理系统**。 它把学校日常教务中最琐碎、最耗时的环节(建班分课、成绩录入、作业批改、请假审批、通知触达、家校沟通)做成了**一套后端 + 三端协同**的完整闭环: - 后端演示:https://school.phpframe.org/ 账号:admin 密码:123456 - 家长端(uniApp):https://parent.phpframe.org/ 账号:13712345678 密码:123456 - 备用家长端(H5):https://school.phpframe.org/#/parent 账号:13712345678 密码:123456 - 教师端(uniApp):https://teacher.phpframe.org/ 账号:admin 密码:123456 家长端,教师端(uniApp)可独立打包成微信,支付宝,快手,抖音,百度等小程序,兼容全平台。 [![](https://parent.phpframe.org)](https://parent.phpframe.org/parentQR.png) [![](https://parent.phpframe.org)](https://parent.phpframe.org/parentQR.png) 购买联系作者微信号: xdbyvibm6 | 客户端 | 目录 | 面向用户 | 技术栈 | |--------|------|----------|--------| | 🖥️ **Web 管理后台** | `web/` | 校长 / 教务 / 管理员 / 教师(桌面办公) | Vue 3 + Vite + TypeScript + Element Plus + Pinia | | 📱 **教师端小程序** | `teacher/` | 班主任 / 任课教师(移动办公) | UniApp + uview-plus | | 👨‍👩‍👧 **家长端小程序** | `parent/` | 学生家长(家校互通) | UniApp + uview-plus | > 三端共用同一套 `/api/schoole/**` 接口,后端零重复逻辑。 ### ✨ 核心亮点 - 🤖 **AI 智能出题**:对接 DeepSeek 等大模型,通过 WebSocket **流式推送**生成题目,支持导出 Excel、批量导入与**人工审核入库**闭环 - ✅ **作业自动判分**:单选 / 多选 / 判断 / 填空 / 阅读理解逐题自动判对错,教师端与管理端均以 ✓ / ✕ 直观标记 - 🔄 **学期一键结转**:学期结束时一键升年级、自动毕业,支持结转预览,学生班级历史完整留痕 - 👨‍👩‍👧 **多孩子家长账号**:一个家长账号绑定多个孩子,自由切换查看成绩、作业与在校表现 - 🏢 **多租户(SaaS)**:一套系统承载多所学校 / 分校区,数据行级隔离 + 菜单权限隔离 - 📊 **成绩分析与大屏**:班级 / 年级 / 学生多维度统计、分数段分布、数据可视化大屏 --- ## 🚀 功能总览 ### 一、基础数据管理 | 模块 | 主要能力 | |------|----------| | **学期管理** | 学年学期维护、当前学期设置、**学期结转(升年级 / 毕业,带预览)** | | **年级管理** | 年级维护、及格线 / 优秀线配置、毕业年级标识 | | **科目管理** | 科目维护、及格线 / 优秀线、启用停用 | | **班级管理** | 班级创建、班主任 / 任课教师分配、学生名册、名册导出 | | **教师管理** | 教师档案、任教科目与班级关系、头像、Excel 批量导入导出 | | **学生管理** | 学生档案、父母信息、班级历史、Excel 批量导入导出(含模板下载) | | **学籍异动** | 转班、转学、休学、复学、退学、毕业,异动记录留痕 | ### 二、考试与成绩 | 模块 | 主要能力 | |------|----------| | **考试批次** | 按学期 / 年级 / 班级建立批次,批量生成各科考试、批次锁定 | | **成绩录入** | 在线录入(支持正常 / 缺考 / 免考)、**Excel 模板导入导出** | | **成绩分析** | 班级 / 年级 / 学生维度统计、平均分 / 最高最低分 / 及格率 / 优秀率、分数段分布、结果导出 | ### 三、题库 · 试卷 · 作业 | 模块 | 主要能力 | |------|----------| | **题库管理** | 六种题型(单选 / 多选 / 判断 / 填空 / 解答 / 阅读理解)、知识点、难度星级、出处、解析、Excel 批量导入、启用停用 | | **🤖 AI 出题** | 选定科目 / 年级 / 题型 / 数量 / 难度 / 考察点 → 大模型**流式生成** → 结构化预览 → 一键入库(待审核)/ 导出 Excel → 人工审核通过后正式入库 | | **试卷管理** | **手动组卷 / 随机组卷 / 蓝图组卷**三种模式、题目快照、发布与撤回、试卷复制、自动生成 | | **作业管理** | 布置作业(纯文本 / 题库选题 / 整套试卷)、开闭状态、**答案公布控制**、学生在线作答 + 拍照上传、**自动判分**、教师批改评分评语 | ### 四、校务与家校 | 模块 | 主要能力 | |------|----------| | **请假管理** | 家长提交 → 教师 / 管理员审批,请假天数与附件 | | **通知公告** | 校级 / 班级通知、发布与失效时间、附件、**已读统计** | | **学生评价** | 教师多维度评价(班主任 / 副班主任 / 科任老师 + 学科)、内容与发布状态管理 | | **班级活动** | 三类活动:**报名**、**投票**(单选 / 多选 / 分组)、**接龙**,参与者名单与实时统计 | | **班级相册** | 班级照片、荣誉墙、学生照片分类管理 | | **数据大屏** | 学校概览(班级 / 学生 / 教师 / 考试数)、荣誉展示、近期考试与活动 | ### 五、家长端小程序 登录注册(多校选择)· 多孩子切换 · 首页聚合 · 未读角标提醒(未读公告 / 待完成作业)· 成绩查询 · **在线做作业并提交** · 请假申请 · 班级活动报名 / 投票 / 接龙 · 通知公告 · 学生评价 · 班级相册 · 个人资料 ### 六、教师端小程序 登录(多校选择)· 工作台 · 我的班级与学生名册 · 成绩录入 · **作业布置与批改** · 请假审批 · 通知公告 · 班级相册 · 个人资料 --- ## 🏗️ 系统架构 ```text ┌──────────────────────────────────────────────────────────────────────┐ │ 客户端层 │ │ Web 管理后台 教师端小程序 家长端小程序 │ │ (Vue3 + ElementPlus) (UniApp 微信/H5/APP) (UniApp 微信/H5/APP) │ └───────────────┬──────────────────┬───────────────────┬───────────────┘ │ HTTP /api/schoole/** │ ┌───────────────▼──────────────────▼───────────────────▼───────────────┐ │ NovaPHP 应用层 │ │ Attribute 路由 → 中间件管道 → Controller → Service → DAO │ │ (Symfony Routing) (Auth/RBAC/Tenant/日志) (事务/校验/业务编排) │ └───────────────┬──────────────────────────────────────────────────────┘ │ ┌──────────┼──────────────────────────┬──────────────────────┐ ▼ ▼ ▼ ▼ ┌─────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │ MySQL │ │ Redis │ │ Eloquent │ │ WebSocket │ │ 业务数据 │ │ 缓存/队列/限流│ │ / ThinkORM │ │ AI 流式输出 │ └─────────┘ └──────────────┘ └──────────────┘ │ (Workerman) │ └───────┬───────┘ ▼ ┌────────────────┐ │ DeepSeek / GPT │ └────────────────┘ ``` **请求生命周期**:`public/index.php` → `Framework::dispatch()` → 应用解析 → 路由匹配 → 中间件洋葱模型(全局 → 应用 → 路由属性)→ 控制器 → 统一响应 `{ code, msg, message, data }` **三种运行时**:同一套 `app/` + `framework/` 业务代码,可在 **PHP-FPM**、**Workerman**、**Swoole** 三种进程模型下运行,入口只适配 HTTP 层: ```bash php -S localhost:8000 -t public # PHP-FPM / 内置服务器 php server.php start # Workerman(HTTP 8000 + WebSocket) swoole-cli swoole.php start # Swoole ``` --- ## 🛠️ 技术栈 ### 后端 | 类别 | 技术 | 版本 | |------|------|------| | 运行时 | PHP | 8.3+ | | HTTP / 路由 / DI | Symfony http-foundation · http-kernel · routing · dependency-injection | 7.4 | | 常驻服务 | Workerman | 5.2 | | ORM | Laravel Eloquent(主)/ ThinkORM(备) | 12.58 / 4.0 | | 鉴权 | JWT(lcobucci/jwt) | 5.6 | | 权限 | Casbin RBAC | 4.2 | | 缓存 | Redis(predis) | 3.3 | | 日志 | Monolog | 3.9 | | 图像处理 | Intervention Image | 4.0 | | AI 客户端 | Guzzle HTTP | 7.10 | ### 前端与小程序 | 类别 | 技术 | |------|------| | Web 管理后台 | Vue 3 · Vite · TypeScript · Element Plus · Pinia · Tailwind CSS · ECharts · xlsx | | 小程序(教师 / 家长) | UniApp 3 · uview-plus · Vue 3 · TypeScript | | 实时通信 | 原生 WebSocket(AI 流式输出,默认端口 `12341`) | ### 数据库 MySQL 8.0+ · `utf8mb4` · 业务表统一 `school_` 前缀(40+ 张表) --- ## 📁 项目结构 ```text project/ ├── app/ # 后端业务代码 │ ├── Controllers/Schoole/ # 学校模块控制器(23 个业务控制器) │ ├── Services/Schoole/ # 业务服务层 │ ├── Dao/Schoole/ # 数据访问层 │ ├── Models/Schoole/ # Eloquent 模型 │ ├── Middlewares/ # 鉴权 / 权限 / 租户 / 操作日志 │ └── Services/Ai/ # AI 客户端(OpenAI 兼容协议) ├── framework/ # 自研框架内核(Symfony + Workerman) ├── config/ # 配置(apps / database / jwt / middlewares ...) ├── public/index.php # HTTP 入口 ├── database/ │ ├── school_database.sql # 学校模块数据库脚本(一键导入) │ └── migrations/ # 演进式迁移脚本(057 ~ 089 为学校模块) ├── web/ # Web 管理后台(Vue 3) │ └── src/views/schoole/ # 学校模块页面(20 个业务模块) ├── teacher/ # 教师端小程序(UniApp) ├── parent/ # 家长端小程序(UniApp) ├── start_websocket_server.php # AI 流式输出 WebSocket 服务 ├── server.php # Workerman HTTP + WebSocket 入口 └── docs/ # 接口清单与开发文档 ``` --- ## ⚡ 快速开始 ### 环境要求 | 依赖 | 版本要求 | |------|----------| | PHP | ≥ 8.3(需 `pdo_mysql` `curl` `mbstring` `gd` 扩展) | | MySQL | ≥ 8.0 | | Redis | ≥ 5.0 | | Composer | ≥ 2.x | | Node.js | ≥ 20.19.0 | | pnpm | ≥ 8.8.0(仅 `web/` 管理后台) | | 微信开发者工具 | 最新版(调试小程序时需要) | ### 1️⃣ 后端部署 ```bash # 1. 拉取代码并安装依赖 git clone https://github.com//novaschool.git cd novaschool composer install # 2. 配置环境变量 cp .env.example .env # 编辑 .env,填写数据库 / Redis / JWT / AI 相关配置 ``` `.env` 关键配置示例: ```ini APP_DEBUG = true DB_TYPE = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_NAME = fssoa DB_USERNAME = root DB_PASSWORD = root DB_CHARSET = utf8mb4 REDIS_HOST = 127.0.0.1 REDIS_PORT = 6379 # AI(可选,用于智能出题 / 文章生成) AI_HTTP_VERIFY = false ``` ```bash # 3. 导入数据库 mysql -uroot -p fssoa < database/school_database.sql # 4. 启动服务 php server.php start # Workerman 常驻模式:HTTP :8000 + WebSocket :1234 # 或 php -S localhost:8000 -t public # 传统 FPM / 内置服务器模式 ``` 访问 `http://127.0.0.1:8000` 即可。 ### 2️⃣ Web 管理后台 ```bash cd web pnpm install pnpm dev # 开发模式(默认端口 3060) pnpm build # 生产构建(含 vue-tsc 类型检查) pnpm lint # ESLint 检查 ``` 开发环境下 Vite 会把 `/api` 请求代理到后端,配置位于 `web/.env.development`: ```ini VITE_API_URL = /api VITE_API_PROXY_URL = http://localhost:8000 # 改成你的后端地址 VITE_PORT = 3060 ``` ### 3️⃣ 教师端 / 家长端小程序 ```bash cd teacher # 或 cd parent npm install npm run dev:mp-weixin # 微信小程序 npm run dev:h5 # H5 调试 npm run build:mp-weixin # 生产构建 ``` 构建产物位于 `dist/dev/mp-weixin`,用**微信开发者工具**导入即可预览。接口地址由环境变量 `VITE_API_BASE` 指定(未设置时默认 `http://127.0.0.1:8000`,H5 为 `/prod`),配置文件为 `src/utils/base.ts`。真机调试前请改为可公网访问的域名。 ### 4️⃣ AI 出题服务(可选) AI 出题依赖独立的 WebSocket 流式服务: ```bash php start_websocket_server.php start # 监听 :12341 ``` 随后在后台 **AI 管理** 模块中完成两步配置: 1. 新增**供应商**(如 DeepSeek,`base_url` = `https://api.deepseek.com`,填入 API Key) 2. 新增**模型**记录,`scene` 选择 `question_generate` 并启用 配置完成后,即可在题库页面使用「AI 出题」。 --- ## 🔌 API 约定 ### 统一响应格式 ```json { "code": 200, "msg": "ok", "message": "ok", "data": {} } ``` - `code = 200` 表示成功;`401` 触发登录态失效处理;`403` 表示无权访问 - 业务错误通过 `msg` / `message` 返回,前端统一提示 ### 鉴权与权限 - **鉴权**:JWT(HS256),Access Token 默认 1 小时、Refresh Token 24 小时,支持多设备登录与黑名单 - **租户**:请求头 `X-Tenant-ID` 指定当前学校;用户可属于多所学校并自由切换 - **权限**:Casbin RBAC,权限点命名规范 `模块:资源:动作`,例如: - `schoole:question:index` / `schoole:question:import` / `schoole:question:review` - `schoole:student:save` / `schoole:score:export` ### 路由定义(PHP 8 Attribute) ```php #[Route(path: '/api/schoole/question/list', methods: ['GET'], name: 'schoole.question.list')] #[Auth(required: true)] #[Permission('schoole:question:index')] public function list(Request $request): BaseJsonResponse { return $this->success($this->svc->getList($this->requestPayload($request))); } ``` 完整接口清单见 [`docs/api-routes.csv`](./docs/api-routes.csv)。 --- ## 🗄️ 数据模型 学校模块共 40+ 张业务表,核心表如下: | 分类 | 数据表 | |------|--------| | 基础数据 | `school_term` `school_grade` `school_subject` `school_class` `school_class_teacher` `school_profile` | | 人员 | `school_student` `school_student_parent` `school_student_class_history` `school_teacher_profile` `school_teacher_subject` | | 考试成绩 | `school_exam_batch` `school_exam` `school_score` | | 题库试卷 | `school_question` `school_paper` `school_paper_section` `school_paper_question` `school_paper_blueprint` `school_paper_generation_log` | | 作业 | `school_homework` `school_homework_submit` `school_homework_file` `school_homework_submit_file` | | 校务 | `school_leave` `school_notice` `school_notice_read` `school_notice_file` `school_student_eval` | | 活动相册 | `school_activity` `school_activity_option` `school_activity_vote_option` `school_activity_vote_record` `school_activity_register` `school_activity_chain_entry` `school_activity_participant` `school_album_item` | | 家长端 | `school_parent_account` `school_parent_student` | | 其他 | `school_import_log` | **命名约定**:模型统一使用 `create_time` / `update_time` / `delete_time` 时间戳与软删除;状态字段 `0 = 禁用`、`1 = 启用`。 --- ## 🔐 安全特性 内置多层安全防护,业务代码无需重复处理: - 🛡️ **XSS 过滤**:HTMLPurifier 全局过滤 GET / POST / JSON / 文件 - 🔒 **CSRF Token** 校验与 **CORS** 跨域配置 - 🚦 **接口限流**:基于 Redis 的速率限制,返回 `X-RateLimit-*` 响应头 - ⛔ **IP 黑名单**:支持 IPv4 / IPv6 CIDR 网段 - 🍪 **Cookie 合规**:Cookie 同意中间件 - 📝 **操作日志**:写操作自动落库,可追溯 - 🔑 **JWT 黑名单**:登出 / 改密后旧 Token 立即失效 --- ## 🗺️ Roadmap - [ ] 学生端小程序(在线做题、成绩查询、错题本) - [ ] 智能组卷增强:知识点覆盖率分析与试卷难度预测 - [ ] 作业 AI 批改:主观题自动评分与评语生成 - [ ] 课表与排课引擎 - [ ] 数据导出中心(成绩单 / 学生档案 PDF 批量生成) - [ ] 消息推送(微信订阅消息 / 短信) --- ## 🤝 参与贡献 欢迎提交 Issue 与 Pull Request: 1. Fork 本仓库 2. 新建分支:`git checkout -b feature/your-feature` 3. 提交改动:`git commit -m 'feat: add some feature'` 4. 推送分支:`git push origin feature/your-feature` 5. 提交 Pull Request **代码规范**:后端遵循 PSR-12,使用 PHP-CS-Fixer 与 PHPStan 校验;前端遵循 ESLint + Prettier + Stylelint。所有 PHP 文件需声明 `declare(strict_types=1)`。 ```bash vendor/bin/php-cs-fixer fix # 后端代码格式化 vendor/bin/phpstan analyse # 后端静态分析 cd web && pnpm lint && pnpm fix # 前端检查与自动修复 ``` --- ## 📄 License 本项目基于 [MIT License](./LICENSE) 开源,可自由用于商业项目。 --- ## 🙏 致谢 - 后端框架基于 [FSSPHP](https://github.com/xuey490) 构建 - Web 管理后台基于 Art Design Pro 风格主题 - 小程序 UI 组件使用 [uview-plus](https://uiadmin.net/uview-plus/) - 感谢所有为项目提交 Issue 与 PR 的贡献者 ---
**如果这个项目对您有帮助,请点一个 ⭐ Star 支持一下!** Made with ❤️ for schools