Files
wo_chovy/前端与AI使用说明.md
2026-09-21 19:49:26 +08:00

6.7 KiB

沃林学生管理系统 · 前端与 AI

启动

在 PyCharm 打开 D:\python编程\student_management_system,运行 main.py。

已验证的 Python 解释器:C:\Users\Windows\AppData\Local\Programs\Python\Python310\python.exe。

  • 工作台:http://localhost:8004/
  • API 文档:http://localhost:8004/docs
  • 前端是原生 HTML、CSS、JavaScript,正常运行不需要 Node.js,不需要前端构建。
  • 更换 Python 环境后执行 python -m pip install -r requirements.txt。
  • 保持本地 MySQL 启动,连接配置仍在 database.py。数据库未重置;就业时间修复已备份并补齐两条初始记录的缺失日期。
  • 如果提示 8004 端口占用,先查看是否已在 PyCharm 启动了同一个项目;不要重复运行。

页面功能

整体沿用 sqlalchemy_fastapi_system/frontend 就业管理页的深紫侧栏、浅紫背景、白色卡片、表格及弹窗样式。

页面 功能
学生管理 姓名、学号、班级筛选;新增、编辑、详情、逻辑删除;详情内查看成绩和就业记录
班级管理 名称筛选;新增、编辑、详情、逻辑删除;查看班级学生
教师管理 姓名、科目筛选;新增、编辑、详情、逻辑删除;查看已绑定的班级与学生
顾问管理 姓名筛选;新增、编辑、详情、逻辑删除;查看名下学生;电话脱敏
成绩管理 学生、班级、考试次序筛选;新增、编辑、详情、逻辑删除
就业管理 公司、学生、薪资范围筛选;新增、编辑、详情、逻辑删除
统计分析 班级性别分布、班级考试均分、学生均分排名、不及格次数、薪资排名、学生就业时长、班级平均就业时长、教师班级关系
AI 助手 六个业务模块及关联数据的自然语言只读查询,支持筛选、分组、统计和排名

列表为服务端分页,筛选及统计在数据库执行。新增、更新和删除使用小组原有接口,补充的 /workspace/query 和 /workspace/overview 提供页面与 AI 共用的列表和统计查询。

顾问手机号编辑时留空保留原值。学生和就业的可选字段留空遵循原接口的“保留原值”语义。

AI 使用

人物图片直接复用原项目 assistant-avatar.png,文件内容未改变。点击右下角人物打开快捷问答,拖动人物可调整位置;保留触摸拖动、边界限制和窗口变化时的位置校正。

  • 快捷问答:Enter 发送,Shift + Enter 换行。
  • 完整助手:Ctrl / Command + Enter 发送,支持查看来源和实际查询结果。
  • 每次问题独立处理,请写明查询对象或条件。
  • AI 不修改业务记录,新增、编辑和删除在业务页面完成。

可尝试:

  1. 查询每个班级的有效学生人数。
  2. 查询有效教师和顾问数量,并各列出前 3 条记录。
  3. 查询教师 ID 为 1 的老师关联了哪些班级和学生。
  4. 查询每个班级每次考试的平均分。
  5. 找出不及格至少 2 次的学生。
  6. 查询就业薪资最高的前 3 名学生,列出公司和薪资。
  7. 查询各班级的平均就业时长。

当前已按用户指定的桌面密钥文件配置 ai.local.json,模型沿用参考项目的 deepseek-flash。也可以设置 DEEPSEEK_API_KEY 与 DEEPSEEK_MODEL 环境变量,环境变量优先。Python 标准库直接调用 DeepSeek,无需安装 OpenAI SDK。

ai.local.json 已被 .gitignore 排除,不要将它发给其他成员。其他成员复制 ai.local.example.json 为 ai.local.json 并填写自己的配置。密钥不会返回前端;AI 请求会把问题和相关查询结果发送给 DeepSeek。

数据口径与衔接修正

  • 当前小组班级接口以 is_del=1 表示有效,0 表示删除。已修正新建班级的模型默认值为 1,没有改动历史记录的标记。因此现有 5 条班级记录中,有效列表显示 2 条。
  • 学生、顾问、成绩、就业的 flag=1 表示有效;教师的 is_deleted=1 表示有效。
  • 成绩和就业查询同时排除已删除学生;学生原有的班级和顾问名称仍作为历史关联显示。
  • 就业开放时间必须大于等于 Offer 下发时间,前端和后端均校验。就业时长为就业开放时间减 Offer 下发时间;相同时间为 0 天,缺失日期或开放时间更早时不参与均值。五条初始就业记录已全部补齐为合法日期。
  • 学生状态直接读取 state,不把“已有就业记录”等同于“已就业”。
  • 教师关联查询以两张中间表为依据;当前中间表无记录时显示未绑定,不根据文本教师名称猜测关联。
  • 初始化数据中的旧字段 native_places、status 改为当前模型的 native_place、state。这只影响今后对空表的初始化,不覆盖已有业务数据。
  • 查询接口只接受受控模块、字段、条件与聚合参数,不接收任意 SQL。AI 每个问题最多 6 次查询,每次最多返回 50 条,并说明结果是否截断。

文件结构

  • frontend/:交互页面、紫色主题、原版人物素材和助手脚本。
  • api/workspace_api.py、dao/workspace_dao.py、schema/workspace_schema.py:工作台与 AI 的共用只读查询。
  • api/ai_api.py、service/ai_service.py、schema/ai_schema.py:DeepSeek 查询选择、真实数据读取、答案整理。
  • knowledge/workspace.md:与当前实现对应的助手说明。
  • tests/test_workspace.py:独立内存数据库上的 HTTP/API 集成测试。
  • tests/test_frontend.cjs:内存 DOM 交互测试,不驱动浏览器、不写业务数据。
  • tests/check_live_ai.py:显式运行的 DeepSeek 实际联调,会发送查询问题和相关结果。

验证结果

  • 六模块新增、修改、查询与逻辑删除通过;重复学号、非法查询参数、分页与完整数据聚合通过。
  • 原版人物素材哈希一致。
  • DOM 测试覆盖六模块表单与操作请求、详情、分页、筛选、8 种统计视图、完整及悬浮问答、文本转义和头像拖拽事件。
  • 已使用本机真实数据及 DeepSeek 验证六模块查询和教师关联查询。结果保存在本机 artifacts/,该目录不提交。
  • 本机页面、静态资源与查询接口可通过 HTTP 访问。
  • 浏览器自动化因连接器无法加载请求头策略而失败;尚未完成真实浏览器截图、移动端视觉和鼠标拖拽实测。DOM 测试不代替视觉验证。

复测命令:

python tests/test_workspace.py
# 仅前端开发测试需要 Node.js;已安装 jsdom 的本机可直接运行:
node tests/test_frontend.cjs
# 如需安装开发测试依赖:pnpm install --ignore-scripts
# 此命令会调用 DeepSeek 并消耗少量 API 用量:
python tests/check_live_ai.py