sync: 同步 sql-platform-pro 最新代码 — 权限体系安全修复 v0.8.1
- P0: 实例访问控制全线接入权限组 (829测试) - P1: permissions字段激活 + 操作级权限检查 (843测试) - 前端: 删除数据权限页面, 权限组合并为唯一入口 - 新增: CodeMirror编辑器 + 查询模板 + 慢查询分析 - 新增: MongoDB管理页面 + Dashboard增强 - 修复: Pydantic V2迁移 + 前端TS错误修复
This commit is contained in:
1 parent
6fcd9465cf
commit
4c9427e546
105 files changed
+23680
-471
No files matched your search
@@ -0,0 +1,101 @@
|
||||
"""执行相关 Schema — 工单执行报告和数据验证模型。"""
|
||||
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class ExecutionReportResponse(BaseModel):
|
||||
"""工单执行报告响应模型。
|
||||
|
||||
包含工单执行后的完整结果信息,用于 API 返回。
|
||||
|
||||
Attributes:
|
||||
status: 执行状态(success / failed / partial)
|
||||
affected_rows: 影响行数(SQL)或成功命令数(Redis)或修改文档数(MongoDB)
|
||||
duration_ms: 执行耗时(毫秒)
|
||||
validation_passed: 验证是否通过
|
||||
warnings: 警告信息列表
|
||||
errors: 错误信息列表
|
||||
raw_output: 原始执行输出
|
||||
before_snapshot_summary: 执行前快照摘要
|
||||
after_snapshot_summary: 执行后快照摘要
|
||||
"""
|
||||
|
||||
status: str = Field(..., description="执行状态: success / failed / partial")
|
||||
affected_rows: int = Field(0, ge=0, description="影响行数")
|
||||
duration_ms: int = Field(0, ge=0, description="执行耗时(毫秒)")
|
||||
validation_passed: bool = Field(True, description="验证是否通过")
|
||||
warnings: List[str] = Field(default_factory=list, description="警告信息")
|
||||
errors: List[str] = Field(default_factory=list, description="错误信息")
|
||||
raw_output: Optional[str] = Field(None, description="原始执行输出")
|
||||
before_snapshot_summary: Optional[str] = Field(None, description="执行前快照摘要")
|
||||
after_snapshot_summary: Optional[str] = Field(None, description="执行后快照摘要")
|
||||
|
||||
class Config:
|
||||
json_schema_extra = {
|
||||
"example": {
|
||||
"status": "success",
|
||||
"affected_rows": 3,
|
||||
"duration_ms": 145,
|
||||
"validation_passed": True,
|
||||
"warnings": [],
|
||||
"errors": [],
|
||||
"raw_output": "[UPDATE users SET status='active' WHERE ...] 影响 3 行",
|
||||
"before_snapshot_summary": "UPDATE 表 `users`: 将有 3 行被更新 (WHERE: status='inactive')",
|
||||
"after_snapshot_summary": "表 `users`: 当前 150 行",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class RedisCommandRequest(BaseModel):
|
||||
"""Redis 命令请求模型。"""
|
||||
|
||||
command: str = Field(..., min_length=1, description="Redis 命令")
|
||||
db: int = Field(0, ge=0, le=15, description="数据库编号")
|
||||
|
||||
|
||||
class RedisTicketContent(BaseModel):
|
||||
"""Redis 工单内容模型(JSON 格式)。"""
|
||||
|
||||
commands: List[RedisCommandRequest] = Field(
|
||||
..., min_length=1, description="命令列表"
|
||||
)
|
||||
|
||||
|
||||
class MongoOperationRequest(BaseModel):
|
||||
"""MongoDB 操作请求模型。
|
||||
|
||||
支持的操作类型:
|
||||
- insertOne / insertMany: 插入文档
|
||||
- updateOne / updateMany: 更新文档
|
||||
- deleteOne / deleteMany: 删除文档
|
||||
- replaceOne: 替换文档
|
||||
"""
|
||||
|
||||
collection: str = Field(..., min_length=1, description="集合名称")
|
||||
operation: str = Field(
|
||||
...,
|
||||
pattern=r"^(insertOne|insertMany|updateOne|updateMany|deleteOne|deleteMany|replaceOne)$",
|
||||
description="操作类型",
|
||||
)
|
||||
filter: Optional[dict] = Field(None, description="查询条件")
|
||||
update: Optional[dict] = Field(None, description="更新内容")
|
||||
document: Optional[dict] = Field(None, description="插入/替换的文档")
|
||||
documents: Optional[List[dict]] = Field(None, description="批量插入的文档列表")
|
||||
options: Optional[dict] = Field(None, description="额外选项")
|
||||
|
||||
|
||||
class TicketExecuteResponse(BaseModel):
|
||||
"""工单执行响应模型(API 返回)。"""
|
||||
|
||||
id: int = Field(..., description="工单ID")
|
||||
title: str = Field(..., description="工单标题")
|
||||
status: str = Field(..., description="工单状态")
|
||||
db_type: str = Field(..., description="数据库类型")
|
||||
execute_result: Optional[str] = Field(None, description="执行结果摘要")
|
||||
execute_time: Optional[str] = Field(None, description="执行时间")
|
||||
execution_report: Optional[ExecutionReportResponse] = Field(
|
||||
None, description="详细执行报告"
|
||||
)
|
||||
message: Optional[str] = Field(None, description="提示消息")
|
||||
Reference in new issue
Block a user