该系统主要针对 休闲娱乐数字化管理场景,特别是针对线下竞技休闲活动。
1.个人/社群竞技统计:解决线下麻将对局中传统的纸笔记录效率低、易出错、数据难回溯的问题。
2.财务透明化管理:在小规模竞技或休闲赛中,自动计算各方得分盈亏,确保账目清晰,避免人工计算争议。
3.竞技数据分析:通过历史数据积累,分析不同玩家的胜率、场次分布及竞技状态。
点击空白处退出提示
该系统主要针对 休闲娱乐数字化管理场景,特别是针对线下竞技休闲活动。
1.个人/社群竞技统计:解决线下麻将对局中传统的纸笔记录效率低、易出错、数据难回溯的问题。
2.财务透明化管理:在小规模竞技或休闲赛中,自动计算各方得分盈亏,确保账目清晰,避免人工计算争议。
3.竞技数据分析:通过历史数据积累,分析不同玩家的胜率、场次分布及竞技状态。
基于您的开发需求,系统实现了核心的 CRUD(增删改查)及权限隔离功能。
多维度战绩录入:支持对局日期、局数、以及四位玩家得分及其详细明细的录入。
多级权限访问控制:
超级管理员 (root):拥有完整权限,可进行录入数据、删除记录、修改配置及导出报表。
普通用户 (guest):审计权限,仅能查看历史战绩表格,系统自动隐藏录入界面以确保数据安全。
数据统计与展示:以时间轴或表格形式展示历史对局,自动计算得分平衡。
专业报表导出:一键生成 PDF 格式的战绩单,完整支持中文字体(宋体)显示,方便社群分享与离线存档。
该项目采用经典的 Web 生产环境架构,确保了系统的高可用性与扩展性。
1. 核心架构
后端框架:使用 Flask 提供路由逻辑、用户认证及业务处理。
数据库:使用 SQLite + SQLAlchemy 进行轻量级关系型数据存储,无需部署大型数据库集群。
用户认证:集成 Flask-Login 插件,实现基于 Session 的安全登录与角色判断。
2. PDF 渲染引擎
库支持:采用 ReportLab 作为 PDF 生成引擎。
中文兼容性:通过 pdfmetrics.registerFont 注册系统级中文字体(如 simsun.ttc),并在样式定义中显式指定 fontName='SimSun',彻底解决 PDF 导出乱码问题。
3. 权限逻辑实现
前端逻辑:利用 Jinja2 模板引擎的条件判断({% if current_user.username == 'root' %})实现界面的动态渲染。
后端保护:在敏感路由上添加 @login_required 装饰器,并执行二次身份校验。
4. 生产环境部署
Web 服务器:使用 Apache 作为反向代理,处理外部 HTTP 请求并转发至应用。
WSGI 容器:使用 Gunicorn 负责多进程运行 Flask 应用,保证并发性能。
环境隔离:通过 Python Virtualenv 确保依赖包的版本独立,避免系统级干扰。




评论