namespace Gpulse.WCT.DataAnalyzer.Core.Application.Parsing; /// /// 通用解析器接口 /// public interface IParser { /// /// 判断是否可以解析该行 /// bool CanParse(string line); /// /// 解析日志行(单行模式) /// /// 日志行内容 /// 关联的测试场景ID ParseResult Parse(string line, Guid scenarioId); /// /// 判断是否为多行记录的起始行 /// bool IsMultiLineStart(string line) => false; /// /// 解析多行记录(子类可重写) /// ParseResult? ParseMultiLine(string[] lines, Guid scenarioId) => null; } /// /// 解析结果 /// public record ParseResult { public bool IsSuccess { get; init; } public TRecord? Record { get; init; } public string? ErrorType { get; init; } public string? ErrorMessage { get; init; } public static ParseResult Success(TRecord record) => new() { IsSuccess = true, Record = record }; public static ParseResult Failure(string errorType, string errorMessage) => new() { IsSuccess = false, ErrorType = errorType, ErrorMessage = errorMessage }; }