feat(database): 使用SQLite替换MySQL作为默认数据库 将默认数据库从MySQL切换到SQLite以简化本地开发环境配置 BREAKING CHANGE: 数据库连接字符串已从MySQL更改为SQLite格式 --- refactor(audit): 实现敏感数据脱敏功能 添加敏感键名常量定义,并实现递归脱敏函数, 确保审计日志中不会泄露敏感信息如API密钥、密码等 --- fix(legacy-mysql): 修复查询参数限制验证和注入漏洞 增强只读查询参数处理逻辑,添加类型验证并防止SQL注入 同时修复参数限制数值越界问题 --- test(smoke): 增加审计脱敏和审批流程测试用例 添加审计日志脱敏验证测试和审批决策流程测试, 确保敏感数据不会被记录到审计日志中 --- chore(config): 添加Ruff缓存目录到忽略列表 更新.gitignore和.dockerignore文件, 添加.ruff_cache/目录到忽略列表以避免提交临时文件 --- build(deps): 添加Ruff依赖项到环境配置 在environment.yml中添加ruff==0.8.4依赖项, 并在pyproject.toml中配置相关忽略规则 --- refactor(approval): 移除审批创建中的冗余字段 从ApprovalDecision模型中移除不必要的approver字段, 简化审批决策接口设计 --- refactor(database): 明确数据库模块导出接口 为app/core/database.py添加__all__列表, 明确指定模块对外暴露的公共接口 ```
41 lines
889 B
Python
41 lines
889 B
Python
from datetime import datetime
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from app.core.constants import ActorValue
|
|
|
|
|
|
class ApprovalCreate(BaseModel):
|
|
domain: str
|
|
record_id: str | None = None
|
|
action: str
|
|
applicant: str = ActorValue.API
|
|
reason: str | None = None
|
|
payload: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class ApprovalDecision(BaseModel):
|
|
comment: str | None = None
|
|
|
|
|
|
class ApprovalRead(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
ticket_id: str
|
|
domain: str
|
|
record_id: str | None
|
|
action: str
|
|
applicant: str
|
|
approver: str | None
|
|
status: str
|
|
reason: str | None
|
|
payload: str | None
|
|
decision_comment: str | None
|
|
used_by: str | None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
decided_at: datetime | None
|
|
used_at: datetime | None
|