# Vue 前端工程 Vue 3 + TypeScript + Vite + Element Plus,使用 Vue Router 与 Pinia。 当前页面是开发预览和实际 API 连接检查;没有模拟登录或模拟评测结果。 ```bash pnpm install --frozen-lockfile pnpm dev pnpm typecheck pnpm test pnpm build ``` 开发服务在 `http://127.0.0.1:5173`,`/api` 代理到 `http://127.0.0.1:8000`。 复制 `.env.example` 为 `.env` 可调整代理和 API 地址。 生产部署须配置 SPA 路由回退及 `/api` 反向代理;开发代理不进入生产产物。 - `views/`:路由页面;`layouts/`:页面框架;`components/`:可复用界面组件。 - `api/`:HTTP 客户端和业务 API 封装;`api/generated/`:从 OpenAPI 生成的类型。 - `composables/`:带生命周期的交互逻辑;`stores/`:跨页面共享状态。 - `router/`:路由;`styles/`:全局样式。 已有代码按实际需要落位;`components/` 和 `stores/` 是后续扩展位置,不放空状态实现。 API 类型更新执行根目录 `make contracts`;前端通过 `pnpm check:api` 拒绝过期类型。 登录凭据、模型密钥和数据库连接不能进入 `VITE_` 环境变量。 `pnpm test` 验证代码草稿在刷新、切到后台与页面离开时的保存行为,已纳入 `make check-frontend`。