43 lines
2.5 KiB
Markdown
43 lines
2.5 KiB
Markdown
# Tiku 平台管理前端
|
||
|
||
独立部署的 React + TypeScript 平台管理端。业务接口契约只从 `Tiku.Api` 实时 OpenAPI 文档生成,不依赖旧静态前端的接口适配代码。
|
||
|
||
## 本地开发
|
||
|
||
首次使用先安装前端依赖:
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
之后从仓库根目录运行 `dotnet run --project Tiku.Api`,ASP.NET Core 的开发代理会自动启动本工程的 Vite 服务。访问 <http://localhost:5173>。开发服务器默认代理 `/api` 到 `http://localhost:5090`;需要修改目标时设置 `VITE_DEV_API_TARGET`。
|
||
|
||
也可以在本目录单独执行 `npm run dev`,便于只调试前端。Production 环境不会由 API 启动 Node 进程,前端仍应独立构建和部署。
|
||
|
||
## 接口契约
|
||
|
||
```bash
|
||
OPENAPI_URL=http://localhost:5090/openapi/v1.json npm run generate:api
|
||
```
|
||
|
||
生成结果包括完整 OpenAPI TypeScript 类型,以及全部 `/api/platform/**`、`/api/platform/access/**` 接口的页面操作元数据。`npm test` 会验证每个后端平台接口都已归入且只归入一个页面组。
|
||
|
||
生产部署使用同源 `/api` 反向代理到 `Tiku.Api`,浏览器不持有跨域 API Base URL。
|
||
|
||
## 租户开通工作台
|
||
|
||
“租户管理”是专用开通界面:创建时填写主域名,创建后展示 CNAME/TXT 指引并轮询 DNS/TLS 状态。只有域名 Active 后才显示 Owner 激活操作。激活链接只保存在领取成功弹窗的组件状态中,关闭即清除,不写入 `localStorage`、通用响应面板或持久日志;幂等重放不会再次显示明文链接。主域名录入错误时可填写审计原因进行更正,更正会撤销旧的未消费链接。
|
||
|
||
## 从空库开通租户
|
||
|
||
1. 按后端 [`docs/quickstart.md`](../docs/quickstart.md) 使用 `--skip-development-seed --bootstrap-platform-admin` 初始化空库;
|
||
2. 打开 <http://localhost:5173>,用临时密码首次登录并改密;
|
||
3. 进入“租户管理”,创建租户、Owner 和 `school.localhost` 主域名;
|
||
4. 等待页面显示“DNS 与 TLS 已激活”;
|
||
5. 领取一次性 Owner 激活链接,并通过安全渠道交给租户 Owner;
|
||
6. Owner 激活、建站并发布后,学生端访问 <http://school.localhost:5180/>。
|
||
|
||
平台只负责签发一次性链接,不设置、保存或审批 Owner 密码。明文链接关闭弹窗后无法恢复;需要重新交付时必须填写原因并撤销重签。
|
||
|
||
Development 的平台页面实际运行在 5173 端口。`http://localhost:5090/platform-admin/` 是受保护的 API 路径,不是本地 Vite 登录入口。
|