docs: 文档整理,CLAUDE.md 瘦身一半,删掉重写期已完成的 22 份阶段产物
CLAUDE.md 从 490 行降到 228 行:只留日常要当场记住的约束,展开拆成五份专题 文档 —— docs/deploy.md(部署与备份恢复)、database.md(迁移执行器、基线、 drizzle-kit 的坑)、timezone.md(时区口径与那次成就订正)、contract.md (出参不 parse 的四次故障)、ast-rules.md(AST 规则与 C++ 的调用形态)。 删掉的是阶段 0–5 那批一次性产物:4 份实施计划、10 份评审/核验/修复报告、 endpoint-inventory.md(110 端点是 2026-08 的快照,现在 363 条路由)、 docs/spikes/ 的 spike 与提取脚本(结论早已落进代码)。phase5 切换手册删之前 先把仍然有效的部分提炼进 docs/deploy.md:拓扑、deploy.sh、部署后验证清单、 NPM 那两个不能关的开关、pg_dumpall 恢复的两个坑、镜像体积;演练报告与回滚 两节随旧栈下线一并作废。 两份设计文档保留,补上状态行说明它们是「当初为什么这么定」而不是现状。 apps/web/CLAUDE.md 顺手订正过期内容:PUBLIC_OJ_URL / PUBLIC_WS_URL 两个变量 早已不存在(baseURL 写死 /api,dev 走 vite proxy、线上由 Caddy 同源伺服), store 与 composable 清单补齐到与目录一致。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -57,8 +57,8 @@ API 调用不按模块分:学生端全在 `oj/api.ts`、后台全在 `admin/ap
|
||||
跨端的(登录、资料、标签、验证码)在 `shared/api.ts`。
|
||||
|
||||
Shared logic lives in `shared/`:
|
||||
- `store/` — Pinia stores: `user` (auth/roles), `config` (site-wide settings), `authModal` (login/signup form state), `screenMode` (problem split-screen layout), `loginSummary` (AI activity summary), `collab` (help-request queue + collab room)
|
||||
- `composables/` — `pagination` (URL-synced), `websocket` (reconnect + heartbeat), `collabDoc` (Yjs binding for the collab channel), `configUpdate` (WS-pushed config sync), `useMermaid` (lazy Mermaid render), `breakpoints`, `maxkb`
|
||||
- `store/` — Pinia stores: `user` (auth/roles), `config` (site-wide settings), `authModal` (login/signup form state), `screenMode` (problem split-screen layout), `loginSummary` (AI activity summary), `collab` (help-request queue + collab room), `achievement` (解锁弹窗队列), `myFlowchart` (流程图弹窗的 mermaid 源码)
|
||||
- `composables/` — `pagination` (URL-synced), `websocket` (reconnect + heartbeat), `collabDoc` (Yjs binding for the collab channel), `configUpdate` (WS-pushed config sync), `useMermaid` (lazy Mermaid render), `darkTransition` (View Transitions,111 以下走降级分支), `hiddenStudents` (统计面板的「请假隐藏」), `chartTheme`, `breakpoints`, `maxkb`, `learnProgress`, `rarity`
|
||||
- `layout/` — `default.vue` and `admin.vue` layout wrappers
|
||||
- `api.ts` — shared API calls (auth, profile, tags, captcha)
|
||||
|
||||
@@ -158,17 +158,19 @@ Naive 的日期选择器按浏览器本地时区渲染、没有 `timezone` 属
|
||||
|
||||
### Environment Variables
|
||||
|
||||
Variables prefixed with `PUBLIC_` are injected at build time. Env files: `.env`, `.env.staging`, `.env.test`.
|
||||
Variables prefixed with `PUBLIC_` are injected at build time,声明在 `src/env.d.ts`。
|
||||
Env files: `.env`(本机)、`.env.production`(服务器)、`.env.staging` / `.env.test`(机房)。
|
||||
|
||||
| Variable | Purpose |
|
||||
|---|---|
|
||||
| `PUBLIC_OJ_URL` | Backend REST API base URL |
|
||||
| `PUBLIC_WS_URL` | WebSocket server URL |
|
||||
| `PUBLIC_ENV` | Environment name (dev/staging/production) |
|
||||
| `PUBLIC_CODE_URL` | Code execution service |
|
||||
| `PUBLIC_JUDGE0_URL` | Judge0 API |
|
||||
| `PUBLIC_MAXKB_URL` | Knowledge base service |
|
||||
| `PUBLIC_ICONIFY_URL` | Iconify icon CDN |
|
||||
| `PUBLIC_ENV` | 环境角标:`test` → 「测试版」,`dev` → 「开发版」,其余不显示 |
|
||||
| `PUBLIC_CODE_URL` | 代码分享服务(提交详情、题目页的「分享」) |
|
||||
| `PUBLIC_JUDGE0_URL` | Judge0 API(`utils/judge.ts` 的在线运行) |
|
||||
| `PUBLIC_MAXKB_URL` | 知识库问答挂件 |
|
||||
| `PUBLIC_ICONIFY_URL` | 自建 Iconify 图标源,不设则走公共 CDN |
|
||||
|
||||
后端地址**不在这里**:`utils/api.ts` 写死 `baseURL: "/api"`,dev 由 `vite.config.ts` 的
|
||||
proxy 转给 3000,线上由 Caddy 同源伺服。(原来的 `PUBLIC_OJ_URL` / `PUBLIC_WS_URL` 早已不存在。)
|
||||
|
||||
### Routing
|
||||
|
||||
|
||||
Reference in New Issue
Block a user