Files
tiku-saas-web/README.md

63 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Tiku SaaS Web
租户建站与学生端前端。项目是单应用双 Shell学生端使用 Tailwind CSS租户后台使用 Ant Design。当前版本优先完成一次性 Owner 激活、建站引导、主题和首页模块配置、预览与发布闭环。
## 开发
要求 Node.js 24+ 与 npm 11+。
```bash
npm install
npm run dev
```
默认访问 `http://localhost:5180/__demo`创建或重置租户并复制一次性激活链接。Mock 数据按开发模拟 Host 保存在浏览器 `localStorage`,刷新页面不会丢失。
```bash
npm test
npm run check:production
```
## 数据模式
复制 `.env.example``.env.local`
```dotenv
VITE_DATA_MODE=mock
VITE_API_BASE_URL=
```
- `mock`:仅 Development 动态加载 MSW生产构建不会包含 Worker、启动器、示例 Token 或 Mock 状态。
- `api`:使用同源 `/api`,也可在开发期通过 `VITE_API_BASE_URL` 代理到 .NET API。
页面只能调用 `src/api` 下的领域 Client不能直接调用 `fetch`。前端请求不携带任意 `tenantId`;真实租户由 Host 与受保护 Session 决定。
## 路由和权限
| 路由 | 行为 |
| --- | --- |
| `/` | 学生端;根据 Runtime 的站点状态显示内容、筹备、暂停或域名接入页面 |
| `/activate/:activationId#token=...` | 一次性 Owner 激活Token 读入后立即从地址栏移除 |
| `/manage/login` | 租户后台登录 |
| `/manage/*` | 必须通过租户 Backoffice Bootstrap无 Permission 的账号统一显示 404 |
| `/__demo` | 仅开发环境存在的生命周期启动器 |
后台菜单来自 `GET /api/backoffice/tenant/bootstrap`。进入站点设计还必须包含 `tenant:settings:manage`,前端隐藏菜单不能替代后端 401/403。
## 前后端契约
当前前端 Facade 对齐以下接口:
- `GET /api/runtime/bootstrap`
- `POST /api/browser-auth/activation/complete`
- `POST /api/browser-auth/login/password`
- `GET /api/backoffice/tenant/bootstrap`
- `GET /api/tenant-onboarding/status`
- `GET|PUT|POST /api/tenant-admin/frontend-config/**`
后端目前已有 `/api/auth/activation/complete`,但只返回 204。目标 Browser Auth 激活接口需要在完成密码设置后签发 HttpOnly Session Cookie并返回当前用户摘要前端才能安全地自动进入建站向导。
## 与旧系统的边界
`tiki-web` 仅作为学生业务页面、响应式布局和交互体验的功能参考。本仓库不得引入 PocketBase、`MockBackend``tenant.config.ts`,也不得在浏览器保存支付、短信或对象存储 Secret。Logo 的本地 Data URL 仅用于当前前端原型;真实接入时改为后端签发的上传凭证或预签名 URL。