Files
bw-mini-app-server/src/content-moderation/services/content-adapter.factory.ts
imeepos e36cdfc38d test: 完善单元测试覆盖率并优化统一异步架构
- 添加 AppController 测试用例,测试回调接口的错误处理
- 新增控制器、服务层、平台服务等全面的单元测试
- 优化增强模板控制器的错误处理和审核完成事件处理
- 添加数据库迁移脚本支持统一异步架构升级
- 完善 TypeScript 配置,添加 jest 类型支持
- 修复端到端测试,确保 API 响应格式正确性
- 所有测试通过 (109 个测试用例),覆盖率达到要求
2025-09-05 17:05:08 +08:00

62 lines
1.9 KiB
TypeScript

import { Injectable, BadRequestException } from '@nestjs/common';
import { PlatformType } from '../../entities/platform-user.entity';
import { IContentModerationAdapter } from '../interfaces/content-moderation.interface';
import { DouyinContentAdapter } from '../adapters/douyin-content.adapter';
import { WechatContentAdapter } from '../adapters/wechat-content.adapter';
import { EnhancedWechatContentAdapter } from '../adapters/enhanced-wechat-content.adapter';
@Injectable()
export class ContentAdapterFactory {
private readonly adapters = new Map<
PlatformType,
IContentModerationAdapter
>();
constructor(
private readonly douyinAdapter: DouyinContentAdapter,
private readonly wechatAdapter: WechatContentAdapter,
private readonly enhancedWechatAdapter: EnhancedWechatContentAdapter,
) {
// 注册所有可用的审核适配器
this.adapters.set(PlatformType.BYTEDANCE, this.douyinAdapter);
// 🎯 使用增强版微信适配器实现统一异步模式
this.adapters.set(PlatformType.WECHAT, this.enhancedWechatAdapter);
}
/**
* 根据平台类型获取对应的审核适配器
*/
getAdapter(platform: PlatformType): IContentModerationAdapter {
const adapter = this.adapters.get(platform);
if (!adapter) {
throw new BadRequestException(`不支持的审核平台: ${platform}`);
}
return adapter;
}
/**
* 获取所有支持的平台列表
*/
getSupportedPlatforms(): PlatformType[] {
return Array.from(this.adapters.keys());
}
/**
* 检查平台是否支持审核
*/
isPlatformSupported(platform: PlatformType): boolean {
return this.adapters.has(platform);
}
/**
* 注册新的审核适配器(用于动态扩展)
*/
registerAdapter(
platform: PlatformType,
adapter: IContentModerationAdapter,
): void {
this.adapters.set(platform, adapter);
}
}