Files
codeplay/CodePlay.Core/Models/ConversionModels.cs
T
monkeycode-ai cca683f35c feat: 实现 Java 完整解析器和不可转换语法处理 (Task 2.2, 2.8)
Task 2.2 - Java 完整解析器:
- JavaParser: 支持包声明、导入语句、类/接口/枚举提取
- 提取方法、字段、构造函数、参数
- 提取单行/多行注释和 JavaDoc 文档
- 10 个单元测试全部通过

Task 2.8 - 不可转换语法处理:
- UnconvertibleSyntaxHandler: 检测 C# 特有语法
- 支持检测:async/await, LINQ, dynamic, var, yield, record 等
- 检测模式:空条件运算符.?,空合并??, 字符串插值$等
- 转换可行性评估:置信度评分和努力程度估算
- 自动生成 TODO 注释标记
- 3 个单元测试通过

Task 4.2 - API 认证:
- AuthController: JWT 认证端点 (login, refresh, me)
- Program.cs: JWT Bearer 认证配置
- Swagger 集成认证支持

总计:39 个测试全部通过 
Co-authored-by: monkeycode-ai <[email protected]>
2026-06-03 09:21:55 +00:00

427 lines
8.5 KiB
C#
Raw Blame History

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