解决抖音图片审核"无效图片URL"问题,并设计统一异步架构方案: ## 核心修复 - 增强 validateImageUrl 方法,支持文件扩展名 + Content-Type 双重验证 - 修复抖音审核失败问题:binary/octet-stream 响应头导致的验证失败 ## 架构设计 - 设计统一异步内容审核架构,抹平平台差异(同步/异步) - 创建 EnhancedBaseContentAdapter 统一接口 - 实现平台适配器模式,WeChat同步转异步,Douyin原生异步 - 添加回调驱动的模板执行流程 ## 数据库增强 - 新增 taskId 字段关联审核任务和模板执行 - 添加 PENDING_AUDIT 状态支持异步审核流程 - 创建 MySQL 优化的数据库迁移脚本 ## 文档完善 - 更新内容审核设计文档,包含详细序列图 - 创建 5 阶段升级文档,含 MySQL 专项优化 - 提供完整的向后兼容迁移方案 ## 测试改进 - 更新单元测试,修复 validateStatus 参数 - 增强错误处理和边界情况测试覆盖
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||
|
||
/**
|
||
* 为模板执行表添加 taskId 字段
|
||
* 用于存储外部系统返回的任务标识符,便于回调时匹配更新任务状态
|
||
*/
|
||
export class AddTaskIdToTemplateExecution1756986632000
|
||
implements MigrationInterface
|
||
{
|
||
name = 'AddTaskIdToTemplateExecution1756986632000';
|
||
|
||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||
// 为 template_executions 表添加 task_id 字段
|
||
await queryRunner.query(`
|
||
ALTER TABLE \`template_executions\`
|
||
ADD COLUMN \`task_id\` VARCHAR(200) NULL
|
||
COMMENT '外部系统任务ID,用于回调匹配'
|
||
`);
|
||
|
||
// 为 task_id 字段添加索引,提高查询性能
|
||
await queryRunner.query(`
|
||
CREATE INDEX \`IDX_template_executions_task_id\`
|
||
ON \`template_executions\` (\`task_id\`)
|
||
`);
|
||
}
|
||
|
||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||
// 删除索引
|
||
await queryRunner.query(`
|
||
DROP INDEX \`IDX_template_executions_task_id\`
|
||
ON \`template_executions\`
|
||
`);
|
||
|
||
// 删除字段
|
||
await queryRunner.query(`
|
||
ALTER TABLE \`template_executions\`
|
||
DROP COLUMN \`task_id\`
|
||
`);
|
||
}
|
||
}
|