chore: initial baseline with P0-safety .gitignore
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# =============================================================================
|
||||
# 企微IT智能服务台 — 配置变更日志模型
|
||||
# =============================================================================
|
||||
# 说明:对应数据库 config_change_logs 表,记录每次配置项的变更历史
|
||||
# 包含变更前后的值、操作人和时间,用于配置审计和回滚
|
||||
# =============================================================================
|
||||
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import DateTime, Index, String, Text
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.database import Base
|
||||
|
||||
|
||||
class ConfigChangeLog(Base):
|
||||
"""配置变更日志模型 — 对应 config_change_logs 表。
|
||||
|
||||
记录每次配置项的变更历史,包含变更前后的值、操作人和时间。
|
||||
|
||||
Attributes:
|
||||
id: 日志唯一标识(UUID)
|
||||
config_key: 变更的配置键
|
||||
old_value: 变更前的值
|
||||
new_value: 变更后的值
|
||||
changed_by: 变更操作人(agent_id)
|
||||
changed_at: 变更时间
|
||||
"""
|
||||
|
||||
# 表名(必须和架构文档 DDL 一致)
|
||||
__tablename__ = "config_change_logs"
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# 字段定义
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
# 主键:UUID,Python端生成(兼容PostgreSQL和SQLite)
|
||||
id: Mapped[str] = mapped_column(
|
||||
String(36),
|
||||
primary_key=True,
|
||||
default=lambda: str(uuid.uuid4()),
|
||||
)
|
||||
|
||||
# 配置键(关联 system_configs 表的 config_key)
|
||||
config_key: Mapped[str] = mapped_column(
|
||||
String(128),
|
||||
nullable=False,
|
||||
comment="配置键",
|
||||
)
|
||||
|
||||
# 变更前的值(空字符串表示新增配置项)
|
||||
old_value: Mapped[str] = mapped_column(
|
||||
Text,
|
||||
nullable=False,
|
||||
default="",
|
||||
comment="变更前的值",
|
||||
)
|
||||
|
||||
# 变更后的值
|
||||
new_value: Mapped[str] = mapped_column(
|
||||
Text,
|
||||
nullable=False,
|
||||
default="",
|
||||
comment="变更后的值",
|
||||
)
|
||||
|
||||
# 变更操作人(关联 agents 表的 id)
|
||||
changed_by: Mapped[str] = mapped_column(
|
||||
String(36),
|
||||
nullable=False,
|
||||
comment="变更操作人 agent_id",
|
||||
)
|
||||
|
||||
# 变更时间
|
||||
changed_at: Mapped[datetime] = mapped_column(
|
||||
DateTime(timezone=True),
|
||||
nullable=False,
|
||||
default=datetime.now,
|
||||
comment="变更时间",
|
||||
)
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# 索引定义(和架构文档 DDL 严格一致)
|
||||
# --------------------------------------------------------------------------
|
||||
__table_args__ = (
|
||||
# 按配置键查询(如查询某配置项的所有变更历史)
|
||||
Index("idx_ccl_config_key", "config_key"),
|
||||
# 按变更时间查询(如查询最近的变更记录)
|
||||
Index("idx_ccl_changed_at", "changed_at"),
|
||||
)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
"""变更日志对象的字符串表示,方便调试。"""
|
||||
return f"<ConfigChangeLog(key={self.config_key}, by={self.changed_by})>"
|
||||
Reference in New Issue
Block a user