using Dpz.Core.EnumLibrary;

namespace Dpz.Core.Public.ViewModel.Response;

/// <summary>
/// 源码文件系统实体列表响应
/// </summary>
public class CodeFileSystemEntryListResponse
{
    /// <summary>
    /// Gets or sets Id.
    /// </summary>
    public required string Id { get; set; }

    /// <summary>
    /// 完整路径分段
    /// </summary>
    public required List<string> PathSegments { get; set; } = [];

    /// <summary>
    /// 名称
    /// </summary>
    public required string Name { get; set; }

    /// <summary>
    /// 父级路径分段(根目录为空集合)
    /// </summary>
    public List<string> ParentPathSegments { get; set; } = [];

    /// <summary>
    /// 是否为目录
    /// </summary>
    public bool IsDirectory { get; set; }

    /// <summary>
    /// 扩展名(目录为空)
    /// </summary>
    public string? Extension { get; set; }

    /// <summary>
    /// 大小(目录为空)
    /// </summary>
    public long? Size { get; set; }

    /// <summary>
    /// 文件哈希(目录为空)
    /// </summary>
    public string? Hash { get; set; }

    /// <summary>
    /// 文件内容类型(目录为 Unknown)
    /// </summary>
    public CodeFileContentType CodeFileContentType { get; set; }

    /// <summary>
    /// 代码语言
    /// </summary>
    public string? CodeLanguage { get; set; }

    /// <summary>
    /// 标签
    /// </summary>
    public List<string> Tags { get; set; } = [];

    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime CreatedTime { get; set; }

    /// <summary>
    /// 最后修改时间
    /// </summary>
    public DateTime LastWriteTime { get; set; }

    /// <summary>
    /// 最后更新时间(数据更新时间)
    /// </summary>
    public DateTime LastUpdateTime { get; set; }

    /// <summary>
    /// 描述
    /// </summary>
    public string? Description { get; set; }

    /// <summary>
    /// AI分析时间
    /// </summary>
    public DateTime? AiAnalyzeTime { get; set; }

    /// <summary>
    /// AI分析对应的文件哈希
    /// </summary>
    public string? AiAnalyzeHash { get; set; }
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这是一个用于响应源码文件系统实体列表的数据传输对象(DTO)类。让我详细解释一下这个类的结构和用途:

类的总体用途

CodeFileSystemEntryListResponse 是一个响应模型类,用于在API或服务层返回源码文件系统中的文件或目录信息。

属性详细说明

基础标识信息

  • Id: 唯一标识符,使用 required 关键字表示必须赋值
  • Name: 文件或目录的名称

路径相关

  • PathSegments: 完整路径的分段列表,例如 ["src", "components", "Button.tsx"]
  • ParentPathSegments: 父级目录的路径分段,根目录时为空集合

文件系统属性

  • IsDirectory: 布尔值,标识当前项是否为目录
  • Extension: 文件扩展名(如果是目录则为空)
  • Size: 文件大小(目录时为空)
  • Hash: 文件内容的哈希值,用于版本控制或完整性校验

代码分析相关

  • CodeFileContentType: 枚举类型,表示文件内容类型(目录时为 Unknown)
  • CodeLanguage: 代码语言标识,如 "C#", "JavaScript" 等
  • Tags: 标签列表,可用于分类或标记文件

时间信息

  • CreatedTime: 文件创建时间
  • LastWriteTime: 最后修改时间
  • LastUpdateTime: 数据最后更新时间(可能与文件修改时间不同)

AI分析相关

  • AiAnalyzeTime: AI分析的时间戳
  • AiAnalyzeHash: AI分析时对应的文件哈希值,用于确保分析结果与当前文件版本匹配

其他

  • Description: 文件或目录的描述信息

设计特点

  1. 类型安全: 使用了 required 关键字确保关键属性必须被赋值
  2. 灵活性: 通过可空类型(?)来区分文件和目录的不同属性
  3. 版本追踪: 通过多个时间戳和哈希值支持版本控制和变更追踪
  4. AI集成: 专门的AI分析相关字段表明系统具有代码智能分析功能
  5. 初始化: 使用 = [] 为集合属性提供默认空值

这个类很适合用于代码仓库管理系统、IDE插件或代码分析工具的API响应。

评论加载中...