aigame 是一个面向 AI 竞赛场景的完整平台,包含比赛管理、题目上传、提交评测、排行榜、题解上传,以及配套的端到端测试体系。
- 总览:
docs/README.md - 本地开发建议:
docs/development.md - 服务器部署建议:
docs/deployment.md - E2E 测试建议:
docs/e2e-testing.md - 出题与打包方法:
docs/problem-authoring.md - 评测服务补充说明:
evaluateapp/README.md - 题目样例与打包细节:
evaluate_example/README.md
webapp/:Nuxt 4 Web 应用,包含页面、API、队列、排行榜与管理后台。evaluateapp/:评测服务,负责解包提交、执行评测脚本并回调 WebApp。e2e/:Playwright 端到端测试工程,默认按接近部署态的方式拉起整套服务。evaluate_example/:题目样例、打包脚本与本地评测示例。docker-compose.dev.yml:开发态依赖服务编排,适合本机开发 WebApp / EvaluateApp。docker-compose.deploy.yml:部署态编排,适合服务器启动整套服务。
在使用任意 Compose 文件前,建议先准备根目录共享环境变量:
cd /proj/aigame
cp .env.example .env建议先看 docs/development.md。最常用的起步方式如下:
# 启动开发依赖
cd /proj/aigame
docker compose -f docker-compose.dev.yml up -d
# 启动 WebApp
cd /proj/aigame/webapp
pnpm install
pnpm dev如果你需要联调评测服务,再启动 EvaluateApp:
cd /proj/aigame/evaluateapp
uv sync
uv run uvicorn main:app --host 0.0.0.0 --port 8000建议先看 docs/deployment.md。当前推荐命令:
- 容器化部署里的
EvaluateApp已显式固定为SANDBOX_BACKEND=DOCKER与DOCKER_IMAGE=self。 - 根目录
.env中的SANDBOX_BACKEND主要影响“宿主机直接运行 EvaluateApp”时的默认行为。
cd /proj/aigame
docker compose -f docker-compose.deploy.yml up -d --builddocker-compose.deploy.yml 现在会在首次启动时自动准备 data/mongo 与 data/mongodb.key,并自动完成 MongoDB 副本集初始化,不需要再手工执行 rs.initiate(...)。
建议先看 docs/e2e-testing.md。当前两条高价值冒烟用例:
- E2E 会把容器内
EvaluateApp显式固定为SANDBOX_BACKEND=DOCKER与DOCKER_IMAGE=self,避免被根目录.env中面向宿主机的配置影响。
cd /proj/aigame/e2e
./run.sh tests/05-admin-problem.spec.ts tests/08-submission-evaluateapp.spec.ts- 第一次接手项目:先看
docs/README.md - 要在本机改页面 / API:看
docs/development.md - 要上线服务器:看
docs/deployment.md - 要补测试或排查回归:看
docs/e2e-testing.md - 要新增比赛题目:看
docs/problem-authoring.md
- 日常功能开发优先使用开发态:依赖服务走
docker-compose.dev.yml,WebApp / EvaluateApp 在宿主机运行,调试效率更高。 - 集成联调、部署验证、提测前冒烟优先使用部署态:行为更接近线上。
- 正式环境不要直接沿用仓库里的默认密码与密钥,请在部署前统一替换。