108 lines
3.1 KiB
Python
108 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
仓库治理只读审计 — 共享数据模型
|
||
|
||
定义审计脚本各模块共用的 dataclass 和枚举类型。
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from dataclasses import dataclass, field
|
||
from enum import Enum
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 文件元信息
|
||
# ---------------------------------------------------------------------------
|
||
|
||
@dataclass
|
||
class FileEntry:
|
||
"""单个文件/目录的元信息。"""
|
||
|
||
rel_path: str # 相对于仓库根目录的路径
|
||
is_dir: bool # 是否为目录
|
||
size_bytes: int # 文件大小(目录为 0)
|
||
extension: str # 文件扩展名(小写,含点号)
|
||
is_empty_dir: bool # 是否为空目录
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 用途分类与处置标签
|
||
# ---------------------------------------------------------------------------
|
||
|
||
class Category(str, Enum):
|
||
"""文件用途分类。"""
|
||
|
||
CORE_CODE = "核心代码"
|
||
CONFIG = "配置"
|
||
DATABASE_DEF = "数据库定义"
|
||
TEST = "测试"
|
||
DOCS = "文档"
|
||
SCRIPTS = "脚本工具"
|
||
GUI = "GUI"
|
||
BUILD_DEPLOY = "构建与部署"
|
||
LOG_OUTPUT = "日志与输出"
|
||
TEMP_DEBUG = "临时与调试"
|
||
OTHER = "其他"
|
||
|
||
|
||
class Disposition(str, Enum):
|
||
"""处置标签。"""
|
||
|
||
KEEP = "保留"
|
||
CANDIDATE_DELETE = "候选删除"
|
||
CANDIDATE_ARCHIVE = "候选归档"
|
||
NEEDS_REVIEW = "待确认"
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 文件清单条目
|
||
# ---------------------------------------------------------------------------
|
||
|
||
@dataclass
|
||
class InventoryItem:
|
||
"""清单条目:路径 + 分类 + 处置 + 说明。"""
|
||
|
||
rel_path: str
|
||
category: Category
|
||
disposition: Disposition
|
||
description: str
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 流程树节点
|
||
# ---------------------------------------------------------------------------
|
||
|
||
@dataclass
|
||
class FlowNode:
|
||
"""流程树节点。"""
|
||
|
||
name: str # 节点名称(模块名/类名/函数名)
|
||
source_file: str # 所在源文件路径
|
||
node_type: str # 类型:entry / module / class / function
|
||
children: list[FlowNode] = field(default_factory=list)
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 文档对齐
|
||
# ---------------------------------------------------------------------------
|
||
|
||
@dataclass
|
||
class DocMapping:
|
||
"""文档与代码的映射关系。"""
|
||
|
||
doc_path: str # 文档文件路径
|
||
doc_topic: str # 文档主题
|
||
related_code: list[str] # 关联的代码文件/模块
|
||
status: str # 状态:aligned / stale / conflict / orphan
|
||
|
||
|
||
@dataclass
|
||
class AlignmentIssue:
|
||
"""对齐问题。"""
|
||
|
||
doc_path: str # 文档路径
|
||
issue_type: str # stale / conflict / missing
|
||
description: str # 问题描述
|
||
related_code: str # 关联代码路径
|