using CodePlay.Core.Common; namespace CodePlay.Core.Models; /// /// 转换请求模型 /// public class ConversionRequest { /// /// 源代码 /// public string SourceCode { get; set; } = string.Empty; /// /// 源语言 /// public LanguageType SourceLanguage { get; set; } /// /// 目标语言 /// public LanguageType TargetLanguage { get; set; } /// /// 项目 ID(可选) /// public string? ProjectId { get; set; } /// /// 验证轮次(1-3) /// public int ValidationRounds { get; set; } = 2; /// /// 转换选项 /// public ConversionOptions? Options { get; set; } } /// /// 转换选项 /// public class ConversionOptions { /// /// 保留注释 /// public bool KeepComments { get; set; } = true; /// /// 保留文档字符串 /// public bool KeepDocStrings { get; set; } = true; /// /// 保留代码格式 /// public bool KeepFormatting { get; set; } = true; /// /// 缩进大小 /// public int IndentSize { get; set; } = 4; /// /// 使用制表符缩进 /// public bool UseTabs { get; set; } = false; /// /// 自动修复启用 /// public bool EnableAutoFix { get; set; } = true; } /// /// 转换结果模型 /// public class ConversionResult { /// /// 是否成功 /// public bool Success { get; set; } /// /// 转换后的代码 /// public string TransformedCode { get; set; } = string.Empty; /// /// 转换报告 /// public ConversionReport? Report { get; set; } /// /// 警告列表 /// public List Warnings { get; set; } = new(); /// /// 验证摘要 /// public ValidationSummary? ValidationSummary { get; set; } /// /// 错误信息 /// public string? ErrorMessage { get; set; } } /// /// 转换报告 /// public class ConversionReport { /// /// 报告 ID /// public string Id { get; set; } = Guid.NewGuid().ToString("N")[..20]; /// /// 项目 ID /// public string ProjectId { get; set; } = string.Empty; /// /// 源语言 /// public LanguageType SourceLanguage { get; set; } /// /// 目标语言 /// public LanguageType TargetLanguage { get; set; } /// /// 转换的行数 /// public int LinesConverted { get; set; } /// /// 转换的类数量 /// public int ClassesConverted { get; set; } /// /// 转换的方法数量 /// public int MethodsConverted { get; set; } /// /// 转换耗时 /// public TimeSpan Duration { get; set; } /// /// 问题数量 /// public int IssueCount { get; set; } /// /// TODO 数量 /// public int TodoCount { get; set; } /// /// 问题列表 /// public List Issues { get; set; } = new(); /// /// 转换日志 /// public List TransformationLog { get; set; } = new(); /// /// TODO 列表 /// public List TodoItems { get; set; } = new(); /// /// 验证状态 /// public string ValidationStatus { get; set; } = "NotValidated"; /// /// 最后验证时间 /// public DateTime? LastValidatedAt { get; set; } /// /// 创建时间 /// public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } /// /// 转换警告 /// public class ConversionWarning { /// /// 警告代码 /// public string Code { get; set; } = string.Empty; /// /// 警告消息 /// public string Message { get; set; } = string.Empty; /// /// 行号 /// public int LineNumber { get; set; } /// /// 列号 /// public int ColumnNumber { get; set; } /// /// 建议 /// public string? Suggestion { get; set; } } /// /// 验证摘要 /// public class ValidationSummary { /// /// 是否通过验证 /// public bool Passed { get; set; } /// /// 验证轮次 /// public int RoundsExecuted { get; set; } /// /// 是否需要人工审查 /// public bool NeedsManualReview { get; set; } /// /// 编译错误列表 /// public List CompilationErrors { get; set; } = new(); /// /// 验证日志 /// public List ValidationLog { get; set; } = new(); } /// /// 转换问题 /// public class ConversionIssue { /// /// 问题类型 /// public IssueType Type { get; set; } /// /// 问题严重程度 /// public IssueSeverity Severity { get; set; } /// /// 问题描述 /// public string Description { get; set; } = string.Empty; /// /// 位置(行号) /// public int LineNumber { get; set; } /// /// 原始代码片段 /// public string? OriginalCode { get; set; } /// /// 建议操作 /// public string? Suggestion { get; set; } /// /// 源语言 /// public LanguageType Language { get; set; } } /// /// 问题严重程度 /// public enum IssueSeverity { /// /// 低优先级 /// Low = 0, /// /// 中优先级 /// Medium = 1, /// /// 高优先级 /// High = 2 } /// /// 问题类型 /// public enum IssueType { /// /// 不可转换语法 /// UnconvertibleSyntax = 0, /// /// 类型映射警告 /// TypeMappingWarning = 1, /// /// API 差异 /// ApiDifference = 2, /// /// 语义差异 /// SemanticDifference = 3, /// /// 性能考虑 /// PerformanceConsideration = 4 } /// /// 转换日志 /// public class TransformationLog { /// /// 时间戳 /// public DateTime Timestamp { get; set; } /// /// 操作类型 /// public string Operation { get; set; } = string.Empty; /// /// 详情 /// public string Details { get; set; } = string.Empty; /// /// 日志级别 /// public LogLevel Level { get; set; } } /// /// 日志级别 /// public enum LogLevel { /// /// 信息 /// Info = 0, /// /// 警告 /// Warning = 1, /// /// 错误 /// Error = 2, /// /// 调试 /// Debug = 3 } /// /// TODO 项 /// public class TodoItem { /// /// TODO 描述 /// public string Description { get; set; } = string.Empty; /// /// 位置(行号) /// public int LineNumber { get; set; } /// /// 原始语法说明 /// public string OriginalSyntax { get; set; } = string.Empty; /// /// 为什么无法直接转换 /// public string WhyNotDirect { get; set; } = string.Empty; /// /// 推荐的替代方案 /// public string RecommendedAlternative { get; set; } = string.Empty; /// /// 参考代码位置 /// public string? ReferenceLocation { get; set; } } /// /// 编译错误 /// public class CompilationError { /// /// 错误 ID /// public string ErrorId { get; set; } = string.Empty; /// /// 错误消息 /// public string Message { get; set; } = string.Empty; /// /// 行号 /// public int LineNumber { get; set; } /// /// 列号 /// public int ColumnNumber { get; set; } /// /// 错误级别(错误或警告) /// public bool IsError { get; set; } = true; }