Files
ZQYY.FQ-ETL/scripts/audit/__init__.py

108 lines
3.1 KiB
Python
Raw Permalink 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.
# -*- 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 # 关联代码路径