{"id":47296792,"url":"https://github.com/mzq-dtm/nsh-match-analytics","last_synced_at":"2026-04-01T16:33:16.029Z","repository":{"id":344764665,"uuid":"1182301757","full_name":"mzq-dtm/nsh-match-analytics","owner":"mzq-dtm","description":"逆水寒联赛数据综合管理系统","archived":false,"fork":false,"pushed_at":"2026-03-26T21:02:55.000Z","size":1062,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T02:34:55.636Z","etag":null,"topics":["analytics","data-visualization","gaming","vue3","web-dashboard"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mzq-dtm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-15T10:31:24.000Z","updated_at":"2026-03-27T06:49:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mzq-dtm/nsh-match-analytics","commit_stats":null,"previous_names":["mzq-dtm/nsh-match-analytics"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mzq-dtm/nsh-match-analytics","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzq-dtm%2Fnsh-match-analytics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzq-dtm%2Fnsh-match-analytics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzq-dtm%2Fnsh-match-analytics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzq-dtm%2Fnsh-match-analytics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mzq-dtm","download_url":"https://codeload.github.com/mzq-dtm/nsh-match-analytics/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzq-dtm%2Fnsh-match-analytics/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","data-visualization","gaming","vue3","web-dashboard"],"created_at":"2026-03-16T17:07:20.188Z","updated_at":"2026-04-01T16:33:16.022Z","avatar_url":"https://github.com/mzq-dtm.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nsh-match-analytics\n逆水寒联赛数据综合管理系统\n\n# 项目简介\nnsh-match-analytics 是一个用于管理和分析 **《逆水寒》黄金服端游** 帮会联赛数据的 Web 系统。系统支持导入游戏内导出的联赛 csv 数据，提供数据库管理、数据统计以及网页可视化的展示功能，并附带诸如帮会成员历史数据查询、联赛团队配置等实用工具。\n\n\u003cp\u003e\n\u003cimg src=\"docs/images/match_table.png\" width=\"19%\"\u003e\n\u003cimg src=\"docs/images/match_analytic.png\" width=\"19%\"\u003e\n\u003cimg src=\"docs/images/attendance_table.png\" width=\"19%\"\u003e\n\u003cimg src=\"docs/images/player_history_table.png\" width=\"19%\"\u003e\n\u003cimg src=\"docs/images/match_config.png\" width=\"19%\"\u003e\n\u003c/p\u003e\n\n主要功能包括：\n- “联赛数据”模块可查看每一场联赛所有参与者的战斗数据，包括本帮帮众与对方帮众，显示联赛胜负与额外备注信息，并提供一个简易的数据分析引擎，用于联赛数据分析。联赛数据通过交互式表格的方式呈现。交互式表格支持如下功能：\n  - 可手动勾选控制表格列是否显示；\n  - 战斗数据支持数据条可视化；\n  - 鼠标左键单击表头可对该列进行排序；\n  - 右键单击表头对该列高亮显示；\n  - 右键单击序号对该行高亮显示；\n  - 右键单击单元格对该单元格高亮显示；\n  - 左键单击玩家 ID 或玩家昵称，可查看该玩家参与的所有历史联赛数据。\n\n- “帮众出勤分析”模块展示开始日期与结束日期之间，所有玩家的联赛出勤率情况。具体展示如下数据：\n  - 玩家最近一次联赛参与时的总战力；\n  - 联赛出勤率（不显示出勤次数为0的玩家）；\n  - 首次与最后联赛时间；\n  - 统计区间内的联赛战斗数据汇总。\n  - 鼠标左键单击表头可对该列进行排序；\n  - 左键单击玩家 ID 或玩家昵称可查看该玩家参与的所有历史联赛数据。\n\n- “帮众数据查询”模块展示一个帮众的所有历史联赛数据。首先通过搜索框搜索需要展示历史数据的帮众。搜索框支持关键字、拼音、拼音首字母模糊查找。选择需要展示的帮众后，会展示该帮众所有参与的联赛数据。数据表格支持鼠标左键单击表头进行排序。\n\n- “联赛团队配置”模块方便帮会管理配置各团成员名单。加载帮会成员数据后：\n  - 所有成员默认出现在替补席，可通过职业和评分筛选替补席成员；\n  - 鼠标悬停在替补席成员上可速查该玩家最近三次联赛数据；\n  - 鼠标左键可在各团队与替补席间拖动帮会成员；\n  - 鼠标悬停在各团顶部名字上可显示团队职业配置；\n  - 单击左侧“保存图片”按钮快速将团队配置导出为图片；\n  - 单击左侧“保存表格”按钮快速将团队配置导出为电子表格。\n\n# 技术栈\n**Frontend:** Vue 3, Vite, TypeScript  \n**Backend:** Python, Flask, Gunicorn  \n**Database:** SQLite, Pandas  \n**Deployment:** Nginx, systemd\n\n# 快速开始\n按如下步骤操作即可快速上线。\n## 1 数据库\n### 1.1 初始化数据库\n```\ncd database\npip install -r requirements.txt\n```\n创建数据库：\n```\nsqlite3 game_league.db \u003c schema.sql\nsqlite3 game_league.db \u003c init_data.sql\n```\n\n### 1.2 插入本帮帮会名\n```\npython insert_home_guild.py\n``` \n按照提示输入本帮帮会名。 **如果帮会更名，需要重新插入记录。**\n\n### 1.3 导入一场联赛数据\n**该部分操作须在具有图形界面的电脑上进行**，涉及图形界面的操作。\n```\npython insert_match.py\n```\n在图形界面中依次设置\n- 本帮帮会名\n- 数据库文件\n- 联赛 csv 数据文件\n- 帮会成员信息 csv 文件\n- 联赛胜负信息与备注\n\n点击“导入”即可。导入过程中会提示输入数据库中缺失的玩家 ID。可在游戏中打开玩家详细信息页面查看。\n\n服务稳定运行后，仅需在每场联赛后运行 `insert_match.py` 导入数据并更新服务器上的数据库文件即可实现数据库的更新。\n\n## 2 后端服务部署\n以下步骤适用于 Ubuntu 服务器\n### 2.1 系统准备：\n```\nsudo apt update\nsudo apt install -y git curl build-essential\nsudo apt install -y python3 python3-venv python3-pip\n```\n\n### 2.2 测试运行\n```\ncd backend\npython3 -m venv venv\nsource venv/bin/activate\npip install -U pip\npip install -r requirements.txt\n# 测试运行前，编辑 `config.py` 确保 `Config.DATABASE` 指向正确的数据库文件\npython app.py\n```\n如果成功启动，说明后端运行正常。\n\n### 2.3 使用 Gunicorn 部署\n在虚拟环境 venv 中，安装gunicorn\n```\npip install gunicorn\n# 测试运行\nvenv/bin/gunicorn --workers 4 --bind 127.0.0.1:10290 app:app\n```\n\n### 2.4 使用 systemd 管理服务 \n创建服务文件:\n```\n/etc/systemd/system/nsh_backend.service\n```\n内容示例：\n```\n[Unit]\nDescription=NSH Backend Flask App\nAfter=network.target\n\n[Service]\nGroup=www-data\nWorkingDirectory=/root/nsh-match-analytics/backend\nEnvironment=\"PATH=/root/nsh-match-analytics/backend/venv/bin\"\nExecStart=/root/nsh-match-analytics/backend/venv/bin/gunicorn \\\n  --workers 4 --bind 127.0.0.1:10290 app:app\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n```\n根据实际路径修改：\n- `WorkingDirectory`\n- `Environment`\n- `ExecStart`\n\n启动服务\n```\nsudo systemctl daemon-reload\nsudo systemctl enable nsh_backend\nsudo systemctl start nsh_backend\n# 检查状态\nsudo systemctl status nsh_backend\n```\n\n## 3 前端部署\n\n### 3.1 环境准备\n\n确保服务器已安装 **nginx** 。\n\n### 3.2 构建前端\n```\ncd frontend\nnpm install\nnpm run build\n```\n\n### 3.3 复制静态文件到 nginx 目录\n```\nmkdir -p /var/www/nsh_frontend\ncp -r ./dist/* /var/www/nsh_frontend\nchown -R www-data:www-data /var/www/nsh_frontend\n```\n\n### 3.4 配置nginx\n创建配置文件：\n```\n/etc/nginx/sites-available/nsh_frontend\n```\n根据实际情况配置。示例配置：\n```\nserver {\n    listen 80;\n    # 如果有域名请改为你的域名，否则可留成 \"_\"，表示所有未匹配 server_name\n    server_name _;\n\n    auth_basic           \"请输入用户名和密码\";\n    auth_basic_user_file /etc/nginx/.htpasswd;\n\n    root /var/www/nsh_frontend;\n    index index.html;\n\n    # 所有对 /api/ 的请求，反代给后端 Flask/Gunicorn\n    location /api/ {\n        proxy_pass http://127.0.0.1:10290;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n\n    # 对于前端路由，所有路径都返回 index.html\n    location / {\n        try_files $uri $uri/ /index.html;\n    }\n\n    # 可选：静态资源 cache-control\n    location ~* \\.(js|css|png|jpg|jpeg|gif|svg|ico)$ {\n        expires 7d;\n        add_header Cache-Control \"public\";\n    }\n}\n```\n启用站点\n```\nsudo ln -sf /etc/nginx/sites-available/nsh_frontend /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl reload nginx\n# 如有需要可删除默认站点\nsudo rm /etc/nginx/sites-enabled/default\n```\n\n### 3.5 设置访问密码\n```\nsudo apt update\nsudo apt install apache2-utils\n# 创建密码文件\nsudo htpasswd -c /etc/nginx/.htpasswd XXX\n# 修改用户密码\nsudo htpasswd /etc/nginx/.htpasswd XXX\n```\n\n# License\n本项目采用 MIT License。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmzq-dtm%2Fnsh-match-analytics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmzq-dtm%2Fnsh-match-analytics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmzq-dtm%2Fnsh-match-analytics/lists"}