Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AlloMate

AlloMate 是一款基于 PySide6 开发的轻量级桌面分配与分组管理辅助工具。主要用于帮助教育工作者、项目协调员或活动组织者将特定对象(如学生、员工、参与者)随机分配到不同的目标区域或小组中,并支持多周期的平衡约束。

本软件通过图形化界面提供多维度的权重计算、容量限制和出勤保底控制,并支持生成结果的实时手动微调与多表 Excel 导出。


🛠️ 主要功能

  • 多周期随机分配:支持自定义总周期数(如 20 周、30 天等),自动完成对象与分组的匹配。
  • 权重与容量约束
    • 支持为每个分组设定单独的“最大容量”(单次最大班额)。
    • 支持设定“权重几率”,权重越高的分组在分配时被选中的概率越大。
    • 支持设置“最少进入次数”与“最多进入次数”限制,尽量保证出勤频次均衡。
  • 动态交互与置换:在生成的“全景总览”表格中,用户可双击任意单元格,通过下拉菜单实时更换或置换该周期下对象的分配区域,相关改动会自动同步并更新至其他子表中。
  • 高级绑定规则:支持强制性前置规则(如 张伟:娃娃家),满足特定对象的首选或固定配置需求。
  • 数据智能导入导出
    • 支持从外部 Excel (.xlsx) 或 CSV 文件一键导入名单。
    • 导出功能通过后台异步线程(QThread)实现,避免导出大数据量时界面卡顿;导出的 Excel 文件包含一个“全景分配总览”主表以及各分组独立的数据子表。
  • 历史记录管理:本地自动保存最近 10 次的生成记录,支持快速切换和回溯。

📐 技术栈

  • 开发语言:Python 3
  • 界面框架:PySide6 (Qt for Python)
  • 数据处理:openpyxl (Excel 读写), csv
  • 样式设计:自定义 QSS 样式(支持高 DPI 屏幕缩放自适应)

🚀 快速开始

您可以通过以下两种方式使用 AlloMate:

选项一:直接下载二进制程序(推荐日常使用)

无需安装 Python 及相关开发依赖,直接下载打包好的可执行文件运行:

  1. 打开 AlloMate Releases 页面
  2. 下载后双击 AlloMate 即可启动程序。

选项二:从源码运行(适用于开发调试)

1. 环境准备

确保您的系统已安装 Python 3.9 或更高版本。

2. 安装依赖

克隆本仓库到本地,并在项目目录下运行以下命令安装必要的依赖包:

pip install PySide6 openpyxl

3. 运行程序

在终端或命令行中执行:

python main.py

📖 使用指南

  1. 配置分组
    • 进入 分组管理 页面,添加您需要的区域或小组名称,设定单次最大容纳人数以及分配权重。点击 “保存分组”。
  2. 设定全局规则
    • 进入 全局设置 页面。
    • 输入或导入名单列表(支持直接选择 Excel/CSV 文件)。
    • 设定分配周期和各区域的最少/最多进入次数等限制条件。
    • 点击 “保存配置” 保存规则。
  3. 微调与导出
    • 策略保存后,系统会自动在 分配结果 页面生成方案。
    • 若对局部随机结果不满意,双击对应单元格更换分组(例如将某个周期改为“轮空”或其他区域)。
    • 确认无误后,点击 “导出 Excel” 保存为结构化的多工作表表格。

📂 项目结构

├── main.py                # 程序入口与主逻辑
├── AlloMate.json          # 本地配置文件(启动后自动生成于 AppData/Config 目录)
├── AlloMate_history.json  # 历史记录文件(启动后自动生成于 AppData/Config 目录)
└── README.md              # 项目说明文档

📝 许可证与免责声明

  • 本项目采用 GPL-3.0 license。
  • 本工具提供的随机分配算法基于设定的约束进行计算。在极端约束冲突的输入下(例如保底次数要求过高而容量上限过低),分配逻辑可能无法完全满足所有非硬性指标,建议合理规划约束范围。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages