You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wx.sstbc.com/link_courses_to_calendar_re...

144 lines
4.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 课程关联日历命令使用说明
## 功能描述
这个Laravel命令 `LinkCoursesToCalendar` 用于将指定的课程列表自动关联到`calendars`日历表中。
## 主要功能
1. **批量课程关联**: 一次性处理69个指定的课程
2. **智能匹配**: 支持精确匹配、模糊匹配和相似度匹配三种策略
3. **重复检查**: 自动检查并跳过已存在日历记录的课程
4. **事务保护**: 使用数据库事务确保数据一致性
5. **详细统计**: 提供完整的处理结果统计
## 命令使用方法
### 基本用法
```bash
php artisan link:courses-to-calendar
```
## 课程列表
命令会处理以下69个课程
### 高研班系列
- 高研班|第四期高级科创人才研修班-第七模块
- 高研班|第五期高级科创人才研修班-第五模块
- 高研班|第六期高级科创人才研修班-第三模块
- 高研班|第五期高级科创人才研修班-毕业模块
- 高研班|第四期高级科创人才研修班-第八模块
- ... (共29个高研班课程)
### 第二课堂系列
- 第二课堂|走进珂玛科技
- 第二课堂|走进世华科技
- 第二课堂|走进姑苏区
- 第二课堂|走进科沃斯
- ... (共17个第二课堂课程)
### 其他培训类
- 人才培训、初创班、攀峰班、产业加速营、专题培训等 (共23个课程)
## 匹配策略
### 1. 精确匹配
直接匹配courses表中的name字段
### 2. 模糊匹配
使用LIKE查询进行部分匹配
### 3. 相似度匹配
- 使用Levenshtein算法计算字符串相似度
- 最低相似度阈值30%
- 自动选择相似度最高的课程
## 日历记录创建
为每个匹配的课程创建以下日历记录:
```php
[
'type' => 1, // 类型1为课程
'course_id' => $course->id, // 关联的课程ID
'date' => $course->start_date, // 课程开始日期
'title' => $course->name, // 课程标题
'content' => $course->content, // 课程内容
'start_time' => '09:00:00', // 默认开始时间
'end_time' => '17:00:00', // 默认结束时间
'url' => $course->url, // 课程链接
]
```
## 输出示例
```
开始将课程关联到calendars日历表...
总共需要处理 69 个课程
正在处理课程: 第三期:张平院士— 6G通信与AI融合
✓ 找到匹配课程: 第三期:张平院士— 6G通信与AI融合 (ID: 123)
✓ 成功创建日历记录 (ID: 456) 关联课程: 第三期:张平院士— 6G通信与AI融合
正在处理课程: 高研班|第四期高级科创人才研修班-第七模块
通过模糊匹配找到课程: '第四期高级科创人才研修班-第七模块'
✓ 成功创建日历记录 (ID: 457) 关联课程: 第四期高级科创人才研修班-第七模块
============================================================
处理完成!
成功关联课程数量: 65
已存在日历记录: 2
未找到匹配课程: 2
未找到匹配的课程列表:
- 某个未找到的课程1
- 某个未找到的课程2
已存在日历记录的课程列表:
- 某个已存在的课程1
- 某个已存在的课程2
```
## 安全特性
1. **数据库事务**: 所有操作在事务中执行,出错时自动回滚
2. **重复检查**: 防止创建重复的日历记录
3. **软删除过滤**: 只处理未被软删除的课程
4. **错误处理**: 完善的异常处理机制
## 注意事项
1. **备份数据**: 建议执行前备份`calendars`表数据
2. **权限检查**: 确保数据库连接正常,有足够的读写权限
3. **课程匹配**: 相似度匹配可能不是100%准确,建议执行后检查结果
4. **重复执行**: 命令可以安全地重复执行,已存在的记录会被跳过
## 错误处理
命令包含完善的错误处理机制:
- 数据库连接错误处理
- 事务回滚保护
- 详细的错误日志输出
- 匹配失败统计
## 数据库表要求
### courses表
- `id`: 主键
- `name`: 课程名称
- `start_date`: 开始日期
- `end_date`: 结束日期
- `content`: 课程内容
- `url`: 课程链接
- `deleted_at`: 软删除时间戳
### calendars表
- `type`: 类型1=课程2=课堂3=事件)
- `course_id`: 关联的课程ID
- `date`: 日期
- `title`: 标题
- `content`: 内容
- `start_time`: 开始时间
- `end_time`: 结束时间
- `url`: 链接