Skip to content

Repository files navigation

TripSync 差旅排期助手 ✈️

TripSync 是一个基于 Streamlit 开发的轻量级差旅排期辅助工具。它可以帮助团队管理者快速、公平地分配团队成员的差旅任务,并自动处理中国大陆复杂的法定节假日及调休安排。

✨ 核心功能

  • 智能工作日计算:内置 chinese_calendar 库,自动获取国家法定节假日数据,精准排除假期与正常周末,并自动包含周末的法定调休工作日
  • 自定义排期需求:支持添加自定义员工名单,并为每个人设置当季度的目标出差次数。
  • 黑名单日期过滤:提供直观的按月分页日历界面,支持“一键全选”当月,方便员工或管理员快速勾选“无法出差”的日期。
  • 公平分配算法:尽可能保证两人同行,且优先安排连续两天的差旅;自动将剩余单次需求进行合理补位。
  • 一键导出:一键生成最终排期表,并支持导出为 .csv 文件,方便后续与其他系统对接或打印。

🛠️ 环境依赖

本项目主要依赖以下核心 Python 库:

  • streamlit: 用于构建 Web 交互界面
  • pandas: 用于数据处理与表格展示
  • chinesecalendar: 用于判断中国大陆的法定节假日与调休

完整的依赖列表请参考 requirements.txt

🚀 快速启动

  1. 克隆项目或进入目录

    cd TripSync
  2. 安装依赖 建议使用虚拟环境(如 .venv)。

    pip install -r requirements.txt
  3. 运行程序

    streamlit run app.py

    运行后,浏览器会自动打开 http://localhost:8501 进入系统界面。

📖 使用指南

  1. 设置季度:在左侧边栏选择目标年份和季度。系统会自动验证该年份的节假日数据是否就绪(国务院通常在每年底发布下一年的节假日安排)。
  2. 添加人员:在主界面输入员工姓名、预定出差次数。
  3. 勾选无法出差的日期:在右侧的日期选择表格中,按月份快速勾选该员工无法出差的日期。支持一键全选当月功能。
  4. 生成排期:添加完所有人员后,点击“生成排期表”按钮。
  5. 下载结果:查看界面下方生成的排期统计及明细,点击“下载表格”保存 CSV 文件。

📂 项目结构

TripSync/
├── app.py               # 核心业务逻辑及 Streamlit 界面代码
├── pyproject.toml       # 项目配置文件
├── requirements.txt     # Python 依赖包列表
├── uv.lock              # UV 包管理器锁定文件
└── README.md            # 项目说明文档

⚠️ 注意事项

  • 节假日数据更新:如果发现选择新一年(例如刚跨年时)提示“节假日数据缺失”,说明 chinesecalendar 尚未更新该年度数据。请等待库更新并执行 pip install --upgrade chinesecalendar 即可。
  • 排期算法:算法使用贪心加随机策略,若约束条件过于严苛(如所有人都将大量日期设为黑名单),可能会导致排期失败或无法完全达到目标次数。

Built with ❤️ using Streamlit & Python.

About

TripSync

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages