这是啥
不想排座位是一个基于 Django 的教室排座系统,覆盖班级管理、名单导入、布局编辑、自动排座、约束规则、小组管理和多格式导出。当前桌面版默认通过 pywebview 打开本地工作区,不再要求用户手动打开浏览器。
核心能力
- 班级管理:新建、重命名、删除班级。
- 教室布局:编辑行列网格,支持座位、走廊、讲台、空位类型。
- 学生入座:拖拽、单人移动、批量移动、批量框选、多选操作。
- 自动排座:
random、score_desc、score_asc、good_front、good_back、score_spread、group_balanced、group_mentor。
- 约束系统:指定/禁用座位、指定/禁用行列、指定相邻、禁止相邻。
- 小组系统:创建、重命名、删除、批量分配、自动编组、合并组、轮换组、组长设置。
- 数据导入:学生 Excel 导入(自动识别或手动列映射)、座位表 Excel 导入(含预览、翻转/旋转、词典识别)。
- 导入 Excel 成绩 / 导入座位表均采用独立配置页面,左侧设置、右侧预览;成功或取消后自动返回班级页。
- 数据导出:座次 Excel、座次 SVG(可配置主题与显示内容,用于 PPT)、座次 PPTX(单页 16:9 横屏)、小组登记表 Excel、
.seats 快照文件。
- 导出 Excel / SVG / PPTX 时采用独立配置页面(非弹窗),左侧设置、右侧预览;确认导出或取消后自动返回班级页。
- 桌面版导出统一调用后端原生保存对话框,保存位置由系统 API 选择;当前至少覆盖 Windows 与 macOS。
- 历史操作:撤销/重做。
- AI 赋能模式:顶部
AI 选项卡可打开闻道赋能页面,支持通过 OpenAI API + function calling 执行交换座位、查询学生信息、统计小组评分。
- 支持多轮对话、对话隔离(同班级可创建多个独立会话)与对话消息持久化入库(SQLite)。
- 新增学生工具:
get_student_list(可选排序、排序方向、字段裁剪、分页、筛选器)。
- 新增卡片工具:
send_card_info(部分座位图、学生详情图、整体座位图、班级报告图)。
- 支持 OpenAI Compatible:当
Base URL 不是 api.openai.com 时,自动切换到兼容的 chat.completions + tools 调用链。
技术栈
- 后端:Django 6.0.1
- 数据库:SQLite3
- 生产服务:Waitress
- 桌面壳:pywebview
- 静态文件:WhiteNoise
- 数据处理:pandas、openpyxl、python-pptx、xlrd
- 前端:Django Template + 原生 JavaScript
项目结构
manage.py:Django 管理入口
run_app.py:桌面启动脚本(自动迁移 + Waitress + pywebview,端口 23948)
desktop_shell.py:桌面桥接层,负责原生保存对话框与本地导出写盘
config/:Django 配置(settings/urls/wsgi/asgi)
seats/:业务模型、视图、路由、测试与迁移
templates/:页面模板
static/:CSS 与前端交互脚本
website/:独立 React 宣传站
package.py:PyInstaller 打包脚本
截图
官网与 github
github laosan577622/open_fuckseatsblob/master/README.md
https://fuckseats.577622.xyz/
这篇帖子是干什么的
有大更新会写在回帖里面,或者,如果您有宝贵的建议,也欢迎您提出
目前软件支持哪些客户端
理论上来说,Python 能支持的我们都能支持,甚至鸿蒙(
亟待解决的问题
1.桌面壳子不稳定
2.闭源版本不够闭源 别去翻未公开部分,你会变得不幸(
3.没钱(对象存储太贵了……)
4.没云同步
5. 想找几个合作对象,一起把这个小项目做起来,邮箱 laosan@577622.xyz 欢迎来聊~