|
Download README.md from sidaier/fc: direct link, hf CLI and curl.
- Browser
- Download file 2.56 kB
-
https://huggingface.co/spaces/sidaier/fc/resolve/main/README.md
- Command line
-
hf download hf://spaces/sidaier/fc/README.md
-
curl -L -o README.md https://huggingface.co/spaces/sidaier/fc/resolve/main/README.md
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 排除,不会进入版本库。