WinLoop AI(赛帮帮)V0 骨架项目,面向“选赛 -> 建项 -> 协作 -> 交付”的一站式竞赛工作台。
antfu/vitesse-nuxt3基线,前后端同仓开发。- 黑白极简、高信息密度三栏 AI 工作台(
/workspace)。 - 账号密码登录(未注册自动注册),首个用户自动成为平台管理员。
Personal + Team双空间,项目按空间单归属。- 双通道建项目:
- AI 聊天生成项目草案。
- 表单填写直接创建项目。
- Team 维度席位与 AI 配额扣减(不含支付)。
- 项目支持多学院/多指导老师绑定,绑定导师自动授予项目管理权限。
- LangChain 接入:
POST /api/ai/contest-filterPOST /api/ai/project-chat
- 模型失败自动重试并兜底,保证演示稳定性。
- PostgreSQL 持久化(不再依赖
projects.json本地迁移链路)。
pnpm install
pnpm dev打开 http://localhost:3510/workspace。
加载优先级(按运行模式):
开发环境(NODE_ENV=development):.env.local > .env.dev > .env
生产环境(NODE_ENV=production):.env.local > .env.prod > .env
其他环境:.env.local > .env.prod > .env.dev > .env已提供:
.env.example.env.dev.env.prod
本地私有配置建议写入 .env.local(已加入 .gitignore)。
请在 .env.local 显式配置数据库与缓存连接 URL(含账号密码):
WINLOOP_PG_URL=postgresql://user:password@127.0.0.1:5432/winloop
WINLOOP_REDIS_URL=redis://:password@127.0.0.1:6379/0
WINLOOP_CONTEST_AUTO_SEED=false若缺失或不完整,登录及依赖连接的接口会报连接配置错误。
- 默认不自动注入 catalog 赛事数据(
WINLOOP_CONTEST_AUTO_SEED=false)。 - 若需要本地演示数据,请使用 CLI 手动执行(幂等):
pnpm contest:seed:catalog- 若需要清理 catalog 数据并重置 seed 标记:
pnpm contest:clean:catalog- 查看当前 catalog seed 状态:
pnpm contest:seed:statusGET /api/healthPOST /api/auth/loginPOST /api/auth/logoutGET /api/auth/meGET /api/workspacesPOST /api/workspacesPOST /api/workspaces/:id/invitationsPOST /api/invitations/:token/acceptGET /api/contestsGET /api/contests/:idGET /api/resourcesPOST /api/ai/contest-filterPOST /api/ai/project-chatGET /api/projectsPOST /api/projectsPOST /api/projects/batchGET /api/projects/:idPATCH /api/projects/:id/bindings
app/pages/workspace.vue:主工作台(筛选 + 聊天建项 + 表单建项)。app/pages/login.vue:登录/自动注册入口。server/services/ai/*:LangChain 链路与兜底策略。server/data/catalog.ts:竞赛、赛道、rubric、资料 mock 数据。server/utils/db.ts:PostgreSQL 连接与 schema 初始化。server/utils/platform-store.ts:账号、空间、项目、邀请、配额主数据访问层。shared/types/domain.ts:前后端共享类型定义。
- PostgreSQL 为当前运行时强依赖:服务启动后会自动初始化 schema。
- Redis 目前主要用于配置展示与预留(
/api/health会返回连接信息),业务核心流程暂未直接读写 Redis。 - 若未正确配置
WINLOOP_PG_URL,登录、工作区、项目与管理侧接口将不可用。