feat(api): 新增自动化 API 更新工具和协作文档
- 添加 api-generator.bat/api-generator.sh 脚本,简化后端接口修改后的前端 API 同步流程 - 新增 reading-platform-frontend/README.md,说明 API 开发协作规范 - 更新 docs/开发协作指南.md,补充协作模式说明和新功能开发检查清单 - 同步最新 API 规范和生成的 TypeScript 类型代码 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
32d2364c77
commit
745f4e4b06
49
api-generator.bat
Normal file
49
api-generator.bat
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
REM 后端接口变更后自动更新前端 API 规范
|
||||||
|
REM 使用方式:修改接口后运行 api-generator.bat
|
||||||
|
|
||||||
|
echo === 自动更新前端 API 规格 ===
|
||||||
|
|
||||||
|
REM 检查前端目录是否存在
|
||||||
|
if not exist "reading-platform-frontend" (
|
||||||
|
echo ❌ 错误:前端目录不存在
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM 进入前端目录
|
||||||
|
cd reading-platform-frontend
|
||||||
|
|
||||||
|
REM 检查 npm 是否安装
|
||||||
|
node --version > NUL 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ❌ 错误:未找到 Node.js,请安装 Node.js 18+
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM 检查 package.json 中是否有 api:update 脚本
|
||||||
|
findstr "api:update" package.json > NUL
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ❌ 错误:package.json 中未找到 api:update 脚本
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo 📦 正在安装依赖...
|
||||||
|
call npm install
|
||||||
|
|
||||||
|
echo 🔄 正在拉取最新 API 规范并生成代码...
|
||||||
|
call npm run api:update
|
||||||
|
|
||||||
|
echo ✅ 完成!
|
||||||
|
|
||||||
|
REM 显示修改的文件
|
||||||
|
echo.
|
||||||
|
echo 📝 修改的文件:
|
||||||
|
git status --short
|
||||||
|
|
||||||
|
REM 提示用户检查并提交
|
||||||
|
echo.
|
||||||
|
echo 💡 请检查生成的文件,然后提交:
|
||||||
|
echo git add api-spec.yml src/api/generated/
|
||||||
|
echo git commit -m "chore(api): 同步最新接口规范"
|
||||||
|
echo git push
|
||||||
47
api-generator.sh
Normal file
47
api-generator.sh
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 后端接口变更后自动更新前端 API 规范
|
||||||
|
# 使用方式:修改接口后运行 ./api-generator.sh
|
||||||
|
|
||||||
|
echo "=== 自动更新前端 API 规范 ==="
|
||||||
|
|
||||||
|
# 检查前端目录是否存在
|
||||||
|
if [ ! -d "reading-platform-frontend" ]; then
|
||||||
|
echo "❌ 错误:前端目录不存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 进入前端目录
|
||||||
|
cd reading-platform-frontend
|
||||||
|
|
||||||
|
# 检查 npm 是否安装
|
||||||
|
if ! npm --version > /dev/null 2>&1; then
|
||||||
|
echo "❌ 错误:未找到 npm,请安装 Node.js 18+"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 package.json 中是否有 api:update 脚本
|
||||||
|
if ! grep -q "api:update" package.json; then
|
||||||
|
echo "❌ 错误:package.json 中未找到 api:update 脚本"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "📦 正在安装依赖..."
|
||||||
|
npm install
|
||||||
|
|
||||||
|
echo "🔄 正在拉取最新 API 规范并生成代码..."
|
||||||
|
npm run api:update
|
||||||
|
|
||||||
|
echo "✅ 完成!"
|
||||||
|
|
||||||
|
# 显示修改的文件
|
||||||
|
echo ""
|
||||||
|
echo "📝 修改的文件:"
|
||||||
|
git status --short
|
||||||
|
|
||||||
|
# 提示用户检查并提交
|
||||||
|
echo ""
|
||||||
|
echo "💡 请检查生成的文件,然后提交:"
|
||||||
|
echo " git add api-spec.yml src/api/generated/"
|
||||||
|
echo " git commit -m 'chore(api): 同步最新接口规范'"
|
||||||
|
echo " git push"
|
||||||
@ -108,10 +108,36 @@ kindergarten_java/
|
|||||||
|
|
||||||
**前后端唯一的同步方式**:后端改了接口 → 更新 `api-spec.yml` → 前端 `git pull` → TypeScript 报错的地方 = 需要适配的地方。
|
**前后端唯一的同步方式**:后端改了接口 → 更新 `api-spec.yml` → 前端 `git pull` → TypeScript 报错的地方 = 需要适配的地方。
|
||||||
|
|
||||||
|
### 协作模式说明
|
||||||
|
|
||||||
|
#### 为什么选择 OpenAPI 规范驱动开发?
|
||||||
|
|
||||||
|
| 协作方式 | 优点 | 缺点 | 适用场景 |
|
||||||
|
|---------|------|------|---------|
|
||||||
|
| **OpenAPI 规范驱动**(当前) | 类型安全、零沟通成本、可并行开发 | 需要遵守规范 | **推荐:常规功能开发** |
|
||||||
|
| 一人全流程开发 | 速度快(单人) | 资源浪费、难以深度优化 | 仅适用于原型验证 |
|
||||||
|
| 按模块一人包干 | 责任清晰 | 接口对齐成本高、错误发现晚 | 不推荐 |
|
||||||
|
|
||||||
|
**关键优势**:
|
||||||
|
1. **类型安全** - TypeScript 自动校验接口参数和返回值
|
||||||
|
2. **零沟通成本** - 接口定义就是 contract,不需要问"这个字段要不要"
|
||||||
|
3. **并行开发** - 后端写接口时,前端可以基于规范提前写页面框架
|
||||||
|
4. **自动同步** - `npm run api:update` 一键同步,不会有人用旧接口
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 四、后端工程师
|
## 四、后端工程师
|
||||||
|
|
||||||
|
### 新功能开发检查清单
|
||||||
|
|
||||||
|
| 步骤 | 后端工程师 | 前端工程师 | 说明 |
|
||||||
|
|-----|-----------|-----------|------|
|
||||||
|
| 1. 需求确认 | 评估接口可行性 | 评估页面结构 | 确保需求可实现 |
|
||||||
|
| 2. 接口设计 | 写 Swagger 注解 | 确认接口需求 | api-spec.yml 作为 contract |
|
||||||
|
| 3. 代码开发 | 实现 Controller | 开发 Vue 页面 | 可并行开发 |
|
||||||
|
| 4. 本地联调 | `docker compose up` | `npm run dev` | 对齐测试账号登录 |
|
||||||
|
| 5. 提交代码 | 提交后端代码 | Git Pull 后提交 | 一次性提交所有改动 |
|
||||||
|
|
||||||
### 开发环境要求
|
### 开发环境要求
|
||||||
|
|
||||||
- Docker Desktop(必须,用于本地启动服务)
|
- Docker Desktop(必须,用于本地启动服务)
|
||||||
@ -244,6 +270,27 @@ git pull # 拉取最新代码
|
|||||||
|
|
||||||
> 如果遇到 TypeScript 编译报错,说明接口有变化,根据错误提示修改调用代码即可。**不需要问后端接口格式**,类型定义就是答案。
|
> 如果遇到 TypeScript 编译报错,说明接口有变化,根据错误提示修改调用代码即可。**不需要问后端接口格式**,类型定义就是答案。
|
||||||
|
|
||||||
|
### 新功能开发检查清单
|
||||||
|
|
||||||
|
| 步骤 | 前端工程师 | 后端工程师 | 说明 |
|
||||||
|
|-----|-----------|-----------|------|
|
||||||
|
| 1. 需求确认 | 评估页面结构 | 评估接口可行性 | 确保需求可实现 |
|
||||||
|
| 2. 接口设计 | 确认接口需求 | 写 Swagger 注解 | api-spec.yml 作为 contract |
|
||||||
|
| 3. 代码开发 | 开发 Vue 页面 | 实现 Controller | 可并行开发 |
|
||||||
|
| 4. 本地联调 | `npm run dev` | `docker compose up` | 对齐测试账号登录 |
|
||||||
|
| 5. 提交代码 | Git Pull 后提交 | 提交后端代码 | 一次性提交所有改动 |
|
||||||
|
|
||||||
|
### 前端 Mock 数据(可选)
|
||||||
|
|
||||||
|
在后端接口未完成时,前端可基于 api-spec.yml 使用 Mock 数据:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// 使用 mockjs 或 orval 的 mock 功能
|
||||||
|
import { mockGetStudentPage } from '@/api/generated/mock'
|
||||||
|
|
||||||
|
const { data } = await mockGetStudentPage({ page: 1, size: 10 })
|
||||||
|
```
|
||||||
|
|
||||||
### 新增页面
|
### 新增页面
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
121
reading-platform-frontend/README.md
Normal file
121
reading-platform-frontend/README.md
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
# 少儿智慧阅读平台 - 前端
|
||||||
|
|
||||||
|
Vue 3 + TypeScript + Vite + Ant Design Vue
|
||||||
|
|
||||||
|
## 重要提醒(必读)
|
||||||
|
|
||||||
|
### 🚨 接口变更后必须执行的步骤
|
||||||
|
|
||||||
|
当后端修改了 API 接口后,**必须**执行以下步骤:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 拉取最新代码
|
||||||
|
git pull
|
||||||
|
|
||||||
|
# 2. 更新 API 规范并重新生成类型代码
|
||||||
|
npm run api:update
|
||||||
|
|
||||||
|
# 3. 检查生成的文件
|
||||||
|
git status
|
||||||
|
# 应该看到 api-spec.yml 和 src/api/generated/ 下的文件有变化
|
||||||
|
|
||||||
|
# 4. 提交所有改动
|
||||||
|
git add api-spec.yml src/api/generated/
|
||||||
|
git commit -m "chore(api): 同步最新接口规范"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
### ⚠️ 如果跳过这一步会发生什么?
|
||||||
|
|
||||||
|
- TypeScript 编译报错(类型不匹配)
|
||||||
|
- 代码中会出现红色波浪线
|
||||||
|
- CI 检查无法通过
|
||||||
|
|
||||||
|
### 🔍 如何确认接口是否有变更?
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看最近提交
|
||||||
|
git log --oneline -10
|
||||||
|
|
||||||
|
# 查看 api-spec.yml 是否有未提交的改动
|
||||||
|
git diff api-spec.yml
|
||||||
|
|
||||||
|
# 查看生成的文件是否与远程一致
|
||||||
|
git status src/api/generated/
|
||||||
|
```
|
||||||
|
|
||||||
|
## 本地开发
|
||||||
|
|
||||||
|
### 环境要求
|
||||||
|
|
||||||
|
- Node.js 18+
|
||||||
|
- npm 9+
|
||||||
|
|
||||||
|
### 安装依赖
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### 启动开发服务器
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
访问:http://localhost:5173
|
||||||
|
|
||||||
|
## 构建生产版本
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
## API 相关命令
|
||||||
|
|
||||||
|
| 命令 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `npm run dev` | 启动开发服务器 |
|
||||||
|
| `npm run build` | 构建生产版本 |
|
||||||
|
| `npm run api:fetch` | 从后端拉取最新 API 规范 (api-spec.json) |
|
||||||
|
| `npm run api:gen` | 根据规范生成 TypeScript 代码 |
|
||||||
|
| `npm run api:update` | **拉取 + 生成**(后端改接口后必须执行) |
|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
reading-platform-frontend/
|
||||||
|
├── src/
|
||||||
|
│ ├── views/ # 页面组件
|
||||||
|
│ │ ├── admin/ # 超管功能
|
||||||
|
│ │ ├── school/ # 学校管理
|
||||||
|
│ │ ├── teacher/ # 教师功能
|
||||||
|
│ │ └── parent/ # 家长功能
|
||||||
|
│ ├── api/
|
||||||
|
│ │ ├── generated/ # ⚠️ 自动生成,不要手动修改
|
||||||
|
│ │ └── index.ts # axios 实例
|
||||||
|
│ └── stores/ # Pinia 状态管理
|
||||||
|
├── api-spec.yml # ⚠️ OpenAPI 规范(后端更新后提交)
|
||||||
|
└── orval.config.ts # API 代码生成配置
|
||||||
|
```
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. **不要手动修改** `src/api/generated/` 下的文件
|
||||||
|
2. **不要提交** 修改后的 `api-spec.yml` 但不提交 `generated/`
|
||||||
|
3. 每次开始工作前先执行 `git pull && npm run api:update`
|
||||||
|
4. 提交代码前使用 `git status` 检查是否有多余/遗漏的文件
|
||||||
|
|
||||||
|
## 常见问题
|
||||||
|
|
||||||
|
**Q:运行 `npm run api:update` 报错?**
|
||||||
|
- 确认后端正在运行:http://8.148.151.56:3002
|
||||||
|
- 或者直接 `git pull` 使用已提交的规范,运行 `npm run api:gen`
|
||||||
|
|
||||||
|
**Q:TypeScript 报错类型不匹配?**
|
||||||
|
- 说明后端接口有变化
|
||||||
|
- 执行 `npm run api:update` 重新生成类型
|
||||||
|
|
||||||
|
**Q:想查看某个接口的详细参数?**
|
||||||
|
- 打开 `src/api/generated/api.ts` 查看
|
||||||
|
- 或访问 http://8.148.151.56:3002/doc.html
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.13.2 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* Reading Platform API
|
||||||
|
* Reading Platform Backend Service API Documentation
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type ApproveCourseParams = {
|
||||||
|
comment?: string;
|
||||||
|
};
|
||||||
@ -7,15 +7,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Create Request
|
* 班级创建请求
|
||||||
*/
|
*/
|
||||||
export interface ClassCreateRequest {
|
export interface ClassCreateRequest {
|
||||||
/** Class name */
|
/** 班级名称 */
|
||||||
name: string;
|
name: string;
|
||||||
/** Grade */
|
/** 年级 */
|
||||||
grade?: string;
|
grade?: string;
|
||||||
/** Description */
|
/** 描述 */
|
||||||
description?: string;
|
description?: string;
|
||||||
/** Capacity */
|
/** 容量 */
|
||||||
capacity?: number;
|
capacity?: number;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,17 +7,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Update Request
|
* 班级更新请求
|
||||||
*/
|
*/
|
||||||
export interface ClassUpdateRequest {
|
export interface ClassUpdateRequest {
|
||||||
/** Class name */
|
/** 班级名称 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** Grade */
|
/** 年级 */
|
||||||
grade?: string;
|
grade?: string;
|
||||||
/** Description */
|
/** 描述 */
|
||||||
description?: string;
|
description?: string;
|
||||||
/** Capacity */
|
/** 容量 */
|
||||||
capacity?: number;
|
capacity?: number;
|
||||||
/** Status */
|
/** 状态 */
|
||||||
status?: string;
|
status?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,83 +7,83 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Course Create Request
|
* 课程创建请求
|
||||||
*/
|
*/
|
||||||
export interface CourseCreateRequest {
|
export interface CourseCreateRequest {
|
||||||
/** Course name */
|
/** 课程名称 */
|
||||||
name: string;
|
name: string;
|
||||||
/** Course code */
|
/** 课程编码 */
|
||||||
code?: string;
|
code?: string;
|
||||||
/** Description */
|
/** 描述 */
|
||||||
description?: string;
|
description?: string;
|
||||||
/** Cover URL */
|
/** 封面URL */
|
||||||
coverUrl?: string;
|
coverUrl?: string;
|
||||||
/** Cover image path */
|
/** 封面图片路径 */
|
||||||
coverImagePath?: string;
|
coverImagePath?: string;
|
||||||
/** Category */
|
/** 分类 */
|
||||||
category?: string;
|
category?: string;
|
||||||
/** Age range */
|
/** 年龄段 */
|
||||||
ageRange?: string;
|
ageRange?: string;
|
||||||
/** Difficulty level */
|
/** 难度等级 */
|
||||||
difficultyLevel?: string;
|
difficultyLevel?: string;
|
||||||
/** Duration in minutes */
|
/** 时长(分钟) */
|
||||||
durationMinutes?: number;
|
durationMinutes?: number;
|
||||||
/** Objectives */
|
/** 教学目标 */
|
||||||
objectives?: string;
|
objectives?: string;
|
||||||
/** Core content */
|
/** 核心内容 */
|
||||||
coreContent?: string;
|
coreContent?: string;
|
||||||
/** Course summary */
|
/** 课程摘要 */
|
||||||
introSummary?: string;
|
introSummary?: string;
|
||||||
/** Course highlights */
|
/** 课程亮点 */
|
||||||
introHighlights?: string;
|
introHighlights?: string;
|
||||||
/** Course goals */
|
/** 课程目标 */
|
||||||
introGoals?: string;
|
introGoals?: string;
|
||||||
/** Content schedule */
|
/** 内容安排 */
|
||||||
introSchedule?: string;
|
introSchedule?: string;
|
||||||
/** Key points and difficulties */
|
/** 重点难点 */
|
||||||
introKeyPoints?: string;
|
introKeyPoints?: string;
|
||||||
/** Teaching methods */
|
/** 教学方法 */
|
||||||
introMethods?: string;
|
introMethods?: string;
|
||||||
/** Evaluation methods */
|
/** 评估方法 */
|
||||||
introEvaluation?: string;
|
introEvaluation?: string;
|
||||||
/** Notes and precautions */
|
/** 注意事项 */
|
||||||
introNotes?: string;
|
introNotes?: string;
|
||||||
/** Schedule reference data (JSON) */
|
/** 课表参考数据(JSON) */
|
||||||
scheduleRefData?: string;
|
scheduleRefData?: string;
|
||||||
/** Environment construction content */
|
/** 环境创设内容 */
|
||||||
environmentConstruction?: string;
|
environmentConstruction?: string;
|
||||||
/** Theme ID */
|
/** 主题ID */
|
||||||
themeId?: number;
|
themeId?: number;
|
||||||
/** Picture book name */
|
/** 绘本名称 */
|
||||||
pictureBookName?: string;
|
pictureBookName?: string;
|
||||||
/** Ebook paths (JSON array) */
|
/** 电子书路径(JSON数组) */
|
||||||
ebookPaths?: string;
|
ebookPaths?: string;
|
||||||
/** Audio paths (JSON array) */
|
/** 音频路径(JSON数组) */
|
||||||
audioPaths?: string;
|
audioPaths?: string;
|
||||||
/** Video paths (JSON array) */
|
/** 视频路径(JSON数组) */
|
||||||
videoPaths?: string;
|
videoPaths?: string;
|
||||||
/** Other resources (JSON array) */
|
/** 其他资源(JSON数组) */
|
||||||
otherResources?: string;
|
otherResources?: string;
|
||||||
/** PPT file path */
|
/** PPT文件路径 */
|
||||||
pptPath?: string;
|
pptPath?: string;
|
||||||
/** PPT file name */
|
/** PPT文件名 */
|
||||||
pptName?: string;
|
pptName?: string;
|
||||||
/** Poster paths (JSON array) */
|
/** 海报路径(JSON数组) */
|
||||||
posterPaths?: string;
|
posterPaths?: string;
|
||||||
/** Teaching tools (JSON array) */
|
/** 教具(JSON数组) */
|
||||||
tools?: string;
|
tools?: string;
|
||||||
/** Student materials */
|
/** 学生材料 */
|
||||||
studentMaterials?: string;
|
studentMaterials?: string;
|
||||||
/** Lesson plan data (JSON) */
|
/** 教案数据(JSON) */
|
||||||
lessonPlanData?: string;
|
lessonPlanData?: string;
|
||||||
/** Activities data (JSON) */
|
/** 活动数据(JSON) */
|
||||||
activitiesData?: string;
|
activitiesData?: string;
|
||||||
/** Assessment data (JSON) */
|
/** 评估数据(JSON) */
|
||||||
assessmentData?: string;
|
assessmentData?: string;
|
||||||
/** Grade tags (JSON array) */
|
/** 年级标签(JSON数组) */
|
||||||
gradeTags?: string;
|
gradeTags?: string;
|
||||||
/** Domain tags (JSON array) */
|
/** 领域标签(JSON数组) */
|
||||||
domainTags?: string;
|
domainTags?: string;
|
||||||
/** Has collective lesson */
|
/** 是否有集体课 */
|
||||||
hasCollectiveLesson?: boolean;
|
hasCollectiveLesson?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,85 +7,85 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Course Update Request
|
* 课程更新请求
|
||||||
*/
|
*/
|
||||||
export interface CourseUpdateRequest {
|
export interface CourseUpdateRequest {
|
||||||
/** Course name */
|
/** 课程名称 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** Course code */
|
/** 课程编码 */
|
||||||
code?: string;
|
code?: string;
|
||||||
/** Description */
|
/** 描述 */
|
||||||
description?: string;
|
description?: string;
|
||||||
/** Cover URL */
|
/** 封面URL */
|
||||||
coverUrl?: string;
|
coverUrl?: string;
|
||||||
/** Cover image path */
|
/** 封面图片路径 */
|
||||||
coverImagePath?: string;
|
coverImagePath?: string;
|
||||||
/** Category */
|
/** 分类 */
|
||||||
category?: string;
|
category?: string;
|
||||||
/** Age range */
|
/** 年龄段 */
|
||||||
ageRange?: string;
|
ageRange?: string;
|
||||||
/** Difficulty level */
|
/** 难度等级 */
|
||||||
difficultyLevel?: string;
|
difficultyLevel?: string;
|
||||||
/** Duration in minutes */
|
/** 时长(分钟) */
|
||||||
durationMinutes?: number;
|
durationMinutes?: number;
|
||||||
/** Objectives */
|
/** 教学目标 */
|
||||||
objectives?: string;
|
objectives?: string;
|
||||||
/** Status */
|
/** 状态 */
|
||||||
status?: string;
|
status?: string;
|
||||||
/** Core content */
|
/** 核心内容 */
|
||||||
coreContent?: string;
|
coreContent?: string;
|
||||||
/** Course summary */
|
/** 课程摘要 */
|
||||||
introSummary?: string;
|
introSummary?: string;
|
||||||
/** Course highlights */
|
/** 课程亮点 */
|
||||||
introHighlights?: string;
|
introHighlights?: string;
|
||||||
/** Course goals */
|
/** 课程目标 */
|
||||||
introGoals?: string;
|
introGoals?: string;
|
||||||
/** Content schedule */
|
/** 内容安排 */
|
||||||
introSchedule?: string;
|
introSchedule?: string;
|
||||||
/** Key points and difficulties */
|
/** 重点难点 */
|
||||||
introKeyPoints?: string;
|
introKeyPoints?: string;
|
||||||
/** Teaching methods */
|
/** 教学方法 */
|
||||||
introMethods?: string;
|
introMethods?: string;
|
||||||
/** Evaluation methods */
|
/** 评估方法 */
|
||||||
introEvaluation?: string;
|
introEvaluation?: string;
|
||||||
/** Notes and precautions */
|
/** 注意事项 */
|
||||||
introNotes?: string;
|
introNotes?: string;
|
||||||
/** Schedule reference data (JSON) */
|
/** 课表参考数据(JSON) */
|
||||||
scheduleRefData?: string;
|
scheduleRefData?: string;
|
||||||
/** Environment construction content */
|
/** 环境创设内容 */
|
||||||
environmentConstruction?: string;
|
environmentConstruction?: string;
|
||||||
/** Theme ID */
|
/** 主题ID */
|
||||||
themeId?: number;
|
themeId?: number;
|
||||||
/** Picture book name */
|
/** 绘本名称 */
|
||||||
pictureBookName?: string;
|
pictureBookName?: string;
|
||||||
/** Ebook paths (JSON array) */
|
/** 电子书路径(JSON数组) */
|
||||||
ebookPaths?: string;
|
ebookPaths?: string;
|
||||||
/** Audio paths (JSON array) */
|
/** 音频路径(JSON数组) */
|
||||||
audioPaths?: string;
|
audioPaths?: string;
|
||||||
/** Video paths (JSON array) */
|
/** 视频路径(JSON数组) */
|
||||||
videoPaths?: string;
|
videoPaths?: string;
|
||||||
/** Other resources (JSON array) */
|
/** 其他资源(JSON数组) */
|
||||||
otherResources?: string;
|
otherResources?: string;
|
||||||
/** PPT file path */
|
/** PPT文件路径 */
|
||||||
pptPath?: string;
|
pptPath?: string;
|
||||||
/** PPT file name */
|
/** PPT文件名 */
|
||||||
pptName?: string;
|
pptName?: string;
|
||||||
/** Poster paths (JSON array) */
|
/** 海报路径(JSON数组) */
|
||||||
posterPaths?: string;
|
posterPaths?: string;
|
||||||
/** Teaching tools (JSON array) */
|
/** 教具(JSON数组) */
|
||||||
tools?: string;
|
tools?: string;
|
||||||
/** Student materials */
|
/** 学生材料 */
|
||||||
studentMaterials?: string;
|
studentMaterials?: string;
|
||||||
/** Lesson plan data (JSON) */
|
/** 教案数据(JSON) */
|
||||||
lessonPlanData?: string;
|
lessonPlanData?: string;
|
||||||
/** Activities data (JSON) */
|
/** 活动数据(JSON) */
|
||||||
activitiesData?: string;
|
activitiesData?: string;
|
||||||
/** Assessment data (JSON) */
|
/** 评估数据(JSON) */
|
||||||
assessmentData?: string;
|
assessmentData?: string;
|
||||||
/** Grade tags (JSON array) */
|
/** 年级标签(JSON数组) */
|
||||||
gradeTags?: string;
|
gradeTags?: string;
|
||||||
/** Domain tags (JSON array) */
|
/** 领域标签(JSON数组) */
|
||||||
domainTags?: string;
|
domainTags?: string;
|
||||||
/** Has collective lesson */
|
/** 是否有集体课 */
|
||||||
hasCollectiveLesson?: boolean;
|
hasCollectiveLesson?: boolean;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,4 +11,5 @@ page?: number;
|
|||||||
pageSize?: number;
|
pageSize?: number;
|
||||||
keyword?: string;
|
keyword?: string;
|
||||||
category?: string;
|
category?: string;
|
||||||
|
status?: string;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
export type GetPackages1Params = {
|
export type GetPackages1Params = {
|
||||||
pageNum?: number;
|
page?: number;
|
||||||
pageSize?: number;
|
pageSize?: number;
|
||||||
keyword?: string;
|
keyword?: string;
|
||||||
status?: string;
|
status?: string;
|
||||||
|
|||||||
@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.13.2 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* Reading Platform API
|
||||||
|
* Reading Platform Backend Service API Documentation
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type GetReviewCoursePageParams = {
|
||||||
|
page?: number;
|
||||||
|
pageSize?: number;
|
||||||
|
};
|
||||||
@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Growth Record Create Request
|
* 成长档案创建请求
|
||||||
*/
|
*/
|
||||||
export interface GrowthRecordCreateRequest {
|
export interface GrowthRecordCreateRequest {
|
||||||
/** Student ID */
|
/** Student ID */
|
||||||
|
|||||||
@ -7,19 +7,19 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Growth Record Update Request
|
* 成长档案更新请求
|
||||||
*/
|
*/
|
||||||
export interface GrowthRecordUpdateRequest {
|
export interface GrowthRecordUpdateRequest {
|
||||||
/** Type */
|
/** 类型 */
|
||||||
type?: string;
|
type?: string;
|
||||||
/** Title */
|
/** 标题 */
|
||||||
title?: string;
|
title?: string;
|
||||||
/** Content */
|
/** 内容 */
|
||||||
content?: string;
|
content?: string;
|
||||||
/** Images (JSON array) */
|
/** 图片(JSON数组) */
|
||||||
images?: string;
|
images?: string;
|
||||||
/** Record date */
|
/** 记录日期 */
|
||||||
recordDate?: string;
|
recordDate?: string;
|
||||||
/** Tags */
|
/** 标签 */
|
||||||
tags?: string[];
|
tags?: string[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
* OpenAPI spec version: 1.0.0
|
* OpenAPI spec version: 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
export * from './approveCourseParams';
|
||||||
export * from './bindStudentParams';
|
export * from './bindStudentParams';
|
||||||
export * from './changePasswordParams';
|
export * from './changePasswordParams';
|
||||||
export * from './classCreateRequest';
|
export * from './classCreateRequest';
|
||||||
@ -40,6 +41,7 @@ export * from './getPackagesParams';
|
|||||||
export * from './getParentPageParams';
|
export * from './getParentPageParams';
|
||||||
export * from './getPopularCoursesParams';
|
export * from './getPopularCoursesParams';
|
||||||
export * from './getRecentGrowthRecordsParams';
|
export * from './getRecentGrowthRecordsParams';
|
||||||
|
export * from './getReviewCoursePageParams';
|
||||||
export * from './getSchedulePlans1Params';
|
export * from './getSchedulePlans1Params';
|
||||||
export * from './getSchedulePlansParams';
|
export * from './getSchedulePlansParams';
|
||||||
export * from './getScheduleTemplatesParams';
|
export * from './getScheduleTemplatesParams';
|
||||||
@ -80,6 +82,7 @@ export * from './pageResultTenant';
|
|||||||
export * from './parent';
|
export * from './parent';
|
||||||
export * from './parentCreateRequest';
|
export * from './parentCreateRequest';
|
||||||
export * from './parentUpdateRequest';
|
export * from './parentUpdateRequest';
|
||||||
|
export * from './rejectCourseParams';
|
||||||
export * from './resetPassword1Params';
|
export * from './resetPassword1Params';
|
||||||
export * from './resetPasswordParams';
|
export * from './resetPasswordParams';
|
||||||
export * from './resourceItem';
|
export * from './resourceItem';
|
||||||
@ -137,6 +140,7 @@ export * from './resultTheme';
|
|||||||
export * from './resultUserInfoResponse';
|
export * from './resultUserInfoResponse';
|
||||||
export * from './resultVoid';
|
export * from './resultVoid';
|
||||||
export * from './resultVoidData';
|
export * from './resultVoidData';
|
||||||
|
export * from './reviewPackageBody';
|
||||||
export * from './schedulePlan';
|
export * from './schedulePlan';
|
||||||
export * from './scheduleTemplate';
|
export * from './scheduleTemplate';
|
||||||
export * from './schoolCourse';
|
export * from './schoolCourse';
|
||||||
|
|||||||
@ -8,23 +8,23 @@
|
|||||||
import type { LocalTime } from './localTime';
|
import type { LocalTime } from './localTime';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lesson Create Request
|
* 课时创建请求
|
||||||
*/
|
*/
|
||||||
export interface LessonCreateRequest {
|
export interface LessonCreateRequest {
|
||||||
/** Course ID */
|
/** 课程ID */
|
||||||
courseId: number;
|
courseId: number;
|
||||||
/** Class ID */
|
/** 班级ID */
|
||||||
classId?: number;
|
classId?: number;
|
||||||
/** Teacher ID */
|
/** 教师ID */
|
||||||
teacherId: number;
|
teacherId: number;
|
||||||
/** Lesson title */
|
/** 课时标题 */
|
||||||
title: string;
|
title: string;
|
||||||
/** Lesson date */
|
/** 课时日期 */
|
||||||
lessonDate: string;
|
lessonDate: string;
|
||||||
startTime?: LocalTime;
|
startTime?: LocalTime;
|
||||||
endTime?: LocalTime;
|
endTime?: LocalTime;
|
||||||
/** Location */
|
/** 地点 */
|
||||||
location?: string;
|
location?: string;
|
||||||
/** Notes */
|
/** 备注 */
|
||||||
notes?: string;
|
notes?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
import type { LocalTime } from './localTime';
|
import type { LocalTime } from './localTime';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lesson Update Request
|
* 课时更新请求
|
||||||
*/
|
*/
|
||||||
export interface LessonUpdateRequest {
|
export interface LessonUpdateRequest {
|
||||||
/** Lesson title */
|
/** Lesson title */
|
||||||
|
|||||||
@ -7,13 +7,13 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Login Request
|
* 登录请求
|
||||||
*/
|
*/
|
||||||
export interface LoginRequest {
|
export interface LoginRequest {
|
||||||
/** Username */
|
/** 用户名 */
|
||||||
username: string;
|
username: string;
|
||||||
/** Password */
|
/** 密码 */
|
||||||
password: string;
|
password: string;
|
||||||
/** Login role */
|
/** 登录角色 */
|
||||||
role?: string;
|
role?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,19 +7,19 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Login Response
|
* 登录响应
|
||||||
*/
|
*/
|
||||||
export interface LoginResponse {
|
export interface LoginResponse {
|
||||||
/** JWT Token */
|
/** JWT令牌 */
|
||||||
token?: string;
|
token?: string;
|
||||||
/** User ID */
|
/** 用户ID */
|
||||||
userId?: number;
|
userId?: number;
|
||||||
/** Username */
|
/** 用户名 */
|
||||||
username?: string;
|
username?: string;
|
||||||
/** User name */
|
/** 用户姓名 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** User role */
|
/** 用户角色 */
|
||||||
role?: string;
|
role?: string;
|
||||||
/** Tenant ID */
|
/** 租户ID */
|
||||||
tenantId?: number;
|
tenantId?: number;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,16 +10,16 @@
|
|||||||
* Parent Create Request
|
* Parent Create Request
|
||||||
*/
|
*/
|
||||||
export interface ParentCreateRequest {
|
export interface ParentCreateRequest {
|
||||||
/** Username */
|
/** 用户名 */
|
||||||
username: string;
|
username: string;
|
||||||
/** Password */
|
/** 密码 */
|
||||||
password: string;
|
password: string;
|
||||||
/** Name */
|
/** 姓名 */
|
||||||
name: string;
|
name: string;
|
||||||
/** Phone */
|
/** 电话 */
|
||||||
phone?: string;
|
phone?: string;
|
||||||
/** Email */
|
/** 邮箱 */
|
||||||
email?: string;
|
email?: string;
|
||||||
/** Gender */
|
/** 性别 */
|
||||||
gender?: string;
|
gender?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,19 +7,19 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parent Update Request
|
* 家长更新请求
|
||||||
*/
|
*/
|
||||||
export interface ParentUpdateRequest {
|
export interface ParentUpdateRequest {
|
||||||
/** Name */
|
/** 姓名 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** Phone */
|
/** 电话 */
|
||||||
phone?: string;
|
phone?: string;
|
||||||
/** Email */
|
/** 邮箱 */
|
||||||
email?: string;
|
email?: string;
|
||||||
/** Avatar URL */
|
/** 头像URL */
|
||||||
avatarUrl?: string;
|
avatarUrl?: string;
|
||||||
/** Gender */
|
/** 性别 */
|
||||||
gender?: string;
|
gender?: string;
|
||||||
/** Status */
|
/** 状态 */
|
||||||
status?: string;
|
status?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.13.2 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* Reading Platform API
|
||||||
|
* Reading Platform Backend Service API Documentation
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type RejectCourseParams = {
|
||||||
|
comment?: string;
|
||||||
|
};
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* Generated by orval v7.13.2 🍺
|
||||||
|
* Do not edit manually.
|
||||||
|
* Reading Platform API
|
||||||
|
* Reading Platform Backend Service API Documentation
|
||||||
|
* OpenAPI spec version: 1.0.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
export type ReviewPackageBody = {[key: string]: { [key: string]: unknown }};
|
||||||
@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Student Create Request
|
* 学生创建请求
|
||||||
*/
|
*/
|
||||||
export interface StudentCreateRequest {
|
export interface StudentCreateRequest {
|
||||||
/** Name */
|
/** Name */
|
||||||
|
|||||||
@ -7,27 +7,27 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Student Update Request
|
* 学生更新请求
|
||||||
*/
|
*/
|
||||||
export interface StudentUpdateRequest {
|
export interface StudentUpdateRequest {
|
||||||
/** Name */
|
/** 姓名 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** Gender */
|
/** 性别 */
|
||||||
gender?: string;
|
gender?: string;
|
||||||
/** Birth date */
|
/** 出生日期 */
|
||||||
birthDate?: string;
|
birthDate?: string;
|
||||||
/** Avatar URL */
|
/** 头像URL */
|
||||||
avatarUrl?: string;
|
avatarUrl?: string;
|
||||||
/** Grade */
|
/** 年级 */
|
||||||
grade?: string;
|
grade?: string;
|
||||||
/** Student number */
|
/** 学号 */
|
||||||
studentNo?: string;
|
studentNo?: string;
|
||||||
/** Reading level */
|
/** 阅读水平 */
|
||||||
readingLevel?: string;
|
readingLevel?: string;
|
||||||
/** Interests */
|
/** 兴趣爱好 */
|
||||||
interests?: string;
|
interests?: string;
|
||||||
/** Notes */
|
/** 备注 */
|
||||||
notes?: string;
|
notes?: string;
|
||||||
/** Status */
|
/** 状态 */
|
||||||
status?: string;
|
status?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,25 +7,25 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Task Create Request
|
* 任务创建请求
|
||||||
*/
|
*/
|
||||||
export interface TaskCreateRequest {
|
export interface TaskCreateRequest {
|
||||||
/** Task title */
|
/** 任务标题 */
|
||||||
title: string;
|
title: string;
|
||||||
/** Description */
|
/** 描述 */
|
||||||
description?: string;
|
description?: string;
|
||||||
/** Task type: reading, homework, activity */
|
/** 任务类型: 阅读、作业、活动 */
|
||||||
type?: string;
|
type?: string;
|
||||||
/** Course ID */
|
/** 课程ID */
|
||||||
courseId?: number;
|
courseId?: number;
|
||||||
/** Start date */
|
/** 开始日期 */
|
||||||
startDate?: string;
|
startDate?: string;
|
||||||
/** Due date */
|
/** 截止日期 */
|
||||||
dueDate?: string;
|
dueDate?: string;
|
||||||
/** Attachments (JSON array) */
|
/** 附件(JSON数组) */
|
||||||
attachments?: string;
|
attachments?: string;
|
||||||
/** Target type: class, student */
|
/** 目标类型: 班级、学生 */
|
||||||
targetType?: string;
|
targetType?: string;
|
||||||
/** Target IDs */
|
/** 目标ID列表 */
|
||||||
targetIds?: number[];
|
targetIds?: number[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,21 +7,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Task Update Request
|
* 任务更新请求
|
||||||
*/
|
*/
|
||||||
export interface TaskUpdateRequest {
|
export interface TaskUpdateRequest {
|
||||||
/** Task title */
|
/** 任务标题 */
|
||||||
title?: string;
|
title?: string;
|
||||||
/** Description */
|
/** 描述 */
|
||||||
description?: string;
|
description?: string;
|
||||||
/** Task type */
|
/** 任务类型 */
|
||||||
type?: string;
|
type?: string;
|
||||||
/** Start date */
|
/** 开始日期 */
|
||||||
startDate?: string;
|
startDate?: string;
|
||||||
/** Due date */
|
/** 截止日期 */
|
||||||
dueDate?: string;
|
dueDate?: string;
|
||||||
/** Status */
|
/** 状态 */
|
||||||
status?: string;
|
status?: string;
|
||||||
/** Attachments (JSON array) */
|
/** 附件(JSON数组) */
|
||||||
attachments?: string;
|
attachments?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,21 +7,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Teacher Create Request
|
* 教师创建请求
|
||||||
*/
|
*/
|
||||||
export interface TeacherCreateRequest {
|
export interface TeacherCreateRequest {
|
||||||
/** Username */
|
/** 用户名 */
|
||||||
username: string;
|
username: string;
|
||||||
/** Password */
|
/** 密码 */
|
||||||
password: string;
|
password: string;
|
||||||
/** Name */
|
/** 姓名 */
|
||||||
name: string;
|
name: string;
|
||||||
/** Phone */
|
/** 电话 */
|
||||||
phone?: string;
|
phone?: string;
|
||||||
/** Email */
|
/** 邮箱 */
|
||||||
email?: string;
|
email?: string;
|
||||||
/** Gender */
|
/** 性别 */
|
||||||
gender?: string;
|
gender?: string;
|
||||||
/** Bio */
|
/** 个人简介 */
|
||||||
bio?: string;
|
bio?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,21 +7,21 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Teacher Update Request
|
* 教师更新请求
|
||||||
*/
|
*/
|
||||||
export interface TeacherUpdateRequest {
|
export interface TeacherUpdateRequest {
|
||||||
/** Name */
|
/** 姓名 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** Phone */
|
/** 电话 */
|
||||||
phone?: string;
|
phone?: string;
|
||||||
/** Email */
|
/** 邮箱 */
|
||||||
email?: string;
|
email?: string;
|
||||||
/** Avatar URL */
|
/** 头像URL */
|
||||||
avatarUrl?: string;
|
avatarUrl?: string;
|
||||||
/** Gender */
|
/** 性别 */
|
||||||
gender?: string;
|
gender?: string;
|
||||||
/** Bio */
|
/** 个人简介 */
|
||||||
bio?: string;
|
bio?: string;
|
||||||
/** Status */
|
/** 状态 */
|
||||||
status?: string;
|
status?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,33 +7,33 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tenant Create Request
|
* 租户创建请求
|
||||||
*/
|
*/
|
||||||
export interface TenantCreateRequest {
|
export interface TenantCreateRequest {
|
||||||
/** Tenant name */
|
/** 租户名称 */
|
||||||
name: string;
|
name: string;
|
||||||
/** Tenant code / login account */
|
/** 租户编码 / 登录账号 */
|
||||||
code: string;
|
code: string;
|
||||||
/** Contact person */
|
/** 联系人 */
|
||||||
contactName?: string;
|
contactName?: string;
|
||||||
/** Contact phone */
|
/** 联系电话 */
|
||||||
contactPhone?: string;
|
contactPhone?: string;
|
||||||
/** Contact email */
|
/** 联系邮箱 */
|
||||||
contactEmail?: string;
|
contactEmail?: string;
|
||||||
/** Address */
|
/** 地址 */
|
||||||
address?: string;
|
address?: string;
|
||||||
/** Logo URL */
|
/** Logo URL */
|
||||||
logoUrl?: string;
|
logoUrl?: string;
|
||||||
/** Expiration date */
|
/** 过期日期 */
|
||||||
expireAt?: string;
|
expireAt?: string;
|
||||||
/** Max students */
|
/** 最大学生数 */
|
||||||
maxStudents?: number;
|
maxStudents?: number;
|
||||||
/** Max teachers */
|
/** 最大教师数 */
|
||||||
maxTeachers?: number;
|
maxTeachers?: number;
|
||||||
/** Initial password (default: 123456) */
|
/** 初始密码(默认: 123456) */
|
||||||
password?: string;
|
password?: string;
|
||||||
/** Package type (optional) */
|
/** 套餐类型(可选) */
|
||||||
packageType?: string;
|
packageType?: string;
|
||||||
/** Start date (optional) */
|
/** 开始日期(可选) */
|
||||||
startDate?: string;
|
startDate?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,33 +7,33 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tenant Response
|
* 租户响应
|
||||||
*/
|
*/
|
||||||
export interface TenantResponse {
|
export interface TenantResponse {
|
||||||
/** Tenant ID */
|
/** 租户ID */
|
||||||
id?: number;
|
id?: number;
|
||||||
/** Tenant name */
|
/** 租户名称 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** Login account (tenant code) */
|
/** 登录账号(租户编码) */
|
||||||
loginAccount?: string;
|
loginAccount?: string;
|
||||||
/** Contact person */
|
/** 联系人 */
|
||||||
contactPerson?: string;
|
contactPerson?: string;
|
||||||
/** Contact phone */
|
/** 联系电话 */
|
||||||
contactPhone?: string;
|
contactPhone?: string;
|
||||||
/** Contact email */
|
/** 联系邮箱 */
|
||||||
contactEmail?: string;
|
contactEmail?: string;
|
||||||
/** Address */
|
/** 地址 */
|
||||||
address?: string;
|
address?: string;
|
||||||
/** Logo URL */
|
/** Logo URL */
|
||||||
logoUrl?: string;
|
logoUrl?: string;
|
||||||
/** Status */
|
/** 状态 */
|
||||||
status?: string;
|
status?: string;
|
||||||
/** Expiration date */
|
/** 过期日期 */
|
||||||
expireDate?: string;
|
expireDate?: string;
|
||||||
/** Max students / student quota */
|
/** 最大学生数 / 学生配额 */
|
||||||
studentQuota?: number;
|
studentQuota?: number;
|
||||||
/** Max teachers / teacher quota */
|
/** 最大教师数 / 教师配额 */
|
||||||
teacherQuota?: number;
|
teacherQuota?: number;
|
||||||
/** Created at */
|
/** 创建时间 */
|
||||||
createdAt?: string;
|
createdAt?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,31 +7,31 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tenant Update Request
|
* 租户更新请求
|
||||||
*/
|
*/
|
||||||
export interface TenantUpdateRequest {
|
export interface TenantUpdateRequest {
|
||||||
/** Tenant name */
|
/** 租户名称 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** Contact person */
|
/** 联系人 */
|
||||||
contactName?: string;
|
contactName?: string;
|
||||||
/** Contact phone */
|
/** 联系电话 */
|
||||||
contactPhone?: string;
|
contactPhone?: string;
|
||||||
/** Contact email */
|
/** 联系邮箱 */
|
||||||
contactEmail?: string;
|
contactEmail?: string;
|
||||||
/** Address */
|
/** 地址 */
|
||||||
address?: string;
|
address?: string;
|
||||||
/** Logo URL */
|
/** Logo URL */
|
||||||
logoUrl?: string;
|
logoUrl?: string;
|
||||||
/** Status */
|
/** 状态 */
|
||||||
status?: string;
|
status?: string;
|
||||||
/** Expiration date */
|
/** 过期日期 */
|
||||||
expireAt?: string;
|
expireAt?: string;
|
||||||
/** Max students */
|
/** 最大学生数 */
|
||||||
maxStudents?: number;
|
maxStudents?: number;
|
||||||
/** Max teachers */
|
/** 最大教师数 */
|
||||||
maxTeachers?: number;
|
maxTeachers?: number;
|
||||||
/** Package type (optional) */
|
/** 套餐类型(可选) */
|
||||||
packageType?: string;
|
packageType?: string;
|
||||||
/** Start date (optional) */
|
/** 开始日期(可选) */
|
||||||
startDate?: string;
|
startDate?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,23 +7,23 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User Info Response
|
* 用户信息响应
|
||||||
*/
|
*/
|
||||||
export interface UserInfoResponse {
|
export interface UserInfoResponse {
|
||||||
/** User ID */
|
/** 用户ID */
|
||||||
id?: number;
|
id?: number;
|
||||||
/** Username */
|
/** 用户名 */
|
||||||
username?: string;
|
username?: string;
|
||||||
/** User name */
|
/** 用户姓名 */
|
||||||
name?: string;
|
name?: string;
|
||||||
/** Email */
|
/** 邮箱 */
|
||||||
email?: string;
|
email?: string;
|
||||||
/** Phone */
|
/** 电话 */
|
||||||
phone?: string;
|
phone?: string;
|
||||||
/** Avatar URL */
|
/** 头像URL */
|
||||||
avatarUrl?: string;
|
avatarUrl?: string;
|
||||||
/** User role */
|
/** 用户角色 */
|
||||||
role?: string;
|
role?: string;
|
||||||
/** Tenant ID */
|
/** 租户ID */
|
||||||
tenantId?: number;
|
tenantId?: number;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user