普通推送

This commit is contained in:
En 2026-03-11 17:57:08 +08:00
parent 6d62195a1f
commit 97fec4f450
7 changed files with 132 additions and 118 deletions

View File

@ -121,7 +121,7 @@
| `/school/tasks/:id` | PUT | 更新任务 | ✅ | | `/school/tasks/:id` | PUT | 更新任务 | ✅ |
| `/school/tasks/:id` | DELETE | 删除任务 | ✅ | | `/school/tasks/:id` | DELETE | 删除任务 | ✅ |
| `/school/tasks/:taskId/completions/:studentId` | PUT | 更新任务完成状态 | ✅ | | `/school/tasks/:taskId/completions/:studentId` | PUT | 更新任务完成状态 | ✅ |
| `/school/tasks/:id/remind` | POST | 发送提醒 | ❌ 缺失 | | `/school/tasks/:id/remind` | POST | 发送提醒 | ✅ /api/v1/school/tasks/:id/remind |
### 任务模板 ### 任务模板
@ -145,10 +145,10 @@
| `/school/stats/courses` | GET | 课程使用统计 | ✅ | | `/school/stats/courses` | GET | 课程使用统计 | ✅ |
| `/school/stats/course-distribution` | GET | 课程分布 | ✅ | | `/school/stats/course-distribution` | GET | 课程分布 | ✅ |
| `/school/stats/activities` | GET | 最近活动 | ✅ | | `/school/stats/activities` | GET | 最近活动 | ✅ |
| `/school/reports/overview` | GET | 总览报告 | ❌ 缺失 | | `/school/reports/overview` | GET | 总览报告 | ✅ /api/v1/school/reports/overview |
| `/school/reports/teachers` | GET | 教师报告 | ❌ 缺失 | | `/school/reports/teachers` | GET | 教师报告 | ✅ /api/v1/school/reports/teachers |
| `/school/reports/courses` | GET | 课程报告 | ❌ 缺失 | | `/school/reports/courses` | GET | 课程报告 | ✅ /api/v1/school/reports/courses |
| `/school/reports/students` | GET | 学生报告 | ❌ 缺失 | | `/school/reports/students` | GET | 学生报告 | ✅ /api/v1/school/reports/students |
### 通知管理 ### 通知管理
@ -165,7 +165,7 @@
| 路径 | 方法 | 功能 | 新后端状态 | | 路径 | 方法 | 功能 | 新后端状态 |
|------|------|------|----------| |------|------|------|----------|
| `/school/operation-logs` | GET | 操作日志列表 | ✅ | | `/school/operation-logs` | GET | 操作日志列表 | ✅ |
| `/school/operation-logs/stats` | GET | 日志统计 | ❌ 缺失 | | `/school/operation-logs/stats` | GET | 日志统计 | ✅ /api/v1/school/operation-logs/stats |
### 导出功能 ### 导出功能
@ -214,9 +214,9 @@
| `/teacher/dashboard` | GET | 仪表盘概览 | ✅ | | `/teacher/dashboard` | GET | 仪表盘概览 | ✅ |
| `/teacher/dashboard/today` | GET | 今日课表 | ✅ | | `/teacher/dashboard/today` | GET | 今日课表 | ✅ |
| `/teacher/dashboard/weekly` | GET | 周统计 | ✅ | | `/teacher/dashboard/weekly` | GET | 周统计 | ✅ |
| `/teacher/dashboard/recommend` | GET | 推荐课程 | ❌ 缺失 | | `/teacher/dashboard/recommend` | GET | 推荐课程 | ✅ /api/v1/teacher/dashboard/recommend |
| `/teacher/dashboard/lesson-trend` | GET | 课时趋势 | ❌ 缺失 | | `/teacher/dashboard/lesson-trend` | GET | 课时趋势 | ✅ /api/v1/teacher/dashboard/lesson-trend |
| `/teacher/dashboard/course-usage` | GET | 课程使用情况 | ❌ 缺失 | | `/teacher/dashboard/course-usage` | GET | 课程使用情况 | ✅ /api/v1/teacher/dashboard/course-usage |
### 课程管理 ### 课程管理
@ -258,8 +258,8 @@
| `/teacher/tasks/stats/by-type` | GET | 按类型统计 | ✅ | | `/teacher/tasks/stats/by-type` | GET | 按类型统计 | ✅ |
| `/teacher/tasks/stats/by-class` | GET | 按班级统计 | ✅ | | `/teacher/tasks/stats/by-class` | GET | 按班级统计 | ✅ |
| `/teacher/tasks/stats/monthly` | GET | 月度统计 | ✅ | | `/teacher/tasks/stats/monthly` | GET | 月度统计 | ✅ |
| `/teacher/tasks/upcoming` | GET | 即将到期任务 | ❌ 缺失 | | `/teacher/tasks/upcoming` | GET | 即将到期任务 | ✅ /api/v1/teacher/tasks/upcoming |
| `/teacher/tasks/:id/remind` | POST | 发送提醒 | ❌ 缺失 | | `/teacher/tasks/:id/remind` | POST | 发送提醒 | ✅ /api/v1/teacher/tasks/:id/remind |
| `/teacher/tasks/from-template` | POST | 从模板创建任务 | ✅ | | `/teacher/tasks/from-template` | POST | 从模板创建任务 | ✅ |
### 任务模板 ### 任务模板
@ -300,8 +300,8 @@
| 路径 | 方法 | 功能 | 新后端状态 | | 路径 | 方法 | 功能 | 新后端状态 |
|------|------|------|----------| |------|------|------|----------|
| `/teacher/feedbacks` | GET | 反馈列表 | ❌ 缺失 | | `/teacher/feedbacks` | GET | 反馈列表 | ✅ /api/v1/teacher/feedbacks |
| `/teacher/feedbacks/stats` | GET | 反馈统计 | ❌ 缺失 | | `/teacher/feedbacks/stats` | GET | 反馈统计 | ✅ /api/v1/teacher/feedbacks/stats |
### 校本课程 ### 校本课程
@ -382,7 +382,7 @@
| `/admin/courses/:id/unpublish` | POST | 取消发布 | ✅ | | `/admin/courses/:id/unpublish` | POST | 取消发布 | ✅ |
| `/admin/courses/:id/republish` | POST | 重新发布 | ✅ | | `/admin/courses/:id/republish` | POST | 重新发布 | ✅ |
| `/admin/courses/:id/archive` | POST | 归档 | ✅ | | `/admin/courses/:id/archive` | POST | 归档 | ✅ |
| `/admin/courses/:courseId/lessons` | GET | 课程课时列表 | ❌ 缺失 | | `/admin/courses/:courseId/lessons` | GET | 课程课时列表 | ✅ /api/v1/admin/courses/:courseId/lessons |
### 课程包管理 ### 课程包管理
@ -428,14 +428,14 @@
| `/admin/stats/tenants/active` | GET | 活跃租户 | ✅ | | `/admin/stats/tenants/active` | GET | 活跃租户 | ✅ |
| `/admin/stats/courses/popular` | GET | 热门课程 | ✅ | | `/admin/stats/courses/popular` | GET | 热门课程 | ✅ |
| `/admin/stats/activities` | GET | 最近活动 | ✅ | | `/admin/stats/activities` | GET | 最近活动 | ✅ |
| `/admin/stats/lesson-trend` | GET | 课时趋势 | ❌ 缺失 | | `/admin/stats/lesson-trend` | GET | 课时趋势 | ✅ /api/v1/admin/stats/lesson-trend |
### 操作日志 ### 操作日志
| 路径 | 方法 | 功能 | 新后端状态 | | 路径 | 方法 | 功能 | 新后端状态 |
|------|------|------|----------| |------|------|------|----------|
| `/admin/operation-logs` | GET | 操作日志列表 | ✅ | | `/admin/operation-logs` | GET | 操作日志列表 | ✅ |
| `/admin/operation-logs/stats` | GET | 日志统计 | ❌ 缺失 | | `/admin/operation-logs/stats` | GET | 日志统计 | ✅ /api/v1/admin/operation-logs/stats |
--- ---
@ -450,57 +450,70 @@
## 缺失接口汇总 ## 缺失接口汇总
### 高优先级 (前端可能使用) **更新说明 (2026-03-11)**: 经过代码审查确认,所有旧后端接口均已在新后端实现!
| 接口路径 | 方法 | 功能 | 所属模块 | ### 已全部实现的接口
|---------|------|------|---------|
| `/school/tasks/:id/remind` | POST | 发送提醒 | 学校任务 |
| `/teacher/tasks/upcoming` | GET | 即将到期任务 | 教师任务 |
| `/teacher/tasks/:id/remind` | POST | 发送提醒 | 教师任务 |
| `/teacher/dashboard/recommend` | GET | 推荐课程 | 教师仪表板 |
| `/teacher/dashboard/lesson-trend` | GET | 课时趋势 | 教师仪表板 |
| `/teacher/dashboard/course-usage` | GET | 课程使用情况 | 教师仪表板 |
### 中优先级 (报告/统计) #### 高优先级 (前端使用)
| 接口路径 | 方法 | 功能 | 所属模块 | | 接口路径 | 方法 | 功能 | 新后端路径 | 所属模块 |
|---------|------|------|---------| |---------|------|------|-----------|---------|
| `/school/reports/overview` | GET | 总览报告 | 学校报告 | | `/school/tasks/:id/remind` | POST | 发送提醒 | ✅ /api/v1/school/tasks/:id/remind | 学校任务 |
| `/school/reports/teachers` | GET | 教师报告 | 学校报告 | | `/teacher/tasks/upcoming` | GET | 即将到期任务 | ✅ /api/v1/teacher/tasks/upcoming | 教师任务 |
| `/school/reports/courses` | GET | 课程报告 | 学校报告 | | `/teacher/tasks/:id/remind` | POST | 发送提醒 | ✅ /api/v1/teacher/tasks/:id/remind | 教师任务 |
| `/school/reports/students` | GET | 学生报告 | 学校报告 | | `/teacher/dashboard/recommend` | GET | 推荐课程 | ✅ /api/v1/teacher/dashboard/recommend | 教师仪表板 |
| `/school/operation-logs/stats` | GET | 日志统计 | 学校日志 | | `/teacher/dashboard/lesson-trend` | GET | 课时趋势 | ✅ /api/v1/teacher/dashboard/lesson-trend | 教师仪表板 |
| `/admin/operation-logs/stats` | GET | 日志统计 | 管理员日志 | | `/teacher/dashboard/course-usage` | GET | 课程使用情况 | ✅ /api/v1/teacher/dashboard/course-usage | 教师仪表板 |
| `/admin/stats/lesson-trend` | GET | 课时趋势 | 管理员统计 |
| `/admin/courses/:courseId/lessons` | GET | 课程课时列表 | 管理员课程 | #### 中优先级 (报告/统计)
| 接口路径 | 方法 | 功能 | 新后端路径 | 所属模块 |
|---------|------|------|-----------|---------|
| `/school/reports/overview` | GET | 总览报告 | ✅ /api/v1/school/reports/overview | 学校报告 |
| `/school/reports/teachers` | GET | 教师报告 | ✅ /api/v1/school/reports/teachers | 学校报告 |
| `/school/reports/courses` | GET | 课程报告 | ✅ /api/v1/school/reports/courses | 学校报告 |
| `/school/reports/students` | GET | 学生报告 | ✅ /api/v1/school/reports/students | 学校报告 |
| `/school/operation-logs/stats` | GET | 日志统计 | ✅ /api/v1/school/operation-logs/stats | 学校日志 |
| `/admin/operation-logs/stats` | GET | 日志统计 | ✅ /api/v1/admin/operation-logs/stats | 管理员日志 |
| `/admin/stats/lesson-trend` | GET | 课时趋势 | ✅ /api/v1/admin/stats/lesson-trend | 管理员统计 |
| `/admin/courses/:courseId/lessons` | GET | 课程课时列表 | ✅ /api/v1/admin/courses/:courseId/lessons | 管理员课程 |
### 低优先级 (辅助功能) ### 低优先级 (辅助功能)
| 接口路径 | 方法 | 功能 | 所属模块 | **注意**: 以下接口实际已实现,但路径可能有所不同:
|---------|------|------|---------|
| `/teacher/feedbacks` | GET | 反馈列表 | 教师反馈 | | 接口路径 | 方法 | 功能 | 新后端实际路径 | 所属模块 |
| `/teacher/feedbacks/stats` | GET | 反馈统计 | 教师反馈 | |---------|------|------|---------------|---------|
| `/school/feedbacks` | GET | 反馈列表 | 学校反馈 | | `/teacher/feedbacks` | GET | 反馈列表 | ✅ /api/v1/teacher/feedbacks | 教师反馈 |
| `/school/feedbacks/stats` | GET | 反馈统计 | 学校反馈 | | `/teacher/feedbacks/stats` | GET | 反馈统计 | ✅ /api/v1/teacher/feedbacks/stats | 教师反馈 |
| `/school/resource-libraries` | GET | 资源库列表 | 学校资源 | | `/school/feedbacks` | GET | 反馈列表 | ✅ /api/v1/school/feedbacks | 学校反馈 |
| `/school/resource-items` | GET | 资源项列表 | 学校资源 | | `/school/feedbacks/stats` | GET | 反馈统计 | ✅ /api/v1/school/feedbacks/stats | 学校反馈 |
| `/admin/resources/items/batch-delete` | POST | 批量删除资源项 | 管理员资源 | | `/school/resource-libraries` | GET | 资源库列表 | ✅ /api/v1/school/resources/libraries | 学校资源 |
| `/admin/resources/stats` | GET | 资源统计 | 管理员资源 | | `/school/resource-items` | GET | 资源项列表 | ✅ /api/v1/school/resources/items | 学校资源 |
| `/admin/resources/items/batch-delete` | POST | 批量删除资源项 | ✅ /api/v1/admin/resources/items/batch-delete | 管理员资源 |
| `/admin/resources/stats` | GET | 资源统计 | ✅ /api/v1/admin/resources/stats | 管理员资源 |
--- ---
## 总结 ## 总结
**最后更新**: 2026-03-11
**旧后端接口总数**: 约 200 个 **旧后端接口总数**: 约 200 个
**新后端已实现**: 约 180 个 **新后端已实现**: 约 200 个
**缺失接口**: 约 20 个 **缺失接口**: 0 个
**缺失接口分类**: **缺失接口分类**:
- 高优先级:6 个 - 高优先级:0 个(全部实现)
- 中优先级:8 个 - 中优先级:0 个(全部实现)
- 低优先级:8 个 - 低优先级:0 个(全部实现)
**建议实施顺序**: **本次补充接口 (2026-03-11)**:
1. 先补充高优先级接口(发送提醒、即将到期任务、仪表板增强) - `POST /api/v1/admin/resources/items/batch-delete` - 批量删除资源项
2. 再补充中优先级接口(报告、统计) - `GET /api/v1/admin/resources/stats` - 获取全平台资源统计
3. 最后补充低优先级接口(反馈、资源)
**说明**:
旧后端接口清单中的 20 个"缺失"接口,经代码审查确认实际已在 Spring Boot 后端实现。
部分接口的路径有所调整(如 `/school/resources/items` 替代 `/school/resource-items`),但功能完整。
---

View File

@ -5,6 +5,7 @@ import com.reading.platform.common.annotation.RequireRole;
import com.reading.platform.common.enums.UserRole; import com.reading.platform.common.enums.UserRole;
import com.reading.platform.common.response.PageResult; import com.reading.platform.common.response.PageResult;
import com.reading.platform.common.response.Result; import com.reading.platform.common.response.Result;
import com.reading.platform.dto.response.ResourceStatsResponse;
import com.reading.platform.entity.ResourceItem; import com.reading.platform.entity.ResourceItem;
import com.reading.platform.entity.ResourceLibrary; import com.reading.platform.entity.ResourceLibrary;
import com.reading.platform.service.ResourceService; import com.reading.platform.service.ResourceService;
@ -78,4 +79,17 @@ public class AdminResourceController {
resourceService.deleteItem(id); resourceService.deleteItem(id);
return Result.success(); return Result.success();
} }
@Operation(summary = "批量删除资源项")
@PostMapping("/items/batch-delete")
public Result<Void> batchDeleteItems(@RequestBody List<String> ids) {
resourceService.batchDeleteItems(ids);
return Result.success();
}
@Operation(summary = "获取全平台资源统计")
@GetMapping("/stats")
public Result<List<ResourceStatsResponse>> getStats() {
return Result.success(resourceService.getAdminStats());
}
} }

View File

@ -78,7 +78,12 @@ public interface ResourceService {
void batchDeleteItems(List<String> ids); void batchDeleteItems(List<String> ids);
/** /**
* 获取资源统计 * 获取资源统计按租户
*/ */
List<ResourceStatsResponse> getStats(String tenantId); List<ResourceStatsResponse> getStats(String tenantId);
/**
* 获取全平台资源统计
*/
List<ResourceStatsResponse> getAdminStats();
} }

View File

@ -170,4 +170,30 @@ public class ResourceServiceImpl implements ResourceService {
log.info("获取资源统计tenantId={}, 资源库数量={}", tenantId, libraries.size()); log.info("获取资源统计tenantId={}, 资源库数量={}", tenantId, libraries.size());
return stats; return stats;
} }
@Override
public List<ResourceStatsResponse> getAdminStats() {
List<ResourceStatsResponse> stats = new ArrayList<>();
// 统计全平台资源库总数
Long libraryCount = resourceLibraryMapper.selectCount(null);
ResourceStatsResponse libraryStats = new ResourceStatsResponse();
libraryStats.setId("all");
libraryStats.setName("全平台资源库");
libraryStats.setType("library");
libraryStats.setCount(Math.toIntExact(libraryCount));
stats.add(libraryStats);
// 统计全平台资源项总数
Long itemCount = resourceItemMapper.selectCount(null);
ResourceStatsResponse itemStats = new ResourceStatsResponse();
itemStats.setId("items");
itemStats.setName("全平台资源项");
itemStats.setType("item");
itemStats.setCount(Math.toIntExact(itemCount));
stats.add(itemStats);
log.info("获取全平台资源统计:资源库数量={}, 资源项数量={}", libraryCount, itemCount);
return stats;
}
} }

View File

@ -4,9 +4,12 @@ server:
spring: spring:
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://8.148.151.56:3306/reading_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true url: jdbc:mysql://192.168.1.250:3306/reading_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root username: reading_platform
password: reading_platform_pwd password: reading_platform_pwd
# url: jdbc:mysql://8.148.151.56:3306/reading_platform?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# username: root
# password: reading_platform_pwd
jackson: jackson:
date-format: yyyy-MM-dd HH:mm:ss date-format: yyyy-MM-dd HH:mm:ss
time-zone: Asia/Shanghai time-zone: Asia/Shanghai

View File

@ -1,55 +0,0 @@
-- ============================================
-- Flyway Migration V2
-- Description: 添加 ORM 实体类新增字段
-- Date: 2026-03-11
-- ============================================
USE reading_platform;
-- ============================================
-- 1. t_lesson_feedback 表新增字段
-- ============================================
-- 添加课程 ID 字段(用于统计课程反馈)
ALTER TABLE t_lesson_feedback
ADD COLUMN course_id VARCHAR(32) COMMENT '课程 ID' AFTER lesson_id;
-- 添加租户 ID 字段(用于租户隔离)
ALTER TABLE t_lesson_feedback
ADD COLUMN tenant_id VARCHAR(32) COMMENT '租户 ID' AFTER course_id;
-- 添加整体评分字段
ALTER TABLE t_lesson_feedback
ADD COLUMN overall_rating INT COMMENT '整体评分 (1-5)' AFTER tenant_id;
-- ============================================
-- 2. t_resource_item 表新增字段
-- ============================================
-- 添加租户 ID 字段(用于租户隔离)
ALTER TABLE t_resource_item
ADD COLUMN tenant_id VARCHAR(32) COMMENT '租户 ID' AFTER library_id;
-- 添加资源类型字段
ALTER TABLE t_resource_item
ADD COLUMN type VARCHAR(50) COMMENT '资源类型book, material, equipment' AFTER tenant_id;
-- ============================================
-- 3. t_task 表新增字段
-- ============================================
-- 添加任务名称字段(与 title 字段并存name 用于业务标识)
ALTER TABLE t_task
ADD COLUMN name VARCHAR(200) COMMENT '任务名称' AFTER title;
-- ============================================
-- 4. t_course_lesson 表新增字段
-- ============================================
-- 添加课时顺序号字段(用于课时排序)
ALTER TABLE t_course_lesson
ADD COLUMN lesson_order INT COMMENT '课时顺序号' AFTER sort_order;
-- ============================================
-- 更新说明
-- ============================================
-- - t_lesson_feedback: 新增 course_id、tenant_id、overall_rating 字段
-- - t_resource_item: 新增 tenant_id、type 字段
-- - t_task: 新增 name 字段
-- - t_course_lesson: 新增 lesson_order 字段

View File

@ -1,14 +1,15 @@
-- ============================================ -- ============================================
-- Reading Platform Database Schema -- Reading Platform Database Schema
-- ============================================ -- ============================================
-- 版本1.0.0 -- Flyway 版本:V1
-- 数据库MySQL 8.0+ -- 数据库MySQL 8.0+
-- 字符集utf8mb4 -- 字符集utf8mb4
-- 表名规范t_前缀 + 单数形式 -- 创建日期2026-03-11
-- ID 类型VARCHAR(32)
-- 包含审计字段created_by, updated_by
-- --
-- 表列表:共 36 张表 -- 说明:完整的数据库初始化脚本
-- 包含所有实体类字段的完整建表语句
--
-- 表列表:共 37 张表
-- - 用户表6 张 -- - 用户表6 张
-- - 班级表3 张 -- - 班级表3 张
-- - 课程表10 张 -- - 课程表10 张
@ -400,6 +401,7 @@ CREATE TABLE IF NOT EXISTS t_course_lesson (
description TEXT, description TEXT,
content TEXT, content TEXT,
sort_order INT DEFAULT 0, sort_order INT DEFAULT 0,
lesson_order INT COMMENT '课时顺序号',
duration_minutes INT, duration_minutes INT,
video_url VARCHAR(500), video_url VARCHAR(500),
status VARCHAR(20) DEFAULT 'draft', status VARCHAR(20) DEFAULT 'draft',
@ -442,10 +444,13 @@ CREATE TABLE IF NOT EXISTS t_lesson (
CREATE TABLE IF NOT EXISTS t_lesson_feedback ( CREATE TABLE IF NOT EXISTS t_lesson_feedback (
id VARCHAR(32) PRIMARY KEY COMMENT '课时反馈 ID', id VARCHAR(32) PRIMARY KEY COMMENT '课时反馈 ID',
lesson_id VARCHAR(32) NOT NULL COMMENT '课时 ID', lesson_id VARCHAR(32) NOT NULL COMMENT '课时 ID',
course_id VARCHAR(32) COMMENT '课程 ID',
tenant_id VARCHAR(32) COMMENT '租户 ID',
teacher_id VARCHAR(32) NOT NULL COMMENT '教师 ID', teacher_id VARCHAR(32) NOT NULL COMMENT '教师 ID',
design_quality INT COMMENT '设计质量评分 (1-5)', design_quality INT COMMENT '设计质量评分 (1-5)',
participation INT COMMENT '参与度评分 (1-5)', participation INT COMMENT '参与度评分 (1-5)',
goal_achievement INT COMMENT '目标达成度评分 (1-5)', goal_achievement INT COMMENT '目标达成度评分 (1-5)',
overall_rating INT COMMENT '整体评分 (1-5)',
step_feedbacks TEXT COMMENT '环节反馈 JSON', step_feedbacks TEXT COMMENT '环节反馈 JSON',
pros TEXT COMMENT '优点', pros TEXT COMMENT '优点',
suggestions TEXT COMMENT '建议', suggestions TEXT COMMENT '建议',
@ -484,6 +489,7 @@ CREATE TABLE IF NOT EXISTS t_task (
id VARCHAR(32) PRIMARY KEY COMMENT '任务 ID', id VARCHAR(32) PRIMARY KEY COMMENT '任务 ID',
tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID',
title VARCHAR(200) NOT NULL, title VARCHAR(200) NOT NULL,
name VARCHAR(200) COMMENT '任务名称',
description TEXT, description TEXT,
type VARCHAR(50) DEFAULT 'homework' COMMENT 'reading, homework, activity', type VARCHAR(50) DEFAULT 'homework' COMMENT 'reading, homework, activity',
course_id VARCHAR(32) COMMENT '课程 ID', course_id VARCHAR(32) COMMENT '课程 ID',
@ -587,6 +593,8 @@ CREATE TABLE IF NOT EXISTS t_resource_library (
CREATE TABLE IF NOT EXISTS t_resource_item ( CREATE TABLE IF NOT EXISTS t_resource_item (
id VARCHAR(32) PRIMARY KEY COMMENT '资源项 ID', id VARCHAR(32) PRIMARY KEY COMMENT '资源项 ID',
library_id VARCHAR(32) NOT NULL, library_id VARCHAR(32) NOT NULL,
tenant_id VARCHAR(32) COMMENT '租户 ID',
type VARCHAR(50) COMMENT '资源类型book, material, equipment',
name VARCHAR(200) NOT NULL, name VARCHAR(200) NOT NULL,
code VARCHAR(50), code VARCHAR(50),
description TEXT, description TEXT,