#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
模块名称：erp_config.py
模块描述：功能测试报告 ERP 配置数据库模型定义

作者：czj
创建日期：2026-08-13
最后修改：2026-08-13
"""

from datetime import datetime
from typing import Optional
from sqlalchemy import String, DateTime, Integer
from sqlalchemy.orm import Mapped, mapped_column

from app.database import Base


class ErpConfig(Base):
    """
    功能测试报告 ERP 配置数据库模型

    存储 ERP 系统连接配置，支持持久化到数据库。
    使用固定 ID 为 1 的单行记录。

    Attributes:
        id (int): 主键，固定为 1
        api_key (str): ERP API 密钥
        base_url (str): ERP 基础 URL
        developtesting_id (int): 默认测试单 ID
        type_id (int): 报告类型 ID
        image_url_prefix (str): 图片 URL 前缀
        updated_at (datetime): 更新时间
    """

    __tablename__ = "erp_configs"

    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=False, default=1, comment="配置ID（固定为1）")
    api_key: Mapped[str] = mapped_column(String(255), default="", comment="ERP API密钥")
    base_url: Mapped[str] = mapped_column(String(500), default="", comment="ERP基础URL")
    developtesting_id: Mapped[int] = mapped_column(Integer, default=397, comment="默认测试单ID")
    type_id: Mapped[int] = mapped_column(Integer, default=2, comment="报告类型ID")
    image_url_prefix: Mapped[str] = mapped_column(String(500), default="", comment="图片URL前缀")
    updated_at: Mapped[Optional[datetime]] = mapped_column(
        DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, comment="更新时间"
    )

    def __repr__(self) -> str:
        return f"<ErpConfig(id={self.id}, base_url={self.base_url})>"

    def to_dict(self) -> dict:
        return {
            "api_key": self.api_key or "",
            "base_url": self.base_url or "",
            "developtesting_id": self.developtesting_id or 0,
            "type_id": self.type_id or 2,
            "image_url_prefix": self.image_url_prefix or "",
        }