/** * 旧库表结构(来自 mysqldump 的 CREATE TABLE 顺序)。 * 迁移与体检脚本共用,避免两处各写一份列顺序。 */ export const LEGACY_COLUMNS = { 用户信息: [ 'OpenID', 'YelayMaths_ID', '用户名', '是否登录', '是否管理员', '注册日期', '最后登录日期', '手机号', 'HeadiconID', ], 用户已购课程: ['OpenID', '课程id', '课程', '课程介绍', '购课日期', '最后观看日期', '观看时长'], 课程口令码读取信息: ['课程id', '课程名称', '课程介绍'], 视频课程数据: [ '课程id', '播放id', '章节id', '视频id', '课程名称', '章节名称', '视频名称', '发布日期', '时长', '视频m3u8', '封面图片', ], 免费视频课程数据: [ '排序', '序号', '课程名称', '视频标题', '详细介绍', '发布人', '发布日期', '时长', '视频m3u8', '封面图片', ], 首页课程列表: ['课程名称', '课程介绍', '课程日期', '课程封面图片', '内容'], 首页免费课程列表: ['序号', '课程名称', '课程介绍', '课程日期', '课程封面图片'], 首页横幅图片: ['序号', '图片名'], 网页列表: ['网页id', '网页标题', '发布日期', '发布人', '详细介绍', '网页内容'], 课程页面Tips: ['id', 'content', 'title'], cloudconfig: ['ID', 'value', '注释'], 课程口令码: ['课程id', '课程', '口令码', '口令起始日期', '口令结束日期', '课程介绍', '剩余有效次数'], } as const; export type LegacyTable = keyof typeof LEGACY_COLUMNS; /** 含绝对 URL 的内容字段,域名退役时必须批量改写。 */ export const DOMAIN_BEARING_TABLES: LegacyTable[] = ['首页课程列表', '网页列表']; /** 新库中 entitlements.course_id 的来源课程标识字段。 */ export const COURSE_CODE_RE = /^[0-9a-f]{64}$/;