using BuildFlow.Domain.Interfaces;
namespace BuildFlow.Rag.Tests.Stub;
///
/// Stub IDocumentExtractorFactory + IDocumentExtractor:返回固定提取文本。
/// 绕过真实文档解析(PDF/Word/Html)。
///
public sealed class StubDocumentExtractor : IDocumentExtractor
{
/// 提取返回的固定文本。
public string ExtractedContent { get; init; } = "BuildFlow 使用 PostgreSQL + pgvector 作为向量数据库。.NET 10 模块化单体架构。";
/// 提取返回的标题。
public string ExtractedTitle { get; init; } = "测试文档";
public IReadOnlyCollection SupportedExtensions { get; init; } = ["md", "txt", "pdf", "docx"];
public Task ExtractAsync(string filePath, CancellationToken ct = default)
=> Task.FromResult(new ExtractedDocument
{
Content = ExtractedContent,
Title = ExtractedTitle,
SourcePath = filePath
});
}
///
/// 工厂:统一返回 StubDocumentExtractor。
///
public sealed class StubDocumentExtractorFactory : IDocumentExtractorFactory
{
public StubDocumentExtractor InnerExtractor { get; } = new();
public IDocumentExtractor GetExtractor(string fileNameOrExtension) => InnerExtractor;
}