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