# @umt/web TanStack Router SPA 控制台,沿用 uhd_web 设计系统(token 见 `app/app.css`,规范见 `docs/design/`)。只通过 `/api/v1` 与 server 通信,请求/响应类型一律来自 `@umt/contracts`,不手写重复 DTO。开发端口 5180,`/api` 默认代理到 http://localhost:4390,可用 `VITE_API_TARGET` 覆盖。 ## 命令 在仓库根目录执行: - `bun run dev:web`:开发服务器(5180)。 - `cd apps/web && bun run build`:TanStack Router SPA 生产构建到 `build/client`,由 server 的 `WEB_ROOT` 同端口托管。 - `cd apps/web && bun run test`:单测(`app/**/*.test.ts`)。 - `bun run test:web:smoke`:Playwright 全页面冒烟,前提与环境变量见仓库 README。 - `bun run check:tokens`:设计 token 守卫。 ## 目录 - `app/routes/`:页面(`app/router.tsx` 登记全部路由);`app/routes/console/` 为控制台。 - `index.html` 与 `app/entry.client.tsx`:Vite 浏览器入口;`app/root.tsx` 提供主题、查询缓存与页面标题。 - `app/lib/router-compat.tsx`:现有链接与导航 hook 的兼容入口,查询参数保持字符串和重复值,旧页面的 `clientLoader` 重定向由 `app/router.tsx` 执行。 - `app/api/`:按资源分的 react-query hook,路径与 schema 取 `@umt/contracts` 的 `Api` 注册表。 - `app/components/`:业务组件与 `ui/` 基础组件。 - Agent 页的 `?mock=1` 演示模式只在开发构建或后端 `pi.provider = "fake"` 时生效,生产构建连真实模型时忽略。