Files
bw-mini-app-server/src/migrations/1756986632000-AddTaskIdToTemplateExecution.ts
imeepos 4cb6b63948 feat: 修复抖音图片审核失败并设计统一异步架构
解决抖音图片审核"无效图片URL"问题,并设计统一异步架构方案:

## 核心修复
- 增强 validateImageUrl 方法,支持文件扩展名 + Content-Type 双重验证
- 修复抖音审核失败问题:binary/octet-stream 响应头导致的验证失败

## 架构设计
- 设计统一异步内容审核架构,抹平平台差异(同步/异步)
- 创建 EnhancedBaseContentAdapter 统一接口
- 实现平台适配器模式,WeChat同步转异步,Douyin原生异步
- 添加回调驱动的模板执行流程

## 数据库增强
- 新增 taskId 字段关联审核任务和模板执行
- 添加 PENDING_AUDIT 状态支持异步审核流程
- 创建 MySQL 优化的数据库迁移脚本

## 文档完善
- 更新内容审核设计文档,包含详细序列图
- 创建 5 阶段升级文档,含 MySQL 专项优化
- 提供完整的向后兼容迁移方案

## 测试改进
- 更新单元测试,修复 validateStatus 参数
- 增强错误处理和边界情况测试覆盖
2025-09-05 16:08:45 +08:00

41 lines
1.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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\`
`);
}
}