fc / README.md
Chuiguohuang's picture
deploy: 上传球队系统代码
6e876c1 verified
|
Raw History Blame Contribute Delete
2.56 kB
metadata
title: 肆带贰球队系统
emoji: ⚽
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
pinned: false

肆带贰 · 球队管理系统

深圳「肆带贰」足球俱乐部(SHENZHEN SI DAI ER FC)的内部球队管理系统,基于 Shiny for Python 构建。

功能

  • 登录鉴权:队员/管理员分级,密码哈希存储,支持改密、管理员重置
  • 名单管理:队员资料、球衣号、赛季信息
  • 数据展示:按赛季查看球队数据
  • 图片导出:将名单/数据渲染为图片便于分享

技术栈

层 选型
Web 框架 Shiny for Python
数据层 SQLAlchemy ORM
存储 默认 SQLite,可切 Postgres(环境变量切换,代码零改动)
数据处理 pandas / openpyxl
图片 Pillow
测试 Playwright

快速开始

依赖管理使用 uv:

# 安装依赖
uv sync

# 本地运行(热重载)
uv run shiny run app.py --reload

首次运行会自动初始化数据库并写入名单与示例数据,浏览器打开 http://127.0.0.1:8000。

配置

通过环境变量配置,无需改动代码:

变量 作用 默认
DATABASE_URL 数据库连接串,部署时指向云端 Postgres 本地 data/team.db(SQLite)
SDE_DEFAULT_PASSWORD 队员初始密码 内置兜底(仅限本地开发,生产务必覆盖)

⚠️ 正式部署请设置 SDE_DEFAULT_PASSWORD,并提醒队员首次登录后立即修改密码。

项目结构

monsoon-app/
├── app.py              # 入口:UI 装配 + 服务端逻辑
├── src/
│   ├── config.py       # 全局配置(球队信息、品牌色、数据库连接)
│   ├── db.py           # 数据库引擎
│   ├── models.py       # ORM 模型
│   ├── repo.py         # 数据访问层
│   ├── security.py     # 密码哈希
│   ├── seed.py         # 初始数据
│   ├── theme.py        # 样式
│   ├── export_img.py   # 图片导出
│   └── view_*.py       # 各页面视图(登录 / 主页 / 个人 / 管理)
├── data/               # 本地数据库(不入库)
├── www/                # 静态资源
└── tests/              # Playwright 测试

数据隐私

真实队员数据(含姓名、密码哈希)仅存于本地 data/ 目录,已通过 .gitignore 排除,不会进入版本库。