Skip to content

奶龙都会用的傻瓜式的东方同人展出摊辅助工具

License

Notifications You must be signed in to change notification settings

Renko6626/abl_sale_tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚠️ 此项目已归档 (Archived)

注意:这是 摊盒 (Booth-Kernel) 的早期原型代码(2025年版)。 本仓库仅作为开发历史存档展示,不再维护。

如果您想下载最新、稳定、免配置的客户端,请移步官方新仓库: 👉 Academy-of-Boundary-Landscape/ABL-BoothApp

东方project展会出摊辅助工具

一个为东方Project同人展摊主打造的、极简高效的销售与库存管理解决方案。

注意:现在这个出摊工具的使用教程已经被迁移到了我们社团的出摊指南.pdf文档内,请在它的项目内查看之。

项目链接:Github

社团页面:[境界景观学会])(https://www.abl.secret-sealing.club/events/booth-manual)

重要通知

  • 我们上线了全新的本地应用版本, 适合没有公网服务器的社团同好使用, 请前往boothApp目录查看详情和下载。

=======

目录

更新日志

⭐本地应用版⭐

  • 被动迁移到boothApp目录下, 以区别于网络版
  • 扫码通过局域网和电脑端控制台连接

2025-12-19更新:

  • 系统性重构了前端代码, 使用了我最喜欢的NaiveUI组件库, 让界面更加美观一致, 并且代码极大简洁可维护了。
  • 给销售统计页面加入了销售折线图, 现在管理员可以更直观地看到展会当天销售趋势
  • 给销售统计页面加入了按商品/时间段筛选订单的功能, 现在管理员可以更方便地查看特定商品或时间段的销售数据
  • 给管理员页面和摊主页面的登录加入了正经的jwt token认证, 并同步了相关api的权限, 现在权限管理会更加安全和可靠, 避免被注入恶意请求的风险
  • 修复了管理员页面在某些浏览器下无法登录的问题
  • 修复了平板电脑二维码显示不全的问题
  • 修复了摊主页面营业额必须手动刷新才能更新的问题

2025-10-09更新:

  • 给展会上架商品加入了搜索框和点击选择功能,现在可以更方便地给展会添加商品,而不用再去查商品ID了
  • 给展会管理页面加入了删除展会的功能,现在管理员可以删除不需要的展会了
  • 给展会管理页面加入了搜索框,管理员可以搜索名称和日期迅速定位到想要管理的展会
  • 修改了管理员页面的侧边栏,让它能够收起和自动适配屏幕
  • 略微调整了展会管理页面的布局和配色,让该页面更紧凑美观
  • 完善了一键部署代码,修复了文件系统权限问题,pm2项目名称问题,python版本问题和nginx设置问题等大量抽象小问题,现在它可以保证在大部分Ubuntu 20.04+的服务器上顺利一键部署
  • 修复了上传图片窗口显示不了当前图片的问题

2025-09-27&28更新:

  • 加入了一键部署代码,现在部署这个项目会非常简单!
  • 加入了制品分类,现在顾客和管理员都可以根据分类快速过滤商品
  • 修复顾客页面制品卡片重叠或者图片比例不对的问题
  • 给顾客页面做了手机端适配,加入了可调节的制品卡片大小选项
  • 优化部分样式设计和手机端的适配细节

2025-09-08更新:

  • 加入了统计页面,现在它可以自动生成销售报告并导出到excel表格
  • 修复了处理中订单堆积产生的负数库存效果的问题(增加了下单之前对这件事的判断)
  • 给下单失败增加了更好看的弹窗报错

✨ 项目简介

专为解决漫展出摊中最繁琐的点单模糊与记账琐碎问题而生。本工具通过清晰的电子菜单、自动化的订单与库存同步,极大提升出摊效率,减轻摊主负担,让您能更专注于与同好的交流。

核心价值

  • 对游客:清晰的电子菜单,点击图片即可下单,社恐友好,体验升级。

  • 对摊主:订单自动同步,配货如玩模拟经营游戏,自动记账算钱,解放双手。

  • 对社团:数据化经营,轻松掌握销售数据和利润,为未来决策提供支持。

主要特性

  • 🛒 傻瓜销售界面:屏幕上有所有制品的名字、图片、价格, 游客只需要点击图片就能加入购物车, 自动计算总价并弹出收款码,无需计算和问价,社恐友好。

  • 📦 自动库存管理:自动计算售出制品数,实时更新剩余制品数量,完售制品会自动同步到销售界面。

  • 📊 实时数据看板:在摊主页面直观计算和展示所有制品的销售额、销量等关键数据,方便统计利润和补货。

  • 🔗 极简摊主操作:摊主只需要按照页面提示,像模拟经营游戏一样,按照屏幕显示的订单进行配货和确认即可,无需手动记录任何数据。

  • 💾 数据文件导出:支持将销售记录导出为可以直接打印的Excel表格,方便线下备份与对账。

  • 🌙 自定义制品与展会:允许社团管理员自定义自己的展会和制品信息,给摊主设置权限与密码。

线下使用

  • 社团管理员添加展会和制品信息

  • 挂着游客页面的平板电脑放在摊位前,作为电子菜单

  • 摊主用自己手机打开摊主页面, 进行订单管理和配货

  • 其余计算和统计完全在系统内完成, 用科技解放双手!

🏗️ 系统架构与页面

本项目采用前后端分离架构:

  • 前端: Vue 3
  • 后端: Flask (Python)
  • 数据库: SQLite

系统包含三个核心页面,对应不同角色:

1. 游客页面 - 「电子菜单」

  • 功能: 浏览商品、加购、下单、支付。
  • 访问: 无需密码,公开展示。
  • 流程: 选择展会 -> 浏览商品 -> 点击购买 -> 自动算价 -> 弹出收款码 -> 等待摊主配货。

2. 摊主页面 - 「指挥中心」

  • 功能: 接单、配货、确认完成、查看实时数据。
  • 访问: 需输入管理员为本次展会设置的摊主密码。
  • 流程: 登录 -> 查看待处理订单 -> 按单配货 -> 点击“完成” -> 系统自动更新库存和统计。

3. 管理员页面 - 「后台管理工具」

  • 功能: 管理全局数据、初始化展会。
  • 访问: 需输入最高权限密码(通过环境变量 ADMIN_PASSWORD 设置)。
  • 操作:
    • 管理展会: 增删改查展会信息,设置摊主密码。
    • 管理制品: 维护社团的全局商品库(上传图片、设置名称、分类等)。
    • 上架商品: 为特定展会选择商品并设置初始库存和售价。
    • 订单操作: 查看所有订单,必要时进行干预。

🚀 快速部署

🚀 一键自动化部署

本项目推荐使用根目录下的 deploy.sh 脚本进行一键自动化部署,涵盖后端、前端、Nginx、SSL 证书等所有配置。

1. 环境要求

  • Ubuntu 20.04+(建议)
  • 域名已解析到服务器

2. 配置 deploy.sh

首先编辑 deploy.sh 顶部的用户配置区:

PROJECT_NAME="abl-booth-tool" #项目名称
DOMAIN_NAME="booth-tool.secret-sealing.club" #替换为你自己的域名,记得在你的服务器配置DNS解析记录
WWW_DOMAIN_NAME="www.booth-tool.secret-sealing.club" 
EMAIL="your@email.com"  # 替换为你的邮箱,这用于给certbot配置https服务

3. 运行一键部署脚本

chmod +x deploy.sh
./deploy.sh

脚本会自动完成:

  • 安装 Nginx、Python3、Git、Curl
  • 安装/配置 NVM、Node.js、PM2
  • 创建 Python 虚拟环境并安装依赖
  • 安装 gunicorn
  • 自动创建日志和 socket 目录
  • 使用 PM2 启动/守护后端服务
  • 自动生成并启用 Nginx 配置(含前端静态、API 代理、静态资源)
  • 自动申请并配置 SSL 证书(HTTPS)

4. 检查服务状态

pm2 status
sudo systemctl status nginx

5. 访问网站

部署完成后,访问:

  • https://booth-tool.secret-sealing.club
  • (或者是你自己在deploy.sh里面定义的网站域名) 如需自定义前端、后端配置,请参考脚本注释和各自目录下的 README。

如遇问题:

  • 查看 PM2 日志:pm2 logs abl-booth-tool
  • 查看 Nginx 日志:sudo tail -n 100 /var/log/nginx/error.log
  • 检查虚拟环境 gunicorn 路径:backend/venv/bin/gunicorn

注意: 使用一键部署脚本部署的项目的密码是默认的,请务必在 backend/.env 文件中修改 ADMIN_PASSWORDVENDOR_PASSWORD 以确保安全。

  • 默认摊主密码: 114514
  • 默认管理员密码: 1919810

更多高级用法和手动部署细节请参考脚本和源码注释。

⚙️ 环境配置

后端环境

出摊系统的flask后端的环境变量保存在 backend/.env 文件中,主要包括:

  • ADMIN_PASSWORD:管理员密码,用于访问管理员页面,建议设置复杂密码。
  • VENDOR_NAME:摊主默认的密码,在未设置摊主密码的情况下可以使用它登录摊主页面。
  • MAX_CONTENT_LENGTH:上传文件的最大大小,默认16MB。 请根据需要修改这些配置。

前端环境

  • 暂无

🤝 如何贡献

我们欢迎一切形式的贡献!无论是提出建议、反馈Bug还是直接提交代码。

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feat/Feature)
  3. 提交你的更改 (git commit -m 'Add some Feature')
  4. 推送到分支 (git push origin feat/Feature)
  5. 开启一个 Pull Request
  6. 等待审核与合并
  7. 感谢您的贡献!

📜 开源协议

本项目采用 MIT 协议。请查看 LICENSE 文件了解更多信息。

🔮 未来规划

  • 移动端App开发:开发原生App版本,提供更好的离线体验和推送通知,让没有web服务器的社团也能使用之。
  • 接入库存和财务系统:提高集成度,让销售结果无缝对接到社团内部系统
  • 离线模式:增强离线缓存和断网恢复能力,应对网络太烂的场合。
  • 一键导入: 从excel或其它格式文件一键批量导入多种制品。
  • 更简单部署: 提供Docker镜像和更完善的一键部署脚本,降低部署门槛。

📞 联系方式

如果您有任何问题、建议或需要帮助,请通过以下方式联系我们:

  • 在这个Github项目下提出issue
  • 社团邮箱: contact@secret-sealing.club
  • 主催个人qq: 1471850534
  • 社团qq群组: 748966747

祝您出摊顺利,场场完售!

About

奶龙都会用的傻瓜式的东方同人展出摊辅助工具

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors