diff --git a/crop-x/scripts/openapi.json b/crop-x/scripts/openapi.json index 6be8fd2..8a0453e 100644 --- a/crop-x/scripts/openapi.json +++ b/crop-x/scripts/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"鸿蒙智慧农业平台","description":"鸿蒙智慧农业SaaS平台 - 多租户多子系统FastAPI应用","version":"1.0.0"},"paths":{"/api/v1/auth/register":{"post":{"tags":["认证"],"summary":"用户注册","description":"用户注册","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/register-with-company":{"post":{"tags":["认证"],"summary":"用户注册并创建企业","description":"用户注册并创建企业","operationId":"register_with_company_api_v1_auth_register_with_company_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreateWithCompany"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/captcha":{"get":{"tags":["认证"],"summary":"获取验证码","description":"获取登录验证码","operationId":"get_captcha_api_v1_auth_captcha_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptchaResponse"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["认证"],"summary":"用户登录","description":"用户登录(需要验证码)","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLoginWithCaptcha"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["认证"],"summary":"刷新令牌","description":"刷新访问令牌","operationId":"refresh_token_api_v1_auth_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["认证"],"summary":"用户登出","description":"用户登出","operationId":"logout_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Logout Api V1 Auth Logout Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/me":{"get":{"tags":["认证"],"summary":"获取当前用户信息","description":"获取当前用户信息","operationId":"get_current_user_info_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["认证"],"summary":"更新当前用户信息","description":"更新当前用户信息","operationId":"update_current_user_api_v1_auth_me_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/change-password":{"post":{"tags":["认证"],"summary":"修改密码","description":"修改密码","operationId":"change_password_api_v1_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdatePassword"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Change Password Api V1 Auth Change Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/verify-token":{"post":{"tags":["认证"],"summary":"验证令牌","description":"验证用户令牌有效性","operationId":"verify_user_token_api_v1_auth_verify_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Verify User Token Api V1 Auth Verify Token Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users":{"get":{"tags":["用户管理"],"summary":"获取用户列表","description":"获取用户列表(需要管理员权限)","operationId":"get_users_api_v1_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词","title":"Search"},"description":"搜索关键词"},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","description":"是否活跃","title":"Is Active"},"description":"是否活跃"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_UserResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["用户管理"],"summary":"创建用户","description":"创建用户(需要管理员权限)","operationId":"create_user_api_v1_users_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}":{"get":{"tags":["用户管理"],"summary":"获取用户详情","description":"获取用户详情(需要管理员权限)","operationId":"get_user_api_v1_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["用户管理"],"summary":"更新用户","description":"更新用户(需要管理员权限)","operationId":"update_user_api_v1_users__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["用户管理"],"summary":"删除用户","description":"删除用户(需要管理员权限)","operationId":"delete_user_api_v1_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Delete User Api V1 Users User Id Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/activate":{"post":{"tags":["用户管理"],"summary":"激活用户","description":"激活用户(需要管理员权限)","operationId":"activate_user_api_v1_users__user_id__activate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Activate User Api V1 Users User Id Activate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/deactivate":{"post":{"tags":["用户管理"],"summary":"停用用户","description":"停用用户(需要管理员权限)","operationId":"deactivate_user_api_v1_users__user_id__deactivate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Deactivate User Api V1 Users User Id Deactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/stats/summary":{"get":{"tags":["用户管理"],"summary":"获取用户统计信息","description":"获取用户统计信息(需要管理员权限)","operationId":"get_user_stats_api_v1_users_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get User Stats Api V1 Users Stats Summary Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/departments/options":{"get":{"tags":["用户管理"],"summary":"获取部门选择列表","description":"获取部门选择列表(用于用户管理中的部门选择,仅限 tenant scope 用户访问)","operationId":"get_department_options_api_v1_users_departments_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DepartmentResponse"},"type":"array","title":"Response Get Department Options Api V1 Users Departments Options Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/permissions/permissions":{"get":{"tags":["用户管理"],"summary":"获取系统权限列表","description":"获取系统权限列表(需要系统权限)","operationId":"get_system_permissions_api_v1_users_permissions_permissions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词","title":"Search"},"description":"搜索关键词"},{"name":"group","in":"query","required":false,"schema":{"type":"string","description":"权限分组过滤","title":"Group"},"description":"权限分组过滤"},{"name":"resource","in":"query","required":false,"schema":{"type":"string","description":"资源过滤","title":"Resource"},"description":"资源过滤"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_Permission_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/permissions/roles":{"get":{"tags":["用户管理"],"summary":"获取角色列表","description":"获取角色列表(支持租户和系统角色)","operationId":"get_roles_api_v1_users_permissions_roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词","title":"Search"},"description":"搜索关键词"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_Role_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["用户管理"],"summary":"创建角色","description":"创建角色","operationId":"create_role_api_v1_users_permissions_roles_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/permissions/roles/{role_id}":{"get":{"tags":["用户管理"],"summary":"获取角色详情","description":"获取角色详情","operationId":"get_role_api_v1_users_permissions_roles__role_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["用户管理"],"summary":"更新角色","description":"更新角色","operationId":"update_role_api_v1_users_permissions_roles__role_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["用户管理"],"summary":"删除角色","description":"删除角色","operationId":"delete_role_api_v1_users_permissions_roles__role_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Delete Role Api V1 Users Permissions Roles Role Id Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/permissions/users/{user_id}/roles":{"post":{"tags":["用户管理"],"summary":"为用户分配角色","description":"为用户分配角色(会替换用户现有角色)","operationId":"assign_roles_to_user_api_v1_users_permissions_users__user_id__roles_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleAssignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["用户管理"],"summary":"获取用户角色列表","description":"获取用户的角色列表","operationId":"get_user_roles_api_v1_users_permissions_users__user_id__roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"title":"Response Get User Roles Api V1 Users Permissions Users User Id Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/permissions/users/{user_id}/roles/{role_id}":{"delete":{"tags":["用户管理"],"summary":"移除用户角色","description":"移除用户的特定角色","operationId":"remove_user_role_api_v1_users_permissions_users__user_id__roles__role_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Remove User Role Api V1 Users Permissions Users User Id Roles Role Id Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/system/users":{"post":{"tags":["用户管理"],"summary":"创建系统级用户","description":"创建系统级用户(需要系统权限)","operationId":"create_system_user_api_v1_users_system_users_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["用户管理"],"summary":"获取所有用户账户列表","description":"获取所有用户账户列表(需要系统权限)\n\n支持以下功能:\n- 分页查询\n- 多条件搜索过滤(支持企业名称模糊搜索)\n- 系统用户和租户超级用户管理","operationId":"list_system_users_api_v1_users_system_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词(用户名、邮箱、全名、手机号、企业名称)","title":"Search"},"description":"搜索关键词(用户名、邮箱、全名、手机号、企业名称)"},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","description":"是否活跃","title":"Is Active"},"description":"是否活跃"},{"name":"tenant_id","in":"query","required":false,"schema":{"type":"string","description":"租户id","title":"Tenant Id"},"description":"租户id"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_UserListResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/system/users/{user_id}":{"get":{"tags":["用户管理"],"summary":"获取系统用户信息","description":"获取系统用户信息(需要系统权限)","operationId":"get_system_user_api_v1_users_system_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["用户管理"],"summary":"更新系统用户信息","description":"更新系统用户信息(需要系统权限)","operationId":"update_system_user_api_v1_users_system_users__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["用户管理"],"summary":"删除系统用户","description":"删除系统用户(需要系统权限)","operationId":"delete_system_user_api_v1_users_system_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Delete System User Api V1 Users System Users User Id Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/system/users/stats/summary":{"get":{"tags":["用户管理"],"summary":"获取系统用户统计信息","description":"获取系统用户统计信息(需要系统权限)","operationId":"get_system_user_stats_api_v1_users_system_users_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get System User Stats Api V1 Users System Users Stats Summary Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/system/users/{user_id}/activate":{"post":{"tags":["用户管理"],"summary":"激活系统用户","description":"激活系统用户(需要系统权限)","operationId":"activate_system_user_api_v1_users_system_users__user_id__activate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Activate System User Api V1 Users System Users User Id Activate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/system/users/{user_id}/deactivate":{"post":{"tags":["用户管理"],"summary":"停用系统用户","description":"停用系统用户(需要系统权限)","operationId":"deactivate_system_user_api_v1_users_system_users__user_id__deactivate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Deactivate System User Api V1 Users System Users User Id Deactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants":{"post":{"tags":["租户管理"],"summary":"创建租户","description":"创建新租户","operationId":"create_tenant_api_v1_tenants_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["租户管理"],"summary":"查询企业列表","description":"获取租户列表","operationId":"list_tenants_api_v1_tenants_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"企业名称、编码(模糊查询)","title":"Search"},"description":"企业名称、编码(模糊查询)"},{"name":"audit_status","in":"query","required":false,"schema":{"type":"string","description":"审核状态","title":"Audit Status"},"description":"审核状态"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_TenantResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/audit-logs":{"get":{"tags":["租户管理"],"summary":"获取租户审计日志","description":"获取租户审计日志","operationId":"get_tenant_audit_logs_api_v1_tenants_audit_logs_get","parameters":[{"name":"tenant_id","in":"query","required":false,"schema":{"type":"string","description":"租户id","title":"Tenant Id"},"description":"租户id"},{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词(用户名、邮箱、全名、手机号、企业名称)","title":"Search"},"description":"搜索关键词(用户名、邮箱、全名、手机号、企业名称)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_TenantAuditLogResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/me":{"get":{"tags":["租户管理"],"summary":"获取当前租户信息","description":"获取当前登录租户的详细信息","operationId":"get_current_tenant_api_v1_tenants_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/tenants/submit":{"post":{"tags":["租户管理"],"summary":"提交租户审核","description":"提交租户审核","operationId":"submit_tenant_audit_api_v1_tenants_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/tenants/{tenant_id}":{"get":{"tags":["租户管理"],"summary":"获取企业详情","description":"获取租户详情","operationId":"get_tenant_api_v1_tenants__tenant_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["租户管理"],"summary":"删除租户(软删除)","description":"删除租户(软删除)","operationId":"delete_tenant_api_v1_tenants__tenant_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BaseResponse_bool_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/audit":{"post":{"tags":["租户管理"],"summary":"审核租户","description":"审核租户","operationId":"audit_tenant_api_v1_tenants__tenant_id__audit_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/disable":{"patch":{"tags":["租户管理"],"summary":"禁用租户","description":"禁用租户","operationId":"disable_tenant_api_v1_tenants__tenant_id__disable_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/enable":{"patch":{"tags":["租户管理"],"summary":"启用租户","description":"启用租户","operationId":"enable_tenant_api_v1_tenants__tenant_id__enable_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/anonymous/list":{"get":{"tags":["租户管理"],"summary":"匿名查询租户列表","description":"匿名查询租户列表 - 只返回已审核通过的租户ID、编码和名称","operationId":"list_anonymous_tenants_api_v1_tenants_anonymous_list_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"企业名称、编码(模糊查询)","title":"Search"},"description":"企业名称、编码(模糊查询)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_TenantAnonymousResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments":{"post":{"tags":["部门管理"],"summary":"创建部门","description":"创建新的部门","operationId":"create_department_api_v1_departments_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["部门管理"],"summary":"获取部门列表","description":"分页获取部门列表,支持状态过滤和模糊查询","operationId":"get_departments_api_v1_departments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":10,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","description":"排序方向","default":"desc","title":"Sort Order"},"description":"排序方向"},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"状态过滤","title":"Status Filter"},"description":"状态过滤"},{"name":"name_like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"部门名称模糊查询","title":"Name Like"},"description":"部门名称模糊查询"},{"name":"code_like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"部门编码模糊查询","title":"Code Like"},"description":"部门编码模糊查询"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_DepartmentResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/tree":{"get":{"tags":["部门管理"],"summary":"获取部门树形结构","description":"获取部门树形结构(一级部门及其子部门)","operationId":"get_department_tree_api_v1_departments_tree_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DepartmentTreeResponse-Output"},"type":"array","title":"Response Get Department Tree Api V1 Departments Tree Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/departments/{department_id}":{"get":{"tags":["部门管理"],"summary":"获取部门详情","description":"根据ID获取部门详情","operationId":"get_department_api_v1_departments__department_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["部门管理"],"summary":"更新部门","description":"更新部门信息","operationId":"update_department_api_v1_departments__department_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["部门管理"],"summary":"删除部门","description":"删除部门(需要先删除所有子部门和用户关联)","operationId":"delete_department_api_v1_departments__department_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/{department_id}/order":{"patch":{"tags":["部门管理"],"summary":"更新部门排序","description":"更新部门排序索引","operationId":"update_department_order_api_v1_departments__department_id__order_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}},{"name":"order_index","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"排序索引","title":"Order Index"},"description":"排序索引"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/{department_id}/status":{"patch":{"tags":["部门管理"],"summary":"更新部门状态","description":"启用或停用部门","operationId":"update_department_status_api_v1_departments__department_id__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}},{"name":"status","in":"query","required":true,"schema":{"type":"string","description":"状态: active/inactive","title":"Status"},"description":"状态: active/inactive"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/{department_id}/users-count":{"get":{"tags":["部门管理"],"summary":"获取部门用户数量","description":"获取部门下的用户数量","operationId":"get_department_users_count_api_v1_departments__department_id__users_count_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取登录日志列表","description":"获取登录日志列表","operationId":"list_login_logs_api_v1_logs_login_login_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":10,"title":"Size"},"description":"每页数量"},{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"关键词搜索","title":"Keyword"},"description":"关键词搜索"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"ip_address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IP地址","title":"Ip Address"},"description":"IP地址"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"登录状态","title":"Status"},"description":"登录状态"},{"name":"method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"登录方式","title":"Method"},"description":"登录方式"},{"name":"is_suspicious","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"是否可疑","title":"Is Suspicious"},"description":"是否可疑"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Login Logs Api V1 Logs Login Login Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/statistics":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取登录统计信息","description":"获取登录统计信息","operationId":"get_login_statistics_api_v1_logs_login_login_logs_statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始日期","title":"Start Date"},"description":"开始日期"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束日期","title":"End Date"},"description":"结束日期"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginLogStatistics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/export":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"导出登录日志","description":"导出登录日志","operationId":"export_login_logs_api_v1_logs_login_login_logs_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|excel)$","description":"导出格式","default":"csv","title":"Format"},"description":"导出格式"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/suspicious":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取可疑登录记录","description":"获取可疑登录记录","operationId":"get_suspicious_logins_api_v1_logs_login_login_logs_suspicious_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Suspicious Logins Api V1 Logs Login Login Logs Suspicious Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/failed-attempts":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取失败登录尝试","description":"获取失败登录尝试","operationId":"get_failed_login_attempts_api_v1_logs_login_login_logs_failed_attempts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"},{"name":"username","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户名","title":"Username"},"description":"用户名"},{"name":"ip_address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IP地址","title":"Ip Address"},"description":"IP地址"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Failed Login Attempts Api V1 Logs Login Login Logs Failed Attempts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/user/{user_id}/history":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取用户登录历史","description":"获取用户登录历史","operationId":"get_user_login_history_api_v1_logs_login_login_logs_user__user_id__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"记录数量限制","default":50,"title":"Limit"},"description":"记录数量限制"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Login History Api V1 Logs Login Login Logs User User Id History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取操作日志列表","description":"获取操作日志列表","operationId":"list_operation_logs_api_v1_logs_operation_operation_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"关键词搜索","title":"Keyword"},"description":"关键词搜索"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"operation_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作类型","title":"Operation Type"},"description":"操作类型"},{"name":"module","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作模块","title":"Module"},"description":"操作模块"},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作动作","title":"Action"},"description":"操作动作"},{"name":"request_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"请求方法","title":"Request Method"},"description":"请求方法"},{"name":"response_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"响应状态码","title":"Response Status"},"description":"响应状态码"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_OperationLogResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/statistics":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取操作统计信息","description":"获取操作统计信息","operationId":"get_operation_statistics_api_v1_logs_operation_operation_logs_statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始日期","title":"Start Date"},"description":"开始日期"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束日期","title":"End Date"},"description":"结束日期"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationLogStatistics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/export":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"导出操作日志","description":"导出操作日志","operationId":"export_operation_logs_api_v1_logs_operation_operation_logs_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|excel)$","description":"导出格式","default":"csv","title":"Format"},"description":"导出格式"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/errors":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取错误操作记录","description":"获取错误操作记录","operationId":"get_error_operations_api_v1_logs_operation_operation_logs_errors_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"},{"name":"module","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作模块","title":"Module"},"description":"操作模块"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Error Operations Api V1 Logs Operation Operation Logs Errors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/module/{module}/history":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取模块操作记录","description":"获取模块操作记录","operationId":"get_module_operations_api_v1_logs_operation_operation_logs_module__module__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"},{"name":"operation_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作类型","title":"Operation Type"},"description":"操作类型"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Module Operations Api V1 Logs Operation Operation Logs Module Module History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/user/{user_id}/history":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取用户操作历史","description":"获取用户操作历史","operationId":"get_user_operation_history_api_v1_logs_operation_operation_logs_user__user_id__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"记录数量限制","default":50,"title":"Limit"},"description":"记录数量限制"},{"name":"module","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作模块","title":"Module"},"description":"操作模块"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Operation History Api V1 Logs Operation Operation Logs User User Id History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取网络日志列表","description":"获取网络日志列表","operationId":"list_network_logs_api_v1_logs_network_network_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":10,"title":"Size"},"description":"每页数量"},{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"关键词搜索","title":"Keyword"},"description":"关键词搜索"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"ip_address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IP地址","title":"Ip Address"},"description":"IP地址"},{"name":"request_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"请求方法","title":"Request Method"},"description":"请求方法"},{"name":"request_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"请求路径","title":"Request Path"},"description":"请求路径"},{"name":"response_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"响应状态码","title":"Response Status"},"description":"响应状态码"},{"name":"is_error","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"是否错误","title":"Is Error"},"description":"是否错误"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Network Logs Api V1 Logs Network Network Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/statistics":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取网络统计信息","description":"获取网络统计信息","operationId":"get_network_statistics_api_v1_logs_network_network_logs_statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始日期","title":"Start Date"},"description":"开始日期"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束日期","title":"End Date"},"description":"结束日期"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkLogStatistics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/export":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"导出网络日志","description":"导出网络日志","operationId":"export_network_logs_api_v1_logs_network_network_logs_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|excel)$","description":"导出格式","default":"csv","title":"Format"},"description":"导出格式"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/errors":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取错误请求记录","description":"获取错误请求记录","operationId":"get_error_requests_api_v1_logs_network_network_logs_errors_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"},{"name":"status_code","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"特定状态码","title":"Status Code"},"description":"特定状态码"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Error Requests Api V1 Logs Network Network Logs Errors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/slow":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取慢请求记录","description":"获取慢请求记录","operationId":"get_slow_requests_api_v1_logs_network_network_logs_slow_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"threshold_seconds","in":"query","required":false,"schema":{"type":"number","maximum":60.0,"minimum":0.1,"description":"阈值(秒)","default":2.0,"title":"Threshold Seconds"},"description":"阈值(秒)"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Slow Requests Api V1 Logs Network Network Logs Slow Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/ip/{ip_address}/activity":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取IP活动记录","description":"获取IP活动记录","operationId":"get_ip_activity_api_v1_logs_network_network_logs_ip__ip_address__activity_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ip_address","in":"path","required":true,"schema":{"type":"string","title":"Ip Address"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ip Activity Api V1 Logs Network Network Logs Ip Ip Address Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/endpoint/{endpoint}/statistics":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取端点统计信息","description":"获取端点统计信息","operationId":"get_endpoint_statistics_api_v1_logs_network_network_logs_endpoint__endpoint__statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Endpoint Statistics Api V1 Logs Network Network Logs Endpoint Endpoint Statistics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/{log_type}":{"get":{"tags":["日志管理","日志管理","日志查询"],"summary":"统一日志搜索接口","description":"统一日志搜索接口","operationId":"search_logs_api_v1_logs_query__log_type__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_type","in":"path","required":true,"schema":{"type":"string","title":"Log Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":10,"title":"Size"},"description":"每页数量"},{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"关键词搜索","title":"Keyword"},"description":"关键词搜索"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"ip_address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IP地址","title":"Ip Address"},"description":"IP地址"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Logs Api V1 Logs Query Log Type Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/{log_type}/export":{"post":{"tags":["日志管理","日志管理","日志查询"],"summary":"统一日志导出接口","description":"统一日志导出接口","operationId":"export_logs_api_v1_logs_query__log_type__export_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_type","in":"path","required":true,"schema":{"type":"string","title":"Log Type"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogExportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/statistics/comprehensive":{"get":{"tags":["日志管理","日志管理","日志查询"],"summary":"获取综合统计信息","description":"获取综合统计信息","operationId":"get_comprehensive_statistics_api_v1_logs_query_statistics_comprehensive_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始日期","title":"Start Date"},"description":"开始日期"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束日期","title":"End Date"},"description":"结束日期"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Comprehensive Statistics Api V1 Logs Query Statistics Comprehensive Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/user/{user_id}/activity":{"get":{"tags":["日志管理","日志管理","日志查询"],"summary":"获取用户活动摘要","description":"获取用户活动摘要","operationId":"get_user_activity_summary_api_v1_logs_query_user__user_id__activity_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Activity Summary Api V1 Logs Query User User Id Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/cleanup":{"post":{"tags":["日志管理","日志管理","日志查询"],"summary":"清理旧日志记录","description":"清理旧日志记录","operationId":"cleanup_old_logs_api_v1_logs_query_cleanup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"保留天数","default":90,"title":"Days"},"description":"保留天数"},{"name":"log_types","in":"query","required":false,"schema":{"type":"string","description":"日志类型,逗号分隔","default":"login,operation,network","title":"Log Types"},"description":"日志类型,逗号分隔"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cleanup Old Logs Api V1 Logs Query Cleanup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/send":{"post":{"tags":["消息系统","消息发送"],"summary":"发送消息","description":"发送消息\n\n- **message_type**: 消息类型 (email/sms/inbox/push)\n- **recipients**: 接收者列表\n- **subject**: 消息主题(可选)\n- **content**: 消息内容\n- **template_id**: 模板ID(可选)\n- **variables**: 模板变量(可选)\n- **priority**: 消息优先级(low/normal/high/urgent)\n- **scheduled_at**: 计划发送时间(可选)","operationId":"send_message_api_v1_messages_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSendRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSendResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/messages/schedule":{"post":{"tags":["消息系统","消息发送"],"summary":"发送定时消息","description":"发送定时消息\n\n与实时发送相同,但必须指定 scheduled_at 参数","operationId":"schedule_message_api_v1_messages_schedule_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSendRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSendResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/messages/{message_id}/cancel":{"delete":{"tags":["消息系统","消息发送"],"summary":"取消定时消息","description":"取消定时消息\n\n- **message_id**: 消息ID","operationId":"cancel_scheduled_message_api_v1_messages__message_id__cancel_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/{message_id}/retry":{"post":{"tags":["消息系统","消息发送"],"summary":"重试失败的消息","description":"重试失败的消息\n\n- **message_id**: 消息ID","operationId":"retry_failed_message_api_v1_messages__message_id__retry_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/templates":{"post":{"tags":["消息系统","消息模板"],"summary":"创建消息模板","description":"创建消息模板\n\n- **name**: 模板名称\n- **description**: 模板描述(可选)\n- **message_type**: 消息类型\n- **subject**: 消息主题(可选)\n- **content**: 模板内容\n- **template_type**: 模板类型(system/custom)","operationId":"create_template_api_v1_messages_templates_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["消息系统","消息模板"],"summary":"获取模板列表","description":"获取消息模板列表\n\n- **page**: 页码\n- **size**: 每页数量\n- **order_by**: 排序字段\n- **sort_order**: 排序方向\n- **message_type**: 按消息类型过滤\n- **template_type**: 按模板类型过滤\n- **is_active**: 按启用状态过滤","operationId":"list_templates_api_v1_messages_templates_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageType"},{"type":"null"}],"description":"消息类型","title":"Message Type"},"description":"消息类型"},{"name":"template_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TemplateType"},{"type":"null"}],"description":"模板类型","title":"Template Type"},"description":"模板类型"},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"是否启用","title":"Is Active"},"description":"是否启用"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_MessageTemplateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/templates/{template_id}":{"get":{"tags":["消息系统","消息模板"],"summary":"获取模板详情","description":"获取模板详情\n\n- **template_id**: 模板ID","operationId":"get_template_api_v1_messages_templates__template_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["消息系统","消息模板"],"summary":"更新模板","description":"更新模板\n\n- **template_id**: 模板ID\n- **name**: 模板名称(可选)\n- **description**: 模板描述(可选)\n- **subject**: 消息主题(可选)\n- **content**: 模板内容(可选)\n- **is_active**: 是否启用(可选)","operationId":"update_template_api_v1_messages_templates__template_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["消息系统","消息模板"],"summary":"删除模板","description":"删除模板\n\n- **template_id**: 模板ID","operationId":"delete_template_api_v1_messages_templates__template_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/templates/{template_id}/test":{"post":{"tags":["消息系统","消息模板"],"summary":"测试模板渲染","description":"测试模板渲染\n\n- **template_id**: 模板ID\n- **test_variables**: 测试变量","operationId":"test_template_api_v1_messages_templates__template_id__test_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Test Variables"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs":{"get":{"tags":["消息系统","消息日志"],"summary":"获取消息日志列表","description":"获取消息日志列表\n\n根据查询条件获取消息发送记录列表,支持按消息类型、发送状态、接收者、时间范围等条件过滤。\n\n- **page**: 页码\n- **size**: 每页数量\n- **order_by**: 排序字段\n- **sort_order**: 排序方向\n- **message_type**: 按消息类型过滤\n- **status**: 按发送状态过滤\n- **recipient**: 按接收者过滤\n- **start_date**: 开始时间\n- **end_date**: 结束时间","operationId":"list_message_logs_api_v1_messages_logs_message_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageType"},{"type":"null"}],"description":"消息类型","title":"Message Type"},"description":"消息类型"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageStatus"},{"type":"null"}],"description":"发送状态","title":"Status"},"description":"发送状态"},{"name":"recipient","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"接收者","title":"Recipient"},"description":"接收者"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Date"},"description":"开始时间"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Date"},"description":"结束时间"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_MessageLogResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/{message_id}":{"get":{"tags":["消息系统","消息日志"],"summary":"获取消息详情","description":"获取消息详情\n\n根据消息ID获取详细的发送记录信息,包括消息内容、发送状态、时间戳等。\n\n- **message_id**: 消息ID","operationId":"get_message_log_api_v1_messages_logs_message_logs__message_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/{message_id}/receipts":{"get":{"tags":["消息系统","消息日志"],"summary":"获取消息接收记录","description":"获取消息接收记录\n\n获取指定消息的所有接收记录,包括接收者、阅读状态、阅读时间等信息。\n\n- **message_id**: 消息ID","operationId":"get_message_receipts_api_v1_messages_logs_message_logs__message_id__receipts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessageReceiptResponse"},"title":"Response Get Message Receipts Api V1 Messages Logs Message Logs Message Id Receipts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/{message_id}/read":{"post":{"tags":["消息系统","消息日志"],"summary":"标记消息为已读","description":"标记消息为已读\n\n- **message_id**: 消息ID\n- **recipient**: 接收者","operationId":"mark_message_as_read_api_v1_messages_logs_message_logs__message_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"recipient","in":"query","required":true,"schema":{"type":"string","description":"接收者","title":"Recipient"},"description":"接收者"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/statistics/overview":{"get":{"tags":["消息系统","消息日志"],"summary":"获取消息统计概览","description":"获取消息统计概览\n\n- **days**: 统计天数","operationId":"get_message_statistics_api_v1_messages_logs_message_logs_statistics_overview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"统计天数","default":30,"title":"Days"},"description":"统计天数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/statistics/recipient/{recipient}":{"get":{"tags":["消息系统","消息日志"],"summary":"获取接收者统计","description":"获取接收者统计\n\n- **recipient**: 接收者\n- **days**: 统计天数","operationId":"get_recipient_statistics_api_v1_messages_logs_message_logs_statistics_recipient__recipient__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recipient","in":"path","required":true,"schema":{"type":"string","title":"Recipient"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"统计天数","default":30,"title":"Days"},"description":"统计天数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/unread/count":{"get":{"tags":["消息系统","消息日志"],"summary":"获取未读消息数量","description":"获取未读消息数量\n\n- **recipient**: 接收者","operationId":"get_unread_count_api_v1_messages_logs_message_logs_unread_count_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recipient","in":"query","required":false,"schema":{"type":"string","description":"接收者","title":"Recipient"},"description":"接收者"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/cleanup":{"post":{"tags":["消息系统","消息日志"],"summary":"清理旧日志","description":"清理旧日志\n\n清理指定天数之前的消息日志和接收记录。\n\n- **days**: 保留天数,默认90天","operationId":"cleanup_old_logs_api_v1_messages_logs_message_logs_cleanup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"保留天数","default":90,"title":"Days"},"description":"保留天数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/configs/configs":{"get":{"tags":["消息系统","外部服务配置"],"summary":"获取外部服务配置列表","description":"获取外部服务配置列表\n\n- **service_type**: 服务类型过滤 (可选)\n- **is_active**: 是否启用过滤 (可选)","operationId":"list_external_service_configs_api_v1_messages_configs_configs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ExternalServiceType"},{"type":"null"}],"title":"Service Type"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"},"title":"Response List External Service Configs Api V1 Messages Configs Configs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["消息系统","外部服务配置"],"summary":"创建外部服务配置","description":"创建外部服务配置\n\n- **name**: 服务名称\n- **service_type**: 服务类型\n- **config**: 服务配置 (JSON格式)\n- **is_active**: 是否启用\n- **is_default**: 是否默认服务","operationId":"create_external_service_config_api_v1_messages_configs_configs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/configs/configs/{config_id}":{"get":{"tags":["消息系统","外部服务配置"],"summary":"获取外部服务配置详情","description":"获取外部服务配置详情\n\n- **config_id**: 配置ID","operationId":"get_external_service_config_api_v1_messages_configs_configs__config_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["消息系统","外部服务配置"],"summary":"更新外部服务配置","description":"更新外部服务配置\n\n- **config_id**: 配置ID\n- **config_data**: 更新数据","operationId":"update_external_service_config_api_v1_messages_configs_configs__config_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["消息系统","外部服务配置"],"summary":"删除外部服务配置","description":"删除外部服务配置\n\n- **config_id**: 配置ID","operationId":"delete_external_service_config_api_v1_messages_configs_configs__config_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/configs/configs/{config_id}/set-default":{"post":{"tags":["消息系统","外部服务配置"],"summary":"设置默认服务","description":"设置默认服务\n\n- **config_id**: 配置ID","operationId":"set_default_service_api_v1_messages_configs_configs__config_id__set_default_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/configs/configs/{config_id}/health-check":{"post":{"tags":["消息系统","外部服务配置"],"summary":"检查服务健康状态","description":"检查服务健康状态\n\n- **config_id**: 配置ID","operationId":"check_service_health_api_v1_messages_configs_configs__config_id__health_check_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/health":{"get":{"tags":["系统管理"],"summary":"基础健康检查","description":"基础健康检查","operationId":"health_check_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Check Api V1 Health Get"}}}}}}},"/api/v1/health/detailed":{"get":{"tags":["系统管理"],"summary":"详细健康检查","description":"详细健康检查,包含数据库连接状态","operationId":"detailed_health_check_api_v1_health_detailed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Detailed Health Check Api V1 Health Detailed Get"}}}}}}},"/api/v1/system/info":{"get":{"tags":["系统管理"],"summary":"获取系统信息","description":"获取系统基本信息","operationId":"get_system_info_api_v1_system_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get System Info Api V1 System Info Get"}}}}}}},"/api/v1/system/stats":{"get":{"tags":["系统管理"],"summary":"获取系统统计信息","description":"获取系统统计信息","operationId":"get_system_stats_api_v1_system_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get System Stats Api V1 System Stats Get"}}}}}}},"/api/v1/system/config":{"get":{"tags":["系统管理"],"summary":"获取系统配置","description":"获取公开的系统配置","operationId":"get_system_config_api_v1_system_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get System Config Api V1 System Config Get"}}}}}}},"/api/v1/system/metrics":{"get":{"tags":["系统管理"],"summary":"获取系统性能指标","description":"获取系统性能指标\n\n需要超级管理员权限访问\n\n- **sanitize**: 是否对敏感数据进行脱敏处理(默认:True)","operationId":"get_system_metrics_api_v1_system_metrics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sanitize","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Sanitize"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/system/metrics/summary":{"get":{"tags":["系统管理"],"summary":"获取性能指标摘要","description":"获取系统性能指标摘要\n\n需要超级管理员权限访问","operationId":"get_performance_summary_api_v1_system_metrics_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceMetricsSummary"}}}}},"security":[{"HTTPBearer":[]}]}},"/health":{"get":{"summary":"Health Check","description":"健康检查","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"ApplicationMetrics":{"properties":{"request_count":{"type":"integer","minimum":0.0,"title":"Request Count","description":"请求总数"},"error_count":{"type":"integer","minimum":0.0,"title":"Error Count","description":"错误数量"},"avg_response_time":{"type":"number","minimum":0.0,"title":"Avg Response Time","description":"平均响应时间(毫秒)"},"active_connections":{"type":"integer","minimum":0.0,"title":"Active Connections","description":"活跃连接数"},"database_connections":{"additionalProperties":{"type":"integer"},"type":"object","title":"Database Connections","description":"数据库连接池状态"}},"type":"object","required":["request_count","error_count","avg_response_time","active_connections"],"title":"ApplicationMetrics","description":"应用性能指标模型"},"AuditStatus":{"type":"string","enum":["草稿","待审核","已通过","已拒绝"],"title":"AuditStatus","description":"审核状态枚举"},"BaseResponse_bool_":{"properties":{"success":{"type":"boolean","title":"Success","description":"请求是否成功","default":true},"code":{"type":"string","title":"Code","description":"业务状态码","default":"SUCCESS"},"message":{"type":"string","title":"Message","description":"响应消息","default":"操作成功"},"data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Data","description":"响应数据"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"请求追踪ID"}},"type":"object","title":"BaseResponse[bool]"},"CPUInfo":{"properties":{"usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Usage Percent","description":"CPU 使用率百分比"},"core_count":{"type":"integer","minimum":1.0,"title":"Core Count","description":"CPU 核心数量"},"load_avg_1min":{"type":"number","minimum":0.0,"title":"Load Avg 1Min","description":"1分钟负载平均值"},"load_avg_5min":{"type":"number","minimum":0.0,"title":"Load Avg 5Min","description":"5分钟负载平均值"},"load_avg_15min":{"type":"number","minimum":0.0,"title":"Load Avg 15Min","description":"15分钟负载平均值"}},"type":"object","required":["usage_percent","core_count","load_avg_1min","load_avg_5min","load_avg_15min"],"title":"CPUInfo","description":"CPU 信息模型"},"CaptchaResponse":{"properties":{"captcha_id":{"type":"string","title":"Captcha Id","description":"验证码ID"},"image":{"type":"string","title":"Image","description":"验证码图片(base64)"}},"type":"object","required":["captcha_id","image"],"title":"CaptchaResponse","description":"验证码响应模型"},"CompanyScale":{"type":"string","enum":["小型(50人以下)","中型(50-300人)","大型(300人以上)"],"title":"CompanyScale","description":"公司规模枚举"},"DepartmentCreate":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code","description":"部门编码"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"order_index":{"type":"integer","minimum":0.0,"title":"Order Index","description":"排序索引","default":0},"status":{"type":"string","title":"Status","description":"部门状态:active-启用, inactive-停用","default":"active"}},"type":"object","required":["code","name"],"title":"DepartmentCreate","description":"创建部门模式"},"DepartmentResponse":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code","description":"部门编码"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"id":{"type":"string","format":"uuid","title":"Id","description":"部门ID"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"order_index":{"type":"integer","title":"Order Index","description":"排序索引"},"status":{"type":"string","title":"Status","description":"部门状态"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"创建人"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"更新人"}},"type":"object","required":["code","name","id","order_index","status","created_at","updated_at"],"title":"DepartmentResponse","description":"部门响应模式"},"DepartmentTreeResponse-Input":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code","description":"部门编码"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"id":{"type":"string","format":"uuid","title":"Id","description":"部门ID"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"order_index":{"type":"integer","title":"Order Index","description":"排序索引"},"status":{"type":"string","title":"Status","description":"部门状态"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"创建人"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"更新人"},"children":{"items":{"$ref":"#/components/schemas/DepartmentTreeResponse-Input"},"type":"array","title":"Children","description":"子部门列表"}},"type":"object","required":["code","name","id","order_index","status","created_at","updated_at"],"title":"DepartmentTreeResponse","description":"部门树形响应模式"},"DepartmentTreeResponse-Output":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code","description":"部门编码"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"id":{"type":"string","format":"uuid","title":"Id","description":"部门ID"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"order_index":{"type":"integer","title":"Order Index","description":"排序索引"},"status":{"type":"string","title":"Status","description":"部门状态"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"创建人"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"更新人"},"children":{"items":{"$ref":"#/components/schemas/DepartmentTreeResponse-Output"},"type":"array","title":"Children","description":"子部门列表"}},"type":"object","required":["code","name","id","order_index","status","created_at","updated_at"],"title":"DepartmentTreeResponse","description":"部门树形响应模式"},"DepartmentUpdate":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":50,"minLength":1},{"type":"null"}],"title":"Code","description":"部门编码"},"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"order_index":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Order Index","description":"排序索引"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"部门状态"}},"type":"object","title":"DepartmentUpdate","description":"更新部门模式"},"DiskInfo":{"properties":{"total_bytes":{"type":"integer","minimum":0.0,"title":"Total Bytes","description":"总磁盘空间字节数"},"used_bytes":{"type":"integer","minimum":0.0,"title":"Used Bytes","description":"已用磁盘空间字节数"},"free_bytes":{"type":"integer","minimum":0.0,"title":"Free Bytes","description":"可用磁盘空间字节数"},"usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Usage Percent","description":"磁盘使用率百分比"},"partitions":{"items":{"$ref":"#/components/schemas/DiskPartitionInfo"},"type":"array","title":"Partitions","description":"磁盘分区列表"}},"type":"object","required":["total_bytes","used_bytes","free_bytes","usage_percent"],"title":"DiskInfo","description":"磁盘信息模型"},"DiskPartitionInfo":{"properties":{"device":{"type":"string","title":"Device","description":"设备名称"},"mountpoint":{"type":"string","title":"Mountpoint","description":"挂载点"},"total_bytes":{"type":"integer","minimum":0.0,"title":"Total Bytes","description":"总空间字节数"},"used_bytes":{"type":"integer","minimum":0.0,"title":"Used Bytes","description":"已用空间字节数"},"free_bytes":{"type":"integer","minimum":0.0,"title":"Free Bytes","description":"可用空间字节��"},"usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Usage Percent","description":"使用率百分比"}},"type":"object","required":["device","mountpoint","total_bytes","used_bytes","free_bytes","usage_percent"],"title":"DiskPartitionInfo","description":"磁盘分区信息模型"},"ExternalServiceConfigCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"服务名称"},"service_type":{"$ref":"#/components/schemas/ExternalServiceType","description":"服务类型"},"config":{"type":"string","title":"Config","description":"服务配置 (JSON格式)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"服务描述"},"is_active":{"type":"boolean","title":"Is Active","description":"是否启用","default":true},"is_default":{"type":"boolean","title":"Is Default","description":"是否默认服务","default":false}},"type":"object","required":["name","service_type","config"],"title":"ExternalServiceConfigCreate","description":"外部服务配置创建请求"},"ExternalServiceConfigResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"配置ID"},"name":{"type":"string","title":"Name","description":"服务名称"},"service_type":{"$ref":"#/components/schemas/ExternalServiceType","description":"服务类型"},"config":{"type":"string","title":"Config","description":"服务配置"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"服务描述"},"is_active":{"type":"boolean","title":"Is Active","description":"是否启用"},"is_default":{"type":"boolean","title":"Is Default","description":"是否默认服务"},"is_healthy":{"type":"boolean","title":"Is Healthy","description":"是否健康"},"last_health_check":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Health Check","description":"最后健康检查时间"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"}},"type":"object","required":["id","name","service_type","config","is_active","is_default","is_healthy","created_at","updated_at"],"title":"ExternalServiceConfigResponse","description":"外部服务配置响应"},"ExternalServiceConfigUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"服务名称"},"config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config","description":"服务配置 (JSON格式)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"服务描述"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","description":"是否启用"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default","description":"是否默认服务"}},"type":"object","title":"ExternalServiceConfigUpdate","description":"外部服务配置更新请求"},"ExternalServiceType":{"type":"string","enum":["smtp","sms_provider","push_service"],"title":"ExternalServiceType","description":"外部服务类型枚举"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InvoiceType":{"type":"string","enum":["普通发票","增值税专用发票","电子发票"],"title":"InvoiceType","description":"发票类型枚举"},"LogExportRequest":{"properties":{"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"开始时间"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"结束时间"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"用户ID"},"format":{"type":"string","pattern":"^(csv|excel)$","title":"Format","description":"导出格式","default":"csv"}},"type":"object","title":"LogExportRequest","description":"日志导出请求"},"LoginLogStatistics":{"properties":{"total_logins":{"type":"integer","title":"Total Logins","description":"总登录次数"},"successful_logins":{"type":"integer","title":"Successful Logins","description":"成功登录次数"},"failed_logins":{"type":"integer","title":"Failed Logins","description":"失败登录次数"},"suspicious_logins":{"type":"integer","title":"Suspicious Logins","description":"可疑登录次数"},"success_rate":{"type":"number","title":"Success Rate","description":"成功率"},"method_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Method Distribution","description":"登录方式分布"},"daily_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Daily Distribution","description":"每日登录分布"}},"type":"object","required":["total_logins","successful_logins","failed_logins","suspicious_logins","success_rate","method_distribution","daily_distribution"],"title":"LoginLogStatistics","description":"登录日志统计"},"MemoryInfo":{"properties":{"total_bytes":{"type":"integer","minimum":0.0,"title":"Total Bytes","description":"总内存字节数"},"used_bytes":{"type":"integer","minimum":0.0,"title":"Used Bytes","description":"已用内存字节数"},"available_bytes":{"type":"integer","minimum":0.0,"title":"Available Bytes","description":"可用内存字节数"},"usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Usage Percent","description":"内存使用率百分比"},"swap_total_bytes":{"type":"integer","minimum":0.0,"title":"Swap Total Bytes","description":"交换空间总字节数"},"swap_used_bytes":{"type":"integer","minimum":0.0,"title":"Swap Used Bytes","description":"交换空间已用字节数"},"swap_usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Swap Usage Percent","description":"交换空间使用率百分比"}},"type":"object","required":["total_bytes","used_bytes","available_bytes","usage_percent","swap_total_bytes","swap_used_bytes","swap_usage_percent"],"title":"MemoryInfo","description":"内存信息模型"},"MessageLogResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"消息ID"},"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"消息主题"},"recipients":{"items":{"type":"string"},"type":"array","title":"Recipients","description":"接收者列表"},"status":{"type":"string","title":"Status","description":"发送状态"},"priority":{"$ref":"#/components/schemas/MessagePriority","description":"消息优先级"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At","description":"计划发送时间"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At","description":"实际发送时间"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason","description":"失败原因"},"retry_count":{"type":"integer","title":"Retry Count","description":"重试次数"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"}},"type":"object","required":["id","message_type","recipients","status","priority","retry_count","created_at"],"title":"MessageLogResponse","description":"消息日志响应"},"MessagePriority":{"type":"string","enum":["low","normal","high","urgent"],"title":"MessagePriority","description":"消息优先级枚举"},"MessageReceiptResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"接收记录ID"},"message_id":{"type":"string","format":"uuid","title":"Message Id","description":"消息ID"},"recipient":{"type":"string","title":"Recipient","description":"接收者"},"is_read":{"type":"boolean","title":"Is Read","description":"是否已读"},"is_delivered":{"type":"boolean","title":"Is Delivered","description":"是否已投递"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At","description":"阅读时间"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At","description":"投递时间"},"external_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Status","description":"外部服务状态"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"}},"type":"object","required":["id","message_id","recipient","is_read","is_delivered","created_at"],"title":"MessageReceiptResponse","description":"消息接收记录响应"},"MessageSendRequest":{"properties":{"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"recipients":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Recipients","description":"接收者列表"},"subject":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"type":"string","minLength":1,"title":"Content","description":"消息内容"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"模板ID"},"variables":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Variables","description":"模板变量"},"priority":{"$ref":"#/components/schemas/MessagePriority","description":"消息优先级","default":"normal"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At","description":"计划发送时间"}},"type":"object","required":["message_type","recipients","content"],"title":"MessageSendRequest","description":"消息发送请求"},"MessageSendResponse":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id","description":"消息ID"},"status":{"type":"string","title":"Status","description":"发送状态"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At","description":"计划发送时间"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"}},"type":"object","required":["message_id","status","created_at"],"title":"MessageSendResponse","description":"消息发送响应"},"MessageStatus":{"type":"string","enum":["pending","sending","sent","delivered","failed","cancelled"],"title":"MessageStatus","description":"消息状态枚举"},"MessageTemplateCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"模板名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"模板描述"},"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"subject":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"type":"string","minLength":1,"title":"Content","description":"模板内容"},"template_type":{"$ref":"#/components/schemas/TemplateType","description":"模板类型","default":"custom"}},"type":"object","required":["name","message_type","content"],"title":"MessageTemplateCreate","description":"消息模板创建请求"},"MessageTemplateResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"模板ID"},"name":{"type":"string","title":"Name","description":"模板名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"模板描述"},"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"template_type":{"$ref":"#/components/schemas/TemplateType","description":"模板类型"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"type":"string","title":"Content","description":"模板内容"},"variables":{"items":{"type":"string"},"type":"array","title":"Variables","description":"模板变量列表"},"is_active":{"type":"boolean","title":"Is Active","description":"是否启用"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"}},"type":"object","required":["id","name","message_type","template_type","content","variables","is_active","created_at","updated_at"],"title":"MessageTemplateResponse","description":"消息模板响应"},"MessageTemplateUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"模板名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"模板描述"},"subject":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Content","description":"模板内容"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","description":"是否启用"}},"type":"object","title":"MessageTemplateUpdate","description":"消息模板更新请求"},"MessageType":{"type":"string","enum":["email","sms","inbox","push"],"title":"MessageType","description":"消息类型枚举"},"NetworkInfo":{"properties":{"interfaces":{"items":{"$ref":"#/components/schemas/NetworkInterfaceInfo"},"type":"array","title":"Interfaces","description":"网络接口列表"},"connections_count":{"type":"integer","minimum":0.0,"title":"Connections Count","description":"连接数量"}},"type":"object","required":["connections_count"],"title":"NetworkInfo","description":"网络信息模型"},"NetworkInterfaceInfo":{"properties":{"name":{"type":"string","title":"Name","description":"接口名称"},"is_up":{"type":"boolean","title":"Is Up","description":"接口是否启用"},"bytes_sent":{"type":"integer","minimum":0.0,"title":"Bytes Sent","description":"发送字节数"},"bytes_recv":{"type":"integer","minimum":0.0,"title":"Bytes Recv","description":"接收字节数"},"packets_sent":{"type":"integer","minimum":0.0,"title":"Packets Sent","description":"发送包数"},"packets_recv":{"type":"integer","minimum":0.0,"title":"Packets Recv","description":"接收包数"}},"type":"object","required":["name","is_up","bytes_sent","bytes_recv","packets_sent","packets_recv"],"title":"NetworkInterfaceInfo","description":"网络接口信息模型"},"NetworkLogStatistics":{"properties":{"total_requests":{"type":"integer","title":"Total Requests","description":"总请求数"},"error_requests":{"type":"integer","title":"Error Requests","description":"错误请求数"},"slow_requests":{"type":"integer","title":"Slow Requests","description":"慢请求数"},"error_rate":{"type":"number","title":"Error Rate","description":"错误率"},"slow_request_rate":{"type":"number","title":"Slow Request Rate","description":"慢请求率"},"method_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Method Distribution","description":"请求方法分布"},"status_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Distribution","description":"状态码分布"}},"type":"object","required":["total_requests","error_requests","slow_requests","error_rate","slow_request_rate","method_distribution","status_distribution"],"title":"NetworkLogStatistics","description":"网络日志统计"},"OperationLogResponse":{"properties":{"id":{"type":"string","title":"Id","description":"日志ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"username":{"type":"string","title":"Username","description":"用户名"},"user_id":{"type":"string","title":"User Id","description":"用户ID"},"operation_type":{"type":"string","title":"Operation Type","description":"操作类型"},"module":{"type":"string","title":"Module","description":"操作模块"},"action":{"type":"string","title":"Action","description":"操作动作"},"request_method":{"type":"string","title":"Request Method","description":"请求方法"},"request_url":{"type":"string","title":"Request Url","description":"请求URL"},"request_headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Headers","description":"请求头"},"request_body":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Body","description":"请求体"},"request_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Params","description":"请求参数"},"response_status":{"type":"integer","title":"Response Status","description":"响应状态码"},"response_body":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Response Body","description":"响应体"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"错误信息"},"processing_time":{"type":"number","title":"Processing Time","description":"处理时间"}},"type":"object","required":["id","created_at","updated_at","username","user_id","operation_type","module","action","request_method","request_url","response_status","processing_time"],"title":"OperationLogResponse","description":"操作日志响应"},"OperationLogStatistics":{"properties":{"total_operations":{"type":"integer","title":"Total Operations","description":"总操作次数"},"error_operations":{"type":"integer","title":"Error Operations","description":"错误操作次数"},"error_rate":{"type":"number","title":"Error Rate","description":"错误率"},"type_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Type Distribution","description":"操作类型分布"},"module_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Module Distribution","description":"模块分布"}},"type":"object","required":["total_operations","error_operations","error_rate","type_distribution","module_distribution"],"title":"OperationLogStatistics","description":"操作日志统计"},"PagedResponse_DepartmentResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DepartmentResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[DepartmentResponse]"},"PagedResponse_MessageLogResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/MessageLogResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[MessageLogResponse]"},"PagedResponse_MessageTemplateResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/MessageTemplateResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[MessageTemplateResponse]"},"PagedResponse_OperationLogResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/OperationLogResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[OperationLogResponse]"},"PagedResponse_Permission_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Permission"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[Permission]"},"PagedResponse_Role_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Role"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[Role]"},"PagedResponse_TenantAnonymousResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantAnonymousResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[TenantAnonymousResponse]"},"PagedResponse_TenantAuditLogResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantAuditLogResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[TenantAuditLogResponse]"},"PagedResponse_TenantResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[TenantResponse]"},"PagedResponse_UserListResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserListResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[UserListResponse]"},"PagedResponse_UserResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[UserResponse]"},"PerformanceMetricsSummary":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"数据收集时间戳"},"cpu_usage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Cpu Usage","description":"CPU 使用率"},"memory_usage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Memory Usage","description":"内存使用率"},"disk_usage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Disk Usage","description":"磁盘使用率"},"system_load":{"type":"number","minimum":0.0,"title":"System Load","description":"系统负载"},"status":{"type":"string","title":"Status","description":"系统状态"}},"type":"object","required":["timestamp","cpu_usage","memory_usage","disk_usage","system_load","status"],"title":"PerformanceMetricsSummary","description":"性能指标摘要模型"},"Permission":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"权限名称"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"权限描述"},"group":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Group","description":"权限分组"},"resource":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Resource","description":"资源名称"},"action":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Action","description":"操作名称"},"id":{"type":"string","format":"uuid","title":"Id"},"is_system":{"type":"boolean","title":"Is System"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"resource_action":{"type":"string","title":"Resource Action","description":"资源:操作格式"}},"type":"object","required":["name","id","is_system","created_at","updated_at","resource_action"],"title":"Permission","description":"权限响应模型"},"PythonRuntimeInfo":{"properties":{"version":{"type":"string","title":"Version","description":"Python 版本"},"implementation":{"type":"string","title":"Implementation","description":"Python 实现"},"memory_usage_bytes":{"type":"integer","minimum":0.0,"title":"Memory Usage Bytes","description":"内存使用字节数"},"gc_stats":{"additionalProperties":true,"type":"object","title":"Gc Stats","description":"垃圾回收统计"}},"type":"object","required":["version","implementation","memory_usage_bytes"],"title":"PythonRuntimeInfo","description":"Python 运行时信息模型"},"Role":{"properties":{"name":{"type":"string","maxLength":50,"minLength":1,"title":"Name","description":"角色名称"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"角色描述"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["name","id","tenant_id","created_at","updated_at"],"title":"Role","description":"角色响应模型"},"RoleCreate":{"properties":{"name":{"type":"string","maxLength":50,"minLength":1,"title":"Name","description":"角色名称"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"角色描述"},"permission_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Permission Ids","description":"权限ID列表"}},"type":"object","required":["name"],"title":"RoleCreate","description":"创建角色模型"},"RoleUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":50,"minLength":1},{"type":"null"}],"title":"Name","description":"角色名称"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"角色描述"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","description":"是否激活"},"permission_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Permission Ids","description":"权限ID列表"}},"type":"object","title":"RoleUpdate","description":"更新角色模型"},"SystemMetricsResponse":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"数据收集时间戳"},"cpu":{"$ref":"#/components/schemas/CPUInfo","description":"CPU 信息"},"memory":{"$ref":"#/components/schemas/MemoryInfo","description":"内存信息"},"disk":{"$ref":"#/components/schemas/DiskInfo","description":"磁盘信息"},"network":{"$ref":"#/components/schemas/NetworkInfo","description":"网络信息"},"python_runtime":{"$ref":"#/components/schemas/PythonRuntimeInfo","description":"Python 运行时信息"},"application":{"$ref":"#/components/schemas/ApplicationMetrics","description":"应用性能指标"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"元数据"}},"type":"object","required":["timestamp","cpu","memory","disk","network","python_runtime","application"],"title":"SystemMetricsResponse","description":"系统性能指标响应模型"},"TemplateType":{"type":"string","enum":["system","custom"],"title":"TemplateType","description":"模板类型枚举"},"TenantAnonymousResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"租户ID"},"tenant_code":{"type":"string","title":"Tenant Code","description":"租户编码"},"company_name":{"type":"string","title":"Company Name","description":"企业名称"},"audit_status":{"$ref":"#/components/schemas/AuditStatus","description":"审核状态"}},"additionalProperties":false,"type":"object","required":["id","tenant_code","company_name","audit_status"],"title":"TenantAnonymousResponse","description":"租户匿名查询响应模型 - 只包含ID和名称"},"TenantAuditLogResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"日志ID"},"action":{"type":"string","title":"Action","description":"操作类型"},"action_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action By","description":"操作人"},"action_time":{"type":"string","format":"date-time","title":"Action Time","description":"操作时间"},"snapshot_company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Company Name","description":"企业名称快照"},"snapshot_company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Company Type","description":"企业类型快照"},"snapshot_province":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Province","description":"省份快照"},"snapshot_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot City","description":"城市快照"},"snapshot_district":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot District","description":"区县快照"},"snapshot_detailed_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Detailed Address","description":"详细地址快照"},"snapshot_registrant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Registrant","description":"登记人快照"},"snapshot_contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Contact Phone","description":"联系电话快照"},"snapshot_bank_account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Bank Account","description":"银行账号快照"},"snapshot_bank_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Bank Name","description":"开户行快照"},"snapshot_bank_full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Bank Full Name","description":"开户行全称快照"},"snapshot_bank_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Bank Address","description":"开户行地址快照"},"snapshot_social_credit_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Social Credit Code","description":"社会信用代码快照"},"snapshot_legal_person_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Legal Person Name","description":"法人姓名快照"},"snapshot_audit_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Audit Status","description":"审核状态快照"},"snapshot_audit_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Audit Comment","description":"审核备注快照"},"snapshot_company_scale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Company Scale","description":"公司规模快照"},"snapshot_registered_capital":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Snapshot Registered Capital","description":"注册资本快照"},"change_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Summary","description":"变更摘要描述"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address","description":"操作IP地址"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent","description":"用户代理"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"请求追踪ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"}},"additionalProperties":false,"type":"object","required":["id","action","action_time","created_at"],"title":"TenantAuditLogResponse","description":"租户审计日志响应模型"},"TenantAuditRequest":{"properties":{"audit_status":{"$ref":"#/components/schemas/AuditStatus","description":"审核状态"},"audit_comment":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Audit Comment","description":"审核备注"}},"additionalProperties":false,"type":"object","required":["audit_status"],"title":"TenantAuditRequest","description":"租户审核请求模型"},"TenantCreateRequest":{"properties":{"company_name":{"type":"string","maxLength":200,"minLength":2,"title":"Company Name","description":"企业名称"},"tenant_code":{"type":"string","maxLength":200,"minLength":2,"title":"Tenant Code","description":"企业编码"},"company_type":{"$ref":"#/components/schemas/TenantType","description":"企业类型"}},"additionalProperties":false,"type":"object","required":["company_name","tenant_code","company_type"],"title":"TenantCreateRequest","description":"创建租户请求模型"},"TenantResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"租户ID"},"tenant_code":{"type":"string","title":"Tenant Code","description":"租户编码"},"is_active":{"type":"boolean","title":"Is Active","description":"是否活跃"},"company_name":{"type":"string","title":"Company Name","description":"企业名称"},"company_type":{"anyOf":[{"$ref":"#/components/schemas/TenantType"},{"type":"null"}],"description":"企业类型"},"province":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Province","description":"省份"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"城市"},"district":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"District","description":"区县"},"detailed_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detailed Address","description":"详细地址"},"registrant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrant","description":"登记人"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone","description":"联系电话(已脱敏)"},"bank_account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Account","description":"银行账号(已脱敏)"},"bank_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Name","description":"开户行"},"bank_full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Full Name","description":"开户行全称"},"bank_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Address","description":"开户行地址"},"social_credit_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Social Credit Code","description":"社会信用代码(已脱敏)"},"legal_person_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Person Name","description":"法人姓名(已脱敏)"},"company_scale":{"anyOf":[{"$ref":"#/components/schemas/CompanyScale"},{"type":"null"}],"description":"公司规模"},"registered_capital":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Registered Capital","description":"注册资本(万元)"},"established_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Established Date","description":"成立时间"},"invoice_type":{"anyOf":[{"$ref":"#/components/schemas/InvoiceType"},{"type":"null"}],"description":"发票类型"},"business_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Scope","description":"经营范围"},"submit_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submit Time","description":"提交时间"},"audit_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Audit Time","description":"审核时间"},"auditor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auditor","description":"审核人"},"audit_status":{"$ref":"#/components/schemas/AuditStatus","description":"审核状态"},"audit_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audit Comment","description":"审核备注"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"}},"additionalProperties":false,"type":"object","required":["id","tenant_code","is_active","company_name","audit_status","created_at","updated_at"],"title":"TenantResponse","description":"租户响应模型(已脱敏)"},"TenantType":{"type":"string","enum":["个体工商户","有限责任公司","股份有限公司","合伙企业","其他"],"title":"TenantType","description":"企业类型枚举"},"TenantUpdateRequest":{"properties":{"company_name":{"anyOf":[{"type":"string","maxLength":200,"minLength":2},{"type":"null"}],"title":"Company Name","description":"企业名称"},"company_type":{"anyOf":[{"$ref":"#/components/schemas/TenantType"},{"type":"null"}],"description":"企业类型"},"province":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Province","description":"省份"},"city":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"City","description":"城市"},"district":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"District","description":"区县"},"detailed_address":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Detailed Address","description":"详细地址"},"registrant":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Registrant","description":"登记人"},"contact_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Contact Phone","description":"联系电话"},"bank_account":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Bank Account","description":"银行账号"},"bank_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Bank Name","description":"开户行"},"bank_full_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Bank Full Name","description":"开户行全称"},"bank_address":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Bank Address","description":"开户行地址"},"bank_permit_image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Bank Permit Image","description":"开户许可证图片路径"},"social_credit_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Social Credit Code","description":"社会信用代码"},"business_license_image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Business License Image","description":"营业执照图片路径"},"legal_person_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Legal Person Name","description":"法人姓名"},"id_card_front_image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Id Card Front Image","description":"身份证正面图片"},"id_card_back_image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Id Card Back Image","description":"身份证反面图片"},"company_scale":{"anyOf":[{"$ref":"#/components/schemas/CompanyScale"},{"type":"null"}],"description":"公司规模"},"registered_capital":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Registered Capital","description":"注册资本(万元)"},"established_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Established Date","description":"成立时间"},"invoice_type":{"anyOf":[{"$ref":"#/components/schemas/InvoiceType"},{"type":"null"}],"description":"发票类型"},"business_scope":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Business Scope","description":"经营范围"}},"additionalProperties":false,"type":"object","title":"TenantUpdateRequest","description":"更新租户请求模型"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token","description":"访问令牌"},"refresh_token":{"type":"string","title":"Refresh Token","description":"刷新令牌"},"token_type":{"type":"string","title":"Token Type","description":"令牌类型","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In","description":"过期时间(秒)"}},"type":"object","required":["access_token","refresh_token","expires_in"],"title":"Token","description":"令牌模型"},"User":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"邮箱地址"},"username":{"type":"string","maxLength":100,"minLength":3,"title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"type":"string","maxLength":20,"title":"Phone","description":"手机号"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id"},"is_active":{"type":"boolean","title":"Is Active"},"is_superuser":{"type":"boolean","title":"Is Superuser"},"is_verified":{"type":"boolean","title":"Is Verified"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"display_name":{"type":"string","title":"Display Name","description":"显示名称"},"department_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id","description":"部门ID"},"department_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Name","description":"部门名称"}},"type":"object","required":["email","username","phone","id","tenant_id","is_active","is_superuser","is_verified","created_at","updated_at","last_login_at","avatar_url","bio","display_name"],"title":"User","description":"用户响应模型"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"邮箱地址"},"username":{"type":"string","maxLength":100,"minLength":3,"title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"type":"string","maxLength":20,"title":"Phone","description":"手机号"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password","description":"密码"},"tenant_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"scope":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Scope","description":"用户作用域","default":"tenant"},"department_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Department Id","description":"部门ID"},"is_superuser":{"type":"boolean","title":"Is Superuser","description":"是否超级用户","default":false}},"type":"object","required":["email","username","phone","password"],"title":"UserCreate","description":"创建用户模型"},"UserCreateWithCompany":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"邮箱地址"},"username":{"type":"string","maxLength":100,"minLength":3,"title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"type":"string","maxLength":20,"title":"Phone","description":"手机号"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password","description":"密码"},"company_name":{"type":"string","maxLength":200,"minLength":2,"title":"Company Name","description":"企业名称"},"tenant_code":{"type":"string","maxLength":200,"minLength":2,"title":"Tenant Code","description":"企业编码","default":"ede325ee-b976-4f74-9582-d52577f511fc"}},"type":"object","required":["email","username","phone","password","company_name"],"title":"UserCreateWithCompany","description":"创建用户并注册企业模型"},"UserListResponse":{"properties":{"username":{"type":"string","title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","description":"姓名"},"phone":{"type":"string","title":"Phone","description":"电话"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"企业名称"},"user_type":{"type":"string","title":"User Type","description":"用户类型: system/tenant"},"status":{"type":"string","title":"Status","description":"状态: active/inactive"},"is_superuser":{"type":"boolean","title":"Is Superuser","description":"是否超级用户"},"user_type_str":{"type":"string","title":"User Type Str","description":"用户类型描述"}},"type":"object","required":["username","phone","user_type","status","is_superuser","user_type_str"],"title":"UserListResponse","description":"用户列表响应模型 - 用于系统用户管理接口"},"UserLoginWithCaptcha":{"properties":{"identifier":{"type":"string","title":"Identifier","description":"用户名、邮箱或手机号"},"password":{"type":"string","title":"Password","description":"密码"},"captcha_id":{"type":"string","title":"Captcha Id","description":"验证码ID"},"captcha_text":{"type":"string","maxLength":6,"minLength":4,"title":"Captcha Text","description":"验证码文本"}},"type":"object","required":["identifier","password","captcha_id","captcha_text"],"title":"UserLoginWithCaptcha","description":"带验证码的用户登录模型"},"UserResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"用户ID"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"email":{"type":"string","title":"Email","description":"邮箱地址"},"username":{"type":"string","title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"type":"string","title":"Phone","description":"手机号"},"is_active":{"type":"boolean","title":"Is Active","description":"是否激活"},"is_superuser":{"type":"boolean","title":"Is Superuser","description":"是否超级用户"},"is_verified":{"type":"boolean","title":"Is Verified","description":"是否已验证"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At","description":"最后登录时间"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"头像URL"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio","description":"个人简介"},"display_name":{"type":"string","title":"Display Name","description":"显示名称"},"department_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id","description":"部门ID"},"department_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Name","description":"部门名称"},"scope":{"type":"string","title":"Scope","description":"用户作用域"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"企业名称"}},"type":"object","required":["id","email","username","phone","is_active","is_superuser","is_verified","created_at","updated_at","display_name","scope"],"title":"UserResponse","description":"用户响应模型 - 用于API响应"},"UserRoleAssignRequest":{"properties":{"role_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Role Ids","description":"要分配的角色ID列表"}},"type":"object","required":["role_ids"],"title":"UserRoleAssignRequest","description":"用户角色分配请求模型"},"UserRoleResponse":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id","description":"用户ID"},"username":{"type":"string","title":"Username","description":"用户名"},"email":{"type":"string","title":"Email","description":"邮箱"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","description":"全名"},"roles":{"items":{"$ref":"#/components/schemas/Role"},"type":"array","title":"Roles","description":"用户角色列表"},"assigned_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assigned At","description":"分配时间"}},"type":"object","required":["user_id","username","email"],"title":"UserRoleResponse","description":"用户角色分配响应模型"},"UserUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email","description":"邮箱地址"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone","description":"手机号"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"头像URL"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio","description":"个人简介"},"department_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Department Id","description":"部门ID"}},"type":"object","title":"UserUpdate","description":"更新用户模型"},"UserUpdatePassword":{"properties":{"current_password":{"type":"string","title":"Current Password","description":"当前密码"},"new_password":{"type":"string","maxLength":128,"minLength":8,"title":"New Password","description":"新密码"}},"type":"object","required":["current_password","new_password"],"title":"UserUpdatePassword","description":"更新密码模型"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"鸿蒙智慧农业平台","description":"鸿蒙智慧农业SaaS平台 - 多租户多子系统FastAPI应用","version":"1.0.0"},"paths":{"/api/v1/auth/register":{"post":{"tags":["认证"],"summary":"用户注册","description":"用户注册","operationId":"register_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/register-with-company":{"post":{"tags":["认证"],"summary":"用户注册并创建企业","description":"用户注册并创建企业","operationId":"register_with_company_api_v1_auth_register_with_company_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreateWithCompany"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/captcha":{"get":{"tags":["认证"],"summary":"获取验证码","description":"获取登录验证码","operationId":"get_captcha_api_v1_auth_captcha_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptchaResponse"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["认证"],"summary":"用户登录","description":"用户登录(需要验证码)","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLoginWithCaptcha"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["认证"],"summary":"刷新令牌","description":"刷新访问令牌","operationId":"refresh_token_api_v1_auth_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["认证"],"summary":"用户登出","description":"用户登出","operationId":"logout_api_v1_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Logout Api V1 Auth Logout Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/me":{"get":{"tags":["认证"],"summary":"获取当前用户信息","description":"获取当前用户信息","operationId":"get_current_user_info_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["认证"],"summary":"更新当前用户信息","description":"更新当前用户信息","operationId":"update_current_user_api_v1_auth_me_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/change-password":{"post":{"tags":["认证"],"summary":"修改密码","description":"修改密码","operationId":"change_password_api_v1_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdatePassword"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Change Password Api V1 Auth Change Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/verify-token":{"post":{"tags":["认证"],"summary":"验证令牌","description":"验证用户令牌有效性","operationId":"verify_user_token_api_v1_auth_verify_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Verify User Token Api V1 Auth Verify Token Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users":{"get":{"tags":["用户管理"],"summary":"获取用户列表","description":"获取用户列表(需要管理员权限)","operationId":"get_users_api_v1_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词","title":"Search"},"description":"搜索关键词"},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","description":"是否活跃","title":"Is Active"},"description":"是否活跃"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_UserResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["用户管理"],"summary":"创建用户","description":"创建用户(需要管理员权限)","operationId":"create_user_api_v1_users_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}":{"get":{"tags":["用户管理"],"summary":"获取用户详情","description":"获取用户详情(需要管理员权限)","operationId":"get_user_api_v1_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["用户管理"],"summary":"更新用户","description":"更新用户(需要管理员权限)","operationId":"update_user_api_v1_users__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["用户管理"],"summary":"删除用户","description":"删除用户(需要管理员权限)","operationId":"delete_user_api_v1_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Delete User Api V1 Users User Id Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/activate":{"post":{"tags":["用户管理"],"summary":"激活用户","description":"激活用户(需要管理员权限)","operationId":"activate_user_api_v1_users__user_id__activate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Activate User Api V1 Users User Id Activate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/{user_id}/deactivate":{"post":{"tags":["用户管理"],"summary":"停用用户","description":"停用用户(需要管理员权限)","operationId":"deactivate_user_api_v1_users__user_id__deactivate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Deactivate User Api V1 Users User Id Deactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/stats/summary":{"get":{"tags":["用户管理"],"summary":"获取用户统计信息","description":"获取用户统计信息(需要管理员权限)","operationId":"get_user_stats_api_v1_users_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get User Stats Api V1 Users Stats Summary Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/departments/options":{"get":{"tags":["用户管理"],"summary":"获取部门选择列表","description":"获取部门选择列表(用于用户管理中的部门选择,仅限 tenant scope 用户访问)","operationId":"get_department_options_api_v1_users_departments_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DepartmentResponse"},"type":"array","title":"Response Get Department Options Api V1 Users Departments Options Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/permissions/permissions":{"get":{"tags":["用户管理"],"summary":"获取系统权限列表","description":"获取系统权限列表(需要系统权限)","operationId":"get_system_permissions_api_v1_users_permissions_permissions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词","title":"Search"},"description":"搜索关键词"},{"name":"group","in":"query","required":false,"schema":{"type":"string","description":"权限分组过滤","title":"Group"},"description":"权限分组过滤"},{"name":"resource","in":"query","required":false,"schema":{"type":"string","description":"资源过滤","title":"Resource"},"description":"资源过滤"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_Permission_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/permissions/roles":{"get":{"tags":["用户管理"],"summary":"获取角色列表","description":"获取角色列表(支持租户和系统角色)","operationId":"get_roles_api_v1_users_permissions_roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词","title":"Search"},"description":"搜索关键词"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_Role_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["用户管理"],"summary":"创建角色","description":"创建角色","operationId":"create_role_api_v1_users_permissions_roles_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/permissions/roles/{role_id}":{"get":{"tags":["用户管理"],"summary":"获取角色详情","description":"获取角色详情","operationId":"get_role_api_v1_users_permissions_roles__role_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["用户管理"],"summary":"更新角色","description":"更新角色","operationId":"update_role_api_v1_users_permissions_roles__role_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["用户管理"],"summary":"删除角色","description":"删除角色","operationId":"delete_role_api_v1_users_permissions_roles__role_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Delete Role Api V1 Users Permissions Roles Role Id Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/permissions/users/{user_id}/roles":{"post":{"tags":["用户管理"],"summary":"为用户分配角色","description":"为用户分配角色(会替换用户现有角色)","operationId":"assign_roles_to_user_api_v1_users_permissions_users__user_id__roles_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleAssignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["用户管理"],"summary":"获取用户角色列表","description":"获取用户的角色列表","operationId":"get_user_roles_api_v1_users_permissions_users__user_id__roles_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Role"},"title":"Response Get User Roles Api V1 Users Permissions Users User Id Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/permissions/users/{user_id}/roles/{role_id}":{"delete":{"tags":["用户管理"],"summary":"移除用户角色","description":"移除用户的特定角色","operationId":"remove_user_role_api_v1_users_permissions_users__user_id__roles__role_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"role_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Remove User Role Api V1 Users Permissions Users User Id Roles Role Id Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/system/users":{"post":{"tags":["用户管理"],"summary":"创建系统级用户","description":"创建系统级用户(需要系统权限)","operationId":"create_system_user_api_v1_users_system_users_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["用户管理"],"summary":"获取所有用户账户列表","description":"获取所有用户账户列表(需要系统权限)\n\n支持以下功能:\n- 分页查询\n- 多条件搜索过滤(支持企业名称模糊搜索)\n- 系统用户和租户超级用户管理","operationId":"list_system_users_api_v1_users_system_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词(用户名、邮箱、全名、手机号、企业名称)","title":"Search"},"description":"搜索关键词(用户名、邮箱、全名、手机号、企业名称)"},{"name":"is_active","in":"query","required":false,"schema":{"type":"boolean","description":"是否活跃","title":"Is Active"},"description":"是否活跃"},{"name":"tenant_id","in":"query","required":false,"schema":{"type":"string","description":"租户id","title":"Tenant Id"},"description":"租户id"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_UserListResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/system/users/{user_id}":{"get":{"tags":["用户管理"],"summary":"获取系统用户信息","description":"获取系统用户信息(需要系统权限)","operationId":"get_system_user_api_v1_users_system_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["用户管理"],"summary":"更新系统用户信息","description":"更新系统用户信息(需要系统权限)","operationId":"update_system_user_api_v1_users_system_users__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["用户管理"],"summary":"删除系统用户","description":"删除系统用户(需要系统权限)","operationId":"delete_system_user_api_v1_users_system_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Delete System User Api V1 Users System Users User Id Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/system/users/stats/summary":{"get":{"tags":["用户管理"],"summary":"获取系统用户统计信息","description":"获取系统用户统计信息(需要系统权限)","operationId":"get_system_user_stats_api_v1_users_system_users_stats_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Get System User Stats Api V1 Users System Users Stats Summary Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/users/system/users/{user_id}/activate":{"post":{"tags":["用户管理"],"summary":"激活系统用户","description":"激活系统用户(需要系统权限)","operationId":"activate_system_user_api_v1_users_system_users__user_id__activate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Activate System User Api V1 Users System Users User Id Activate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/users/system/users/{user_id}/deactivate":{"post":{"tags":["用户管理"],"summary":"停用系统用户","description":"停用系统用户(需要系统权限)","operationId":"deactivate_system_user_api_v1_users_system_users__user_id__deactivate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Deactivate System User Api V1 Users System Users User Id Deactivate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants":{"post":{"tags":["租户管理"],"summary":"创建租户","description":"创建新租户","operationId":"create_tenant_api_v1_tenants_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["租户管理"],"summary":"查询企业列表","description":"获取租户列表","operationId":"list_tenants_api_v1_tenants_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"企业名称、编码(模糊查询)","title":"Search"},"description":"企业名称、编码(模糊查询)"},{"name":"audit_status","in":"query","required":false,"schema":{"type":"string","description":"审核状态","title":"Audit Status"},"description":"审核状态"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_TenantResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/audit-logs":{"get":{"tags":["租户管理"],"summary":"获取租户审计日志","description":"获取租户审计日志","operationId":"get_tenant_audit_logs_api_v1_tenants_audit_logs_get","parameters":[{"name":"tenant_id","in":"query","required":false,"schema":{"type":"string","description":"租户id","title":"Tenant Id"},"description":"租户id"},{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"搜索关键词(用户名、邮箱、全名、手机号、企业名称)","title":"Search"},"description":"搜索关键词(用户名、邮箱、全名、手机号、企业名称)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_TenantAuditLogResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/me":{"get":{"tags":["租户管理"],"summary":"获取当前租户信息","description":"获取当前登录租户的详细信息","operationId":"get_current_tenant_api_v1_tenants_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/tenants/submit":{"post":{"tags":["租户管理"],"summary":"提交租户审核","description":"提交租户审核","operationId":"submit_tenant_audit_api_v1_tenants_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/tenants/{tenant_id}":{"get":{"tags":["租户管理"],"summary":"获取企业详情","description":"获取租户详情","operationId":"get_tenant_api_v1_tenants__tenant_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["租户管理"],"summary":"删除租户(软删除)","description":"删除租户(软删除)","operationId":"delete_tenant_api_v1_tenants__tenant_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BaseResponse_bool_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/audit":{"post":{"tags":["租户管理"],"summary":"审核租户","description":"审核租户","operationId":"audit_tenant_api_v1_tenants__tenant_id__audit_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantAuditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/disable":{"patch":{"tags":["租户管理"],"summary":"禁用租户","description":"禁用租户","operationId":"disable_tenant_api_v1_tenants__tenant_id__disable_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/{tenant_id}/enable":{"patch":{"tags":["租户管理"],"summary":"启用租户","description":"启用租户","operationId":"enable_tenant_api_v1_tenants__tenant_id__enable_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tenant_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tenant Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tenants/anonymous/list":{"get":{"tags":["租户管理"],"summary":"匿名查询租户列表","description":"匿名查询租户列表 - 只返回已审核通过的租户ID、编码和名称","operationId":"list_anonymous_tenants_api_v1_tenants_anonymous_list_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"企业名称、编码(模糊查询)","title":"Search"},"description":"企业名称、编码(模糊查询)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_TenantAnonymousResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments":{"post":{"tags":["部门管理"],"summary":"创建部门","description":"创建新的部门","operationId":"create_department_api_v1_departments_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["部门管理"],"summary":"获取部门列表","description":"分页获取部门列表,支持状态过滤和模糊查询","operationId":"get_departments_api_v1_departments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":10,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","description":"排序方向","default":"desc","title":"Sort Order"},"description":"排序方向"},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"状态过滤","title":"Status Filter"},"description":"状态过滤"},{"name":"name_like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"部门名称模糊查询","title":"Name Like"},"description":"部门名称模糊查询"},{"name":"code_like","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"部门编码模糊查询","title":"Code Like"},"description":"部门编码模糊查询"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_DepartmentResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/tree":{"get":{"tags":["部门管理"],"summary":"获取部门树形结构","description":"获取部门树形结构(一级部门及其子部门)","operationId":"get_department_tree_api_v1_departments_tree_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DepartmentTreeResponse-Output"},"type":"array","title":"Response Get Department Tree Api V1 Departments Tree Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/departments/{department_id}":{"get":{"tags":["部门管理"],"summary":"获取部门详情","description":"根据ID获取部门详情","operationId":"get_department_api_v1_departments__department_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["部门管理"],"summary":"更新部门","description":"更新部门信息","operationId":"update_department_api_v1_departments__department_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["部门管理"],"summary":"删除部门","description":"删除部门(需要先删除所有子部门和用户关联)","operationId":"delete_department_api_v1_departments__department_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/{department_id}/order":{"patch":{"tags":["部门管理"],"summary":"更新部门排序","description":"更新部门排序索引","operationId":"update_department_order_api_v1_departments__department_id__order_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}},{"name":"order_index","in":"query","required":true,"schema":{"type":"integer","minimum":0,"description":"排序索引","title":"Order Index"},"description":"排序索引"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/{department_id}/status":{"patch":{"tags":["部门管理"],"summary":"更新部门状态","description":"启用或停用部门","operationId":"update_department_status_api_v1_departments__department_id__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}},{"name":"status","in":"query","required":true,"schema":{"type":"string","description":"状态: active/inactive","title":"Status"},"description":"状态: active/inactive"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepartmentResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/{department_id}/users-count":{"get":{"tags":["部门管理"],"summary":"获取部门用户数量","description":"获取部门下的用户数量","operationId":"get_department_users_count_api_v1_departments__department_id__users_count_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"department_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Department Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取登录日志列表","description":"获取登录日志列表","operationId":"list_login_logs_api_v1_logs_login_login_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":10,"title":"Size"},"description":"每页数量"},{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"关键词搜索","title":"Keyword"},"description":"关键词搜索"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"ip_address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IP地址","title":"Ip Address"},"description":"IP地址"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"登录状态","title":"Status"},"description":"登录状态"},{"name":"method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"登录方式","title":"Method"},"description":"登录方式"},{"name":"is_suspicious","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"是否可疑","title":"Is Suspicious"},"description":"是否可疑"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Login Logs Api V1 Logs Login Login Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/statistics":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取登录统计信息","description":"获取登录统计信息","operationId":"get_login_statistics_api_v1_logs_login_login_logs_statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始日期","title":"Start Date"},"description":"开始日期"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束日期","title":"End Date"},"description":"结束日期"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginLogStatistics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/export":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"导出登录日志","description":"导出登录日志","operationId":"export_login_logs_api_v1_logs_login_login_logs_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|excel)$","description":"导出格式","default":"csv","title":"Format"},"description":"导出格式"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/suspicious":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取可疑登录记录","description":"获取可疑登录记录","operationId":"get_suspicious_logins_api_v1_logs_login_login_logs_suspicious_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Suspicious Logins Api V1 Logs Login Login Logs Suspicious Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/failed-attempts":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取失败登录尝试","description":"获取失败登录尝试","operationId":"get_failed_login_attempts_api_v1_logs_login_login_logs_failed_attempts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"},{"name":"username","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户名","title":"Username"},"description":"用户名"},{"name":"ip_address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IP地址","title":"Ip Address"},"description":"IP地址"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Failed Login Attempts Api V1 Logs Login Login Logs Failed Attempts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/login/login-logs/user/{user_id}/history":{"get":{"tags":["日志管理","日志管理","登录日志"],"summary":"获取用户登录历史","description":"获取用户登录历史","operationId":"get_user_login_history_api_v1_logs_login_login_logs_user__user_id__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"记录数量限制","default":50,"title":"Limit"},"description":"记录数量限制"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Login History Api V1 Logs Login Login Logs User User Id History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取操作日志列表","description":"获取操作日志列表","operationId":"list_operation_logs_api_v1_logs_operation_operation_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"关键词搜索","title":"Keyword"},"description":"关键词搜索"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"operation_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作类型","title":"Operation Type"},"description":"操作类型"},{"name":"module","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作模块","title":"Module"},"description":"操作模块"},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作动作","title":"Action"},"description":"操作动作"},{"name":"request_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"请求方法","title":"Request Method"},"description":"请求方法"},{"name":"response_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"响应状态码","title":"Response Status"},"description":"响应状态码"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_OperationLogResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/statistics":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取操作统计信息","description":"获取操作统计信息","operationId":"get_operation_statistics_api_v1_logs_operation_operation_logs_statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始日期","title":"Start Date"},"description":"开始日期"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束日期","title":"End Date"},"description":"结束日期"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationLogStatistics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/export":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"导出操作日志","description":"导出操作日志","operationId":"export_operation_logs_api_v1_logs_operation_operation_logs_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|excel)$","description":"导出格式","default":"csv","title":"Format"},"description":"导出格式"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/errors":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取错误操作记录","description":"获取错误操作记录","operationId":"get_error_operations_api_v1_logs_operation_operation_logs_errors_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"},{"name":"module","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作模块","title":"Module"},"description":"操作模块"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Error Operations Api V1 Logs Operation Operation Logs Errors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/module/{module}/history":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取模块操作记录","description":"获取模块操作记录","operationId":"get_module_operations_api_v1_logs_operation_operation_logs_module__module__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"module","in":"path","required":true,"schema":{"type":"string","title":"Module"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"},{"name":"operation_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作类型","title":"Operation Type"},"description":"操作类型"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Module Operations Api V1 Logs Operation Operation Logs Module Module History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/operation/operation-logs/user/{user_id}/history":{"get":{"tags":["日志管理","日志管理","操作日志"],"summary":"获取用户操作历史","description":"获取用户操作历史","operationId":"get_user_operation_history_api_v1_logs_operation_operation_logs_user__user_id__history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"记录数量限制","default":50,"title":"Limit"},"description":"记录数量限制"},{"name":"module","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作模块","title":"Module"},"description":"操作模块"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Operation History Api V1 Logs Operation Operation Logs User User Id History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取网络日志列表","description":"获取网络日志列表","operationId":"list_network_logs_api_v1_logs_network_network_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":10,"title":"Size"},"description":"每页数量"},{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"关键词搜索","title":"Keyword"},"description":"关键词搜索"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"ip_address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IP地址","title":"Ip Address"},"description":"IP地址"},{"name":"request_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"请求方法","title":"Request Method"},"description":"请求方法"},{"name":"request_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"请求路径","title":"Request Path"},"description":"请求路径"},{"name":"response_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"响应状态码","title":"Response Status"},"description":"响应状态码"},{"name":"is_error","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"是否错误","title":"Is Error"},"description":"是否错误"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Network Logs Api V1 Logs Network Network Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/statistics":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取网络统计信息","description":"获取网络统计信息","operationId":"get_network_statistics_api_v1_logs_network_network_logs_statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始日期","title":"Start Date"},"description":"开始日期"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束日期","title":"End Date"},"description":"结束日期"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkLogStatistics"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/export":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"导出网络日志","description":"导出网络日志","operationId":"export_network_logs_api_v1_logs_network_network_logs_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(csv|excel)$","description":"导出格式","default":"csv","title":"Format"},"description":"导出格式"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/errors":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取错误请求记录","description":"获取错误请求记录","operationId":"get_error_requests_api_v1_logs_network_network_logs_errors_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"},{"name":"status_code","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"特定状态码","title":"Status Code"},"description":"特定状态码"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Error Requests Api V1 Logs Network Network Logs Errors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/slow":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取慢请求记录","description":"获取慢请求记录","operationId":"get_slow_requests_api_v1_logs_network_network_logs_slow_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"threshold_seconds","in":"query","required":false,"schema":{"type":"number","maximum":60.0,"minimum":0.1,"description":"阈值(秒)","default":2.0,"title":"Threshold Seconds"},"description":"阈值(秒)"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Slow Requests Api V1 Logs Network Network Logs Slow Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/ip/{ip_address}/activity":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取IP活动记录","description":"获取IP活动记录","operationId":"get_ip_activity_api_v1_logs_network_network_logs_ip__ip_address__activity_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ip_address","in":"path","required":true,"schema":{"type":"string","title":"Ip Address"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ip Activity Api V1 Logs Network Network Logs Ip Ip Address Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/network/network-logs/endpoint/{endpoint}/statistics":{"get":{"tags":["日志管理","日志管理","网络日志"],"summary":"获取端点统计信息","description":"获取端点统计信息","operationId":"get_endpoint_statistics_api_v1_logs_network_network_logs_endpoint__endpoint__statistics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"endpoint","in":"path","required":true,"schema":{"type":"string","title":"Endpoint"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Endpoint Statistics Api V1 Logs Network Network Logs Endpoint Endpoint Statistics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/{log_type}":{"get":{"tags":["日志管理","日志管理","日志查询"],"summary":"统一日志搜索接口","description":"统一日志搜索接口","operationId":"search_logs_api_v1_logs_query__log_type__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_type","in":"path","required":true,"schema":{"type":"string","title":"Log Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":10,"title":"Size"},"description":"每页数量"},{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"关键词搜索","title":"Keyword"},"description":"关键词搜索"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Time"},"description":"开始时间"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Time"},"description":"结束时间"},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"ip_address","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"IP地址","title":"Ip Address"},"description":"IP地址"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Logs Api V1 Logs Query Log Type Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/{log_type}/export":{"post":{"tags":["日志管理","日志管理","日志查询"],"summary":"统一日志导出接口","description":"统一日志导出接口","operationId":"export_logs_api_v1_logs_query__log_type__export_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_type","in":"path","required":true,"schema":{"type":"string","title":"Log Type"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogExportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/statistics/comprehensive":{"get":{"tags":["日志管理","日志管理","日志查询"],"summary":"获取综合统计信息","description":"获取综合统计信息","operationId":"get_comprehensive_statistics_api_v1_logs_query_statistics_comprehensive_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始日期","title":"Start Date"},"description":"开始日期"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束日期","title":"End Date"},"description":"结束日期"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Comprehensive Statistics Api V1 Logs Query Statistics Comprehensive Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/user/{user_id}/activity":{"get":{"tags":["日志管理","日志管理","日志查询"],"summary":"获取用户活动摘要","description":"获取用户活动摘要","operationId":"get_user_activity_summary_api_v1_logs_query_user__user_id__activity_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"minimum":1,"description":"时间范围(小时)","default":24,"title":"Hours"},"description":"时间范围(小时)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Activity Summary Api V1 Logs Query User User Id Activity Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/query/cleanup":{"post":{"tags":["日志管理","日志管理","日志查询"],"summary":"清理旧日志记录","description":"清理旧日志记录","operationId":"cleanup_old_logs_api_v1_logs_query_cleanup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"保留天数","default":90,"title":"Days"},"description":"保留天数"},{"name":"log_types","in":"query","required":false,"schema":{"type":"string","description":"日志类型,逗号分隔","default":"login,operation,network","title":"Log Types"},"description":"日志类型,逗号分隔"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Cleanup Old Logs Api V1 Logs Query Cleanup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/send":{"post":{"tags":["消息系统","消息发送"],"summary":"发送消息","description":"发送消息\n\n- **message_type**: 消息类型 (email/sms/inbox/push)\n- **recipients**: 接收者列表\n- **subject**: 消息主题(可选)\n- **content**: 消息内容\n- **template_id**: 模板ID(可选)\n- **variables**: 模板变量(可选)\n- **priority**: 消息优先级(low/normal/high/urgent)\n- **scheduled_at**: 计划发送时间(可选)","operationId":"send_message_api_v1_messages_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSendRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSendResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/messages/schedule":{"post":{"tags":["消息系统","消息发送"],"summary":"发送定时消息","description":"发送定时消息\n\n与实时发送相同,但必须指定 scheduled_at 参数","operationId":"schedule_message_api_v1_messages_schedule_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSendRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSendResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/messages/{message_id}/cancel":{"delete":{"tags":["消息系统","消息发送"],"summary":"取消定时消息","description":"取消定时消息\n\n- **message_id**: 消息ID","operationId":"cancel_scheduled_message_api_v1_messages__message_id__cancel_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/{message_id}/retry":{"post":{"tags":["消息系统","消息发送"],"summary":"重试失败的消息","description":"重试失败的消息\n\n- **message_id**: 消息ID","operationId":"retry_failed_message_api_v1_messages__message_id__retry_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/inbox":{"get":{"tags":["消息系统","消息发送"],"summary":"获取用户站内信列表","description":"获取当前用户的站内信列表\n\n- **is_read**: 是否已读(可选)\n- **page**: 页码,默认为1\n- **page_size**: 每页数量,默认为20,最大为100","operationId":"get_user_inbox_messages_api_v1_messages_inbox_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"is_read","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Read"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_InboxMessageResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/inbox/{message_id}/read":{"post":{"tags":["消息系统","消息发送"],"summary":"标记站内信为已读","description":"标记站内信为已读\n\n- **message_id**: 消息ID","operationId":"mark_message_as_read_api_v1_messages_inbox__message_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/inbox/unread-count":{"get":{"tags":["消息系统","消息发送"],"summary":"获取未读消息数量","description":"获取当前用户的未读消息数量","operationId":"get_unread_message_count_api_v1_messages_inbox_unread_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/messages/inbox/read-all":{"post":{"tags":["消息系统","消息发送"],"summary":"标记所有消息为已读","description":"标记当前用户的所有站内信为已读","operationId":"mark_all_messages_as_read_api_v1_messages_inbox_read_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/messages/test-email-config":{"post":{"tags":["消息���统","消息发送"],"summary":"测试邮件配置","description":"测试邮件配置是否有效","operationId":"test_email_config_api_v1_messages_test_email_config_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recipient","in":"query","required":true,"schema":{"type":"string","description":"测试邮件接收地址","title":"Recipient"},"description":"测试邮件接收地址"},{"name":"is_html","in":"query","required":false,"schema":{"type":"boolean","description":"是否HTML","default":true,"title":"Is Html"},"description":"是否HTML"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionConfig"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailConfigTestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/templates":{"post":{"tags":["消息系统","消息模板"],"summary":"创建消息模板","description":"创建消息模板\n\n- **name**: 模板名称\n- **description**: 模板描述(可选)\n- **message_type**: 消息类型\n- **subject**: 消息主题(可选)\n- **content**: 模板内容\n- **template_type**: 模板类型(system/custom)","operationId":"create_template_api_v1_messages_templates_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["消息系统","消息模板"],"summary":"获取模板列表","description":"获取消息模板列表\n\n- **page**: 页码\n- **size**: 每页数量\n- **order_by**: 排序字段\n- **sort_order**: 排序方向\n- **message_type**: 按消息类型过滤\n- **template_type**: 按模板类型过滤\n- **is_active**: 按启用状态过滤","operationId":"list_templates_api_v1_messages_templates_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageType"},{"type":"null"}],"description":"消息类型","title":"Message Type"},"description":"消息类型"},{"name":"template_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/TemplateType"},{"type":"null"}],"description":"模板类型","title":"Template Type"},"description":"模板类型"},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"是否启用","title":"Is Active"},"description":"是否启用"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_MessageTemplateResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/templates/{template_id}":{"get":{"tags":["消息系统","消息模板"],"summary":"获取模板详情","description":"获取模板详情\n\n- **template_id**: 模板ID","operationId":"get_template_api_v1_messages_templates__template_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["消息系统","消息模板"],"summary":"更新模板","description":"更新模板\n\n- **template_id**: 模板ID\n- **name**: 模板名称(可选)\n- **description**: 模板描述(可选)\n- **subject**: 消息主题(可选)\n- **content**: 模板内容(可选)\n- **is_active**: 是否启用(可选)","operationId":"update_template_api_v1_messages_templates__template_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["消息系统","消息模板"],"summary":"删除模板","description":"删除模板\n\n- **template_id**: 模板ID","operationId":"delete_template_api_v1_messages_templates__template_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/templates/{template_id}/test":{"post":{"tags":["消息系统","消息模板"],"summary":"测试模板渲染","description":"测试模板渲染\n\n- **template_id**: 模板ID\n- **test_variables**: 测试变量","operationId":"test_template_api_v1_messages_templates__template_id__test_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Test Variables"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs":{"get":{"tags":["消息系统","消息日志"],"summary":"获取消息日志列表","description":"获取消息日志列表\n\n根据查询条件获取消息发送记录列表,支持按消息类型、发送状态、接收者、时间范围等条件过滤。\n\n- **page**: 页码\n- **size**: 每页数量\n- **order_by**: 排序字段\n- **sort_order**: 排序方向\n- **message_type**: 按消息类型过滤\n- **status**: 按发送状态过滤\n- **recipient**: 按接收者过滤\n- **start_date**: 开始时间\n- **end_date**: 结束时间","operationId":"list_message_logs_api_v1_messages_logs_message_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageType"},{"type":"null"}],"description":"消息类型","title":"Message Type"},"description":"消息类型"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MessageStatus"},{"type":"null"}],"description":"发送状态","title":"Status"},"description":"发送状态"},{"name":"recipient","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"接收者","title":"Recipient"},"description":"接收者"},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"开始时间","title":"Start Date"},"description":"开始时间"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"结束时间","title":"End Date"},"description":"结束时间"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_MessageLogResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/{message_id}":{"get":{"tags":["消息系统","消息日志"],"summary":"获取消息详情","description":"获取消息详情\n\n根据消息ID获取详细的发送记录信息,包括消息内容、发送状态、时间戳等。\n\n- **message_id**: 消息ID","operationId":"get_message_log_api_v1_messages_logs_message_logs__message_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageLogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/{message_id}/receipts":{"get":{"tags":["消息系统","消息日志"],"summary":"获取消息接收记录","description":"获取消息接收记录\n\n获取指定消息的所有接收记录,包括接收者、阅读状态、阅读时间等信息。\n\n- **message_id**: 消息ID","operationId":"get_message_receipts_api_v1_messages_logs_message_logs__message_id__receipts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessageReceiptResponse"},"title":"Response Get Message Receipts Api V1 Messages Logs Message Logs Message Id Receipts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/{message_id}/read":{"post":{"tags":["消息系统","消息日志"],"summary":"标记消息为已读","description":"标记消息为已读\n\n- **message_id**: 消息ID\n- **recipient**: 接收者","operationId":"mark_message_as_read_api_v1_messages_logs_message_logs__message_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Message Id"}},{"name":"recipient","in":"query","required":true,"schema":{"type":"string","description":"接收者","title":"Recipient"},"description":"接收者"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/statistics/overview":{"get":{"tags":["消息系统","消息日志"],"summary":"获取消息统计概览","description":"获取消息统计概览\n\n- **days**: 统计天数","operationId":"get_message_statistics_api_v1_messages_logs_message_logs_statistics_overview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"统计天数","default":30,"title":"Days"},"description":"统计天数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/statistics/recipient/{recipient}":{"get":{"tags":["消息系统","消息日志"],"summary":"获取接收者统计","description":"获取接收者统计\n\n- **recipient**: 接收者\n- **days**: 统计天数","operationId":"get_recipient_statistics_api_v1_messages_logs_message_logs_statistics_recipient__recipient__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recipient","in":"path","required":true,"schema":{"type":"string","title":"Recipient"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"统计天数","default":30,"title":"Days"},"description":"统计天数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/unread/count":{"get":{"tags":["消息系统","消息日志"],"summary":"获取未读消息数量","description":"获取未读消息数量\n\n- **recipient**: 接收者","operationId":"get_unread_count_api_v1_messages_logs_message_logs_unread_count_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"recipient","in":"query","required":false,"schema":{"type":"string","description":"接收者","title":"Recipient"},"description":"接收者"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/logs/message-logs/cleanup":{"post":{"tags":["消息系统","消息日志"],"summary":"清理旧日志","description":"清理旧日志\n\n清理指定天数之前的消息日志和接收记录。\n\n- **days**: 保留天数,默认90天","operationId":"cleanup_old_logs_api_v1_messages_logs_message_logs_cleanup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"保留天数","default":90,"title":"Days"},"description":"保留天数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/configs/configs":{"get":{"tags":["消息系统","外部服务配置"],"summary":"获取外部服务配置列表","description":"获取外部服务配置列表\n\n- **service_type**: 服务类型过滤 (可选)\n- **is_active**: 是否启用过滤 (可选)","operationId":"list_external_service_configs_api_v1_messages_configs_configs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ExternalServiceType"},{"type":"null"}],"title":"Service Type"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"},"title":"Response List External Service Configs Api V1 Messages Configs Configs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["消息系统","外部服务配置"],"summary":"创建外部服务配置","description":"创建外部服务配置\n\n- **name**: 服务名称\n- **service_type**: 服务类型\n- **config**: 服务配置 (JSON格式)\n- **is_active**: 是否启用\n- **is_default**: 是否默认服务","operationId":"create_external_service_config_api_v1_messages_configs_configs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/configs/configs/{config_id}":{"get":{"tags":["消息系统","外部服务配置"],"summary":"获取外部服务配置详情","description":"获取外部服务配置详情\n\n- **config_id**: 配置ID","operationId":"get_external_service_config_api_v1_messages_configs_configs__config_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["消息系统","外部服务配置"],"summary":"更新外部服务配置","description":"更新外部服务配置\n\n- **config_id**: 配置ID\n- **config_data**: 更新数据","operationId":"update_external_service_config_api_v1_messages_configs_configs__config_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["消息系统","外部服务配置"],"summary":"删除外部服务配置","description":"删除外部服务配置\n\n- **config_id**: 配置ID","operationId":"delete_external_service_config_api_v1_messages_configs_configs__config_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/configs/configs/{config_id}/set-default":{"post":{"tags":["消息系统","外部服务配置"],"summary":"设置默认服务","description":"设置默认服务\n\n- **config_id**: 配置ID","operationId":"set_default_service_api_v1_messages_configs_configs__config_id__set_default_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalServiceConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/configs/configs/{config_id}/health-check":{"post":{"tags":["消息系统","外部服务配置"],"summary":"检查服务健康状态","description":"检查服务健康状态\n\n- **config_id**: 配置ID","operationId":"check_service_health_api_v1_messages_configs_configs__config_id__health_check_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Config Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/health":{"get":{"tags":["系统管理"],"summary":"基础健康检查","description":"基础健康检查","operationId":"health_check_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Check Api V1 Health Get"}}}}}}},"/api/v1/health/detailed":{"get":{"tags":["系统管理"],"summary":"详细健康检查","description":"详细健康检查,包含数据库连接状态","operationId":"detailed_health_check_api_v1_health_detailed_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Detailed Health Check Api V1 Health Detailed Get"}}}}}}},"/api/v1/system/info":{"get":{"tags":["系统管理"],"summary":"获取系统信息","description":"获取系统基本信息","operationId":"get_system_info_api_v1_system_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get System Info Api V1 System Info Get"}}}}}}},"/api/v1/system/stats":{"get":{"tags":["系统管理"],"summary":"获取系统统计信息","description":"获取系统统计信息","operationId":"get_system_stats_api_v1_system_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get System Stats Api V1 System Stats Get"}}}}}}},"/api/v1/system/config":{"get":{"tags":["系统管理"],"summary":"获取系统配置","description":"获取公开的系统配置","operationId":"get_system_config_api_v1_system_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get System Config Api V1 System Config Get"}}}}}}},"/api/v1/system/metrics":{"get":{"tags":["系统管理"],"summary":"获取系统性能指标","description":"获取系统性能指标\n\n需要超级管理员权限访问\n\n- **sanitize**: 是否对敏感数据进行脱敏处理(默认:True)","operationId":"get_system_metrics_api_v1_system_metrics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sanitize","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Sanitize"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/system/metrics/summary":{"get":{"tags":["系统管理"],"summary":"获取性能指标摘要","description":"获取系统性能指标摘要\n\n需要超级管理员权限访问","operationId":"get_performance_summary_api_v1_system_metrics_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceMetricsSummary"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/admin/settings":{"post":{"tags":["管理员设置","管理员设置"],"summary":"创建管理员设置","description":"创建新的管理员设置项","operationId":"create_admin_setting_api_v1_admin_settings_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettingsCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["管理员设置","管理员设置"],"summary":"获取管理员设置列表","description":"分页获取管理员设置列表","operationId":"list_admin_settings_api_v1_admin_settings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码","default":1,"title":"Page"},"description":"页码"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"每页数量","default":20,"title":"Size"},"description":"每页数量"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string","description":"排序字段","title":"Order By"},"description":"排序字段"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"排序方向 (asc/desc)","default":"desc","title":"Sort Order"},"description":"排序方向 (asc/desc)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedResponse_AdminSettingsResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/settings/{key}":{"get":{"tags":["管理员设置","管理员设置"],"summary":"获取管理员设置","description":"根据键名获取指定的管理员设置","operationId":"get_admin_setting_api_v1_admin_settings__key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["管理员设置","管理员设置"],"summary":"更新管理员设置","description":"更新指定的管理员设置项","operationId":"update_admin_setting_api_v1_admin_settings__key__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettingsUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["管理员设置","管理员设置"],"summary":"删除管理员设置","description":"删除指定的管理员设置项","operationId":"delete_admin_setting_api_v1_admin_settings__key__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health Check","description":"健康检查","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AdminSettingsCreateRequest":{"properties":{"key":{"type":"string","maxLength":255,"minLength":1,"title":"Key","description":"设置键名"},"json_value":{"additionalProperties":true,"type":"object","title":"Json Value","description":"设置值JSON数据"}},"type":"object","required":["key","json_value"],"title":"AdminSettingsCreateRequest","description":"创建管理员设置请求"},"AdminSettingsResponse":{"properties":{"id":{"type":"string","title":"Id","description":"设置ID"},"key":{"type":"string","title":"Key","description":"设置键名"},"json_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Json Value","description":"设置值JSON数据"}},"type":"object","required":["key"],"title":"AdminSettingsResponse","description":"管理员设置响应"},"AdminSettingsUpdateRequest":{"properties":{"json_value":{"additionalProperties":true,"type":"object","title":"Json Value","description":"设置值JSON数据"}},"type":"object","required":["json_value"],"title":"AdminSettingsUpdateRequest","description":"更新管理员设置请求"},"ApplicationMetrics":{"properties":{"request_count":{"type":"integer","minimum":0.0,"title":"Request Count","description":"请求总数"},"error_count":{"type":"integer","minimum":0.0,"title":"Error Count","description":"错误数量"},"avg_response_time":{"type":"number","minimum":0.0,"title":"Avg Response Time","description":"平均响应时间(毫秒)"},"active_connections":{"type":"integer","minimum":0.0,"title":"Active Connections","description":"活跃连接数"},"database_connections":{"additionalProperties":{"type":"integer"},"type":"object","title":"Database Connections","description":"数据库连接池状态"}},"type":"object","required":["request_count","error_count","avg_response_time","active_connections"],"title":"ApplicationMetrics","description":"应用性能指标模型"},"AuditStatus":{"type":"string","enum":["草稿","待审核","已通过","已拒绝"],"title":"AuditStatus","description":"审核状态枚举"},"BaseResponse_bool_":{"properties":{"success":{"type":"boolean","title":"Success","description":"请求是否成功","default":true},"code":{"type":"string","title":"Code","description":"业务状态码","default":"SUCCESS"},"message":{"type":"string","title":"Message","description":"响应消息","default":"操作成功"},"data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Data","description":"响应数据"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"请求追踪ID"}},"type":"object","title":"BaseResponse[bool]"},"CPUInfo":{"properties":{"usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Usage Percent","description":"CPU 使用率百分比"},"core_count":{"type":"integer","minimum":1.0,"title":"Core Count","description":"CPU 核心数量"},"load_avg_1min":{"type":"number","minimum":0.0,"title":"Load Avg 1Min","description":"1分钟负载平均值"},"load_avg_5min":{"type":"number","minimum":0.0,"title":"Load Avg 5Min","description":"5分钟负载平均值"},"load_avg_15min":{"type":"number","minimum":0.0,"title":"Load Avg 15Min","description":"15分钟负载平均值"}},"type":"object","required":["usage_percent","core_count","load_avg_1min","load_avg_5min","load_avg_15min"],"title":"CPUInfo","description":"CPU 信息模型"},"CaptchaResponse":{"properties":{"captcha_id":{"type":"string","title":"Captcha Id","description":"验证码ID"},"image":{"type":"string","title":"Image","description":"验证码图片(base64)"}},"type":"object","required":["captcha_id","image"],"title":"CaptchaResponse","description":"验证码响应模型"},"CompanyScale":{"type":"string","enum":["小型(50人以下)","中型(50-300人)","大型(300人以上)"],"title":"CompanyScale","description":"公司规模枚举"},"ConnectionConfig":{"properties":{"MAIL_USERNAME":{"type":"string","title":"Mail Username"},"MAIL_PASSWORD":{"type":"string","format":"password","title":"Mail Password","writeOnly":true},"MAIL_PORT":{"type":"integer","title":"Mail Port"},"MAIL_SERVER":{"type":"string","title":"Mail Server"},"MAIL_STARTTLS":{"type":"boolean","title":"Mail Starttls"},"MAIL_SSL_TLS":{"type":"boolean","title":"Mail Ssl Tls"},"MAIL_DEBUG":{"type":"integer","exclusiveMaximum":2.0,"exclusiveMinimum":-1.0,"title":"Mail Debug","default":0},"MAIL_FROM":{"type":"string","format":"email","title":"Mail From"},"MAIL_FROM_NAME":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mail From Name"},"TEMPLATE_FOLDER":{"anyOf":[{"type":"string","format":"directory-path"},{"type":"null"}],"title":"Template Folder"},"SUPPRESS_SEND":{"type":"integer","exclusiveMaximum":2.0,"exclusiveMinimum":-1.0,"title":"Suppress Send","default":0},"USE_CREDENTIALS":{"type":"boolean","title":"Use Credentials","default":true},"VALIDATE_CERTS":{"type":"boolean","title":"Validate Certs","default":true},"TIMEOUT":{"type":"integer","title":"Timeout","default":60},"LOCAL_HOSTNAME":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Local Hostname"},"CERT_BUNDLE":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cert Bundle"}},"additionalProperties":false,"type":"object","required":["MAIL_USERNAME","MAIL_PASSWORD","MAIL_PORT","MAIL_SERVER","MAIL_STARTTLS","MAIL_SSL_TLS","MAIL_FROM"],"title":"ConnectionConfig"},"DepartmentCreate":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code","description":"部门编码"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"order_index":{"type":"integer","minimum":0.0,"title":"Order Index","description":"排序索引","default":0},"status":{"type":"string","title":"Status","description":"部门状态:active-启用, inactive-停用","default":"active"}},"type":"object","required":["code","name"],"title":"DepartmentCreate","description":"创建部门模式"},"DepartmentResponse":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code","description":"部门编码"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"id":{"type":"string","format":"uuid","title":"Id","description":"部门ID"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"order_index":{"type":"integer","title":"Order Index","description":"排序索引"},"status":{"type":"string","title":"Status","description":"部门状态"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"创建人"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"更新人"}},"type":"object","required":["code","name","id","order_index","status","created_at","updated_at"],"title":"DepartmentResponse","description":"部门响应模式"},"DepartmentTreeResponse-Input":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code","description":"部门编码"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"id":{"type":"string","format":"uuid","title":"Id","description":"部门ID"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"order_index":{"type":"integer","title":"Order Index","description":"排序索引"},"status":{"type":"string","title":"Status","description":"部门状态"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"创建人"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"更新人"},"children":{"items":{"$ref":"#/components/schemas/DepartmentTreeResponse-Input"},"type":"array","title":"Children","description":"子部门列表"}},"type":"object","required":["code","name","id","order_index","status","created_at","updated_at"],"title":"DepartmentTreeResponse","description":"部门树形响应模式"},"DepartmentTreeResponse-Output":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code","description":"部门编码"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"id":{"type":"string","format":"uuid","title":"Id","description":"部门ID"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"order_index":{"type":"integer","title":"Order Index","description":"排序索引"},"status":{"type":"string","title":"Status","description":"部门状态"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By","description":"创建人"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By","description":"更新人"},"children":{"items":{"$ref":"#/components/schemas/DepartmentTreeResponse-Output"},"type":"array","title":"Children","description":"子部门列表"}},"type":"object","required":["code","name","id","order_index","status","created_at","updated_at"],"title":"DepartmentTreeResponse","description":"部门树形响应模式"},"DepartmentUpdate":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":50,"minLength":1},{"type":"null"}],"title":"Code","description":"部门编码"},"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"部门名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"部门描述"},"manager_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Manager Name","description":"部门负责人姓名"},"manager_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Manager Phone","description":"部门负责人联系电话"},"manager_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Manager Email","description":"部门负责人邮箱"},"order_index":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Order Index","description":"排序索引"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"部门状态"}},"type":"object","title":"DepartmentUpdate","description":"更新部门模式"},"DiskInfo":{"properties":{"total_bytes":{"type":"integer","minimum":0.0,"title":"Total Bytes","description":"总磁盘空间字节数"},"used_bytes":{"type":"integer","minimum":0.0,"title":"Used Bytes","description":"已用磁盘空间字节数"},"free_bytes":{"type":"integer","minimum":0.0,"title":"Free Bytes","description":"可用磁盘空间字节数"},"usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Usage Percent","description":"磁盘使用率百分比"},"partitions":{"items":{"$ref":"#/components/schemas/DiskPartitionInfo"},"type":"array","title":"Partitions","description":"磁盘分区列表"}},"type":"object","required":["total_bytes","used_bytes","free_bytes","usage_percent"],"title":"DiskInfo","description":"磁盘信息模型"},"DiskPartitionInfo":{"properties":{"device":{"type":"string","title":"Device","description":"设备名称"},"mountpoint":{"type":"string","title":"Mountpoint","description":"挂载点"},"total_bytes":{"type":"integer","minimum":0.0,"title":"Total Bytes","description":"总空间字节数"},"used_bytes":{"type":"integer","minimum":0.0,"title":"Used Bytes","description":"已用空间字节数"},"free_bytes":{"type":"integer","minimum":0.0,"title":"Free Bytes","description":"可用空间字节数"},"usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Usage Percent","description":"使用率百分比"}},"type":"object","required":["device","mountpoint","total_bytes","used_bytes","free_bytes","usage_percent"],"title":"DiskPartitionInfo","description":"磁盘分区信息模型"},"EmailConfigTestResponse":{"properties":{"success":{"type":"boolean","title":"Success","description":"测试是否成功"},"message":{"type":"string","title":"Message","description":"测试结果消息"},"config_valid":{"type":"boolean","title":"Config Valid","description":"邮件配置是否有效"},"connection_test":{"type":"boolean","title":"Connection Test","description":"连接测试是否通过"},"delivery_test":{"type":"boolean","title":"Delivery Test","description":"投递测试是否通过"},"error_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Details","description":"错误详情(如果有)"}},"type":"object","required":["success","message","config_valid","connection_test","delivery_test"],"title":"EmailConfigTestResponse","description":"邮件配置测试响应"},"ExternalServiceConfigCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"服务名称"},"service_type":{"$ref":"#/components/schemas/ExternalServiceType","description":"服务类型"},"config":{"type":"string","title":"Config","description":"服务配置 (JSON格式)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"服务描述"},"is_active":{"type":"boolean","title":"Is Active","description":"是否启用","default":true},"is_default":{"type":"boolean","title":"Is Default","description":"是否默认服务","default":false}},"type":"object","required":["name","service_type","config"],"title":"ExternalServiceConfigCreate","description":"外部服务配置创建请求"},"ExternalServiceConfigResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"配置ID"},"name":{"type":"string","title":"Name","description":"服务名称"},"service_type":{"$ref":"#/components/schemas/ExternalServiceType","description":"服务类型"},"config":{"type":"string","title":"Config","description":"服务配置"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"服务描述"},"is_active":{"type":"boolean","title":"Is Active","description":"是否启用"},"is_default":{"type":"boolean","title":"Is Default","description":"是否默认服务"},"is_healthy":{"type":"boolean","title":"Is Healthy","description":"是否健康"},"last_health_check":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Health Check","description":"最后健康检查时间"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"}},"type":"object","required":["id","name","service_type","config","is_active","is_default","is_healthy","created_at","updated_at"],"title":"ExternalServiceConfigResponse","description":"外部服务配置响应"},"ExternalServiceConfigUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"服务名称"},"config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config","description":"服务配置 (JSON格式)"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"服务描述"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","description":"是否启用"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default","description":"是否默认服务"}},"type":"object","title":"ExternalServiceConfigUpdate","description":"外部服务配置更新请求"},"ExternalServiceType":{"type":"string","enum":["smtp","sms_provider","push_service"],"title":"ExternalServiceType","description":"外部服务类型枚举"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InboxMessageResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"消息ID"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"type":"string","title":"Content","description":"消息内容"},"priority":{"$ref":"#/components/schemas/MessagePriority","description":"消息优先级"},"is_read":{"type":"boolean","title":"Is Read","description":"是否已读"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At","description":"阅读时间"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At","description":"发送时间"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"recipient":{"type":"string","title":"Recipient","description":"接收者号码"},"recipient_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient Name","description":"接收者名字"},"retry_count":{"type":"integer","title":"Retry Count","description":"重试次数"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason","description":"失败原因"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At","description":"计划发送时间"}},"additionalProperties":false,"type":"object","required":["id","content","priority","is_read","created_at","message_type","recipient","retry_count"],"title":"InboxMessageResponse","description":"站内信响应"},"InvoiceType":{"type":"string","enum":["普通发票","增值税专用发票","电子发票"],"title":"InvoiceType","description":"发票类型枚举"},"LogExportRequest":{"properties":{"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"开始时间"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"结束时间"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"用户ID"},"format":{"type":"string","pattern":"^(csv|excel)$","title":"Format","description":"导出格式","default":"csv"}},"type":"object","title":"LogExportRequest","description":"日志导出请求"},"LoginLogStatistics":{"properties":{"total_logins":{"type":"integer","title":"Total Logins","description":"总登录次数"},"successful_logins":{"type":"integer","title":"Successful Logins","description":"成功登录次数"},"failed_logins":{"type":"integer","title":"Failed Logins","description":"失败登录次数"},"suspicious_logins":{"type":"integer","title":"Suspicious Logins","description":"可疑登录次数"},"success_rate":{"type":"number","title":"Success Rate","description":"成功率"},"method_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Method Distribution","description":"登录方式分布"},"daily_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Daily Distribution","description":"每日登录分布"}},"type":"object","required":["total_logins","successful_logins","failed_logins","suspicious_logins","success_rate","method_distribution","daily_distribution"],"title":"LoginLogStatistics","description":"登录日志统计"},"MemoryInfo":{"properties":{"total_bytes":{"type":"integer","minimum":0.0,"title":"Total Bytes","description":"总内存字节数"},"used_bytes":{"type":"integer","minimum":0.0,"title":"Used Bytes","description":"已用内存字节数"},"available_bytes":{"type":"integer","minimum":0.0,"title":"Available Bytes","description":"可用内存字节数"},"usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Usage Percent","description":"内存使用率百分比"},"swap_total_bytes":{"type":"integer","minimum":0.0,"title":"Swap Total Bytes","description":"交换空间总字节数"},"swap_used_bytes":{"type":"integer","minimum":0.0,"title":"Swap Used Bytes","description":"交换空间已用字节数"},"swap_usage_percent":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Swap Usage Percent","description":"交换空间使用率百分比"}},"type":"object","required":["total_bytes","used_bytes","available_bytes","usage_percent","swap_total_bytes","swap_used_bytes","swap_usage_percent"],"title":"MemoryInfo","description":"内存信息模型"},"MessageLogResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"消息ID"},"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"消息主题"},"recipients":{"items":{"type":"string"},"type":"array","title":"Recipients","description":"接收者列表"},"status":{"type":"string","title":"Status","description":"发送状态"},"priority":{"$ref":"#/components/schemas/MessagePriority","description":"消息优先级"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At","description":"计划发送时间"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At","description":"实际发送时间"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason","description":"失败原因"},"retry_count":{"type":"integer","title":"Retry Count","description":"重试次数"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"}},"type":"object","required":["id","message_type","recipients","status","priority","retry_count","created_at"],"title":"MessageLogResponse","description":"消息日志响应"},"MessagePriority":{"type":"string","enum":["low","normal","high","urgent"],"title":"MessagePriority","description":"消息优先级枚举"},"MessageReceiptResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"接收记录ID"},"message_id":{"type":"string","format":"uuid","title":"Message Id","description":"消息ID"},"recipient":{"type":"string","title":"Recipient","description":"接收者"},"is_read":{"type":"boolean","title":"Is Read","description":"是否已读"},"is_delivered":{"type":"boolean","title":"Is Delivered","description":"是否已投递"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At","description":"阅读时间"},"delivered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Delivered At","description":"投递时间"},"external_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Status","description":"外部服务状态"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"}},"type":"object","required":["id","message_id","recipient","is_read","is_delivered","created_at"],"title":"MessageReceiptResponse","description":"消息接收记录响应"},"MessageSendRequest":{"properties":{"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"recipients":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Recipients","description":"接收者列表"},"subject":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"type":"string","minLength":1,"title":"Content","description":"消息内容"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"模板ID"},"variables":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Variables","description":"模板变量"},"priority":{"$ref":"#/components/schemas/MessagePriority","description":"消息优先级","default":"normal"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At","description":"计划发送时间"}},"type":"object","required":["message_type","recipients","content"],"title":"MessageSendRequest","description":"消息发送请求"},"MessageSendResponse":{"properties":{"message_id":{"type":"string","format":"uuid","title":"Message Id","description":"消息ID"},"status":{"type":"string","title":"Status","description":"发送状态"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At","description":"计划发送时间"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"}},"type":"object","required":["message_id","status","created_at"],"title":"MessageSendResponse","description":"消息发送响应"},"MessageStatus":{"type":"string","enum":["pending","sending","sent","delivered","failed","cancelled"],"title":"MessageStatus","description":"消息状态枚举"},"MessageTemplateCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"模板名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"模板描述"},"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"subject":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"type":"string","minLength":1,"title":"Content","description":"模板内容"},"template_type":{"$ref":"#/components/schemas/TemplateType","description":"模板类型","default":"custom"}},"type":"object","required":["name","message_type","content"],"title":"MessageTemplateCreate","description":"消息模板创建请求"},"MessageTemplateResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"模板ID"},"name":{"type":"string","title":"Name","description":"模板名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"模板描述"},"message_type":{"$ref":"#/components/schemas/MessageType","description":"消息类型"},"template_type":{"$ref":"#/components/schemas/TemplateType","description":"模板类型"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"type":"string","title":"Content","description":"模板内容"},"variables":{"items":{"type":"string"},"type":"array","title":"Variables","description":"模板变量列表"},"is_active":{"type":"boolean","title":"Is Active","description":"是否启用"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"}},"type":"object","required":["id","name","message_type","template_type","content","variables","is_active","created_at","updated_at"],"title":"MessageTemplateResponse","description":"消息模板响应"},"MessageTemplateUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"模板名称"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"模板描述"},"subject":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Subject","description":"消息主题"},"content":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Content","description":"模板内容"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","description":"是否启用"}},"type":"object","title":"MessageTemplateUpdate","description":"消息模板更新请求"},"MessageType":{"type":"string","enum":["email","sms","inbox","push"],"title":"MessageType","description":"消息类型枚举"},"NetworkInfo":{"properties":{"interfaces":{"items":{"$ref":"#/components/schemas/NetworkInterfaceInfo"},"type":"array","title":"Interfaces","description":"网络接口列表"},"connections_count":{"type":"integer","minimum":0.0,"title":"Connections Count","description":"连接数量"}},"type":"object","required":["connections_count"],"title":"NetworkInfo","description":"网络信息模型"},"NetworkInterfaceInfo":{"properties":{"name":{"type":"string","title":"Name","description":"接口名称"},"is_up":{"type":"boolean","title":"Is Up","description":"接口是否启用"},"bytes_sent":{"type":"integer","minimum":0.0,"title":"Bytes Sent","description":"发送字节数"},"bytes_recv":{"type":"integer","minimum":0.0,"title":"Bytes Recv","description":"接收字节数"},"packets_sent":{"type":"integer","minimum":0.0,"title":"Packets Sent","description":"发送包数"},"packets_recv":{"type":"integer","minimum":0.0,"title":"Packets Recv","description":"接收包数"}},"type":"object","required":["name","is_up","bytes_sent","bytes_recv","packets_sent","packets_recv"],"title":"NetworkInterfaceInfo","description":"网络接口信息模型"},"NetworkLogStatistics":{"properties":{"total_requests":{"type":"integer","title":"Total Requests","description":"总请求数"},"error_requests":{"type":"integer","title":"Error Requests","description":"错误请求数"},"slow_requests":{"type":"integer","title":"Slow Requests","description":"慢请求数"},"error_rate":{"type":"number","title":"Error Rate","description":"错误率"},"slow_request_rate":{"type":"number","title":"Slow Request Rate","description":"慢请求率"},"method_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Method Distribution","description":"请求方法分布"},"status_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Distribution","description":"状态码分布"}},"type":"object","required":["total_requests","error_requests","slow_requests","error_rate","slow_request_rate","method_distribution","status_distribution"],"title":"NetworkLogStatistics","description":"网络日志统计"},"OperationLogResponse":{"properties":{"id":{"type":"string","title":"Id","description":"日志ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"username":{"type":"string","title":"Username","description":"用户名"},"user_id":{"type":"string","title":"User Id","description":"用户ID"},"operation_type":{"type":"string","title":"Operation Type","description":"操作类型"},"module":{"type":"string","title":"Module","description":"操作模块"},"action":{"type":"string","title":"Action","description":"操作动作"},"request_method":{"type":"string","title":"Request Method","description":"请求方法"},"request_url":{"type":"string","title":"Request Url","description":"请求URL"},"request_headers":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Headers","description":"请求头"},"request_body":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Body","description":"请求体"},"request_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Params","description":"请求参数"},"response_status":{"type":"integer","title":"Response Status","description":"响应状态码"},"response_body":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Response Body","description":"响应体"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"错误信息"},"processing_time":{"type":"number","title":"Processing Time","description":"处理时间"}},"type":"object","required":["id","created_at","updated_at","username","user_id","operation_type","module","action","request_method","request_url","response_status","processing_time"],"title":"OperationLogResponse","description":"操作日志响应"},"OperationLogStatistics":{"properties":{"total_operations":{"type":"integer","title":"Total Operations","description":"总操作次数"},"error_operations":{"type":"integer","title":"Error Operations","description":"错误操作次数"},"error_rate":{"type":"number","title":"Error Rate","description":"错误率"},"type_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Type Distribution","description":"操作类型分布"},"module_distribution":{"additionalProperties":{"type":"integer"},"type":"object","title":"Module Distribution","description":"模块分布"}},"type":"object","required":["total_operations","error_operations","error_rate","type_distribution","module_distribution"],"title":"OperationLogStatistics","description":"操作日志统计"},"PagedResponse_AdminSettingsResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AdminSettingsResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[AdminSettingsResponse]"},"PagedResponse_DepartmentResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DepartmentResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当��数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[DepartmentResponse]"},"PagedResponse_InboxMessageResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/InboxMessageResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[InboxMessageResponse]"},"PagedResponse_MessageLogResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/MessageLogResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[MessageLogResponse]"},"PagedResponse_MessageTemplateResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/MessageTemplateResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[MessageTemplateResponse]"},"PagedResponse_OperationLogResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/OperationLogResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[OperationLogResponse]"},"PagedResponse_Permission_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Permission"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[Permission]"},"PagedResponse_Role_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Role"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[Role]"},"PagedResponse_TenantAnonymousResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantAnonymousResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[TenantAnonymousResponse]"},"PagedResponse_TenantAuditLogResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantAuditLogResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[TenantAuditLogResponse]"},"PagedResponse_TenantResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TenantResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[TenantResponse]"},"PagedResponse_UserListResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserListResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[UserListResponse]"},"PagedResponse_UserResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserResponse"},"type":"array","title":"Data","description":"数据列表"},"total":{"type":"integer","title":"Total","description":"数据总数"},"page":{"type":"integer","title":"Page","description":"当前页数"},"size":{"type":"integer","title":"Size","description":"当前数量"},"total_pages":{"type":"integer","title":"Total Pages","description":"总页数"},"has_next":{"type":"boolean","title":"Has Next","description":"是否有下一页"},"has_prev":{"type":"boolean","title":"Has Prev","description":"是否有上一页"}},"type":"object","required":["total","page","size","total_pages","has_next","has_prev"],"title":"PagedResponse[UserResponse]"},"PerformanceMetricsSummary":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"数据收集时间戳"},"cpu_usage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Cpu Usage","description":"CPU 使用率"},"memory_usage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Memory Usage","description":"内存使用率"},"disk_usage":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Disk Usage","description":"磁盘使用率"},"system_load":{"type":"number","minimum":0.0,"title":"System Load","description":"系统负载"},"status":{"type":"string","title":"Status","description":"系统状态"}},"type":"object","required":["timestamp","cpu_usage","memory_usage","disk_usage","system_load","status"],"title":"PerformanceMetricsSummary","description":"性能指标摘要模型"},"Permission":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"权限名称"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"权限描述"},"group":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Group","description":"权限分组"},"resource":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Resource","description":"资源名称"},"action":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Action","description":"操作名称"},"id":{"type":"string","format":"uuid","title":"Id"},"is_system":{"type":"boolean","title":"Is System"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"resource_action":{"type":"string","title":"Resource Action","description":"资源:操作格式"}},"type":"object","required":["name","id","is_system","created_at","updated_at","resource_action"],"title":"Permission","description":"权限响应模型"},"PythonRuntimeInfo":{"properties":{"version":{"type":"string","title":"Version","description":"Python 版本"},"implementation":{"type":"string","title":"Implementation","description":"Python 实现"},"memory_usage_bytes":{"type":"integer","minimum":0.0,"title":"Memory Usage Bytes","description":"内存使用字节数"},"gc_stats":{"additionalProperties":true,"type":"object","title":"Gc Stats","description":"垃圾回收统计"}},"type":"object","required":["version","implementation","memory_usage_bytes"],"title":"PythonRuntimeInfo","description":"Python 运行时信息模型"},"Role":{"properties":{"name":{"type":"string","maxLength":50,"minLength":1,"title":"Name","description":"角色名称"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"角色描述"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["name","id","tenant_id","created_at","updated_at"],"title":"Role","description":"角色响应模型"},"RoleCreate":{"properties":{"name":{"type":"string","maxLength":50,"minLength":1,"title":"Name","description":"角色名称"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"角色描述"},"permission_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Permission Ids","description":"权限ID列表"}},"type":"object","required":["name"],"title":"RoleCreate","description":"创建角色模型"},"RoleUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":50,"minLength":1},{"type":"null"}],"title":"Name","description":"角色名称"},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description","description":"角色描述"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","description":"是否激活"},"permission_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Permission Ids","description":"权限ID列表"}},"type":"object","title":"RoleUpdate","description":"更新角色模型"},"SystemMetricsResponse":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"数据收集时间戳"},"cpu":{"$ref":"#/components/schemas/CPUInfo","description":"CPU 信息"},"memory":{"$ref":"#/components/schemas/MemoryInfo","description":"内存信息"},"disk":{"$ref":"#/components/schemas/DiskInfo","description":"磁盘信息"},"network":{"$ref":"#/components/schemas/NetworkInfo","description":"网络信息"},"python_runtime":{"$ref":"#/components/schemas/PythonRuntimeInfo","description":"Python 运行时信息"},"application":{"$ref":"#/components/schemas/ApplicationMetrics","description":"应用性能指标"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"元数据"}},"type":"object","required":["timestamp","cpu","memory","disk","network","python_runtime","application"],"title":"SystemMetricsResponse","description":"系统性能指标响应模型"},"TemplateType":{"type":"string","enum":["system","custom"],"title":"TemplateType","description":"模板类型枚举"},"TenantAnonymousResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"租户ID"},"tenant_code":{"type":"string","title":"Tenant Code","description":"租户编码"},"company_name":{"type":"string","title":"Company Name","description":"企业名称"},"audit_status":{"$ref":"#/components/schemas/AuditStatus","description":"审核状态"}},"additionalProperties":false,"type":"object","required":["id","tenant_code","company_name","audit_status"],"title":"TenantAnonymousResponse","description":"租户匿名查询响应模型 - 只包含ID和名称"},"TenantAuditLogResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"日志ID"},"action":{"type":"string","title":"Action","description":"操作类型"},"action_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action By","description":"操作人"},"action_time":{"type":"string","format":"date-time","title":"Action Time","description":"操作时间"},"snapshot_company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Company Name","description":"企业名称快照"},"snapshot_company_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Company Type","description":"企业类型快照"},"snapshot_province":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Province","description":"省份快照"},"snapshot_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot City","description":"城市快照"},"snapshot_district":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot District","description":"区县快照"},"snapshot_detailed_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Detailed Address","description":"详细地址快照"},"snapshot_registrant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Registrant","description":"登记人快照"},"snapshot_contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Contact Phone","description":"联系电话快照"},"snapshot_bank_account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Bank Account","description":"银行账号快照"},"snapshot_bank_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Bank Name","description":"开户行快照"},"snapshot_bank_full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Bank Full Name","description":"开户行全称快照"},"snapshot_bank_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Bank Address","description":"开户行地址快照"},"snapshot_social_credit_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Social Credit Code","description":"社会信用代码快照"},"snapshot_legal_person_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Legal Person Name","description":"法人姓名快照"},"snapshot_audit_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Audit Status","description":"审核状态快照"},"snapshot_audit_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Audit Comment","description":"审核备注快照"},"snapshot_company_scale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapshot Company Scale","description":"公司规模快照"},"snapshot_registered_capital":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Snapshot Registered Capital","description":"注册资本快照"},"change_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Change Summary","description":"变更摘要描述"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address","description":"操作IP地址"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent","description":"用户代理"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id","description":"请求追踪ID"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"}},"additionalProperties":false,"type":"object","required":["id","action","action_time","created_at"],"title":"TenantAuditLogResponse","description":"租户审计日志响应模型"},"TenantAuditRequest":{"properties":{"audit_status":{"$ref":"#/components/schemas/AuditStatus","description":"审核状态"},"audit_comment":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Audit Comment","description":"审核备注"}},"additionalProperties":false,"type":"object","required":["audit_status"],"title":"TenantAuditRequest","description":"租户审核请求模型"},"TenantCreateRequest":{"properties":{"company_name":{"type":"string","maxLength":200,"minLength":2,"title":"Company Name","description":"企业名称"},"tenant_code":{"type":"string","maxLength":200,"minLength":2,"title":"Tenant Code","description":"企业编码"},"company_type":{"$ref":"#/components/schemas/TenantType","description":"企业类型"}},"additionalProperties":false,"type":"object","required":["company_name","tenant_code","company_type"],"title":"TenantCreateRequest","description":"创建租户请求模型"},"TenantResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"租户ID"},"tenant_code":{"type":"string","title":"Tenant Code","description":"租户编码"},"is_active":{"type":"boolean","title":"Is Active","description":"是否活跃"},"company_name":{"type":"string","title":"Company Name","description":"企业名称"},"company_type":{"anyOf":[{"$ref":"#/components/schemas/TenantType"},{"type":"null"}],"description":"企业类型"},"province":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Province","description":"省份"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"城市"},"district":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"District","description":"区县"},"detailed_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detailed Address","description":"详细地址"},"registrant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrant","description":"登记人"},"contact_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Phone","description":"联系电话(已脱敏)"},"bank_account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Account","description":"银行账号(已脱敏)"},"bank_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Name","description":"开户行"},"bank_full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Full Name","description":"开户行全称"},"bank_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Address","description":"开户行地址"},"social_credit_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Social Credit Code","description":"社会信用代码(已脱敏)"},"legal_person_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Person Name","description":"法人姓名(已脱敏)"},"company_scale":{"anyOf":[{"$ref":"#/components/schemas/CompanyScale"},{"type":"null"}],"description":"公司规模"},"registered_capital":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Registered Capital","description":"注册资本(万元)"},"established_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Established Date","description":"成立时间"},"invoice_type":{"anyOf":[{"$ref":"#/components/schemas/InvoiceType"},{"type":"null"}],"description":"发票类型"},"business_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Business Scope","description":"经营范围"},"submit_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submit Time","description":"提交时间"},"audit_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Audit Time","description":"审核时间"},"auditor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auditor","description":"审核人"},"audit_status":{"$ref":"#/components/schemas/AuditStatus","description":"审核状态"},"audit_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audit Comment","description":"审核备注"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"}},"additionalProperties":false,"type":"object","required":["id","tenant_code","is_active","company_name","audit_status","created_at","updated_at"],"title":"TenantResponse","description":"租户响应模型(已脱敏)"},"TenantType":{"type":"string","enum":["个体工商户","有限责任公司","股份有限公司","合伙企业","其他"],"title":"TenantType","description":"企业类型枚举"},"TenantUpdateRequest":{"properties":{"company_name":{"anyOf":[{"type":"string","maxLength":200,"minLength":2},{"type":"null"}],"title":"Company Name","description":"企业名称"},"company_type":{"anyOf":[{"$ref":"#/components/schemas/TenantType"},{"type":"null"}],"description":"企业类型"},"province":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Province","description":"省份"},"city":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"City","description":"城市"},"district":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"District","description":"区县"},"detailed_address":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Detailed Address","description":"详细地址"},"registrant":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Registrant","description":"登记人"},"contact_phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Contact Phone","description":"联系电话"},"bank_account":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Bank Account","description":"银行账号"},"bank_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Bank Name","description":"开户行"},"bank_full_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Bank Full Name","description":"开户行全称"},"bank_address":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Bank Address","description":"开户行地址"},"bank_permit_image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Bank Permit Image","description":"开户许可证图片路径"},"social_credit_code":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Social Credit Code","description":"社会信用代码"},"business_license_image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Business License Image","description":"营业执照图片路径"},"legal_person_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Legal Person Name","description":"法人姓名"},"id_card_front_image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Id Card Front Image","description":"身份证正面图片"},"id_card_back_image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Id Card Back Image","description":"身份证反面图片"},"company_scale":{"anyOf":[{"$ref":"#/components/schemas/CompanyScale"},{"type":"null"}],"description":"公司规模"},"registered_capital":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Registered Capital","description":"注册资本(万元)"},"established_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Established Date","description":"成立时间"},"invoice_type":{"anyOf":[{"$ref":"#/components/schemas/InvoiceType"},{"type":"null"}],"description":"发票类型"},"business_scope":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Business Scope","description":"经营范围"}},"additionalProperties":false,"type":"object","title":"TenantUpdateRequest","description":"更新租户请求模型"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token","description":"访问令牌"},"refresh_token":{"type":"string","title":"Refresh Token","description":"刷新令牌"},"token_type":{"type":"string","title":"Token Type","description":"令牌类型","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In","description":"过期时间(秒)"}},"type":"object","required":["access_token","refresh_token","expires_in"],"title":"Token","description":"令牌模型"},"User":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"邮箱地址"},"username":{"type":"string","maxLength":100,"minLength":3,"title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"type":"string","maxLength":20,"title":"Phone","description":"手机号"},"id":{"type":"string","format":"uuid","title":"Id"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id"},"is_active":{"type":"boolean","title":"Is Active"},"is_superuser":{"type":"boolean","title":"Is Superuser"},"is_verified":{"type":"boolean","title":"Is Verified"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"display_name":{"type":"string","title":"Display Name","description":"显示名称"},"department_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id","description":"部门ID"},"department_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Name","description":"部门名称"}},"type":"object","required":["email","username","phone","id","tenant_id","is_active","is_superuser","is_verified","created_at","updated_at","last_login_at","avatar_url","bio","display_name"],"title":"User","description":"用户响应模型"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"邮箱地址"},"username":{"type":"string","maxLength":100,"minLength":3,"title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"type":"string","maxLength":20,"title":"Phone","description":"手机号"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password","description":"密码"},"tenant_id":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"scope":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Scope","description":"用户作用域","default":"tenant"},"department_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Department Id","description":"部门ID"},"is_superuser":{"type":"boolean","title":"Is Superuser","description":"是否超级用户","default":false}},"type":"object","required":["email","username","phone","password"],"title":"UserCreate","description":"创建用户模型"},"UserCreateWithCompany":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"邮箱地址"},"username":{"type":"string","maxLength":100,"minLength":3,"title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"type":"string","maxLength":20,"title":"Phone","description":"手机号"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password","description":"密码"},"company_name":{"type":"string","maxLength":200,"minLength":2,"title":"Company Name","description":"企业名称"},"tenant_code":{"type":"string","maxLength":200,"minLength":2,"title":"Tenant Code","description":"企业编码","default":"e21afae5-611e-4723-9aa4-3a0d181d7e02"}},"type":"object","required":["email","username","phone","password","company_name"],"title":"UserCreateWithCompany","description":"创建用户并注册企业模型"},"UserListResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"用户ID"},"username":{"type":"string","title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","description":"姓名"},"phone":{"type":"string","title":"Phone","description":"电话"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"企业名称"},"user_type":{"type":"string","title":"User Type","description":"用户类型: system/tenant"},"status":{"type":"string","title":"Status","description":"状态: active/inactive"},"is_superuser":{"type":"boolean","title":"Is Superuser","description":"是否超级用户"},"user_type_str":{"type":"string","title":"User Type Str","description":"用户类型描述"}},"type":"object","required":["id","username","phone","user_type","status","is_superuser","user_type_str"],"title":"UserListResponse","description":"用户列表响应模型 - 用于系统用户管理接口"},"UserLoginWithCaptcha":{"properties":{"identifier":{"type":"string","title":"Identifier","description":"用户名、邮箱或手机号"},"password":{"type":"string","title":"Password","description":"密码"},"captcha_id":{"type":"string","title":"Captcha Id","description":"验证码ID"},"captcha_text":{"type":"string","maxLength":6,"minLength":4,"title":"Captcha Text","description":"验证码文本"}},"type":"object","required":["identifier","password","captcha_id","captcha_text"],"title":"UserLoginWithCaptcha","description":"带验证码的用户登录模型"},"UserResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"用户ID"},"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"email":{"type":"string","title":"Email","description":"邮箱地址"},"username":{"type":"string","title":"Username","description":"用户名"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"type":"string","title":"Phone","description":"手机号"},"is_active":{"type":"boolean","title":"Is Active","description":"是否激活"},"is_superuser":{"type":"boolean","title":"Is Superuser","description":"是否超级用户"},"is_verified":{"type":"boolean","title":"Is Verified","description":"是否已验证"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"创建时间"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"更新时间"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At","description":"最后登录时间"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"头像URL"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio","description":"个人简介"},"display_name":{"type":"string","title":"Display Name","description":"显示名称"},"department_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id","description":"部门ID"},"department_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Name","description":"部门名称"},"scope":{"type":"string","title":"Scope","description":"用户作用域"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name","description":"企业名称"}},"type":"object","required":["id","email","username","phone","is_active","is_superuser","is_verified","created_at","updated_at","display_name","scope"],"title":"UserResponse","description":"用户响应模型 - 用于API响应"},"UserRoleAssignRequest":{"properties":{"role_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Role Ids","description":"要分配的角色ID列表"}},"type":"object","required":["role_ids"],"title":"UserRoleAssignRequest","description":"用户角色分配请求模型"},"UserRoleResponse":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id","description":"用户ID"},"username":{"type":"string","title":"Username","description":"用户名"},"email":{"type":"string","title":"Email","description":"邮箱"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name","description":"全名"},"roles":{"items":{"$ref":"#/components/schemas/Role"},"type":"array","title":"Roles","description":"用户角色列表"},"assigned_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Assigned At","description":"分配时间"}},"type":"object","required":["user_id","username","email"],"title":"UserRoleResponse","description":"用户角色分配响应模型"},"UserUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email","description":"邮箱地址"},"full_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Full Name","description":"全名"},"phone":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Phone","description":"手机号"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"头像URL"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio","description":"个人简介"},"department_id":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Department Id","description":"部门ID"}},"type":"object","title":"UserUpdate","description":"更新用户模型"},"UserUpdatePassword":{"properties":{"current_password":{"type":"string","title":"Current Password","description":"当前密码"},"new_password":{"type":"string","maxLength":128,"minLength":8,"title":"New Password","description":"新密码"}},"type":"object","required":["current_password","new_password"],"title":"UserUpdatePassword","description":"更新密码模型"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file diff --git a/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogFilters.tsx b/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogFilters.tsx deleted file mode 100644 index 088a096..0000000 --- a/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogFilters.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { Card } from '@/components/ui/card' -import { Input } from '@/components/ui/input' -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select' -import { Search } from 'lucide-react' - -interface LoginLogFiltersProps { - searchKeyword: string - onSearchChange: (value: string) => void - statusFilter: string - onStatusFilterChange: (value: string) => void - dateRange: string - onDateRangeChange: (value: string) => void -} - -export function LoginLogFilters({ - searchKeyword, - onSearchChange, - statusFilter, - onStatusFilterChange, - dateRange, - onDateRangeChange -}: LoginLogFiltersProps) { - return ( - -
-
- - onSearchChange(e.target.value)} - className="pl-10" - /> -
- - -
-
- ) -} \ No newline at end of file diff --git a/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogInfo.tsx b/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogInfo.tsx deleted file mode 100644 index e516964..0000000 --- a/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogInfo.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { Card } from '@/components/ui/card' -import { Shield } from 'lucide-react' - -export function LoginLogInfo() { - return ( - -

- - 登录日志说明 -

- -
- ) -} \ No newline at end of file diff --git a/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogStats.tsx b/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogStats.tsx deleted file mode 100644 index 7e8409d..0000000 --- a/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogStats.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { Card } from '@/components/ui/card' -import { LoginLog } from '@/types/monitor' - -interface LoginLogStatsProps { - logs: LoginLog[] -} - -export function LoginLogStats({ logs }: LoginLogStatsProps) { - const stats = [ - { - label: '总登录次数', - value: logs.length, - color: 'text-blue-600', - bg: 'bg-blue-100', - }, - { - label: '成功登录', - value: logs.filter(l => l.status === 'success').length, - color: 'text-green-600', - bg: 'bg-green-100', - }, - { - label: '失败登录', - value: logs.filter(l => l.status === 'failed').length, - color: 'text-red-600', - bg: 'bg-red-100', - }, - { - label: '今日登录', - value: logs.filter(l => { - const logDate = new Date(l.loginTime) - const today = new Date() - return logDate.toDateString() === today.toDateString() - }).length, - color: 'text-purple-600', - bg: 'bg-purple-100', - }, - ] - - return ( -
- {stats.map((stat, index) => ( - -
{stat.label}
-
{stat.value}
-
- ))} -
- ) -} \ No newline at end of file diff --git a/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogTable.tsx b/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogTable.tsx deleted file mode 100644 index 9d4e872..0000000 --- a/crop-x/src/app/(app)/central-config/monitor/login-log/components/LoginLogTable.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { Badge } from '@/components/ui/badge' -import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table' -import { Card } from '@/components/ui/card' -import { LoginLog } from '@/types/monitor' -import { Shield, Monitor, MapPin } from 'lucide-react' - -interface LoginLogTableProps { - logs: LoginLog[] -} - -export function LoginLogTable({ logs }: LoginLogTableProps) { - return ( - - - - - 用户名 - 登录时间 - IP地址 - 设备/浏览器 - 位置 - 状态 - - - - {logs.length === 0 ? ( - - - 暂无登录日志 - - - ) : ( - logs.map((log) => ( - - -
- - {log.username} -
-
- - {new Date(log.loginTime).toLocaleString('zh-CN')} - - - - {log.ipAddress} - - - -
- -
-
{log.device}
- {log.browser && ( -
{log.browser}
- )} -
-
-
- - {log.location && ( -
- - {log.location} -
- )} -
- - {log.status === 'success' ? ( - 成功 - ) : ( -
- 失败 - {log.failReason && ( -

{log.failReason}

- )} -
- )} -
-
- )) - )} -
-
-
- ) -} \ No newline at end of file diff --git a/crop-x/src/app/(app)/central-config/monitor/login-log/components/index.ts b/crop-x/src/app/(app)/central-config/monitor/login-log/components/index.ts index df68b40..574c138 100644 --- a/crop-x/src/app/(app)/central-config/monitor/login-log/components/index.ts +++ b/crop-x/src/app/(app)/central-config/monitor/login-log/components/index.ts @@ -1,4 +1 @@ -export { LoginLogStats } from './LoginLogStats' -export { LoginLogFilters } from './LoginLogFilters' -export { LoginLogTable } from './LoginLogTable' -export { LoginLogInfo } from './LoginLogInfo' \ No newline at end of file +export * from './loginLogApi' \ No newline at end of file diff --git a/crop-x/src/app/(app)/central-config/monitor/login-log/components/loginLogApi.ts b/crop-x/src/app/(app)/central-config/monitor/login-log/components/loginLogApi.ts new file mode 100644 index 0000000..474a943 --- /dev/null +++ b/crop-x/src/app/(app)/central-config/monitor/login-log/components/loginLogApi.ts @@ -0,0 +1,196 @@ +/** + * filekorolheader: 登录日志API - 登录日志相关接口调用 + * 功能:获取登录日志列表、统计、导出等功能 + * 路径:/central-config/monitor/login-log/components/loginLogApi + * 规范:遵循crop-x/docs/开发项目规范.md,使用SDK生成的API接口 + */ +import { + listLoginLogsApiV1LogsLoginLoginLogsGet, + getLoginStatisticsApiV1LogsLoginLoginLogsStatisticsGet, + exportLoginLogsApiV1LogsLoginLoginLogsExportGet +} from '@/lib/api/sdk.gen'; + +// 登录日志接口 +export interface LoginLog { + id: string; + created_at: string; + updated_at: string; + username: string; + user_id: string | null; + status: 'success' | 'failed'; + method: string; + ip_address: string; + user_agent: string; + location: string | null; + failure_reason: string | null; + attempt_count: number; + is_suspicious: boolean; +} + +// 分页参数接口 +export interface LoginLogsQueryParams { + page?: number; + size?: number; + username?: string; + status?: string; + start_time?: string; + end_time?: string; + ip_address?: string; + sort_order?: 'asc' | 'desc'; + order_by?: string; +} + +// 分页状态接口 +export interface PaginationState { + page: number; + size: number; + total: number; + totalPages?: number; + hasNext?: boolean; + hasPrev?: boolean; +} + +// 统计数据接口 +export interface LoginStatistics { + total_logins: number; + successful_logins: number; + failed_logins: number; + unique_users: number; + success_rate: number; + suspicious_logins: number; +} + +/** + * 获取登录日志列表 + */ +export const fetchLoginLogs = async (params: LoginLogsQueryParams = {}) => { + try { + // Get token from localStorage + const storedUser = localStorage.getItem('user'); + let headers = {}; + + if (storedUser) { + const userData = JSON.parse(storedUser); + if (userData.token) { + headers = { + 'Authorization': `Bearer ${userData.token}` + }; + } + } + + const response = await listLoginLogsApiV1LogsLoginLoginLogsGet({ + headers, + query: { + page: params.page || 1, + size: params.size || 10, + username: params.username, + status: params.status, + start_time: params.start_time, + end_time: params.end_time, + ip_address: params.ip_address, + sort_order: params.sort_order || 'desc', + order_by: params.order_by || 'created_at', + } + }); + + return { + data: response.data?.data || [], + page: response.data?.page || 1, + size: response.data?.size || 10, + total: response.data?.total || 0, + totalPages: response.data?.total_pages || 0, + hasNext: response.data?.has_next || false, + hasPrev: response.data?.has_prev || false, + }; + } catch (error) { + console.error('Failed to fetch login logs:', error); + throw error; + } +}; + +/** + * 获取登录统计信息 + */ +export const fetchLoginStatistics = async () => { + try { + // Get token from localStorage + const storedUser = localStorage.getItem('user'); + let headers = {}; + + if (storedUser) { + const userData = JSON.parse(storedUser); + if (userData.token) { + headers = { + 'Authorization': `Bearer ${userData.token}` + }; + } + } + + const response = await getLoginStatisticsApiV1LogsLoginLoginLogsStatisticsGet({ + headers + }); + return response.data; + } catch (error) { + console.error('Failed to fetch login statistics:', error); + throw error; + } +}; + +/** + * 导出登录日志 + */ +export const exportLoginLogs = async (params: LoginLogsQueryParams = {}) => { + try { + // Get token from localStorage + const storedUser = localStorage.getItem('user'); + let headers = {}; + + if (storedUser) { + const userData = JSON.parse(storedUser); + if (userData.token) { + headers = { + 'Authorization': `Bearer ${userData.token}` + }; + } + } + + const response = await exportLoginLogsApiV1LogsLoginLoginLogsExportGet({ + headers, + query: { + start_time: params.start_time, + end_time: params.end_time, + user_id: params.username, // Map username to user_id for export + } + }); + return response.data; + } catch (error) { + console.error('Failed to export login logs:', error); + throw error; + } +}; + +/** + * 转换登录日志数据 - 适配组件使用 + */ +export const transformLoginLogData = (log: any): LoginLog => ({ + id: log.id, + created_at: log.created_at, + updated_at: log.updated_at, + username: log.username, + user_id: log.user_id, + status: log.status, + method: log.method, + ip_address: log.ip_address, + user_agent: log.user_agent, + location: log.location, + failure_reason: log.failure_reason, + attempt_count: log.attempt_count, + is_suspicious: log.is_suspicious, +}); + +/** + * 批量转换登录日志数据 + */ +export const transformLoginLogsList = (logs: any[]): LoginLog[] => { + return logs.map(transformLoginLogData); +}; \ No newline at end of file diff --git a/crop-x/src/app/(app)/central-config/monitor/login-log/page.tsx b/crop-x/src/app/(app)/central-config/monitor/login-log/page.tsx index e94fbcc..05f3658 100644 --- a/crop-x/src/app/(app)/central-config/monitor/login-log/page.tsx +++ b/crop-x/src/app/(app)/central-config/monitor/login-log/page.tsx @@ -1,202 +1,421 @@ -'use client' +/** + * filekorolheader: 登录日志页面 - 用户登录行为监控页面 + * 功能:登录日志查询、统计、导出、筛选 + * 路径:/central-config/monitor/login-log + * 规范:遵循crop-x/docs/开发项目规范.md,使用SearchFormPagination重构,事件驱动模式 + */ +'use client'; -import { useState, useEffect } from 'react' -import { Button } from '@/components/ui/button' -import { LoginLog } from '@/types/monitor' -import { Download } from 'lucide-react' -import { toast } from 'sonner' +import { useState, useEffect, useCallback, useRef } from 'react'; +import { toast } from 'sonner'; +import { Button } from '@/components/ui/button'; +import { Badge } from '@/components/ui/badge'; +import { Download, Eye, AlertTriangle, CheckCircle, XCircle } from 'lucide-react'; -// Import modular components +import { SearchFormPagination, type SearchFieldConfig, type TableColumnConfig } from '@/components/common/searchFormPagination'; import { - LoginLogStats, - LoginLogFilters, - LoginLogTable, - LoginLogInfo -} from './components' + fetchLoginLogs, + transformLoginLogsList, + LoginLog, + PaginationState, + LoginLogsQueryParams, + fetchLoginStatistics, + exportLoginLogs +} from './components/loginLogApi'; export default function LoginLogPage() { - const [logs, setLogs] = useState([]) - const [searchKeyword, setSearchKeyword] = useState('') - const [statusFilter, setStatusFilter] = useState('all') - const [dateRange, setDateRange] = useState('all') + const [logs, setLogs] = useState([]); + const [loading, setLoading] = useState(false); + const [statistics, setStatistics] = useState(null); + const [pagination, setPagination] = useState({ + page: 1, + size: 10, + total: 0, + totalPages: 0, + hasNext: false, + hasPrev: false, + }); + const [searchFilters, setSearchFilters] = useState>({ + search: '', + status: 'all' + }); + const isFirstLoad = useRef(true); - useEffect(() => { - loadLogs() - }, []) + // 搜索字段配置 + const searchFields: SearchFieldConfig[] = [ + { + key: 'search', + label: '搜索', + type: 'text', + placeholder: '搜索用户名、IP地址...', + }, + { + key: 'status', + label: '登录状态', + type: 'select', + defaultValue: 'all', + options: [ + { value: 'all', label: '全部状态' }, + { value: 'success', label: '成功' }, + { value: 'failed', label: '失败' }, + ], + }, + { + key: 'dateRange', + label: '时间范围', + type: 'select', + defaultValue: 'all', + options: [ + { value: 'all', label: '全部时间' }, + { value: 'today', label: '今天' }, + { value: 'week', label: '最近7天' }, + { value: 'month', label: '最近30天' }, + ], + }, + ]; - const loadLogs = () => { - // 强制重新加载mock数据以解决显示问题 - localStorage.removeItem('smart_agriculture_login_logs') + // 表格列配置 + const columns: TableColumnConfig[] = [ + { + key: 'created_at', + label: '登录时间', + render: (value: string) => ( +
+ {value ? new Date(value).toLocaleString('zh-CN') : '-'} +
+ ), + }, + { + key: 'username', + label: '用户名', + render: (value: string) => ( +
{value || '-'}
+ ), + }, + { + key: 'ip_address', + label: 'IP地址', + render: (value: string) => ( +
{value || '-'}
+ ), + }, + { + key: 'user_agent', + label: '设备信息', + render: (value: string) => ( +
+ {value || '-'} +
+ ), + }, + { + key: 'location', + label: '登录地点', + render: (value: string) => ( +
{value || '-'}
+ ), + }, + { + key: 'status', + label: '状态', + render: (value: string) => { + if (value === 'success') { + return ( + + + 成功 + + ); + } else { + return ( + + + 失败 + + ); + } + }, + }, + { + key: 'is_suspicious', + label: '安全状态', + render: (value: boolean) => { + if (value) { + return ( + + + 可疑 + + ); + } else { + return ( + + + 正常 + + ); + } + }, + }, + { + key: 'failure_reason', + label: '失败原因', + render: (value: string) => ( +
+ {value || '-'} +
+ ), + }, + { + key: 'actions', + label: '操作', + render: (_: any, row: LoginLog) => ( +
+ +
+ ), + }, + ]; - const mockLogs: LoginLog[] = [ - { - id: 'log-1', - userId: 'user-1', - username: 'admin', - loginTime: '2024-10-21T09:30:00', - ipAddress: '192.168.1.100', - device: 'Windows 11', - browser: 'Chrome 118', - os: 'Windows', - location: '北京市海淀区', - status: 'success', - sessionId: 'sess-001', - }, - { - id: 'log-2', - userId: 'user-2', - username: 'zhangsan', - loginTime: '2024-10-21T10:15:00', - ipAddress: '192.168.1.101', - device: 'macOS 14', - browser: 'Safari 17', - os: 'macOS', - location: '上海市浦东新区', - status: 'success', - sessionId: 'sess-002', - }, - { - id: 'log-3', - userId: 'user-3', - username: 'lisi', - loginTime: '2024-10-21T11:20:00', - ipAddress: '192.168.1.102', - device: 'Android 13', - browser: 'Chrome Mobile 118', - os: 'Android', - location: '广州市天河区', - status: 'failed', - failReason: '密码错误', - }, - { - id: 'log-4', - userId: 'user-1', - username: 'admin', - loginTime: '2024-10-21T14:45:00', - ipAddress: '192.168.1.100', - device: 'Windows 11', - browser: 'Chrome 118', - os: 'Windows', - location: '北京市海淀区', - status: 'success', - sessionId: 'sess-003', - }, - { - id: 'log-5', - userId: 'user-4', - username: 'wangwu', - loginTime: '2024-10-21T15:30:00', - ipAddress: '192.168.1.103', - device: 'iOS 17', - browser: 'Safari 17', - os: 'iOS', - location: '深圳市南山区', - status: 'failed', - failReason: '账号被锁定', - }, - { - id: 'log-6', - userId: 'user-5', - username: 'zhaoliu', - loginTime: '2024-10-21T16:20:00', - ipAddress: '192.168.1.104', - device: 'Windows 10', - browser: 'Edge 118', - os: 'Windows', - location: '杭州市西湖区', - status: 'success', - sessionId: 'sess-004', - }, - { - id: 'log-7', - userId: 'user-6', - username: 'chenqi', - loginTime: '2024-10-21T17:10:00', - ipAddress: '192.168.1.105', - device: 'Ubuntu 22.04', - browser: 'Firefox 119', - os: 'Linux', - location: '成都市武侯区', - status: 'success', - sessionId: 'sess-005', - }, - ] - localStorage.setItem('smart_agriculture_login_logs', JSON.stringify(mockLogs)) - setLogs(mockLogs) - } + // 加载登录日志数据 - 事件驱动模式 + const loadLoginLogs = useCallback(async (params?: { + filters?: Record; + pagination?: { page: number; size: number }; + resetPage?: boolean; + }) => { + try { + setLoading(true); - const filteredLogs = logs.filter(log => { - const matchKeyword = !searchKeyword || - log.username.includes(searchKeyword) || - log.ipAddress.includes(searchKeyword) || - (log.location && log.location.includes(searchKeyword)) + const queryParams: LoginLogsQueryParams = { + page: params?.resetPage ? 1 : (params?.pagination?.page || pagination.page), + size: params?.pagination?.size || pagination.size, + sort_order: 'desc', + order_by: 'created_at', + }; - const matchStatus = statusFilter === 'all' || log.status === statusFilter - - let matchDate = true - if (dateRange !== 'all') { - const logDate = new Date(log.loginTime) - const now = new Date() - const diffDays = Math.floor((now.getTime() - logDate.getTime()) / (1000 * 60 * 60 * 24)) - - switch (dateRange) { - case 'today': - matchDate = diffDays === 0 - break - case 'week': - matchDate = diffDays <= 7 - break - case 'month': - matchDate = diffDays <= 30 - break + // 处理搜索条件 + const searchKeyword = params?.filters?.search ?? searchFilters.search; + if (searchKeyword) { + queryParams.username = searchKeyword; + queryParams.ip_address = searchKeyword; } + + // 处理状态筛选 + const status = params?.filters?.status ?? searchFilters.status; + if (status !== 'all') { + queryParams.status = status; + } + + // 处理时间范围 + const dateRange = params?.filters?.dateRange ?? searchFilters.dateRange; + if (dateRange !== 'all') { + const now = new Date(); + let startTime: string; + + switch (dateRange) { + case 'today': + startTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0).toISOString(); + break; + case 'week': + startTime = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000).toISOString(); + break; + case 'month': + startTime = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000).toISOString(); + break; + } + + if (startTime) { + queryParams.start_time = startTime; + queryParams.end_time = now.toISOString(); + } + } + + const response = await fetchLoginLogs(queryParams); + const transformedLogs = transformLoginLogsList(response.data); + + setLogs(transformedLogs); + setPagination({ + page: response.page, + size: response.size, + total: response.total, + totalPages: response.totalPages, + hasNext: response.hasNext, + hasPrev: response.hasPrev, + }); + } catch (error) { + console.error('Failed to load login logs:', error); + const errorMessage = error instanceof Error ? error.message : '加载登录日志失败'; + toast.error(errorMessage); + } finally { + setLoading(false); } + }, [pagination.page, pagination.size, searchFilters]); - return matchKeyword && matchStatus && matchDate - }) + // 加载统计数据 + const loadStatistics = useCallback(async () => { + try { + const stats = await fetchLoginStatistics(); + setStatistics(stats); + } catch (error) { + console.error('Failed to load login statistics:', error); + } + }, []); - const handleExport = () => { - const dataStr = JSON.stringify(filteredLogs, null, 2) - const dataBlob = new Blob([dataStr], { type: 'application/json' }) - const url = URL.createObjectURL(dataBlob) - const link = document.createElement('a') - link.href = url - link.download = `login_logs_${new Date().getTime()}.json` - link.click() - toast.success('导出成功') - } + // 初始化数据 - 只在组件挂载时执行一次 + useEffect(() => { + if (isFirstLoad.current) { + isFirstLoad.current = false; + loadLoginLogs({ resetPage: true }); + loadStatistics(); + } + }, [loadLoginLogs, loadStatistics]); + + // 事件处理器 - 事件驱动模式 + const handleSearch = useCallback((filters: Record) => { + setSearchFilters(filters); + loadLoginLogs({ + filters, + pagination: { page: 1, size: pagination.size } + }); + }, [loadLoginLogs, pagination.size]); + + const handlePageChange = useCallback((page: number) => { + setPagination(prev => ({ ...prev, page })); + loadLoginLogs({ + filters: searchFilters, + pagination: { page, size: pagination.size } + }); + }, [loadLoginLogs, searchFilters, pagination.size]); + + const handleSizeChange = useCallback((size: number) => { + setPagination(prev => ({ ...prev, size, page: 1 })); + loadLoginLogs({ + filters: searchFilters, + pagination: { page: 1, size } + }); + }, [loadLoginLogs, searchFilters]); + + // 查看详情 + const handleViewDetail = (log: LoginLog) => { + toast.info(`查看登录日志详情: ${log.username} - ${log.ip_address}`); + }; + + // 导出日志 + const handleExport = async () => { + try { + setLoading(true); + const exportData = await exportLoginLogs({ + username: searchFilters.search, + status: searchFilters.status === 'all' ? undefined : searchFilters.status, + start_time: searchFilters.dateRange === 'all' ? undefined : + searchFilters.dateRange === 'today' ? new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate(), 0, 0, 0).toISOString() : + searchFilters.dateRange === 'week' ? new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString() : + searchFilters.dateRange === 'month' ? new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString() : undefined, + end_time: new Date().toISOString(), + }); + + // 创建下载链接 + const dataStr = JSON.stringify(exportData, null, 2); + const dataBlob = new Blob([dataStr], { type: 'application/json' }); + const url = URL.createObjectURL(dataBlob); + const link = document.createElement('a'); + link.href = url; + link.download = `login_logs_${new Date().getTime()}.json`; + link.click(); + URL.revokeObjectURL(url); + + toast.success('导出成功'); + } catch (error) { + console.error('Failed to export login logs:', error); + const errorMessage = error instanceof Error ? error.message : '导出失败'; + toast.error(errorMessage); + } finally { + setLoading(false); + } + }; return (
+ {/* 页面标题 */}

登录日志

全面记录所有用户的登录行为

-
{/* 统计卡片 */} - + {statistics && ( +
+
+
+
总登录次数
+
{statistics.total_logins}
+
+
+ 系统总登录次数 +
+
+
+
+
成功登录
+
{statistics.successful_logins}
+
+
+ 登录成功次数 +
+
+
+
+
失败登录
+
{statistics.failed_logins}
+
+
+ 登录失败次数 +
+
+
+
+
成功率
+
{Math.round(statistics.success_rate * 100)}%
+
+
+ 登录成功率 +
+
+
+ )} - {/* 搜索和筛选 */} - - - {/* 日志列表 */} - - - {/* 使用说明 */} -
- ) + ); } \ No newline at end of file diff --git a/crop-x/src/components/auth/AuthContext.tsx b/crop-x/src/components/auth/AuthContext.tsx index 7c9b84c..8ba0181 100644 --- a/crop-x/src/components/auth/AuthContext.tsx +++ b/crop-x/src/components/auth/AuthContext.tsx @@ -1,8 +1,8 @@ 'use client'; import React, { createContext, useContext, useState, ReactNode, useRef } from 'react'; -import { getCurrentUserInfoApiV1AuthMeGet, refreshTokenApiV1AuthRefreshPost } from '@/lib/api/sdk.gen'; -import { setAuthUser, getAuthUser, AuthUser } from '@/stores/modules/auth'; +import { getCurrentUserInfoApiV1AuthMeGet, refreshTokenApiV1AuthRefreshPost, listAdminSettingsApiV1AdminSettingsGet } from '@/lib/api/sdk.gen'; +import { setAuthUser, getAuthUser, setSettings } from '@/stores/modules/auth'; // Cookie 操作工具 const setTokenCookie = (token: string) => { @@ -203,26 +203,47 @@ export function AuthProvider({ children }: AuthProviderProps) { const userData = JSON.parse(storedUser); - // 使用 SDK 调用 /api/v1/auth/me 验证用户信息 - const response = await getCurrentUserInfoApiV1AuthMeGet({ - headers: { - 'Authorization': `Bearer ${userData.token}`, - }, - }); + // 使用 Promise.all 并行发起两个请求 + const [userResponse, settingsResponse] = await Promise.all([ + // 请求1: 调用 /api/v1/auth/me 验证用户信息 + getCurrentUserInfoApiV1AuthMeGet({ + headers: { + 'Authorization': `Bearer ${userData.token}`, + }, + }), + // 请求2: 调用 /api/v1/admin/settings 获取设置信息 + listAdminSettingsApiV1AdminSettingsGet({ + headers: { + 'Authorization': `Bearer ${userData.token}`, + }, + query: { + page: 1, + size: 100, + order_by: '', + sort_order: 'desc' + } + }) + ]); - if (response.data) { + if (userResponse.data) { // 更新用户信息(可能包含最新的权限、角色等) const updatedUserData = { ...userData, - ...response.data, // 合并最新的用户信息 + ...userResponse.data, // 合并最新的用户信息 }; setUser(updatedUserData); // 存储到 Zustand store - setAuthUser(response.data); - console.log('✅ 用户验证成功,最新用户信息:', response.data); + setAuthUser(userResponse.data); + console.log('✅ 用户验证成功,最新用户信息:', userResponse.data); console.log('📦 从 Zustand store 取出的用户数据:', getAuthUser()); + // 存储设置数据到 Zustand store + if (settingsResponse && settingsResponse.data) { + setSettings(settingsResponse.data); + console.log('✅ 设置数据获取成功:', settingsResponse.data); + } + // 验证成功后,启动 token 自动刷新定时器 startTokenRefresh(); } else { diff --git a/crop-x/src/lib/api/sdk.gen.ts b/crop-x/src/lib/api/sdk.gen.ts index 1f88968..1c62893 100644 --- a/crop-x/src/lib/api/sdk.gen.ts +++ b/crop-x/src/lib/api/sdk.gen.ts @@ -2,7 +2,7 @@ import type { Client, Options as Options2, TDataShape } from './client'; import { client } from './client.gen'; -import type { ActivateSystemUserApiV1UsersSystemUsersUserIdActivatePostData, ActivateSystemUserApiV1UsersSystemUsersUserIdActivatePostErrors, ActivateSystemUserApiV1UsersSystemUsersUserIdActivatePostResponses, ActivateUserApiV1UsersUserIdActivatePostData, ActivateUserApiV1UsersUserIdActivatePostErrors, ActivateUserApiV1UsersUserIdActivatePostResponses, AssignRolesToUserApiV1UsersPermissionsUsersUserIdRolesPostData, AssignRolesToUserApiV1UsersPermissionsUsersUserIdRolesPostErrors, AssignRolesToUserApiV1UsersPermissionsUsersUserIdRolesPostResponses, AuditTenantApiV1TenantsTenantIdAuditPostData, AuditTenantApiV1TenantsTenantIdAuditPostErrors, AuditTenantApiV1TenantsTenantIdAuditPostResponses, CancelScheduledMessageApiV1MessagesMessageIdCancelDeleteData, CancelScheduledMessageApiV1MessagesMessageIdCancelDeleteErrors, CancelScheduledMessageApiV1MessagesMessageIdCancelDeleteResponses, ChangePasswordApiV1AuthChangePasswordPostData, ChangePasswordApiV1AuthChangePasswordPostErrors, ChangePasswordApiV1AuthChangePasswordPostResponses, CheckServiceHealthApiV1MessagesConfigsConfigsConfigIdHealthCheckPostData, CheckServiceHealthApiV1MessagesConfigsConfigsConfigIdHealthCheckPostErrors, CheckServiceHealthApiV1MessagesConfigsConfigsConfigIdHealthCheckPostResponses, CleanupOldLogsApiV1LogsQueryCleanupPostData, CleanupOldLogsApiV1LogsQueryCleanupPostErrors, CleanupOldLogsApiV1LogsQueryCleanupPostResponses, CleanupOldLogsApiV1MessagesLogsMessageLogsCleanupPostData, CleanupOldLogsApiV1MessagesLogsMessageLogsCleanupPostErrors, CleanupOldLogsApiV1MessagesLogsMessageLogsCleanupPostResponses, CreateDepartmentApiV1DepartmentsPostData, CreateDepartmentApiV1DepartmentsPostErrors, CreateDepartmentApiV1DepartmentsPostResponses, CreateExternalServiceConfigApiV1MessagesConfigsConfigsPostData, CreateExternalServiceConfigApiV1MessagesConfigsConfigsPostErrors, CreateExternalServiceConfigApiV1MessagesConfigsConfigsPostResponses, CreateRoleApiV1UsersPermissionsRolesPostData, CreateRoleApiV1UsersPermissionsRolesPostErrors, CreateRoleApiV1UsersPermissionsRolesPostResponses, CreateSystemUserApiV1UsersSystemUsersPostData, CreateSystemUserApiV1UsersSystemUsersPostErrors, CreateSystemUserApiV1UsersSystemUsersPostResponses, CreateTemplateApiV1MessagesTemplatesPostData, CreateTemplateApiV1MessagesTemplatesPostErrors, CreateTemplateApiV1MessagesTemplatesPostResponses, CreateTenantApiV1TenantsPostData, CreateTenantApiV1TenantsPostErrors, CreateTenantApiV1TenantsPostResponses, CreateUserApiV1UsersPostData, CreateUserApiV1UsersPostErrors, CreateUserApiV1UsersPostResponses, DeactivateSystemUserApiV1UsersSystemUsersUserIdDeactivatePostData, DeactivateSystemUserApiV1UsersSystemUsersUserIdDeactivatePostErrors, DeactivateSystemUserApiV1UsersSystemUsersUserIdDeactivatePostResponses, DeactivateUserApiV1UsersUserIdDeactivatePostData, DeactivateUserApiV1UsersUserIdDeactivatePostErrors, DeactivateUserApiV1UsersUserIdDeactivatePostResponses, DeleteDepartmentApiV1DepartmentsDepartmentIdDeleteData, DeleteDepartmentApiV1DepartmentsDepartmentIdDeleteErrors, DeleteDepartmentApiV1DepartmentsDepartmentIdDeleteResponses, DeleteExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdDeleteData, DeleteExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdDeleteErrors, DeleteExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdDeleteResponses, DeleteRoleApiV1UsersPermissionsRolesRoleIdDeleteData, DeleteRoleApiV1UsersPermissionsRolesRoleIdDeleteErrors, DeleteRoleApiV1UsersPermissionsRolesRoleIdDeleteResponses, DeleteSystemUserApiV1UsersSystemUsersUserIdDeleteData, DeleteSystemUserApiV1UsersSystemUsersUserIdDeleteErrors, DeleteSystemUserApiV1UsersSystemUsersUserIdDeleteResponses, DeleteTemplateApiV1MessagesTemplatesTemplateIdDeleteData, DeleteTemplateApiV1MessagesTemplatesTemplateIdDeleteErrors, DeleteTemplateApiV1MessagesTemplatesTemplateIdDeleteResponses, DeleteTenantApiV1TenantsTenantIdDeleteData, DeleteTenantApiV1TenantsTenantIdDeleteErrors, DeleteTenantApiV1TenantsTenantIdDeleteResponses, DeleteUserApiV1UsersUserIdDeleteData, DeleteUserApiV1UsersUserIdDeleteErrors, DeleteUserApiV1UsersUserIdDeleteResponses, DetailedHealthCheckApiV1HealthDetailedGetData, DetailedHealthCheckApiV1HealthDetailedGetResponses, DisableTenantApiV1TenantsTenantIdDisablePatchData, DisableTenantApiV1TenantsTenantIdDisablePatchErrors, DisableTenantApiV1TenantsTenantIdDisablePatchResponses, EnableTenantApiV1TenantsTenantIdEnablePatchData, EnableTenantApiV1TenantsTenantIdEnablePatchErrors, EnableTenantApiV1TenantsTenantIdEnablePatchResponses, ExportLoginLogsApiV1LogsLoginLoginLogsExportGetData, ExportLoginLogsApiV1LogsLoginLoginLogsExportGetErrors, ExportLoginLogsApiV1LogsLoginLoginLogsExportGetResponses, ExportLogsApiV1LogsQueryLogTypeExportPostData, ExportLogsApiV1LogsQueryLogTypeExportPostErrors, ExportLogsApiV1LogsQueryLogTypeExportPostResponses, ExportNetworkLogsApiV1LogsNetworkNetworkLogsExportGetData, ExportNetworkLogsApiV1LogsNetworkNetworkLogsExportGetErrors, ExportNetworkLogsApiV1LogsNetworkNetworkLogsExportGetResponses, ExportOperationLogsApiV1LogsOperationOperationLogsExportGetData, ExportOperationLogsApiV1LogsOperationOperationLogsExportGetErrors, ExportOperationLogsApiV1LogsOperationOperationLogsExportGetResponses, GetCaptchaApiV1AuthCaptchaGetData, GetCaptchaApiV1AuthCaptchaGetResponses, GetComprehensiveStatisticsApiV1LogsQueryStatisticsComprehensiveGetData, GetComprehensiveStatisticsApiV1LogsQueryStatisticsComprehensiveGetErrors, GetComprehensiveStatisticsApiV1LogsQueryStatisticsComprehensiveGetResponses, GetCurrentTenantApiV1TenantsMeGetData, GetCurrentTenantApiV1TenantsMeGetResponses, GetCurrentUserInfoApiV1AuthMeGetData, GetCurrentUserInfoApiV1AuthMeGetResponses, GetDepartmentApiV1DepartmentsDepartmentIdGetData, GetDepartmentApiV1DepartmentsDepartmentIdGetErrors, GetDepartmentApiV1DepartmentsDepartmentIdGetResponses, GetDepartmentOptionsApiV1UsersDepartmentsOptionsGetData, GetDepartmentOptionsApiV1UsersDepartmentsOptionsGetResponses, GetDepartmentsApiV1DepartmentsGetData, GetDepartmentsApiV1DepartmentsGetErrors, GetDepartmentsApiV1DepartmentsGetResponses, GetDepartmentTreeApiV1DepartmentsTreeGetData, GetDepartmentTreeApiV1DepartmentsTreeGetResponses, GetDepartmentUsersCountApiV1DepartmentsDepartmentIdUsersCountGetData, GetDepartmentUsersCountApiV1DepartmentsDepartmentIdUsersCountGetErrors, GetDepartmentUsersCountApiV1DepartmentsDepartmentIdUsersCountGetResponses, GetEndpointStatisticsApiV1LogsNetworkNetworkLogsEndpointEndpointStatisticsGetData, GetEndpointStatisticsApiV1LogsNetworkNetworkLogsEndpointEndpointStatisticsGetErrors, GetEndpointStatisticsApiV1LogsNetworkNetworkLogsEndpointEndpointStatisticsGetResponses, GetErrorOperationsApiV1LogsOperationOperationLogsErrorsGetData, GetErrorOperationsApiV1LogsOperationOperationLogsErrorsGetErrors, GetErrorOperationsApiV1LogsOperationOperationLogsErrorsGetResponses, GetErrorRequestsApiV1LogsNetworkNetworkLogsErrorsGetData, GetErrorRequestsApiV1LogsNetworkNetworkLogsErrorsGetErrors, GetErrorRequestsApiV1LogsNetworkNetworkLogsErrorsGetResponses, GetExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdGetData, GetExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdGetErrors, GetExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdGetResponses, GetFailedLoginAttemptsApiV1LogsLoginLoginLogsFailedAttemptsGetData, GetFailedLoginAttemptsApiV1LogsLoginLoginLogsFailedAttemptsGetErrors, GetFailedLoginAttemptsApiV1LogsLoginLoginLogsFailedAttemptsGetResponses, GetIpActivityApiV1LogsNetworkNetworkLogsIpIpAddressActivityGetData, GetIpActivityApiV1LogsNetworkNetworkLogsIpIpAddressActivityGetErrors, GetIpActivityApiV1LogsNetworkNetworkLogsIpIpAddressActivityGetResponses, GetLoginStatisticsApiV1LogsLoginLoginLogsStatisticsGetData, GetLoginStatisticsApiV1LogsLoginLoginLogsStatisticsGetErrors, GetLoginStatisticsApiV1LogsLoginLoginLogsStatisticsGetResponses, GetMessageLogApiV1MessagesLogsMessageLogsMessageIdGetData, GetMessageLogApiV1MessagesLogsMessageLogsMessageIdGetErrors, GetMessageLogApiV1MessagesLogsMessageLogsMessageIdGetResponses, GetMessageReceiptsApiV1MessagesLogsMessageLogsMessageIdReceiptsGetData, GetMessageReceiptsApiV1MessagesLogsMessageLogsMessageIdReceiptsGetErrors, GetMessageReceiptsApiV1MessagesLogsMessageLogsMessageIdReceiptsGetResponses, GetMessageStatisticsApiV1MessagesLogsMessageLogsStatisticsOverviewGetData, GetMessageStatisticsApiV1MessagesLogsMessageLogsStatisticsOverviewGetErrors, GetMessageStatisticsApiV1MessagesLogsMessageLogsStatisticsOverviewGetResponses, GetModuleOperationsApiV1LogsOperationOperationLogsModuleModuleHistoryGetData, GetModuleOperationsApiV1LogsOperationOperationLogsModuleModuleHistoryGetErrors, GetModuleOperationsApiV1LogsOperationOperationLogsModuleModuleHistoryGetResponses, GetNetworkStatisticsApiV1LogsNetworkNetworkLogsStatisticsGetData, GetNetworkStatisticsApiV1LogsNetworkNetworkLogsStatisticsGetErrors, GetNetworkStatisticsApiV1LogsNetworkNetworkLogsStatisticsGetResponses, GetOperationStatisticsApiV1LogsOperationOperationLogsStatisticsGetData, GetOperationStatisticsApiV1LogsOperationOperationLogsStatisticsGetErrors, GetOperationStatisticsApiV1LogsOperationOperationLogsStatisticsGetResponses, GetPerformanceSummaryApiV1SystemMetricsSummaryGetData, GetPerformanceSummaryApiV1SystemMetricsSummaryGetResponses, GetRecipientStatisticsApiV1MessagesLogsMessageLogsStatisticsRecipientRecipientGetData, GetRecipientStatisticsApiV1MessagesLogsMessageLogsStatisticsRecipientRecipientGetErrors, GetRecipientStatisticsApiV1MessagesLogsMessageLogsStatisticsRecipientRecipientGetResponses, GetRoleApiV1UsersPermissionsRolesRoleIdGetData, GetRoleApiV1UsersPermissionsRolesRoleIdGetErrors, GetRoleApiV1UsersPermissionsRolesRoleIdGetResponses, GetRolesApiV1UsersPermissionsRolesGetData, GetRolesApiV1UsersPermissionsRolesGetErrors, GetRolesApiV1UsersPermissionsRolesGetResponses, GetSlowRequestsApiV1LogsNetworkNetworkLogsSlowGetData, GetSlowRequestsApiV1LogsNetworkNetworkLogsSlowGetErrors, GetSlowRequestsApiV1LogsNetworkNetworkLogsSlowGetResponses, GetSuspiciousLoginsApiV1LogsLoginLoginLogsSuspiciousGetData, GetSuspiciousLoginsApiV1LogsLoginLoginLogsSuspiciousGetErrors, GetSuspiciousLoginsApiV1LogsLoginLoginLogsSuspiciousGetResponses, GetSystemConfigApiV1SystemConfigGetData, GetSystemConfigApiV1SystemConfigGetResponses, GetSystemInfoApiV1SystemInfoGetData, GetSystemInfoApiV1SystemInfoGetResponses, GetSystemMetricsApiV1SystemMetricsGetData, GetSystemMetricsApiV1SystemMetricsGetErrors, GetSystemMetricsApiV1SystemMetricsGetResponses, GetSystemPermissionsApiV1UsersPermissionsPermissionsGetData, GetSystemPermissionsApiV1UsersPermissionsPermissionsGetErrors, GetSystemPermissionsApiV1UsersPermissionsPermissionsGetResponses, GetSystemStatsApiV1SystemStatsGetData, GetSystemStatsApiV1SystemStatsGetResponses, GetSystemUserApiV1UsersSystemUsersUserIdGetData, GetSystemUserApiV1UsersSystemUsersUserIdGetErrors, GetSystemUserApiV1UsersSystemUsersUserIdGetResponses, GetSystemUserStatsApiV1UsersSystemUsersStatsSummaryGetData, GetSystemUserStatsApiV1UsersSystemUsersStatsSummaryGetResponses, GetTemplateApiV1MessagesTemplatesTemplateIdGetData, GetTemplateApiV1MessagesTemplatesTemplateIdGetErrors, GetTemplateApiV1MessagesTemplatesTemplateIdGetResponses, GetTenantApiV1TenantsTenantIdGetData, GetTenantApiV1TenantsTenantIdGetErrors, GetTenantApiV1TenantsTenantIdGetResponses, GetTenantAuditLogsApiV1TenantsAuditLogsGetData, GetTenantAuditLogsApiV1TenantsAuditLogsGetErrors, GetTenantAuditLogsApiV1TenantsAuditLogsGetResponses, GetUnreadCountApiV1MessagesLogsMessageLogsUnreadCountGetData, GetUnreadCountApiV1MessagesLogsMessageLogsUnreadCountGetErrors, GetUnreadCountApiV1MessagesLogsMessageLogsUnreadCountGetResponses, GetUserActivitySummaryApiV1LogsQueryUserUserIdActivityGetData, GetUserActivitySummaryApiV1LogsQueryUserUserIdActivityGetErrors, GetUserActivitySummaryApiV1LogsQueryUserUserIdActivityGetResponses, GetUserApiV1UsersUserIdGetData, GetUserApiV1UsersUserIdGetErrors, GetUserApiV1UsersUserIdGetResponses, GetUserLoginHistoryApiV1LogsLoginLoginLogsUserUserIdHistoryGetData, GetUserLoginHistoryApiV1LogsLoginLoginLogsUserUserIdHistoryGetErrors, GetUserLoginHistoryApiV1LogsLoginLoginLogsUserUserIdHistoryGetResponses, GetUserOperationHistoryApiV1LogsOperationOperationLogsUserUserIdHistoryGetData, GetUserOperationHistoryApiV1LogsOperationOperationLogsUserUserIdHistoryGetErrors, GetUserOperationHistoryApiV1LogsOperationOperationLogsUserUserIdHistoryGetResponses, GetUserRolesApiV1UsersPermissionsUsersUserIdRolesGetData, GetUserRolesApiV1UsersPermissionsUsersUserIdRolesGetErrors, GetUserRolesApiV1UsersPermissionsUsersUserIdRolesGetResponses, GetUsersApiV1UsersGetData, GetUsersApiV1UsersGetErrors, GetUsersApiV1UsersGetResponses, GetUserStatsApiV1UsersStatsSummaryGetData, GetUserStatsApiV1UsersStatsSummaryGetResponses, HealthCheckApiV1HealthGetData, HealthCheckApiV1HealthGetResponses, HealthCheckHealthGetData, HealthCheckHealthGetResponses, ListAnonymousTenantsApiV1TenantsAnonymousListGetData, ListAnonymousTenantsApiV1TenantsAnonymousListGetErrors, ListAnonymousTenantsApiV1TenantsAnonymousListGetResponses, ListExternalServiceConfigsApiV1MessagesConfigsConfigsGetData, ListExternalServiceConfigsApiV1MessagesConfigsConfigsGetErrors, ListExternalServiceConfigsApiV1MessagesConfigsConfigsGetResponses, ListLoginLogsApiV1LogsLoginLoginLogsGetData, ListLoginLogsApiV1LogsLoginLoginLogsGetErrors, ListLoginLogsApiV1LogsLoginLoginLogsGetResponses, ListMessageLogsApiV1MessagesLogsMessageLogsGetData, ListMessageLogsApiV1MessagesLogsMessageLogsGetErrors, ListMessageLogsApiV1MessagesLogsMessageLogsGetResponses, ListNetworkLogsApiV1LogsNetworkNetworkLogsGetData, ListNetworkLogsApiV1LogsNetworkNetworkLogsGetErrors, ListNetworkLogsApiV1LogsNetworkNetworkLogsGetResponses, ListOperationLogsApiV1LogsOperationOperationLogsGetData, ListOperationLogsApiV1LogsOperationOperationLogsGetErrors, ListOperationLogsApiV1LogsOperationOperationLogsGetResponses, ListSystemUsersApiV1UsersSystemUsersGetData, ListSystemUsersApiV1UsersSystemUsersGetErrors, ListSystemUsersApiV1UsersSystemUsersGetResponses, ListTemplatesApiV1MessagesTemplatesGetData, ListTemplatesApiV1MessagesTemplatesGetErrors, ListTemplatesApiV1MessagesTemplatesGetResponses, ListTenantsApiV1TenantsGetData, ListTenantsApiV1TenantsGetErrors, ListTenantsApiV1TenantsGetResponses, LoginApiV1AuthLoginPostData, LoginApiV1AuthLoginPostErrors, LoginApiV1AuthLoginPostResponses, LogoutApiV1AuthLogoutPostData, LogoutApiV1AuthLogoutPostResponses, MarkMessageAsReadApiV1MessagesLogsMessageLogsMessageIdReadPostData, MarkMessageAsReadApiV1MessagesLogsMessageLogsMessageIdReadPostErrors, MarkMessageAsReadApiV1MessagesLogsMessageLogsMessageIdReadPostResponses, RefreshTokenApiV1AuthRefreshPostData, RefreshTokenApiV1AuthRefreshPostResponses, RegisterApiV1AuthRegisterPostData, RegisterApiV1AuthRegisterPostErrors, RegisterApiV1AuthRegisterPostResponses, RegisterWithCompanyApiV1AuthRegisterWithCompanyPostData, RegisterWithCompanyApiV1AuthRegisterWithCompanyPostErrors, RegisterWithCompanyApiV1AuthRegisterWithCompanyPostResponses, RemoveUserRoleApiV1UsersPermissionsUsersUserIdRolesRoleIdDeleteData, RemoveUserRoleApiV1UsersPermissionsUsersUserIdRolesRoleIdDeleteErrors, RemoveUserRoleApiV1UsersPermissionsUsersUserIdRolesRoleIdDeleteResponses, RetryFailedMessageApiV1MessagesMessageIdRetryPostData, RetryFailedMessageApiV1MessagesMessageIdRetryPostErrors, RetryFailedMessageApiV1MessagesMessageIdRetryPostResponses, ScheduleMessageApiV1MessagesSchedulePostData, ScheduleMessageApiV1MessagesSchedulePostErrors, ScheduleMessageApiV1MessagesSchedulePostResponses, SearchLogsApiV1LogsQueryLogTypeGetData, SearchLogsApiV1LogsQueryLogTypeGetErrors, SearchLogsApiV1LogsQueryLogTypeGetResponses, SendMessageApiV1MessagesSendPostData, SendMessageApiV1MessagesSendPostErrors, SendMessageApiV1MessagesSendPostResponses, SetDefaultServiceApiV1MessagesConfigsConfigsConfigIdSetDefaultPostData, SetDefaultServiceApiV1MessagesConfigsConfigsConfigIdSetDefaultPostErrors, SetDefaultServiceApiV1MessagesConfigsConfigsConfigIdSetDefaultPostResponses, SubmitTenantAuditApiV1TenantsSubmitPostData, SubmitTenantAuditApiV1TenantsSubmitPostErrors, SubmitTenantAuditApiV1TenantsSubmitPostResponses, TestTemplateApiV1MessagesTemplatesTemplateIdTestPostData, TestTemplateApiV1MessagesTemplatesTemplateIdTestPostErrors, TestTemplateApiV1MessagesTemplatesTemplateIdTestPostResponses, UpdateCurrentUserApiV1AuthMePutData, UpdateCurrentUserApiV1AuthMePutErrors, UpdateCurrentUserApiV1AuthMePutResponses, UpdateDepartmentApiV1DepartmentsDepartmentIdPutData, UpdateDepartmentApiV1DepartmentsDepartmentIdPutErrors, UpdateDepartmentApiV1DepartmentsDepartmentIdPutResponses, UpdateDepartmentOrderApiV1DepartmentsDepartmentIdOrderPatchData, UpdateDepartmentOrderApiV1DepartmentsDepartmentIdOrderPatchErrors, UpdateDepartmentOrderApiV1DepartmentsDepartmentIdOrderPatchResponses, UpdateDepartmentStatusApiV1DepartmentsDepartmentIdStatusPatchData, UpdateDepartmentStatusApiV1DepartmentsDepartmentIdStatusPatchErrors, UpdateDepartmentStatusApiV1DepartmentsDepartmentIdStatusPatchResponses, UpdateExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdPutData, UpdateExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdPutErrors, UpdateExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdPutResponses, UpdateRoleApiV1UsersPermissionsRolesRoleIdPutData, UpdateRoleApiV1UsersPermissionsRolesRoleIdPutErrors, UpdateRoleApiV1UsersPermissionsRolesRoleIdPutResponses, UpdateSystemUserApiV1UsersSystemUsersUserIdPutData, UpdateSystemUserApiV1UsersSystemUsersUserIdPutErrors, UpdateSystemUserApiV1UsersSystemUsersUserIdPutResponses, UpdateTemplateApiV1MessagesTemplatesTemplateIdPutData, UpdateTemplateApiV1MessagesTemplatesTemplateIdPutErrors, UpdateTemplateApiV1MessagesTemplatesTemplateIdPutResponses, UpdateUserApiV1UsersUserIdPutData, UpdateUserApiV1UsersUserIdPutErrors, UpdateUserApiV1UsersUserIdPutResponses, VerifyUserTokenApiV1AuthVerifyTokenPostData, VerifyUserTokenApiV1AuthVerifyTokenPostResponses } from './types.gen'; +import type { ActivateSystemUserApiV1UsersSystemUsersUserIdActivatePostData, ActivateSystemUserApiV1UsersSystemUsersUserIdActivatePostErrors, ActivateSystemUserApiV1UsersSystemUsersUserIdActivatePostResponses, ActivateUserApiV1UsersUserIdActivatePostData, ActivateUserApiV1UsersUserIdActivatePostErrors, ActivateUserApiV1UsersUserIdActivatePostResponses, AssignRolesToUserApiV1UsersPermissionsUsersUserIdRolesPostData, AssignRolesToUserApiV1UsersPermissionsUsersUserIdRolesPostErrors, AssignRolesToUserApiV1UsersPermissionsUsersUserIdRolesPostResponses, AuditTenantApiV1TenantsTenantIdAuditPostData, AuditTenantApiV1TenantsTenantIdAuditPostErrors, AuditTenantApiV1TenantsTenantIdAuditPostResponses, CancelScheduledMessageApiV1MessagesMessageIdCancelDeleteData, CancelScheduledMessageApiV1MessagesMessageIdCancelDeleteErrors, CancelScheduledMessageApiV1MessagesMessageIdCancelDeleteResponses, ChangePasswordApiV1AuthChangePasswordPostData, ChangePasswordApiV1AuthChangePasswordPostErrors, ChangePasswordApiV1AuthChangePasswordPostResponses, CheckServiceHealthApiV1MessagesConfigsConfigsConfigIdHealthCheckPostData, CheckServiceHealthApiV1MessagesConfigsConfigsConfigIdHealthCheckPostErrors, CheckServiceHealthApiV1MessagesConfigsConfigsConfigIdHealthCheckPostResponses, CleanupOldLogsApiV1LogsQueryCleanupPostData, CleanupOldLogsApiV1LogsQueryCleanupPostErrors, CleanupOldLogsApiV1LogsQueryCleanupPostResponses, CleanupOldLogsApiV1MessagesLogsMessageLogsCleanupPostData, CleanupOldLogsApiV1MessagesLogsMessageLogsCleanupPostErrors, CleanupOldLogsApiV1MessagesLogsMessageLogsCleanupPostResponses, CreateAdminSettingApiV1AdminSettingsPostData, CreateAdminSettingApiV1AdminSettingsPostErrors, CreateAdminSettingApiV1AdminSettingsPostResponses, CreateDepartmentApiV1DepartmentsPostData, CreateDepartmentApiV1DepartmentsPostErrors, CreateDepartmentApiV1DepartmentsPostResponses, CreateExternalServiceConfigApiV1MessagesConfigsConfigsPostData, CreateExternalServiceConfigApiV1MessagesConfigsConfigsPostErrors, CreateExternalServiceConfigApiV1MessagesConfigsConfigsPostResponses, CreateRoleApiV1UsersPermissionsRolesPostData, CreateRoleApiV1UsersPermissionsRolesPostErrors, CreateRoleApiV1UsersPermissionsRolesPostResponses, CreateSystemUserApiV1UsersSystemUsersPostData, CreateSystemUserApiV1UsersSystemUsersPostErrors, CreateSystemUserApiV1UsersSystemUsersPostResponses, CreateTemplateApiV1MessagesTemplatesPostData, CreateTemplateApiV1MessagesTemplatesPostErrors, CreateTemplateApiV1MessagesTemplatesPostResponses, CreateTenantApiV1TenantsPostData, CreateTenantApiV1TenantsPostErrors, CreateTenantApiV1TenantsPostResponses, CreateUserApiV1UsersPostData, CreateUserApiV1UsersPostErrors, CreateUserApiV1UsersPostResponses, DeactivateSystemUserApiV1UsersSystemUsersUserIdDeactivatePostData, DeactivateSystemUserApiV1UsersSystemUsersUserIdDeactivatePostErrors, DeactivateSystemUserApiV1UsersSystemUsersUserIdDeactivatePostResponses, DeactivateUserApiV1UsersUserIdDeactivatePostData, DeactivateUserApiV1UsersUserIdDeactivatePostErrors, DeactivateUserApiV1UsersUserIdDeactivatePostResponses, DeleteAdminSettingApiV1AdminSettingsKeyDeleteData, DeleteAdminSettingApiV1AdminSettingsKeyDeleteErrors, DeleteAdminSettingApiV1AdminSettingsKeyDeleteResponses, DeleteDepartmentApiV1DepartmentsDepartmentIdDeleteData, DeleteDepartmentApiV1DepartmentsDepartmentIdDeleteErrors, DeleteDepartmentApiV1DepartmentsDepartmentIdDeleteResponses, DeleteExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdDeleteData, DeleteExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdDeleteErrors, DeleteExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdDeleteResponses, DeleteRoleApiV1UsersPermissionsRolesRoleIdDeleteData, DeleteRoleApiV1UsersPermissionsRolesRoleIdDeleteErrors, DeleteRoleApiV1UsersPermissionsRolesRoleIdDeleteResponses, DeleteSystemUserApiV1UsersSystemUsersUserIdDeleteData, DeleteSystemUserApiV1UsersSystemUsersUserIdDeleteErrors, DeleteSystemUserApiV1UsersSystemUsersUserIdDeleteResponses, DeleteTemplateApiV1MessagesTemplatesTemplateIdDeleteData, DeleteTemplateApiV1MessagesTemplatesTemplateIdDeleteErrors, DeleteTemplateApiV1MessagesTemplatesTemplateIdDeleteResponses, DeleteTenantApiV1TenantsTenantIdDeleteData, DeleteTenantApiV1TenantsTenantIdDeleteErrors, DeleteTenantApiV1TenantsTenantIdDeleteResponses, DeleteUserApiV1UsersUserIdDeleteData, DeleteUserApiV1UsersUserIdDeleteErrors, DeleteUserApiV1UsersUserIdDeleteResponses, DetailedHealthCheckApiV1HealthDetailedGetData, DetailedHealthCheckApiV1HealthDetailedGetResponses, DisableTenantApiV1TenantsTenantIdDisablePatchData, DisableTenantApiV1TenantsTenantIdDisablePatchErrors, DisableTenantApiV1TenantsTenantIdDisablePatchResponses, EnableTenantApiV1TenantsTenantIdEnablePatchData, EnableTenantApiV1TenantsTenantIdEnablePatchErrors, EnableTenantApiV1TenantsTenantIdEnablePatchResponses, ExportLoginLogsApiV1LogsLoginLoginLogsExportGetData, ExportLoginLogsApiV1LogsLoginLoginLogsExportGetErrors, ExportLoginLogsApiV1LogsLoginLoginLogsExportGetResponses, ExportLogsApiV1LogsQueryLogTypeExportPostData, ExportLogsApiV1LogsQueryLogTypeExportPostErrors, ExportLogsApiV1LogsQueryLogTypeExportPostResponses, ExportNetworkLogsApiV1LogsNetworkNetworkLogsExportGetData, ExportNetworkLogsApiV1LogsNetworkNetworkLogsExportGetErrors, ExportNetworkLogsApiV1LogsNetworkNetworkLogsExportGetResponses, ExportOperationLogsApiV1LogsOperationOperationLogsExportGetData, ExportOperationLogsApiV1LogsOperationOperationLogsExportGetErrors, ExportOperationLogsApiV1LogsOperationOperationLogsExportGetResponses, GetAdminSettingApiV1AdminSettingsKeyGetData, GetAdminSettingApiV1AdminSettingsKeyGetErrors, GetAdminSettingApiV1AdminSettingsKeyGetResponses, GetCaptchaApiV1AuthCaptchaGetData, GetCaptchaApiV1AuthCaptchaGetResponses, GetComprehensiveStatisticsApiV1LogsQueryStatisticsComprehensiveGetData, GetComprehensiveStatisticsApiV1LogsQueryStatisticsComprehensiveGetErrors, GetComprehensiveStatisticsApiV1LogsQueryStatisticsComprehensiveGetResponses, GetCurrentTenantApiV1TenantsMeGetData, GetCurrentTenantApiV1TenantsMeGetResponses, GetCurrentUserInfoApiV1AuthMeGetData, GetCurrentUserInfoApiV1AuthMeGetResponses, GetDepartmentApiV1DepartmentsDepartmentIdGetData, GetDepartmentApiV1DepartmentsDepartmentIdGetErrors, GetDepartmentApiV1DepartmentsDepartmentIdGetResponses, GetDepartmentOptionsApiV1UsersDepartmentsOptionsGetData, GetDepartmentOptionsApiV1UsersDepartmentsOptionsGetResponses, GetDepartmentsApiV1DepartmentsGetData, GetDepartmentsApiV1DepartmentsGetErrors, GetDepartmentsApiV1DepartmentsGetResponses, GetDepartmentTreeApiV1DepartmentsTreeGetData, GetDepartmentTreeApiV1DepartmentsTreeGetResponses, GetDepartmentUsersCountApiV1DepartmentsDepartmentIdUsersCountGetData, GetDepartmentUsersCountApiV1DepartmentsDepartmentIdUsersCountGetErrors, GetDepartmentUsersCountApiV1DepartmentsDepartmentIdUsersCountGetResponses, GetEndpointStatisticsApiV1LogsNetworkNetworkLogsEndpointEndpointStatisticsGetData, GetEndpointStatisticsApiV1LogsNetworkNetworkLogsEndpointEndpointStatisticsGetErrors, GetEndpointStatisticsApiV1LogsNetworkNetworkLogsEndpointEndpointStatisticsGetResponses, GetErrorOperationsApiV1LogsOperationOperationLogsErrorsGetData, GetErrorOperationsApiV1LogsOperationOperationLogsErrorsGetErrors, GetErrorOperationsApiV1LogsOperationOperationLogsErrorsGetResponses, GetErrorRequestsApiV1LogsNetworkNetworkLogsErrorsGetData, GetErrorRequestsApiV1LogsNetworkNetworkLogsErrorsGetErrors, GetErrorRequestsApiV1LogsNetworkNetworkLogsErrorsGetResponses, GetExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdGetData, GetExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdGetErrors, GetExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdGetResponses, GetFailedLoginAttemptsApiV1LogsLoginLoginLogsFailedAttemptsGetData, GetFailedLoginAttemptsApiV1LogsLoginLoginLogsFailedAttemptsGetErrors, GetFailedLoginAttemptsApiV1LogsLoginLoginLogsFailedAttemptsGetResponses, GetIpActivityApiV1LogsNetworkNetworkLogsIpIpAddressActivityGetData, GetIpActivityApiV1LogsNetworkNetworkLogsIpIpAddressActivityGetErrors, GetIpActivityApiV1LogsNetworkNetworkLogsIpIpAddressActivityGetResponses, GetLoginStatisticsApiV1LogsLoginLoginLogsStatisticsGetData, GetLoginStatisticsApiV1LogsLoginLoginLogsStatisticsGetErrors, GetLoginStatisticsApiV1LogsLoginLoginLogsStatisticsGetResponses, GetMessageLogApiV1MessagesLogsMessageLogsMessageIdGetData, GetMessageLogApiV1MessagesLogsMessageLogsMessageIdGetErrors, GetMessageLogApiV1MessagesLogsMessageLogsMessageIdGetResponses, GetMessageReceiptsApiV1MessagesLogsMessageLogsMessageIdReceiptsGetData, GetMessageReceiptsApiV1MessagesLogsMessageLogsMessageIdReceiptsGetErrors, GetMessageReceiptsApiV1MessagesLogsMessageLogsMessageIdReceiptsGetResponses, GetMessageStatisticsApiV1MessagesLogsMessageLogsStatisticsOverviewGetData, GetMessageStatisticsApiV1MessagesLogsMessageLogsStatisticsOverviewGetErrors, GetMessageStatisticsApiV1MessagesLogsMessageLogsStatisticsOverviewGetResponses, GetModuleOperationsApiV1LogsOperationOperationLogsModuleModuleHistoryGetData, GetModuleOperationsApiV1LogsOperationOperationLogsModuleModuleHistoryGetErrors, GetModuleOperationsApiV1LogsOperationOperationLogsModuleModuleHistoryGetResponses, GetNetworkStatisticsApiV1LogsNetworkNetworkLogsStatisticsGetData, GetNetworkStatisticsApiV1LogsNetworkNetworkLogsStatisticsGetErrors, GetNetworkStatisticsApiV1LogsNetworkNetworkLogsStatisticsGetResponses, GetOperationStatisticsApiV1LogsOperationOperationLogsStatisticsGetData, GetOperationStatisticsApiV1LogsOperationOperationLogsStatisticsGetErrors, GetOperationStatisticsApiV1LogsOperationOperationLogsStatisticsGetResponses, GetPerformanceSummaryApiV1SystemMetricsSummaryGetData, GetPerformanceSummaryApiV1SystemMetricsSummaryGetResponses, GetRecipientStatisticsApiV1MessagesLogsMessageLogsStatisticsRecipientRecipientGetData, GetRecipientStatisticsApiV1MessagesLogsMessageLogsStatisticsRecipientRecipientGetErrors, GetRecipientStatisticsApiV1MessagesLogsMessageLogsStatisticsRecipientRecipientGetResponses, GetRoleApiV1UsersPermissionsRolesRoleIdGetData, GetRoleApiV1UsersPermissionsRolesRoleIdGetErrors, GetRoleApiV1UsersPermissionsRolesRoleIdGetResponses, GetRolesApiV1UsersPermissionsRolesGetData, GetRolesApiV1UsersPermissionsRolesGetErrors, GetRolesApiV1UsersPermissionsRolesGetResponses, GetSlowRequestsApiV1LogsNetworkNetworkLogsSlowGetData, GetSlowRequestsApiV1LogsNetworkNetworkLogsSlowGetErrors, GetSlowRequestsApiV1LogsNetworkNetworkLogsSlowGetResponses, GetSuspiciousLoginsApiV1LogsLoginLoginLogsSuspiciousGetData, GetSuspiciousLoginsApiV1LogsLoginLoginLogsSuspiciousGetErrors, GetSuspiciousLoginsApiV1LogsLoginLoginLogsSuspiciousGetResponses, GetSystemConfigApiV1SystemConfigGetData, GetSystemConfigApiV1SystemConfigGetResponses, GetSystemInfoApiV1SystemInfoGetData, GetSystemInfoApiV1SystemInfoGetResponses, GetSystemMetricsApiV1SystemMetricsGetData, GetSystemMetricsApiV1SystemMetricsGetErrors, GetSystemMetricsApiV1SystemMetricsGetResponses, GetSystemPermissionsApiV1UsersPermissionsPermissionsGetData, GetSystemPermissionsApiV1UsersPermissionsPermissionsGetErrors, GetSystemPermissionsApiV1UsersPermissionsPermissionsGetResponses, GetSystemStatsApiV1SystemStatsGetData, GetSystemStatsApiV1SystemStatsGetResponses, GetSystemUserApiV1UsersSystemUsersUserIdGetData, GetSystemUserApiV1UsersSystemUsersUserIdGetErrors, GetSystemUserApiV1UsersSystemUsersUserIdGetResponses, GetSystemUserStatsApiV1UsersSystemUsersStatsSummaryGetData, GetSystemUserStatsApiV1UsersSystemUsersStatsSummaryGetResponses, GetTemplateApiV1MessagesTemplatesTemplateIdGetData, GetTemplateApiV1MessagesTemplatesTemplateIdGetErrors, GetTemplateApiV1MessagesTemplatesTemplateIdGetResponses, GetTenantApiV1TenantsTenantIdGetData, GetTenantApiV1TenantsTenantIdGetErrors, GetTenantApiV1TenantsTenantIdGetResponses, GetTenantAuditLogsApiV1TenantsAuditLogsGetData, GetTenantAuditLogsApiV1TenantsAuditLogsGetErrors, GetTenantAuditLogsApiV1TenantsAuditLogsGetResponses, GetUnreadCountApiV1MessagesLogsMessageLogsUnreadCountGetData, GetUnreadCountApiV1MessagesLogsMessageLogsUnreadCountGetErrors, GetUnreadCountApiV1MessagesLogsMessageLogsUnreadCountGetResponses, GetUnreadMessageCountApiV1MessagesInboxUnreadCountGetData, GetUnreadMessageCountApiV1MessagesInboxUnreadCountGetResponses, GetUserActivitySummaryApiV1LogsQueryUserUserIdActivityGetData, GetUserActivitySummaryApiV1LogsQueryUserUserIdActivityGetErrors, GetUserActivitySummaryApiV1LogsQueryUserUserIdActivityGetResponses, GetUserApiV1UsersUserIdGetData, GetUserApiV1UsersUserIdGetErrors, GetUserApiV1UsersUserIdGetResponses, GetUserInboxMessagesApiV1MessagesInboxGetData, GetUserInboxMessagesApiV1MessagesInboxGetErrors, GetUserInboxMessagesApiV1MessagesInboxGetResponses, GetUserLoginHistoryApiV1LogsLoginLoginLogsUserUserIdHistoryGetData, GetUserLoginHistoryApiV1LogsLoginLoginLogsUserUserIdHistoryGetErrors, GetUserLoginHistoryApiV1LogsLoginLoginLogsUserUserIdHistoryGetResponses, GetUserOperationHistoryApiV1LogsOperationOperationLogsUserUserIdHistoryGetData, GetUserOperationHistoryApiV1LogsOperationOperationLogsUserUserIdHistoryGetErrors, GetUserOperationHistoryApiV1LogsOperationOperationLogsUserUserIdHistoryGetResponses, GetUserRolesApiV1UsersPermissionsUsersUserIdRolesGetData, GetUserRolesApiV1UsersPermissionsUsersUserIdRolesGetErrors, GetUserRolesApiV1UsersPermissionsUsersUserIdRolesGetResponses, GetUsersApiV1UsersGetData, GetUsersApiV1UsersGetErrors, GetUsersApiV1UsersGetResponses, GetUserStatsApiV1UsersStatsSummaryGetData, GetUserStatsApiV1UsersStatsSummaryGetResponses, HealthCheckApiV1HealthGetData, HealthCheckApiV1HealthGetResponses, HealthCheckHealthGetData, HealthCheckHealthGetResponses, ListAdminSettingsApiV1AdminSettingsGetData, ListAdminSettingsApiV1AdminSettingsGetErrors, ListAdminSettingsApiV1AdminSettingsGetResponses, ListAnonymousTenantsApiV1TenantsAnonymousListGetData, ListAnonymousTenantsApiV1TenantsAnonymousListGetErrors, ListAnonymousTenantsApiV1TenantsAnonymousListGetResponses, ListExternalServiceConfigsApiV1MessagesConfigsConfigsGetData, ListExternalServiceConfigsApiV1MessagesConfigsConfigsGetErrors, ListExternalServiceConfigsApiV1MessagesConfigsConfigsGetResponses, ListLoginLogsApiV1LogsLoginLoginLogsGetData, ListLoginLogsApiV1LogsLoginLoginLogsGetErrors, ListLoginLogsApiV1LogsLoginLoginLogsGetResponses, ListMessageLogsApiV1MessagesLogsMessageLogsGetData, ListMessageLogsApiV1MessagesLogsMessageLogsGetErrors, ListMessageLogsApiV1MessagesLogsMessageLogsGetResponses, ListNetworkLogsApiV1LogsNetworkNetworkLogsGetData, ListNetworkLogsApiV1LogsNetworkNetworkLogsGetErrors, ListNetworkLogsApiV1LogsNetworkNetworkLogsGetResponses, ListOperationLogsApiV1LogsOperationOperationLogsGetData, ListOperationLogsApiV1LogsOperationOperationLogsGetErrors, ListOperationLogsApiV1LogsOperationOperationLogsGetResponses, ListSystemUsersApiV1UsersSystemUsersGetData, ListSystemUsersApiV1UsersSystemUsersGetErrors, ListSystemUsersApiV1UsersSystemUsersGetResponses, ListTemplatesApiV1MessagesTemplatesGetData, ListTemplatesApiV1MessagesTemplatesGetErrors, ListTemplatesApiV1MessagesTemplatesGetResponses, ListTenantsApiV1TenantsGetData, ListTenantsApiV1TenantsGetErrors, ListTenantsApiV1TenantsGetResponses, LoginApiV1AuthLoginPostData, LoginApiV1AuthLoginPostErrors, LoginApiV1AuthLoginPostResponses, LogoutApiV1AuthLogoutPostData, LogoutApiV1AuthLogoutPostResponses, MarkAllMessagesAsReadApiV1MessagesInboxReadAllPostData, MarkAllMessagesAsReadApiV1MessagesInboxReadAllPostResponses, MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostData, MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostErrors, MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostResponses, MarkMessageAsReadApiV1MessagesLogsMessageLogsMessageIdReadPostData, MarkMessageAsReadApiV1MessagesLogsMessageLogsMessageIdReadPostErrors, MarkMessageAsReadApiV1MessagesLogsMessageLogsMessageIdReadPostResponses, RefreshTokenApiV1AuthRefreshPostData, RefreshTokenApiV1AuthRefreshPostResponses, RegisterApiV1AuthRegisterPostData, RegisterApiV1AuthRegisterPostErrors, RegisterApiV1AuthRegisterPostResponses, RegisterWithCompanyApiV1AuthRegisterWithCompanyPostData, RegisterWithCompanyApiV1AuthRegisterWithCompanyPostErrors, RegisterWithCompanyApiV1AuthRegisterWithCompanyPostResponses, RemoveUserRoleApiV1UsersPermissionsUsersUserIdRolesRoleIdDeleteData, RemoveUserRoleApiV1UsersPermissionsUsersUserIdRolesRoleIdDeleteErrors, RemoveUserRoleApiV1UsersPermissionsUsersUserIdRolesRoleIdDeleteResponses, RetryFailedMessageApiV1MessagesMessageIdRetryPostData, RetryFailedMessageApiV1MessagesMessageIdRetryPostErrors, RetryFailedMessageApiV1MessagesMessageIdRetryPostResponses, ScheduleMessageApiV1MessagesSchedulePostData, ScheduleMessageApiV1MessagesSchedulePostErrors, ScheduleMessageApiV1MessagesSchedulePostResponses, SearchLogsApiV1LogsQueryLogTypeGetData, SearchLogsApiV1LogsQueryLogTypeGetErrors, SearchLogsApiV1LogsQueryLogTypeGetResponses, SendMessageApiV1MessagesSendPostData, SendMessageApiV1MessagesSendPostErrors, SendMessageApiV1MessagesSendPostResponses, SetDefaultServiceApiV1MessagesConfigsConfigsConfigIdSetDefaultPostData, SetDefaultServiceApiV1MessagesConfigsConfigsConfigIdSetDefaultPostErrors, SetDefaultServiceApiV1MessagesConfigsConfigsConfigIdSetDefaultPostResponses, SubmitTenantAuditApiV1TenantsSubmitPostData, SubmitTenantAuditApiV1TenantsSubmitPostErrors, SubmitTenantAuditApiV1TenantsSubmitPostResponses, TestEmailConfigApiV1MessagesTestEmailConfigPostData, TestEmailConfigApiV1MessagesTestEmailConfigPostErrors, TestEmailConfigApiV1MessagesTestEmailConfigPostResponses, TestTemplateApiV1MessagesTemplatesTemplateIdTestPostData, TestTemplateApiV1MessagesTemplatesTemplateIdTestPostErrors, TestTemplateApiV1MessagesTemplatesTemplateIdTestPostResponses, UpdateAdminSettingApiV1AdminSettingsKeyPutData, UpdateAdminSettingApiV1AdminSettingsKeyPutErrors, UpdateAdminSettingApiV1AdminSettingsKeyPutResponses, UpdateCurrentUserApiV1AuthMePutData, UpdateCurrentUserApiV1AuthMePutErrors, UpdateCurrentUserApiV1AuthMePutResponses, UpdateDepartmentApiV1DepartmentsDepartmentIdPutData, UpdateDepartmentApiV1DepartmentsDepartmentIdPutErrors, UpdateDepartmentApiV1DepartmentsDepartmentIdPutResponses, UpdateDepartmentOrderApiV1DepartmentsDepartmentIdOrderPatchData, UpdateDepartmentOrderApiV1DepartmentsDepartmentIdOrderPatchErrors, UpdateDepartmentOrderApiV1DepartmentsDepartmentIdOrderPatchResponses, UpdateDepartmentStatusApiV1DepartmentsDepartmentIdStatusPatchData, UpdateDepartmentStatusApiV1DepartmentsDepartmentIdStatusPatchErrors, UpdateDepartmentStatusApiV1DepartmentsDepartmentIdStatusPatchResponses, UpdateExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdPutData, UpdateExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdPutErrors, UpdateExternalServiceConfigApiV1MessagesConfigsConfigsConfigIdPutResponses, UpdateRoleApiV1UsersPermissionsRolesRoleIdPutData, UpdateRoleApiV1UsersPermissionsRolesRoleIdPutErrors, UpdateRoleApiV1UsersPermissionsRolesRoleIdPutResponses, UpdateSystemUserApiV1UsersSystemUsersUserIdPutData, UpdateSystemUserApiV1UsersSystemUsersUserIdPutErrors, UpdateSystemUserApiV1UsersSystemUsersUserIdPutResponses, UpdateTemplateApiV1MessagesTemplatesTemplateIdPutData, UpdateTemplateApiV1MessagesTemplatesTemplateIdPutErrors, UpdateTemplateApiV1MessagesTemplatesTemplateIdPutResponses, UpdateUserApiV1UsersUserIdPutData, UpdateUserApiV1UsersUserIdPutErrors, UpdateUserApiV1UsersUserIdPutResponses, VerifyUserTokenApiV1AuthVerifyTokenPostData, VerifyUserTokenApiV1AuthVerifyTokenPostResponses } from './types.gen'; export type Options = Options2 & { /** @@ -1588,6 +1588,106 @@ export const retryFailedMessageApiV1MessagesMessageIdRetryPost = (options?: Options) => { + return (options?.client ?? client).get({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/messages/inbox', + ...options + }); +}; + +/** + * 标记站内信为已读 + * + * 标记站内信为已读 + * + * - **message_id**: 消息ID + */ +export const markMessageAsReadApiV1MessagesInboxMessageIdReadPost = (options: Options) => { + return (options.client ?? client).post({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/messages/inbox/{message_id}/read', + ...options + }); +}; + +/** + * 获取未读消息数量 + * + * 获取当前用户的未读消息数量 + */ +export const getUnreadMessageCountApiV1MessagesInboxUnreadCountGet = (options?: Options) => { + return (options?.client ?? client).get({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/messages/inbox/unread-count', + ...options + }); +}; + +/** + * 标记所有消息为已读 + * + * 标记当前用户的所有站内信为已读 + */ +export const markAllMessagesAsReadApiV1MessagesInboxReadAllPost = (options?: Options) => { + return (options?.client ?? client).post({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/messages/inbox/read-all', + ...options + }); +}; + +/** + * 测试邮件配置 + * + * 测试邮件配置是否有效 + */ +export const testEmailConfigApiV1MessagesTestEmailConfigPost = (options: Options) => { + return (options.client ?? client).post({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/messages/test-email-config', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); +}; + /** * 获取模板列表 * @@ -2171,6 +2271,104 @@ export const getPerformanceSummaryApiV1SystemMetricsSummaryGet = (options?: Options) => { + return (options?.client ?? client).get({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/admin/settings', + ...options + }); +}; + +/** + * 创建管理员设置 + * + * 创建新的管理员设置项 + */ +export const createAdminSettingApiV1AdminSettingsPost = (options: Options) => { + return (options.client ?? client).post({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/admin/settings', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); +}; + +/** + * 删除管理员设置 + * + * 删除指定的管理员设置项 + */ +export const deleteAdminSettingApiV1AdminSettingsKeyDelete = (options: Options) => { + return (options.client ?? client).delete({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/admin/settings/{key}', + ...options + }); +}; + +/** + * 获取管理员设置 + * + * 根据键名获取指定的管理员设置 + */ +export const getAdminSettingApiV1AdminSettingsKeyGet = (options: Options) => { + return (options.client ?? client).get({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/admin/settings/{key}', + ...options + }); +}; + +/** + * 更新管理员设置 + * + * 更新指定的管理员设置项 + */ +export const updateAdminSettingApiV1AdminSettingsKeyPut = (options: Options) => { + return (options.client ?? client).put({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/api/v1/admin/settings/{key}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } + }); +}; + /** * Health Check * diff --git a/crop-x/src/lib/api/types.gen.ts b/crop-x/src/lib/api/types.gen.ts index 7d23321..6d6ca78 100644 --- a/crop-x/src/lib/api/types.gen.ts +++ b/crop-x/src/lib/api/types.gen.ts @@ -4,6 +4,72 @@ export type ClientOptions = { baseUrl: 'https://gitea-admin-hm-smart-agri-app.dev.maimaiag.com' | (string & {}); }; +/** + * AdminSettingsCreateRequest + * + * 创建管理员设置请求 + */ +export type AdminSettingsCreateRequest = { + /** + * Key + * + * 设置键名 + */ + key: string; + /** + * Json Value + * + * 设置值JSON数据 + */ + json_value: { + [key: string]: unknown; + }; +}; + +/** + * AdminSettingsResponse + * + * 管理员设置响应 + */ +export type AdminSettingsResponse = { + /** + * Id + * + * 设置ID + */ + id?: string; + /** + * Key + * + * 设置键名 + */ + key: string; + /** + * Json Value + * + * 设置值JSON数据 + */ + json_value?: { + [key: string]: unknown; + } | null; +}; + +/** + * AdminSettingsUpdateRequest + * + * 更新管理员设置请求 + */ +export type AdminSettingsUpdateRequest = { + /** + * Json Value + * + * 设置值JSON数据 + */ + json_value: { + [key: string]: unknown; + }; +}; + /** * ApplicationMetrics * @@ -152,6 +218,72 @@ export type CaptchaResponse = { */ export type CompanyScale = '小型(50人以下)' | '中型(50-300人)' | '大型(300人以上)'; +/** + * ConnectionConfig + */ +export type ConnectionConfig = { + /** + * Mail Username + */ + MAIL_USERNAME: string; + /** + * Mail Port + */ + MAIL_PORT: number; + /** + * Mail Server + */ + MAIL_SERVER: string; + /** + * Mail Starttls + */ + MAIL_STARTTLS: boolean; + /** + * Mail Ssl Tls + */ + MAIL_SSL_TLS: boolean; + /** + * Mail Debug + */ + MAIL_DEBUG?: number; + /** + * Mail From + */ + MAIL_FROM: string; + /** + * Mail From Name + */ + MAIL_FROM_NAME?: string | null; + /** + * Template Folder + */ + TEMPLATE_FOLDER?: string | null; + /** + * Suppress Send + */ + SUPPRESS_SEND?: number; + /** + * Use Credentials + */ + USE_CREDENTIALS?: boolean; + /** + * Validate Certs + */ + VALIDATE_CERTS?: boolean; + /** + * Timeout + */ + TIMEOUT?: number; + /** + * Local Hostname + */ + LOCAL_HOSTNAME?: string | null; + /** + * Cert Bundle + */ + CERT_BUNDLE?: string | null; +}; + /** * DepartmentCreate * @@ -658,6 +790,50 @@ export type DiskPartitionInfo = { usage_percent: number; }; +/** + * EmailConfigTestResponse + * + * 邮件配置测试响应 + */ +export type EmailConfigTestResponse = { + /** + * Success + * + * 测试是否成功 + */ + success: boolean; + /** + * Message + * + * 测试结果消息 + */ + message: string; + /** + * Config Valid + * + * 邮件配置是否有效 + */ + config_valid: boolean; + /** + * Connection Test + * + * 连接测试是否通过 + */ + connection_test: boolean; + /** + * Delivery Test + * + * 投递测试是否通过 + */ + delivery_test: boolean; + /** + * Error Details + * + * 错误详情(如果有) + */ + error_details?: string | null; +}; + /** * ExternalServiceConfigCreate * @@ -827,6 +1003,94 @@ export type HttpValidationError = { detail?: Array; }; +/** + * InboxMessageResponse + * + * 站内信响应 + */ +export type InboxMessageResponse = { + /** + * Id + * + * 消息ID + */ + id: string; + /** + * Subject + * + * 消息主题 + */ + subject?: string | null; + /** + * Content + * + * 消息内容 + */ + content: string; + /** + * 消息优先级 + */ + priority: MessagePriority; + /** + * Is Read + * + * 是否已读 + */ + is_read: boolean; + /** + * Read At + * + * 阅读时间 + */ + read_at?: string | null; + /** + * Sent At + * + * 发送时间 + */ + sent_at?: string | null; + /** + * Created At + * + * 创建时间 + */ + created_at: string; + /** + * 消息类型 + */ + message_type: MessageType; + /** + * Recipient + * + * 接收者号码 + */ + recipient: string; + /** + * Recipient Name + * + * 接收者名字 + */ + recipient_name?: string | null; + /** + * Retry Count + * + * 重试次数 + */ + retry_count: number; + /** + * Failure Reason + * + * 失败原因 + */ + failure_reason?: string | null; + /** + * Scheduled At + * + * 计划发送时间 + */ + scheduled_at?: string | null; +}; + /** * InvoiceType * @@ -1635,6 +1899,54 @@ export type OperationLogStatistics = { }; }; +/** + * PagedResponse[AdminSettingsResponse] + */ +export type PagedResponseAdminSettingsResponse = { + /** + * Data + * + * 数据列表 + */ + data?: Array; + /** + * Total + * + * 数据总数 + */ + total: number; + /** + * Page + * + * 当前页数 + */ + page: number; + /** + * Size + * + * 当前数量 + */ + size: number; + /** + * Total Pages + * + * 总页数 + */ + total_pages: number; + /** + * Has Next + * + * 是否有下一页 + */ + has_next: boolean; + /** + * Has Prev + * + * 是否有上一页 + */ + has_prev: boolean; +}; + /** * PagedResponse[DepartmentResponse] */ @@ -1683,6 +1995,54 @@ export type PagedResponseDepartmentResponse = { has_prev: boolean; }; +/** + * PagedResponse[InboxMessageResponse] + */ +export type PagedResponseInboxMessageResponse = { + /** + * Data + * + * 数据列表 + */ + data?: Array; + /** + * Total + * + * 数据总数 + */ + total: number; + /** + * Page + * + * 当前页数 + */ + page: number; + /** + * Size + * + * 当前数量 + */ + size: number; + /** + * Total Pages + * + * 总页数 + */ + total_pages: number; + /** + * Has Next + * + * 是否有下一页 + */ + has_next: boolean; + /** + * Has Prev + * + * 是否有上一页 + */ + has_prev: boolean; +}; + /** * PagedResponse[MessageLogResponse] */ @@ -3251,6 +3611,12 @@ export type UserCreateWithCompany = { * 用户列表响应模型 - 用于系统用户管理接口 */ export type UserListResponse = { + /** + * Id + * + * 用户ID + */ + id: string; /** * Username * @@ -3595,6 +3961,76 @@ export type ValidationError = { type: string; }; +/** + * ConnectionConfig + */ +export type ConnectionConfigWritable = { + /** + * Mail Username + */ + MAIL_USERNAME: string; + /** + * Mail Password + */ + MAIL_PASSWORD: string; + /** + * Mail Port + */ + MAIL_PORT: number; + /** + * Mail Server + */ + MAIL_SERVER: string; + /** + * Mail Starttls + */ + MAIL_STARTTLS: boolean; + /** + * Mail Ssl Tls + */ + MAIL_SSL_TLS: boolean; + /** + * Mail Debug + */ + MAIL_DEBUG?: number; + /** + * Mail From + */ + MAIL_FROM: string; + /** + * Mail From Name + */ + MAIL_FROM_NAME?: string | null; + /** + * Template Folder + */ + TEMPLATE_FOLDER?: string | null; + /** + * Suppress Send + */ + SUPPRESS_SEND?: number; + /** + * Use Credentials + */ + USE_CREDENTIALS?: boolean; + /** + * Validate Certs + */ + VALIDATE_CERTS?: boolean; + /** + * Timeout + */ + TIMEOUT?: number; + /** + * Local Hostname + */ + LOCAL_HOSTNAME?: string | null; + /** + * Cert Bundle + */ + CERT_BUNDLE?: string | null; +}; + export type RegisterApiV1AuthRegisterPostData = { body: UserCreate; path?: never; @@ -6681,6 +7117,158 @@ export type RetryFailedMessageApiV1MessagesMessageIdRetryPostResponses = { 200: unknown; }; +export type GetUserInboxMessagesApiV1MessagesInboxGetData = { + body?: never; + path?: never; + query?: { + /** + * Is Read + */ + is_read?: boolean | null; + /** + * Page + * + * 页码 + */ + page?: number; + /** + * Page Size + */ + page_size?: number; + /** + * Size + * + * 每页数量 + */ + size?: number; + /** + * Order By + * + * 排序字段 + */ + order_by?: string; + /** + * Sort Order + * + * 排序方向 (asc/desc) + */ + sort_order?: string; + }; + url: '/api/v1/messages/inbox'; +}; + +export type GetUserInboxMessagesApiV1MessagesInboxGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetUserInboxMessagesApiV1MessagesInboxGetError = GetUserInboxMessagesApiV1MessagesInboxGetErrors[keyof GetUserInboxMessagesApiV1MessagesInboxGetErrors]; + +export type GetUserInboxMessagesApiV1MessagesInboxGetResponses = { + /** + * Successful Response + */ + 200: PagedResponseInboxMessageResponse; +}; + +export type GetUserInboxMessagesApiV1MessagesInboxGetResponse = GetUserInboxMessagesApiV1MessagesInboxGetResponses[keyof GetUserInboxMessagesApiV1MessagesInboxGetResponses]; + +export type MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostData = { + body?: never; + path: { + /** + * Message Id + */ + message_id: string; + }; + query?: never; + url: '/api/v1/messages/inbox/{message_id}/read'; +}; + +export type MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostError = MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostErrors[keyof MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostErrors]; + +export type MarkMessageAsReadApiV1MessagesInboxMessageIdReadPostResponses = { + /** + * Successful Response + */ + 200: unknown; +}; + +export type GetUnreadMessageCountApiV1MessagesInboxUnreadCountGetData = { + body?: never; + path?: never; + query?: never; + url: '/api/v1/messages/inbox/unread-count'; +}; + +export type GetUnreadMessageCountApiV1MessagesInboxUnreadCountGetResponses = { + /** + * Successful Response + */ + 200: unknown; +}; + +export type MarkAllMessagesAsReadApiV1MessagesInboxReadAllPostData = { + body?: never; + path?: never; + query?: never; + url: '/api/v1/messages/inbox/read-all'; +}; + +export type MarkAllMessagesAsReadApiV1MessagesInboxReadAllPostResponses = { + /** + * Successful Response + */ + 200: unknown; +}; + +export type TestEmailConfigApiV1MessagesTestEmailConfigPostData = { + body: ConnectionConfigWritable; + path?: never; + query: { + /** + * Recipient + * + * 测试邮件接收地址 + */ + recipient: string; + /** + * Is Html + * + * 是否HTML + */ + is_html?: boolean; + }; + url: '/api/v1/messages/test-email-config'; +}; + +export type TestEmailConfigApiV1MessagesTestEmailConfigPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type TestEmailConfigApiV1MessagesTestEmailConfigPostError = TestEmailConfigApiV1MessagesTestEmailConfigPostErrors[keyof TestEmailConfigApiV1MessagesTestEmailConfigPostErrors]; + +export type TestEmailConfigApiV1MessagesTestEmailConfigPostResponses = { + /** + * Successful Response + */ + 200: EmailConfigTestResponse; +}; + +export type TestEmailConfigApiV1MessagesTestEmailConfigPostResponse = TestEmailConfigApiV1MessagesTestEmailConfigPostResponses[keyof TestEmailConfigApiV1MessagesTestEmailConfigPostResponses]; + export type ListTemplatesApiV1MessagesTemplatesGetData = { body?: never; path?: never; @@ -7554,6 +8142,171 @@ export type GetPerformanceSummaryApiV1SystemMetricsSummaryGetResponses = { export type GetPerformanceSummaryApiV1SystemMetricsSummaryGetResponse = GetPerformanceSummaryApiV1SystemMetricsSummaryGetResponses[keyof GetPerformanceSummaryApiV1SystemMetricsSummaryGetResponses]; +export type ListAdminSettingsApiV1AdminSettingsGetData = { + body?: never; + path?: never; + query?: { + /** + * Page + * + * 页码 + */ + page?: number; + /** + * Size + * + * 每页数量 + */ + size?: number; + /** + * Order By + * + * 排序字段 + */ + order_by?: string; + /** + * Sort Order + * + * 排序方向 (asc/desc) + */ + sort_order?: string; + }; + url: '/api/v1/admin/settings'; +}; + +export type ListAdminSettingsApiV1AdminSettingsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListAdminSettingsApiV1AdminSettingsGetError = ListAdminSettingsApiV1AdminSettingsGetErrors[keyof ListAdminSettingsApiV1AdminSettingsGetErrors]; + +export type ListAdminSettingsApiV1AdminSettingsGetResponses = { + /** + * Successful Response + */ + 200: PagedResponseAdminSettingsResponse; +}; + +export type ListAdminSettingsApiV1AdminSettingsGetResponse = ListAdminSettingsApiV1AdminSettingsGetResponses[keyof ListAdminSettingsApiV1AdminSettingsGetResponses]; + +export type CreateAdminSettingApiV1AdminSettingsPostData = { + body: AdminSettingsCreateRequest; + path?: never; + query?: never; + url: '/api/v1/admin/settings'; +}; + +export type CreateAdminSettingApiV1AdminSettingsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateAdminSettingApiV1AdminSettingsPostError = CreateAdminSettingApiV1AdminSettingsPostErrors[keyof CreateAdminSettingApiV1AdminSettingsPostErrors]; + +export type CreateAdminSettingApiV1AdminSettingsPostResponses = { + /** + * Successful Response + */ + 201: AdminSettingsResponse; +}; + +export type CreateAdminSettingApiV1AdminSettingsPostResponse = CreateAdminSettingApiV1AdminSettingsPostResponses[keyof CreateAdminSettingApiV1AdminSettingsPostResponses]; + +export type DeleteAdminSettingApiV1AdminSettingsKeyDeleteData = { + body?: never; + path: { + /** + * Key + */ + key: string; + }; + query?: never; + url: '/api/v1/admin/settings/{key}'; +}; + +export type DeleteAdminSettingApiV1AdminSettingsKeyDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteAdminSettingApiV1AdminSettingsKeyDeleteError = DeleteAdminSettingApiV1AdminSettingsKeyDeleteErrors[keyof DeleteAdminSettingApiV1AdminSettingsKeyDeleteErrors]; + +export type DeleteAdminSettingApiV1AdminSettingsKeyDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteAdminSettingApiV1AdminSettingsKeyDeleteResponse = DeleteAdminSettingApiV1AdminSettingsKeyDeleteResponses[keyof DeleteAdminSettingApiV1AdminSettingsKeyDeleteResponses]; + +export type GetAdminSettingApiV1AdminSettingsKeyGetData = { + body?: never; + path: { + /** + * Key + */ + key: string; + }; + query?: never; + url: '/api/v1/admin/settings/{key}'; +}; + +export type GetAdminSettingApiV1AdminSettingsKeyGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetAdminSettingApiV1AdminSettingsKeyGetError = GetAdminSettingApiV1AdminSettingsKeyGetErrors[keyof GetAdminSettingApiV1AdminSettingsKeyGetErrors]; + +export type GetAdminSettingApiV1AdminSettingsKeyGetResponses = { + /** + * Successful Response + */ + 200: AdminSettingsResponse; +}; + +export type GetAdminSettingApiV1AdminSettingsKeyGetResponse = GetAdminSettingApiV1AdminSettingsKeyGetResponses[keyof GetAdminSettingApiV1AdminSettingsKeyGetResponses]; + +export type UpdateAdminSettingApiV1AdminSettingsKeyPutData = { + body: AdminSettingsUpdateRequest; + path: { + /** + * Key + */ + key: string; + }; + query?: never; + url: '/api/v1/admin/settings/{key}'; +}; + +export type UpdateAdminSettingApiV1AdminSettingsKeyPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateAdminSettingApiV1AdminSettingsKeyPutError = UpdateAdminSettingApiV1AdminSettingsKeyPutErrors[keyof UpdateAdminSettingApiV1AdminSettingsKeyPutErrors]; + +export type UpdateAdminSettingApiV1AdminSettingsKeyPutResponses = { + /** + * Successful Response + */ + 200: AdminSettingsResponse; +}; + +export type UpdateAdminSettingApiV1AdminSettingsKeyPutResponse = UpdateAdminSettingApiV1AdminSettingsKeyPutResponses[keyof UpdateAdminSettingApiV1AdminSettingsKeyPutResponses]; + export type HealthCheckHealthGetData = { body?: never; path?: never; diff --git a/crop-x/src/stores/modules/auth.ts b/crop-x/src/stores/modules/auth.ts index 621abee..64b342b 100644 --- a/crop-x/src/stores/modules/auth.ts +++ b/crop-x/src/stores/modules/auth.ts @@ -1,11 +1,10 @@ import { create } from 'zustand'; -import { getCurrentUserInfoApiV1AuthMeGet } from '@/lib/api/sdk.gen'; // Auth user interface definition export interface AuthUser { email: string; username: string; - full_name: string | null; + full_name?: string | null; phone: string; id: string; tenant_id: string; @@ -22,16 +21,38 @@ export interface AuthUser { department_name: string | null; } +// Settings item interface +export interface SettingItem { + id: string; + key: string; + json_value: Record; +} + +// Settings response interface +export interface SettingsResponse { + data: SettingItem[]; + total: number; + page: number; + size: number; + total_pages: number; + has_next: boolean; + has_prev: boolean; +} + // Auth state interface export interface AuthState { user: AuthUser | null; + settings: SettingsResponse | null; setAuthUser: (user: AuthUser | null) => void; getAuthUser: () => AuthUser | null; + setSettings: (settings: SettingsResponse | null) => void; + getSettings: () => SettingsResponse | null; } // Create auth store export const useAuthStore = create((set, get) => ({ user: null, + settings: null, setAuthUser: (user: AuthUser | null) => { set({ user }); @@ -40,6 +61,14 @@ export const useAuthStore = create((set, get) => ({ getAuthUser: () => { return get().user; }, + + setSettings: (settings: SettingsResponse | null) => { + set({ settings }); + }, + + getSettings: () => { + return get().settings; + }, })); // Export functions for direct usage @@ -51,36 +80,13 @@ export const getAuthUser = (): AuthUser | null => { return useAuthStore.getState().getAuthUser(); }; -// Validate and update user info from API -export const validateAndUpdateUser = async (token: string): Promise => { - try { - // 使用 SDK 调用 /api/v1/auth/me 验证用户信息 - const response = await getCurrentUserInfoApiV1AuthMeGet({ - headers: { - 'Authorization': `Bearer ${token}`, - }, - }); - - if (response.data) { - // 更新用户信息(可能包含最新的权限、角色等) - const currentUser = getAuthUser(); - if (currentUser) { - const updatedUserData = { - ...currentUser, - ...response.data, // 合并最新的用户信息 - }; - setAuthUser(updatedUserData); - - // 打印存储后的用户数据,用于调试 - console.log('从Zustand取出的用户数据:', getAuthUser()); - } - return true; - } - return false; - } catch (error) { - console.error('Failed to validate user info:', error); - return false; - } +export const setSettings = (settings: SettingsResponse | null) => { + useAuthStore.getState().setSettings(settings); }; +export const getSettings = (): SettingsResponse | null => { + return useAuthStore.getState().getSettings(); +}; + + export default useAuthStore; \ No newline at end of file