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; }