feat(ai_agent): 完善AI适配器和服务功能 - 添加OpenClaw和Hermes健康检查接口 - 实现OpenClaw工具调用功能 - 重构AI适配器使用常量定义 - 增加AI技能系统支持 - 更新配置文件中的默认模型提供者设置 refactor(scheduler): 使用常量替换硬编码值 - 将硬编码的actor值替换为ActorValue常量 - 将receive_id_type替换为FeishuReceiveIdType枚举 refactor(audit): 统一审计日志常量使用 - 将硬编码的actor、source、risk_level等值替换为对应常量 - 更新审核服务中的状态和操作常量引用 refactor(approvals): 标准化审批模块常量使用 - 将applicant默认值替换为ActorValue.API常量 - 使用ApprovalStatus常量替代硬编码状态值 - 更新审核操作常量引用 ```
58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.core.constants import ActorValue
|
|
|
|
|
|
class ReadonlyQueryRequest(BaseModel):
|
|
"""Readonly SQL query request for the legacy MySQL connection."""
|
|
|
|
sql: str = Field(..., description="Readonly SELECT statement.")
|
|
params: dict[str, Any] = Field(default_factory=dict)
|
|
limit: int = Field(default=100, ge=1, le=500)
|
|
|
|
|
|
class QueryResult(BaseModel):
|
|
"""Tabular query result returned as JSON rows."""
|
|
|
|
columns: list[str]
|
|
rows: list[dict[str, Any]]
|
|
row_count: int
|
|
|
|
|
|
class LegacyProjectRecord(BaseModel):
|
|
"""Raw project row from the legacy project system."""
|
|
|
|
data: dict[str, Any]
|
|
|
|
|
|
class LegacyProjectSyncRequest(BaseModel):
|
|
"""Request body for syncing legacy projects into the internal ledger."""
|
|
|
|
source_query: str | None = Field(
|
|
default=None,
|
|
description="Optional SELECT query for project sync.",
|
|
)
|
|
field_map: dict[str, str] = Field(
|
|
default_factory=dict,
|
|
description=(
|
|
"Map internal project fields to legacy row fields, "
|
|
"e.g. {'name': 'project_name'}."
|
|
),
|
|
)
|
|
limit: int = Field(default=100, ge=1, le=500)
|
|
dry_run: bool = True
|
|
actor: str = ActorValue.API
|
|
|
|
|
|
class LegacyProjectSyncResult(BaseModel):
|
|
"""Summary of a legacy project sync operation."""
|
|
|
|
dry_run: bool
|
|
created: int
|
|
updated: int
|
|
skipped: int
|
|
sync_run_code: str | None = None
|
|
items: list[dict[str, Any]]
|