chore: initial commit — leaudit-platform project skeleton
17-table PostgreSQL schema with full Chinese column comments, FastAPI project structure (admin/common/modules), DSL rule files, and schema migration scripts.
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
"""评查 DTO(仅控制器层使用)。"""
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class AuditRunDTO(BaseModel):
|
||||
"""触发评查请求。"""
|
||||
|
||||
documentId: int = Field(..., description="文档ID")
|
||||
ruleType: str | None = Field(None, description="指定规则类型编码")
|
||||
force: bool = Field(False, description="是否强制重跑")
|
||||
@@ -0,0 +1,31 @@
|
||||
"""认证 DTO(仅控制器层使用)。"""
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class PasswordLoginDTO(BaseModel):
|
||||
"""账密登录请求。"""
|
||||
|
||||
sub: str = Field(..., description="账号")
|
||||
password: str = Field(..., description="密码")
|
||||
|
||||
|
||||
class OAuthUserInfo(BaseModel):
|
||||
"""OAuth 用户信息。"""
|
||||
|
||||
sub: str = Field(..., description="IDaaS 用户唯一标识")
|
||||
username: str | None = Field(None, description="用户名/工号")
|
||||
nickname: str | None = Field(None, description="用户昵称")
|
||||
email: str | None = Field(None, description="邮箱")
|
||||
phone_number: str | None = Field(None, description="手机号")
|
||||
ou_id: str | None = Field(None, description="组织单位ID")
|
||||
ou_name: str | None = Field(None, description="组织单位名称")
|
||||
is_leader: bool | None = Field(False, description="是否为负责人")
|
||||
|
||||
|
||||
class OAuthLoginDTO(BaseModel):
|
||||
"""OAuth 登录请求。"""
|
||||
|
||||
userInfo: OAuthUserInfo = Field(..., description="OAuth 用户信息")
|
||||
expiresIn: int = Field(..., description="OAuth token 过期时间(秒)")
|
||||
area: str | None = Field(None, description="用户所属地区")
|
||||
@@ -0,0 +1,33 @@
|
||||
"""评查 VO。"""
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class AuditRunVO(BaseModel):
|
||||
"""评查运行响应。"""
|
||||
|
||||
runId: int = Field(..., description="运行ID")
|
||||
documentId: int = Field(..., description="文档ID")
|
||||
runNo: int = Field(..., description="执行序号")
|
||||
status: str = Field(..., description="状态")
|
||||
phase: str | None = Field(None, description="draft/executed")
|
||||
totalScore: float | None = Field(None, description="总分")
|
||||
passedCount: int | None = Field(None, description="通过数")
|
||||
failedCount: int | None = Field(None, description="失败数")
|
||||
startedAt: datetime | None = Field(None, description="开始时间")
|
||||
finishedAt: datetime | None = Field(None, description="结束时间")
|
||||
|
||||
|
||||
class AuditResultVO(BaseModel):
|
||||
"""评查结果响应。"""
|
||||
|
||||
runId: int = Field(..., description="运行ID")
|
||||
totalScore: float | None = Field(None, description="总分")
|
||||
passedCount: int = Field(0, description="通过数")
|
||||
failedCount: int = Field(0, description="失败数")
|
||||
skippedCount: int = Field(0, description="跳过数")
|
||||
phase: str | None = Field(None, description="draft/executed")
|
||||
rescueApplied: bool = Field(False, description="是否执行 rescue")
|
||||
rules: list[dict] = Field(default_factory=list, description="规则结果列表")
|
||||
@@ -0,0 +1,13 @@
|
||||
"""认证 VO(控制器层 + 服务层使用)。"""
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class LoginTokenVO(BaseModel):
|
||||
"""登录响应。"""
|
||||
|
||||
access_token: str = Field(..., description="JWT Token")
|
||||
token_type: str = Field("Bearer", description="Token 类型")
|
||||
expires_in: int = Field(..., description="Token 过期时间(秒)")
|
||||
issued_time: str = Field(..., description="签发时间 YYYY-MM-DD HH:MM:SS")
|
||||
user_info: dict = Field(..., description="用户信息")
|
||||
@@ -0,0 +1,26 @@
|
||||
"""规则 VO。"""
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class RuleSetVO(BaseModel):
|
||||
"""规则集响应。"""
|
||||
|
||||
id: int = Field(..., description="规则集ID")
|
||||
ruleType: str = Field(..., description="业务规则类型编码")
|
||||
ruleName: str = Field(..., description="规则集名称")
|
||||
domainType: str | None = Field(None, description="域类型")
|
||||
currentVersionId: int | None = Field(None, description="当前激活版本ID")
|
||||
status: str = Field(..., description="draft/active/inactive/archived")
|
||||
|
||||
|
||||
class RuleVersionVO(BaseModel):
|
||||
"""规则版本响应。"""
|
||||
|
||||
id: int = Field(..., description="版本ID")
|
||||
ruleSetId: int = Field(..., description="所属规则集ID")
|
||||
versionNo: str = Field(..., description="版本号")
|
||||
status: str = Field(..., description="draft/validated/published/rolled_back")
|
||||
ossUrl: str = Field(..., description="YAML 文件 OSS 地址")
|
||||
changeNote: str | None = Field(None, description="变更说明")
|
||||
publishedAt: str | None = Field(None, description="发布时间")
|
||||
Reference in New Issue
Block a user