From 2fa64e66c90bc7cf78ae366dbba01ac53c1c6f14 Mon Sep 17 00:00:00 2001 From: peng Date: Fri, 31 Oct 2025 10:47:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=20-=20=E9=A1=B5=E9=9D=A2=E5=B8=83=E5=B1=80=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crop-x/scripts/generate-api.cjs | 97 +- crop-x/scripts/openapi.json | 343 +---- .../(app)/api-example/openapi-examples.tsx | 420 +++++ .../src/app/{ => (app)}/api-example/page.tsx | 512 ++++++- crop-x/src/app/(app)/layout.tsx | 1346 ++++++++++++++++- crop-x/src/app/layout.tsx | 1344 +--------------- 6 files changed, 2325 insertions(+), 1737 deletions(-) create mode 100644 crop-x/src/app/(app)/api-example/openapi-examples.tsx rename crop-x/src/app/{ => (app)}/api-example/page.tsx (65%) diff --git a/crop-x/scripts/generate-api.cjs b/crop-x/scripts/generate-api.cjs index 692f195..f039808 100644 --- a/crop-x/scripts/generate-api.cjs +++ b/crop-x/scripts/generate-api.cjs @@ -9,6 +9,44 @@ const fs = require('fs'); const path = require('path'); +// 从环境配置文件中读取 API_BASE_URL +function getApiBaseUrl() { + try { + // 首先尝试从 env/.env.dev 文件读取 + const envDevPath = path.join(process.cwd(), 'env', '.env.dev'); + if (fs.existsSync(envDevPath)) { + const envContent = fs.readFileSync(envDevPath, 'utf8'); + const apiBaseUrlMatch = envContent.match(/API_BASE_URL=([^\r\n]+)/); + + if (apiBaseUrlMatch && apiBaseUrlMatch[1]) { + return apiBaseUrlMatch[1].trim(); + } + } + + // 如果上面的文件不存在,尝试从 TypeScript 环境配置文件读取 + const envConfigPath = path.join(process.cwd(), 'src', 'env', 'index.ts'); + if (fs.existsSync(envConfigPath)) { + const envContent = fs.readFileSync(envConfigPath, 'utf8'); + const devConfigMatch = envContent.match(/dev:\s*\{[\s\S]*?BACKEND_BASE_URL:\s*['"`]([^'"`]+)['"`]/); + + if (devConfigMatch && devConfigMatch[1]) { + return devConfigMatch[1].trim(); + } + } + + throw new Error('无法找到 API_BASE_URL 或 BACKEND_BASE_URL 配置'); + } catch (error) { + console.log(`读取环境配置失败: ${error.message}`); + return 'http://localhost:8080'; // 默认值 + } +} + +// 获取 API 基础 URL +const API_BASE_URL = getApiBaseUrl(); + +// 设置环境变量供后续使用 +process.env.API_BASE_URL = API_BASE_URL; + // ANSI 颜色代码 const colors = { reset: '\x1b[0m', @@ -44,7 +82,8 @@ function logInfo(message) { // 显示环境配置信息 logInfo(`当前环境: ${process.env.NODE_ENV || 'development'}`); -logInfo(`API 服务器: ${process.env.API_BASE_URL || 'http://localhost:8080'}`); +logInfo(`API 服务器: ${API_BASE_URL}`); +logInfo(`已从 env/.env.dev 读取 API_BASE_URL 配置`); /** * 检查自定义文件是否存在 @@ -153,6 +192,59 @@ function restoreCustomFiles(customFiles) { logSuccess('自定义文件已恢复'); } +/** + * 下载并保存 openapi.json 文件到本地 + */ +function downloadOpenApiJson() { + return new Promise((resolve, reject) => { + const https = require('https'); + const fs = require('fs'); + const path = require('path'); + + const fileUrl = `${API_BASE_URL}/openapi.json`; + const outputPath = path.join(process.cwd(), 'scripts', 'openapi.json'); + + logInfo(`下载 OpenAPI 规范文件: ${fileUrl}`); + + const startTime = Date.now(); + + // 创建 HTTPS 代理(如果需要,可以忽略 SSL 证书验证) + const agent = new https.Agent({ + rejectUnauthorized: false // 跳过 SSL 证书验证 + }); + + https.get(fileUrl, { agent }, (response) => { + if (response.statusCode !== 200) { + reject(new Error(`HTTP ${response.statusCode}: ${response.statusMessage}`)); + return; + } + + let data = ''; + + response.on('data', (chunk) => { + data += chunk; + }); + + response.on('end', () => { + try { + // 验证 JSON 格式 + JSON.parse(data); + + // 写入文件 + fs.writeFileSync(outputPath, data, 'utf8'); + const executionTime = Date.now() - startTime; + logSuccess(`OpenAPI 规范已保存到: scripts/openapi.json (${executionTime}ms)`); + resolve(); + } catch (error) { + reject(new Error(`JSON 格式错误: ${error.message}`)); + } + }); + }).on('error', (error) => { + reject(error); + }); + }); +} + /** * 使用 openapi-ts 命令生成客户端代码 */ @@ -259,6 +351,9 @@ async function main() { backupCustomFiles(customFiles); } + // 下载 openapi.json 文件到本地 + await downloadOpenApiJson(); + // 使用 openapi-ts 生成代码 await generateWithOpenApiTS(); diff --git a/crop-x/scripts/openapi.json b/crop-x/scripts/openapi.json index 637b4aa..597442b 100644 --- a/crop-x/scripts/openapi.json +++ b/crop-x/scripts/openapi.json @@ -1,342 +1 @@ -{ - "openapi": "3.1.0", - "info": { - "title": "Crop Admin API", - "description": "一个支持OpenAPI和前端代码自动生成的后台管理系统", - "version": "1.0.0" - }, - "paths": { - "/api/v1/auth/login": { - "post": { - "tags": [ - "认证" - ], - "summary": "用户登录", - "description": "用户登录接口\n\n- **username**: 用户名\n- **password**: 密码\n\n返回JWT访问令牌", - "operationId": "login_api_v1_auth_login_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserLogin" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/APIResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/v1/auth/register": { - "post": { - "tags": [ - "认证" - ], - "summary": "用户注册", - "description": "用户注册接口\n\n- **username**: 用户名 (必须唯一)\n- **password**: 密码\n\n注意:这是一个演示版本,实际生产环境需要更严格的验证", - "operationId": "register_api_v1_auth_register_post", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserRegister" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/APIResponse" - } - } - } - }, - "422": { - "description": "Validation Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HTTPValidationError" - } - } - } - } - } - } - }, - "/api/v1/auth/me": { - "get": { - "tags": [ - "认证" - ], - "summary": "获取当前用户信息", - "description": "获取当前登录用户的信息", - "operationId": "get_current_user_api_v1_auth_me_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/APIResponse" - } - } - } - } - }, - "security": [ - { - "HTTPBearer": [] - } - ] - } - }, - "/api/v1/auth/logout": { - "post": { - "tags": [ - "认证" - ], - "summary": "用户登出", - "description": "用户登出接口\n\n注意:由于JWT是无状态的,实际登出需要客户端删除token\n这里只是验证token并返回成功消息", - "operationId": "logout_api_v1_auth_logout_post", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/APIResponse" - } - } - } - } - }, - "security": [ - { - "HTTPBearer": [] - } - ] - } - }, - "/api/v1/auth/users": { - "get": { - "tags": [ - "认证" - ], - "summary": "获取所有用户列表", - "description": "获取系统中所有用户的列表 (仅用于演示)", - "operationId": "get_all_users_api_v1_auth_users_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/APIResponse" - } - } - } - } - } - } - }, - "/": { - "get": { - "summary": "Root", - "operationId": "root__get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - } - } - } - }, - "/health": { - "get": { - "summary": "Health Check", - "operationId": "health_check_health_get", - "responses": { - "200": { - "description": "Successful Response", - "content": { - "application/json": { - "schema": {} - } - } - } - } - } - } - }, - "components": { - "schemas": { - "APIResponse": { - "properties": { - "success": { - "type": "boolean", - "title": "Success" - }, - "message": { - "type": "string", - "title": "Message" - }, - "data": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ], - "title": "Data" - } - }, - "type": "object", - "required": [ - "success", - "message" - ], - "title": "APIResponse", - "example": { - "data": {}, - "message": "操作成功", - "success": true - } - }, - "HTTPValidationError": { - "properties": { - "detail": { - "items": { - "$ref": "#/components/schemas/ValidationError" - }, - "type": "array", - "title": "Detail" - } - }, - "type": "object", - "title": "HTTPValidationError" - }, - "UserLogin": { - "properties": { - "username": { - "type": "string", - "title": "Username" - }, - "password": { - "type": "string", - "title": "Password" - } - }, - "type": "object", - "required": [ - "username", - "password" - ], - "title": "UserLogin", - "example": { - "password": "admin123", - "username": "admin" - } - }, - "UserRegister": { - "properties": { - "username": { - "type": "string", - "title": "Username" - }, - "password": { - "type": "string", - "title": "Password" - } - }, - "type": "object", - "required": [ - "username", - "password" - ], - "title": "UserRegister", - "example": { - "password": "newpassword", - "username": "newuser" - } - }, - "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" - } - } - }, - "servers": [ - { - "url": "https://gitea-admin-smart-crop-x-app.dev.maimaiag.com/", - "description": "测试环境服务器" - } - ] -} \ 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/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":"获取系统用户列表(需要系统权限)","operationId":"list_system_users_api_v1_users_system_users_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":"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":"是否活跃"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"},"title":"Response List System Users Api V1 Users System Users Get"}}}},"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/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":{"type":"array","items":{"$ref":"#/components/schemas/User"},"title":"Response Get Users Api V1 Users Get"}}}},"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/User"}}}},"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/User"}}}},"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/User"}}}},"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/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":"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":"每页数量"}],"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/departments/":{"post":{"tags":["部门管理","部门管理"],"summary":"创建部门","description":"创建新的部门","operationId":"create_department_api_v1_departments_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_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/Page_DepartmentResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/departments/departments/tree":{"get":{"tags":["部门管理","部门管理"],"summary":"获取部门树形结构","description":"获取部门树形结构(一级部门及其子部门)","operationId":"get_department_tree_api_v1_departments_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 Departments Tree Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/departments/departments/{department_id}":{"get":{"tags":["部门管理","部门管理"],"summary":"获取部门详情","description":"根据ID获取部门详情","operationId":"get_department_api_v1_departments_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_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_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/departments/{department_id}/order":{"patch":{"tags":["部门管理","部门管理"],"summary":"更新部门排序","description":"更新部门排序索引","operationId":"update_department_order_api_v1_departments_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/departments/{department_id}/status":{"patch":{"tags":["部门���理","部门管理"],"summary":"更新部门状态","description":"启用或停用部门","operationId":"update_department_status_api_v1_departments_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/departments/{department_id}/users-count":{"get":{"tags":["部门管理","部门管理"],"summary":"获取部门用户数量","description":"获取部门下的用户数量","operationId":"get_department_users_count_api_v1_departments_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/logs/login":{"get":{"tags":["日志管理","登录日志"],"summary":"查询登录日志","description":"查询用户登录日志记录,支持多条件检索","operationId":"get_login_logs_api_v1_logs_logs_login_get","security":[{"HTTPBearer":[]}],"parameters":[{"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地址"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"登录状态: success, failed, locked","title":"Status"},"description":"登录状态: success, failed, locked"},{"name":"is_suspicious","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"是否可疑","title":"Is Suspicious"},"description":"是否可疑"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"开始时间 (YYYY-MM-DD HH:MM:SS)","title":"Start Time"},"description":"开始时间 (YYYY-MM-DD HH:MM:SS)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"结束时间 (YYYY-MM-DD HH:MM:SS)","title":"End Time"},"description":"结束时间 (YYYY-MM-DD HH:MM:SS)"},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"跳过记录数","default":0,"title":"Skip"},"description":"跳过记录数"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"限制记录数","default":100,"title":"Limit"},"description":"限制记录数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/logs/login/{log_id}":{"get":{"tags":["日志管理","登录日志"],"summary":"获取登录日志详情","description":"根据ID获取登录日志的详细信息","operationId":"get_login_log_api_v1_logs_logs_login__log_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"string","title":"Log Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginLog"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/logs/operation":{"get":{"tags":["日志管理","操作日志"],"summary":"查询操作日志","description":"查询用户操作日志记录,支持多条件检索","operationId":"get_operation_logs_api_v1_logs_logs_operation_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户ID","title":"User Id"},"description":"用户ID"},{"name":"username","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"用户名","title":"Username"},"description":"用户名"},{"name":"operation_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"操作类型: create, read, update, delete, export, import, config, auth","title":"Operation Type"},"description":"操作类型: create, read, update, delete, export, import, config, auth"},{"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":"response_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"响应状态码","title":"Response Status"},"description":"响应状态码"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"开始时间 (YYYY-MM-DD HH:MM:SS)","title":"Start Time"},"description":"开始时间 (YYYY-MM-DD HH:MM:SS)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"结束时间 (YYYY-MM-DD HH:MM:SS)","title":"End Time"},"description":"结束时间 (YYYY-MM-DD HH:MM:SS)"},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"跳过记录数","default":0,"title":"Skip"},"description":"跳过记录数"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"限制记录数","default":100,"title":"Limit"},"description":"限制记录数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/logs/operation/{log_id}":{"get":{"tags":["日志管理","操作日志"],"summary":"获取操作日志详情","description":"根据ID获取操作日志的详细信息","operationId":"get_operation_log_api_v1_logs_logs_operation__log_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"string","title":"Log Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationLog"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/logs/network":{"get":{"tags":["日志管理","网络日志"],"summary":"查询网络日志","description":"查询网络请求日志记录,支持多条件检索","operationId":"get_network_logs_api_v1_logs_logs_network_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"request_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"请求方法: GET, POST, PUT, DELETE, PATCH","title":"Request Method"},"description":"请求方法: GET, POST, PUT, DELETE, PATCH"},{"name":"request_path","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"请求路径","title":"Request Path"},"description":"请求路径"},{"name":"client_ip","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"客户端IP","title":"Client Ip"},"description":"客户端IP"},{"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":"是否错误"},{"name":"min_processing_time","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"最小处理时间(秒)","title":"Min Processing Time"},"description":"最小处理时间(秒)"},{"name":"max_processing_time","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"最大处理时间(秒)","title":"Max Processing Time"},"description":"最大处理时间(秒)"},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"开始时间 (YYYY-MM-DD HH:MM:SS)","title":"Start Time"},"description":"开始时间 (YYYY-MM-DD HH:MM:SS)"},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"结束时间 (YYYY-MM-DD HH:MM:SS)","title":"End Time"},"description":"结束时间 (YYYY-MM-DD HH:MM:SS)"},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"跳过记录数","default":0,"title":"Skip"},"description":"跳过记录数"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"限制记录数","default":100,"title":"Limit"},"description":"限制记录数"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/logs/network/{log_id}":{"get":{"tags":["日志管理","网络日志"],"summary":"获取网络日志详情","description":"根据ID获取网络日志的详细信息","operationId":"get_network_log_api_v1_logs_logs_network__log_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"log_id","in":"path","required":true,"schema":{"type":"string","title":"Log Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkLog"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/logs/logs/network/stats/performance":{"get":{"tags":["日志管理","网络日志"],"summary":"获取性能统计","description":"获取系统性能统计信息","operationId":"get_performance_stats_api_v1_logs_logs_network_stats_performance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PerformanceStats"}}}}},"security":[{"HTTPBearer":[]}]}},"/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/message-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_message_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- **message_type**: 按消息类型过滤\n- **template_type**: 按模板类型过滤\n- **is_active**: 按启用状态过滤\n- **skip**: 跳过数量\n- **limit**: 限制数量","operationId":"list_templates_api_v1_messages_templates_message_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":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"跳过数量","default":0,"title":"Skip"},"description":"跳过数量"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"限制数量","default":100,"title":"Limit"},"description":"限制数量"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessageTemplateResponse"},"title":"Response List Templates Api V1 Messages Templates Message Templates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/templates/message-templates/{template_id}":{"get":{"tags":["消息系统","消息模板"],"summary":"获取模板详情","description":"获取模板详情\n\n- **template_id**: 模板ID","operationId":"get_template_api_v1_messages_templates_message_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_message_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_message_templates__template_id__delete","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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages/templates/message-templates/{template_id}/test":{"post":{"tags":["消息系统","消息模板"],"summary":"测试模板渲染","description":"测试模板渲染\n\n- **template_id**: 模板ID\n- **test_variables**: 测试变量","operationId":"test_template_api_v1_messages_templates_message_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- **message_type**: 按消息类型过滤\n- **status**: 按发送状态过滤\n- **recipient**: 按接收者过滤\n- **start_date**: 开始时间\n- **end_date**: 结束时间\n- **skip**: 跳过数量\n- **limit**: 限制数量","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":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"跳过数量","default":0,"title":"Skip"},"description":"跳过数量"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"限制数量","default":100,"title":"Limit"},"description":"限制数量"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MessageLogResponse"},"title":"Response List Message Logs Api V1 Messages Logs Message Logs Get"}}}},"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- **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- **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":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/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","format":"uuid"},{"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"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"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"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"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"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"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":"部门负责人邮箱"},"parent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Id","description":"父部门ID"},"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":"磁盘分区信息模型"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InvoiceType":{"type":"string","enum":["普通发票","增值税专用发票","电子发票"],"title":"InvoiceType","description":"发票类型枚举"},"LogListResponse":{"properties":{"items":{"items":{},"type":"array","title":"Items","description":"日志列表"},"total":{"type":"integer","title":"Total","description":"总记录数"},"skip":{"type":"integer","title":"Skip","description":"跳过记录数","default":0},"limit":{"type":"integer","title":"Limit","description":"限制记录数","default":100}},"type":"object","required":["items","total"],"title":"LogListResponse","description":"日志列表响应模式"},"LoginLog":{"properties":{"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"user_id":{"type":"string","format":"uuid","title":"User Id","description":"用户ID"},"username":{"type":"string","maxLength":100,"title":"Username","description":"用户名"},"status":{"$ref":"#/components/schemas/LoginStatus","description":"登录状态"},"method":{"$ref":"#/components/schemas/LoginMethod","description":"登录方式"},"ip_address":{"type":"string","maxLength":45,"title":"Ip Address","description":"IP地址"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent","description":"用户代理"},"location":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Location","description":"地理位置"},"failure_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Reason","description":"失败原因"},"attempt_count":{"type":"integer","minimum":1.0,"title":"Attempt Count","description":"尝试次数","default":1},"is_suspicious":{"type":"boolean","title":"Is Suspicious","description":"是否可疑","default":false},"id":{"type":"string","format":"uuid","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":"更新时间"}},"type":"object","required":["user_id","username","status","method","ip_address","id","created_at","updated_at"],"title":"LoginLog","description":"登录日志响应模式"},"LoginMethod":{"type":"string","enum":["password","captcha","sso"],"title":"LoginMethod","description":"登录方式枚举"},"LoginStatus":{"type":"string","enum":["success","failed","locked"],"title":"LoginStatus","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":"网络接口信息模型"},"NetworkLog":{"properties":{"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"request_method":{"type":"string","maxLength":10,"title":"Request Method","description":"请求方法"},"request_url":{"type":"string","title":"Request Url","description":"请求URL"},"request_path":{"type":"string","maxLength":500,"title":"Request Path","description":"请求路径"},"query_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Query Params","description":"查询参数"},"client_ip":{"type":"string","maxLength":45,"title":"Client Ip","description":"客户端IP"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent","description":"用户代理"},"referer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referer","description":"来源页面"},"response_status":{"type":"integer","maximum":599.0,"minimum":100.0,"title":"Response Status","description":"响应状态码"},"response_size":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Response Size","description":"响应大小(字节)"},"processing_time":{"type":"number","minimum":0.0,"title":"Processing Time","description":"处理时间(秒)"},"database_time":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Database Time","description":"数据库查询时间(秒)"},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id","description":"用户ID"},"is_error":{"type":"boolean","title":"Is Error","description":"是否错误","default":false},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message","description":"错误信息"},"id":{"type":"string","format":"uuid","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":"更新时间"}},"type":"object","required":["request_method","request_url","request_path","client_ip","response_status","processing_time","id","created_at","updated_at"],"title":"NetworkLog","description":"网络日志响应模式"},"OperationLog":{"properties":{"tenant_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Id","description":"租户ID"},"user_id":{"type":"string","format":"uuid","title":"User Id","description":"用户ID"},"username":{"type":"string","maxLength":100,"title":"Username","description":"用户名"},"operation_type":{"$ref":"#/components/schemas/OperationType","description":"操作类型"},"module":{"type":"string","maxLength":100,"title":"Module","description":"操作模块"},"action":{"type":"string","maxLength":200,"title":"Action","description":"操作动作"},"request_method":{"type":"string","maxLength":10,"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","maximum":599.0,"minimum":100.0,"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","minimum":0.0,"title":"Processing Time","description":"处理时间(秒)"},"id":{"type":"string","format":"uuid","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":"更新时间"}},"type":"object","required":["user_id","username","operation_type","module","action","request_method","request_url","response_status","processing_time","id","created_at","updated_at"],"title":"OperationLog","description":"操作日志响应模式"},"OperationType":{"type":"string","enum":["create","read","update","delete","export","import","config","auth"],"title":"OperationType","description":"操作类型枚举"},"Page_DepartmentResponse_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DepartmentResponse"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"}},"type":"object","required":["data","total","page","size"],"title":"Page[DepartmentResponse]"},"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]"},"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":"性能指标摘要模型"},"PerformanceStats":{"properties":{"total_requests":{"type":"integer","title":"Total Requests","description":"总请求数"},"avg_response_time":{"type":"number","title":"Avg Response Time","description":"平均响应时间"},"error_rate":{"type":"number","title":"Error Rate","description":"错误率"},"slow_requests":{"type":"integer","title":"Slow Requests","description":"慢请求数"}},"type":"object","required":["total_requests","avg_response_time","error_rate","slow_requests"],"title":"PerformanceStats","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 运行时信息模型"},"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":{"type":"string","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"}},"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":"6be48b23-4e68-4899-8ac8-262d8d59e044"}},"type":"object","required":["email","username","phone","password","company_name"],"title":"UserCreateWithCompany","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":"带验证码的用户登录模型"},"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)/api-example/openapi-examples.tsx b/crop-x/src/app/(app)/api-example/openapi-examples.tsx new file mode 100644 index 0000000..f579a18 --- /dev/null +++ b/crop-x/src/app/(app)/api-example/openapi-examples.tsx @@ -0,0 +1,420 @@ +'use client'; + +import { useState } from 'react'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; +import { Button } from '@/components/ui/button'; +import { Badge } from '@/components/ui/badge'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Copy, Eye, EyeOff, Code, FileJson } from 'lucide-react'; + +interface OpenApiExample { + path: string; + method: string; + summary?: string; + description?: string; + parameters?: any[]; + requestBody?: any; + responses?: any; + examples?: any; +} + +interface OpenApiExamplesProps { + className?: string; +} + +// 示例数据 - 这些通常从 OpenAPI 规范中提取 +const openApiExamples: OpenApiExample[] = [ + { + path: '/api/v1/auth/login', + method: 'POST', + summary: '用户登录', + description: '用户登录(需要验证码)', + requestBody: { + 'application/json': { + example: { + identifier: 'admin', + password: 'admin123', + captcha_id: 'test-captcha-id', + captcha_text: '1234' + } + } + }, + responses: { + 200: { + description: 'Successful Response', + content: { + 'application/json': { + example: { + access_token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...', + token_type: 'bearer', + expires_in: 3600 + } + } + } + } + } + }, + { + path: '/api/v1/auth/register', + method: 'POST', + summary: '用户注册', + description: '用户注册', + requestBody: { + 'application/json': { + example: { + username: 'newuser', + password: 'password123', + email: 'user@example.com', + full_name: '新用户', + phone: '13800138000', + tenant_id: 'tenant-uuid', + scope: 'user', + department_id: 'dept-uuid' + } + } + }, + responses: { + 200: { + description: 'Successful Response', + content: { + 'application/json': { + example: { + id: 'uuid-12345', + username: 'newuser', + email: 'user@example.com', + phone: '13800138000', + is_active: true, + created_at: '2024-01-01T00:00:00Z' + } + } + } + } + } + }, + { + path: '/api/v1/users', + method: 'POST', + summary: '创建用户', + description: '创建用户(需要管理员权限)', + requestBody: { + 'application/json': { + example: { + username: 'testuser', + password: 'password123', + email: 'test@example.com', + full_name: '测试用户', + phone: '13900139000', + tenant_id: 'tenant-uuid', + scope: 'user', + department_id: 'dept-uuid' + } + } + }, + responses: { + 200: { + description: 'Successful Response', + content: { + 'application/json': { + example: { + id: 'uuid-67890', + username: 'testuser', + email: 'test@example.com', + phone: '13900139000', + is_active: true, + created_at: '2024-01-01T00:00:00Z' + } + } + } + } + } + }, + { + path: '/api/v1/tenants', + method: 'POST', + summary: '创建租户', + description: '创建新租户', + requestBody: { + 'application/json': { + example: { + company_name: '新企业有限责任公司', + tenant_code: 'NEW001', + company_type: '有限责任公司' + } + } + }, + responses: { + 201: { + description: 'Successful Response', + content: { + 'application/json': { + example: { + id: 'tenant-uuid', + company_name: '新企业有限责任公司', + tenant_code: 'NEW001', + company_type: '有限责任公司', + audit_status: 'pending', + created_at: '2024-01-01T00:00:00Z' + } + } + } + } + } + } +]; + +export default function OpenApiExamples({ className }: OpenApiExamplesProps) { + const [copiedCode, setCopiedCode] = useState(null); + const [visibleExamples, setVisibleExamples] = useState>(new Set()); + + const copyToClipboard = async (text: string, id: string) => { + try { + await navigator.clipboard.writeText(text); + setCopiedCode(id); + setTimeout(() => setCopiedCode(null), 2000); + } catch (err) { + console.error('Failed to copy:', err); + } + }; + + const toggleExampleVisibility = (id: string) => { + setVisibleExamples(prev => { + const newSet = new Set(prev); + if (newSet.has(id)) { + newSet.delete(id); + } else { + newSet.add(id); + } + return newSet; + }); + }; + + const getMethodColor = (method: string) => { + switch (method.toUpperCase()) { + case 'GET': return 'bg-green-100 text-green-800 border-green-200'; + case 'POST': return 'bg-blue-100 text-blue-800 border-blue-200'; + case 'PUT': return 'bg-yellow-100 text-yellow-800 border-yellow-200'; + case 'DELETE': return 'bg-red-100 text-red-800 border-red-200'; + default: return 'bg-gray-100 text-gray-800 border-gray-200'; + } + }; + + const formatJson = (obj: any) => { + return JSON.stringify(obj, null, 2); + }; + + return ( + + + + + OpenAPI 示例文档 + + + 基于 OpenAPI 规范的接口示例,展示了请求参数和响应格式 + + + + + + 全部示例 + 认证 + 用户管理 + 租户管理 + + + + {openApiExamples.map((example) => ( + + ))} + + + + {openApiExamples + .filter(e => e.path.includes('/auth/')) + .map((example) => ( + + ))} + + + + {openApiExamples + .filter(e => e.path.includes('/users')) + .map((example) => ( + + ))} + + + + {openApiExamples + .filter(e => e.path.includes('/tenants')) + .map((example) => ( + + ))} + + + + + ); +} + +interface OpenApiExampleCardProps { + example: OpenApiExample; + getMethodColor: (method: string) => string; + formatJson: (obj: any) => string; + copyToClipboard: (text: string, id: string) => void; + copiedCode: string | null; + visibleExamples: Set; + toggleExampleVisibility: (id: string) => void; +} + +function OpenApiExampleCard({ + example, + getMethodColor, + formatJson, + copyToClipboard, + copiedCode, + visibleExamples, + toggleExampleVisibility +}: OpenApiExampleCardProps) { + const exampleId = `${example.method}-${example.path}`; + const isVisible = visibleExamples.has(exampleId); + + return ( +
+
+
+ + {example.method} + +
+

{example.summary}

+

+ {example.path} +

+
+
+ +
+ + {example.description && ( +

{example.description}

+ )} + + {isVisible && ( +
+ {/* Request Body Examples */} + {example.requestBody && ( +
+

+ + 请求示例 +

+ {Object.entries(example.requestBody).map(([contentType, content]: [string, any]) => ( +
+
+ {contentType} + +
+
+                    {formatJson(content.example)}
+                  
+
+ ))} +
+ )} + + {/* Response Examples */} + {example.responses && ( +
+

+ + 响应示例 +

+ {Object.entries(example.responses).map(([statusCode, response]: [string, any]) => ( +
+
+ + {statusCode} + + + {response.description} + +
+ {response.content && Object.entries(response.content).map(([contentType, content]: [string, any]) => ( +
+
+ {contentType} + {content.example && ( + + )} +
+ {content.example && ( +
+                          {formatJson(content.example)}
+                        
+ )} +
+ ))} +
+ ))} +
+ )} +
+ )} +
+ ); +} \ No newline at end of file diff --git a/crop-x/src/app/api-example/page.tsx b/crop-x/src/app/(app)/api-example/page.tsx similarity index 65% rename from crop-x/src/app/api-example/page.tsx rename to crop-x/src/app/(app)/api-example/page.tsx index 09d458d..72ffc31 100644 --- a/crop-x/src/app/api-example/page.tsx +++ b/crop-x/src/app/(app)/api-example/page.tsx @@ -72,14 +72,16 @@ import { // 类型导入 type UserCreate, type UserCreateWithCompany, - type UserLogin, + type UserLoginWithCaptcha, type UserUpdate, type UserUpdatePassword, type TenantCreateRequest, type TenantUpdateRequest, type TenantAuditRequest, type DepartmentCreate, - type DepartmentUpdate + type DepartmentUpdate, + type CaptchaResponse, + type Token } from '@/lib/api'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; @@ -90,6 +92,7 @@ import { Alert, AlertDescription } from '@/components/ui/alert'; import { ScrollArea } from '@/components/ui/scroll-area'; import { Separator } from '@/components/ui/separator'; import { Label } from '@/components/ui/label'; +import OpenApiExamples from './openapi-examples'; export default function ApiExamplePage() { const [loading, setLoading] = useState(false); @@ -97,18 +100,26 @@ export default function ApiExamplePage() { const [errors, setErrors] = useState([]); // 登录表单状态 - const [loginData, setLoginData] = useState({ - username: '', + const [loginData, setLoginData] = useState({ + identifier: '', password: '', - captcha: '' + captcha_id: '', + captcha_text: '' }); + // 验证码状态 + const [captchaData, setCaptchaData] = useState(null); + // 注册表单状态 const [registerData, setRegisterData] = useState({ username: '', password: '', email: '', - full_name: '' + full_name: '', + phone: '', + tenant_id: '', + scope: '', + department_id: '' }); // 带企业注册表单状态 @@ -132,17 +143,17 @@ export default function ApiExamplePage() { password: '', email: '', full_name: '', - department_id: '', - phone: '' + phone: '', + tenant_id: '', + scope: '', + department_id: '' }); // 租户创建表单状态 const [createTenantData, setCreateTenantData] = useState({ - name: '', - code: '', - description: '', - contact_email: '', - contact_phone: '' + company_name: '', + tenant_code: '', + company_type: '有限责任公司' }); // 部门创建表单状态 @@ -255,6 +266,8 @@ export default function ApiExamplePage() { const response = await getCaptchaApiV1AuthCaptchaGet({}); if (response.data) { + setCaptchaData(response.data); + setLoginData(prev => ({ ...prev, captcha_id: response.data.captcha_id })); addResult('获取验证码', '无参数', response.data); } else if (response.error) { addResult('获取验证码', '无参数', null, JSON.stringify(response.error)); @@ -450,9 +463,10 @@ export default function ApiExamplePage() { - + 交互式测试 接口示例 + OpenAPI 文档 @@ -467,24 +481,25 @@ export default function ApiExamplePage() { - + 认证操作 用户管理 租户管理 + 部门管理 系统管理 {/* 登录表单 */}
-

用户登录

+

用户登录(需要验证码)

- + setLoginData(prev => ({ ...prev, username: e.target.value }))} + id="identifier" + placeholder="请输入用户名、邮箱或手机号" + value={loginData.identifier} + onChange={(e) => setLoginData(prev => ({ ...prev, identifier: e.target.value }))} />
@@ -498,17 +513,40 @@ export default function ApiExamplePage() { />
- - setLoginData(prev => ({ ...prev, captcha: e.target.value }))} - /> + +
+ setLoginData(prev => ({ ...prev, captcha_text: e.target.value }))} + className="flex-1" + /> + +
+ {captchaData && ( +
+ 验证码 +

+ 验证码ID: {captchaData.captcha_id} +

+
+ )}
+
+ + {/* 其他租户操作 */}
+ +
+
+ + + {/* 创建部门表单 */} +
+

创建部门

+ setCreateDepartmentData(prev => ({ ...prev, code: e.target.value }))} + /> + setCreateDepartmentData(prev => ({ ...prev, name: e.target.value }))} + /> + setCreateDepartmentData(prev => ({ ...prev, description: e.target.value }))} + /> + +
+ + {/* 其他部门操作 */} +
+ + +
@@ -767,6 +1057,10 @@ export default function ApiExamplePage() { + + + +
@@ -789,7 +1083,7 @@ function ApiExamplesPage() { description: '获取登录验证码', exampleParams: null, category: '认证', - expectedOutput: { captcha: 'abc123', captcha_id: 'xyz789' } + expectedOutput: { captcha_id: 'xyz789', image: 'base64_image_data' } }, { id: 'login', @@ -798,12 +1092,13 @@ function ApiExamplesPage() { title: '用户登录', description: '用户登录(需要验证码)', exampleParams: { - username: 'admin', + identifier: 'admin', password: 'admin123', - captcha: 'test' + captcha_id: 'test_captcha_id', + captcha_text: 'test' }, category: '认证', - expectedOutput: { access_token: 'jwt_token', token_type: 'bearer' } + expectedOutput: { access_token: 'jwt_token', token_type: 'bearer', expires_in: 3600 } }, { id: 'register', @@ -815,10 +1110,14 @@ function ApiExamplesPage() { username: 'newuser', password: 'password123', email: 'user@example.com', - full_name: '新用户' + full_name: '新用户', + phone: '13800138000', + tenant_id: 'tenant-uuid', + scope: 'user', + department_id: 'dept-uuid' }, category: '认证', - expectedOutput: { id: 'uuid', username: 'newuser', email: 'user@example.com' } + expectedOutput: { id: 'uuid', username: 'newuser', email: 'user@example.com', phone: '13800138000' } }, { id: 'getCurrentUser', @@ -872,10 +1171,14 @@ function ApiExamplesPage() { username: 'testuser', password: 'password123', email: 'test@example.com', - full_name: '测试用户' + full_name: '测试用户', + phone: '13900139000', + tenant_id: 'tenant-uuid', + scope: 'user', + department_id: 'dept-uuid' }, category: '用户管理', - expectedOutput: { id: 'uuid', username: 'testuser' } + expectedOutput: { id: 'uuid', username: 'testuser', email: 'test@example.com', phone: '13900139000' } }, { id: 'getUserStats', @@ -885,7 +1188,46 @@ function ApiExamplesPage() { description: '获取用户统计信息', exampleParams: null, category: '用户管理', - expectedOutput: { total_users: 10, active_users: 8 } + expectedOutput: { total_users: 10, active_users: 8, inactive_users: 2 } + }, + { + id: 'getDepartmentOptions', + method: 'GET', + path: '/api/v1/users/departments/options', + title: '获取部门选项', + description: '获取部门选择列表(用于用户管理中的部门选择)', + exampleParams: null, + category: '用户管理', + expectedOutput: [{ id: 'uuid', code: 'TECH001', name: '技术开发部' }] + }, + { + id: 'listSystemUsers', + method: 'GET', + path: '/api/v1/users/system/users', + title: '获取系统用户列表', + description: '获取系统用户列表(需要系统权限)', + exampleParams: { page: 1, size: 20, search: '', is_active: true }, + category: '用户管理', + expectedOutput: { data: [{ id: 'uuid', username: 'admin', is_active: true }], total: 1 } + }, + { + id: 'createSystemUser', + method: 'POST', + path: '/api/v1/users/system/users', + title: '创建系统用户', + description: '创建系统级用户(需要系统权限)', + exampleParams: { + username: 'system_admin', + password: 'admin123', + email: 'admin@system.com', + full_name: '系统管理员', + phone: '13700137000', + tenant_id: null, + scope: 'system', + department_id: null + }, + category: '用户管理', + expectedOutput: { id: 'uuid', username: 'system_admin', scope: 'system' } }, // 租户管理 @@ -895,9 +1237,9 @@ function ApiExamplesPage() { path: '/api/v1/tenants', title: '获取租户列表', description: '获取租户列表', - exampleParams: { page: 1, size: 20 }, + exampleParams: { page: 1, size: 20, search: '', audit_status: 'approved' }, category: '租户管理', - expectedOutput: { data: [{ id: 'uuid', name: '测试企业' }], total: 1 } + expectedOutput: { data: [{ id: 'uuid', name: '测试企业' }], total: 1, page: 1, size: 20 } }, { id: 'getCurrentTenant', @@ -907,7 +1249,31 @@ function ApiExamplesPage() { description: '获取当前登录租户信息', exampleParams: null, category: '租户管理', - expectedOutput: { id: 'uuid', name: '测试企业', code: 'TEST001' } + expectedOutput: { id: 'uuid', name: '测试企业', code: 'TEST001', audit_status: 'approved' } + }, + { + id: 'createTenant', + method: 'POST', + path: '/api/v1/tenants', + title: '创建租户', + description: '创建新租户', + exampleParams: { + company_name: '新企业有限责任公司', + tenant_code: 'NEW001', + company_type: '有限责任公司' + }, + category: '租户管理', + expectedOutput: { id: 'uuid', company_name: '新企业有限责任公司', tenant_code: 'NEW001', company_type: '有限责任公司' } + }, + { + id: 'getTenantAuditLogs', + method: 'GET', + path: '/api/v1/tenants/audit-logs', + title: '获取租户审计日志', + description: '获取租户审计日志', + exampleParams: { page: 1, size: 20, tenant_id: 'uuid' }, + category: '租户管理', + expectedOutput: { data: [{ id: 'uuid', action: 'create', timestamp: '2024-01-01T00:00:00Z' }], total: 1 } }, // 部门管理 @@ -919,7 +1285,21 @@ function ApiExamplesPage() { description: '获取部门列表', exampleParams: { page: 1, size: 20 }, category: '部门管理', - expectedOutput: { data: [{ id: 'uuid', name: '技术部' }], total: 1 } + expectedOutput: { data: [{ id: 'uuid', name: '技术部', code: 'TECH' }], total: 1, page: 1, size: 20 } + }, + { + id: 'createDepartment', + method: 'POST', + path: '/api/v1/departments/departments', + title: '创建部门', + description: '创建新部门', + exampleParams: { + code: 'TECH001', + name: '技术开发部', + description: '负责技术研发工作' + }, + category: '部门管理', + expectedOutput: { id: 'uuid', code: 'TECH001', name: '技术开发部', description: '负责技术研发工作' } }, { id: 'getDepartmentTree', @@ -929,7 +1309,7 @@ function ApiExamplesPage() { description: '获取部门树形结构', exampleParams: null, category: '部门管理', - expectedOutput: [{ id: 'uuid', name: '技术部', children: [] }] + expectedOutput: [{ id: 'uuid', code: 'TECH001', name: '技术开发部', description: '负责技术研发工作', children: [] }] }, // 系统管理 @@ -1021,6 +1401,19 @@ function ApiExamplesPage() { case 'getUserStats': response = await getUserStatsApiV1UsersStatsSummaryGet({}); break; + case 'getDepartmentOptions': + response = await getDepartmentOptionsApiV1UsersDepartmentsOptionsGet({}); + break; + case 'listSystemUsers': + response = await listSystemUsersApiV1UsersSystemUsersGet({ + query: example.exampleParams + }); + break; + case 'createSystemUser': + response = await createSystemUserApiV1UsersSystemUsersPost({ + body: example.exampleParams + }); + break; // 租户管理 case 'listTenants': @@ -1031,6 +1424,16 @@ function ApiExamplesPage() { case 'getCurrentTenant': response = await getCurrentTenantApiV1TenantsMeGet({}); break; + case 'createTenant': + response = await createTenantApiV1TenantsPost({ + body: example.exampleParams + }); + break; + case 'getTenantAuditLogs': + response = await getTenantAuditLogsApiV1TenantsAuditLogsGet({ + query: example.exampleParams + }); + break; // 部门管理 case 'getDepartments': @@ -1038,6 +1441,11 @@ function ApiExamplesPage() { query: example.exampleParams }); break; + case 'createDepartment': + response = await createDepartmentApiV1DepartmentsDepartmentsPost({ + body: example.exampleParams + }); + break; case 'getDepartmentTree': response = await getDepartmentTreeApiV1DepartmentsDepartmentsTreeGet({}); break; diff --git a/crop-x/src/app/(app)/layout.tsx b/crop-x/src/app/(app)/layout.tsx index 0f99067..66900d9 100644 --- a/crop-x/src/app/(app)/layout.tsx +++ b/crop-x/src/app/(app)/layout.tsx @@ -1,7 +1,1349 @@ -export default function AppLayout({ +'use client'; + +import {Navbar1} from "@/components/layouts/Navbar" +import {SideBarOld} from '@/components/layouts/SideBar/SideBarOld' +import '@/styles/globals.css' +import { ThemeProvider } from 'next-themes' +import { usePathname } from 'next/navigation' +import { Toaster } from '@/components/ui/sonner' +import { Building2, Users, Cog, Activity, Mail, UserCircle, Database, Map, BarChart3, Cloud, TrendingUp, GitCompare, AlertTriangle, FileText, MapPin, Settings, User, Package, Navigation, Zap, Target, PieChart, Calendar, Shield, Tractor, Clipboard, ClipboardCheck, Brain, Droplets, Book, ShoppingCart } from 'lucide-react' + +const navbarData = { + logo: { + url: "/", + src: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/logos/shadcnblockscom-icon.svg", + alt: "Crop-X Logo", + title: "智慧农业生产管理系统", + }, + menu: [ + { + title: "智能农机管理系统", + url: "/agricultural-machinery", + description: "农机档案、实时监控、精准作业管理", + icon: , + }, + { + title: "地块信息管理系统", + url: "/land-information", + description: "地块档案、地图管理、空间分析", + icon: , + }, + { + title: "农事操作管理系统", + url: "/farming-operation", + description: "农事计划、任务管理、操作执行", + icon: , + }, + { + title: "农业资产管理系统", + url: "/agricultural-asset", + description: "基础信息、采购管理、库存管理", + icon: , + }, + { + title: "AI作物模型精准决策系统", + url: "/ai-crop-model", + description: "数据感知、模型应用、智能决策", + icon: , + }, + { + title: "水肥一体化控制系统", + url: "/water-fertilizer-control", + description: "水肥机管理、智能灌溉、配方管理", + icon: , + }, + { + title: "中心配置管理系统", + url: "/central-config", + description: "租户管理、用户管理、系统监控", + icon: , + }, + { + title: "API 测试示例", + url: "/api-example", + description: "测试和展示 OpenAPI 客户端调用", + icon: , + }, + ], + auth: { + login: { title: "登录", url: "/login" }, + signup: { title: "注册", url: "/register" }, + }, +}; + +const centralConfigData = { + navMain: [ + { + title: '个人中心', + url: "/central-config/personal-center", + icon: , + items: [ + { + title: "个人信息", + url: "/central-config/personal-center/personal-info", + isActive: false + },{ + title: "账户安全", + url: "/central-config/personal-center/account-security", + isActive: false + }, + ] + }, + { + title: "租户管理", + url: "/central-config/tenant", + icon: , + items: [ + { + title: "企业管理", + url: "/central-config/tenant/enterprise-management", + isActive: false + }, + { + title: "企业审核", + url: "/central-config/tenant/enterprise-audit", + isActive: false + }, + { + title: "审核历史", + url: "/central-config/tenant/audit-history", + isActive: false + }, + { + title: "企业信息", + url: "/central-config/tenant/enterprise-info", + isActive: false + }, + { + title: "用户管理", + url: "/central-config/tenant/user-management", + isActive: false + } + ] + }, + { + title: "用户管理", + url: "/central-config/user", + icon: , + items: [ + { + title: "员工管理", + url: "/central-config/user/employee", + isActive: false + }, + { + title: "角色管理", + url: "/central-config/user/role", + isActive: false + }, + { + title: "菜单管理", + url: "/central-config/user/menu", + isActive: false + }, + { + title: "权限配置管理", + url: "/central-config/user/permission", + isActive: false + } + ] + }, + { + title: "系统参数", + url: "/central-config/system", + icon: , + items: [ + { + title: "系统设置", + url: "/central-config/system/settings", + isActive: false + }, + { + title: "分类字典", + url: "/central-config/system/category", + isActive: false + }, + { + title: "数据字典", + url: "/central-config/system/dictionary", + isActive: false + } + ] + }, + { + title: "系统监控", + url: "/central-config/monitor", + icon: , + items: [ + { + title: "登录日志", + url: "/central-config/monitor/login-log", + isActive: false + }, + { + title: "操作日志", + url: "/central-config/monitor/operation-log", + isActive: false + }, + { + title: "性能监控", + url: "/central-config/monitor/performance", + isActive: false + }, + { + title: "网络日志", + url: "/central-config/monitor/network-log", + isActive: false + } + ] + }, + { + title: "消息中心", + url: "/central-config/message", + icon: , + items: [ + { + title: "消息发送", + url: "/central-config/message/send", + isActive: false + }, + { + title: "消息模版", + url: "/central-config/message/template", + isActive: false + }, + { + title: "消息日志", + url: "/central-config/message/log", + isActive: false + } + ] + } + ] +} +// 地块信息管理 +const fieldMessageManagement = { + navMain: [ + { + title: "地块档案管理", + url: "/land-information/archive", + icon: , + items: [ + { + title: "地块档案管理", + url: "/land-information/archive/manage", + isActive: false + }, + { + title: "地块分类与标签管理", + url: "/land-information/archive/classification", + isActive: false + }, + { + title: "统计分析", + url: "/land-information/archive/statistics", + isActive: false + } + ] + }, + { + title: "地块数字化与地图管理", + url: "/land-information/map", + icon: , + items: [ + { + title: "GIS地图管理", + url: "/land-information/map/gis", + isActive: false + }, + { + title: "数字化绘制与编辑", + url: "/land-information/map/draw", + isActive: false + }, + { + title: "空间数据管理", + url: "/land-information/map/spatial-query", + isActive: false + }, + { + title: "地块影像", + url: "/land-information/map/satellite", + isActive: false + } + ] + }, + { + title: "空间分析与决策支持", + url: "/land-information/analysis", + icon: , + items: [ + { + title: "土壤基础数据", + url: "/land-information/analysis/soil-data", + isActive: false + }, + { + title: "分层采样分析", + url: "/land-information/analysis/layer-sampling", + isActive: false + }, + { + title: "土壤质量评价", + url: "/land-information/analysis/soil-quality", + isActive: false + } + ] + }, + { + title: "地块环境监测", + url: "/land-information/monitoring", + icon: , + items: [ + { + title: "气象监测", + url: "/land-information/monitoring/weather", + isActive: false + }, + { + title: "环境监测", + url: "/land-information/monitoring/environment", + isActive: false + } + ] + }, + { + title: "地块适宜性评价", + url: "/land-information/suitability", + icon: , + items: [ + { + title: "多因子综合评价", + url: "/land-information/suitability/multiFactor", + isActive: false + }, + { + title: "自动化空间分析", + url: "/land-information/suitability/auto", + isActive: false + }, + { + title: "作物适配推荐", + url: "/land-information/suitability/recommend", + isActive: false + } + ] + }, + { + title: "地块对比分析", + url: "/land-information/comparison", + icon: , + items: [ + { + title: "多维度指标看板", + url: "/land-information/comparison/indicator", + isActive: false + }, + { + title: "可视化图表分析", + url: "/land-information/comparison/chart", + isActive: false + }, + { + title: "对比报告生成", + url: "/land-information/comparison/report", + isActive: false + } + ] + }, + { + title: "地块风险预警", + url: "/land-information/risk", + icon: , + items: [ + { + title: "实时风险监测", + url: "/land-information/risk/monitoring", + isActive: false + }, + { + title: "预警推送管理", + url: "/land-information/risk/push", + isActive: false + }, + { + title: "预警处置跟踪", + url: "/land-information/risk/disposal", + isActive: false + } + ] + } + ] +} + +// 农机管理 +const machineryManagement = { + navMain: [ + { + title: "农机档案", + url: "/agricultural-machinery/archive", + icon: , + items: [ + { + title: "农机录入维护", + url: "/agricultural-machinery/archive/entry", + isActive: false + }, + { + title: "农机分类管理", + url: "/agricultural-machinery/archive/classification", + isActive: false + }, + { + title: "农机二维码管理", + url: "/agricultural-machinery/archive/qrcode", + isActive: false + } + ] + }, + { + title: "驾驶员档案", + url: "/agricultural-machinery/driver-archive", + icon: , + items: [ + { + title: "驾驶员信息管理", + url: "/agricultural-machinery/driver-archive/info", + isActive: false + }, + { + title: "驾驶员任务管理", + url: "/agricultural-machinery/driver-archive/task", + isActive: false + } + ] + }, + { + title: "农机负载管理", + url: "/agricultural-machinery/load-management", + icon: , + items: [ + { + title: "负载类型管理", + url: "/agricultural-machinery/load-management/type", + isActive: false + }, + { + title: "负载参数管理", + url: "/agricultural-machinery/load-management/parameter", + isActive: false + }, + { + title: "负载设备库", + url: "/agricultural-machinery/load-management/library", + isActive: false + }, + { + title: "负载设备管理", + url: "/agricultural-machinery/load-management/device", + isActive: false + } + ] + }, + { + title: "设备实时监控与定位", + url: "/agricultural-machinery/monitoring", + icon: , + items: [ + { + title: "实时定位监控", + url: "/agricultural-machinery/monitoring/location", + isActive: false + }, + { + title: "作业状态监控", + url: "/agricultural-machinery/monitoring/status", + isActive: false + }, + { + title: "作业数据监控", + url: "/agricultural-machinery/monitoring/operation", + isActive: false + } + ] + }, + { + title: "远程诊断与故障预警", + url: "/agricultural-machinery/fault-diagnosis", + icon: , + items: [ + { + title: "故障预警规则", + url: "/agricultural-machinery/fault-diagnosis/alert-rules", + isActive: false + }, + { + title: "故障预警管理", + url: "/agricultural-machinery/fault-diagnosis/warning", + isActive: false + }, + { + title: "设备健康管理", + url: "/agricultural-machinery/fault-diagnosis/health", + isActive: false + }, + { + title: "设备参数监控", + url: "/agricultural-machinery/fault-diagnosis/parameter", + isActive: false + } + ] + }, + { + title: "精准作业管理与支持", + url: "/agricultural-machinery/precision-operation", + icon: , + items: [ + { + title: "作业记录管理", + url: "/agricultural-machinery/precision-operation/record", + isActive: false + }, + { + title: "路径规划管理", + url: "/agricultural-machinery/precision-operation/route", + isActive: false + }, + { + title: "作业计划调度", + url: "/agricultural-machinery/precision-operation/dispatch", + isActive: false + }, + { + title: "作业驾驶舱", + url: "/agricultural-machinery/precision-operation/cockpit", + isActive: false + } + ] + }, + { + title: "数据管理与分析报告", + url: "/agricultural-machinery/data-analysis", + icon: , + items: [ + { + title: "作业数据分析", + url: "/agricultural-machinery/data-analysis/analysis", + isActive: false + }, + { + title: "历史数据对比", + url: "/agricultural-machinery/data-analysis/comparison", + isActive: false + } + ] + }, + { + title: "农机管理与调度", + url: "/agricultural-machinery/scheduling", + icon: , + items: [ + { + title: "任务分配管理", + url: "/agricultural-machinery/scheduling/assignment", + isActive: false + }, + { + title: "实时调度管理", + url: "/agricultural-machinery/scheduling/dispatch", + isActive: false + }, + { + title: "轨迹回放管理", + url: "/agricultural-machinery/scheduling/playback", + isActive: false + } + ] + }, + { + title: "安全与安防", + url: "/agricultural-machinery/security", + icon: , + items: [ + { + title: "地理围栏管理", + url: "/agricultural-machinery/security/fence", + isActive: false + } + ] + } + ] +} + +// 农事操作管理系统 +const farmingOperation = { + navMain: [ + { + title: "农事计划", + url: "/farming-operation/planning", + icon: , + items: [ + { + title: "农事计划创建", + url: "/farming-operation/planning/creation", + isActive: false + }, + { + title: "农事计划分配", + url: "/farming-operation/planning/allocation", + isActive: false + }, + { + title: "农事计划进度", + url: "/farming-operation/planning/progress", + isActive: false + } + ] + }, + { + title: "农事任务", + url: "/farming-operation/task", + icon: , + items: [ + { + title: "任务管理", + url: "/farming-operation/task/management", + isActive: false + }, + { + title: "任务分配", + url: "/farming-operation/task/assignment", + isActive: false + }, + { + title: "任务监控", + url: "/farming-operation/task/monitoring", + isActive: false + }, + { + title: "任务统计", + url: "/farming-operation/task/statistics", + isActive: false + } + ] + }, + { + title: "农事执行", + url: "/farming-operation/execution", + icon: , + items: [ + { + title: "执行类型", + url: "/farming-operation/execution/type", + isActive: false + }, + { + title: "执行记录", + url: "/farming-operation/execution/record", + isActive: false + }, + { + title: "执行日志", + url: "/farming-operation/execution/log", + isActive: false + } + ] + }, + { + title: "农事日历", + url: "/farming-operation/calendar", + icon: , + items: [ + { + title: "日历视图", + url: "/farming-operation/calendar/view", + isActive: false + }, + { + title: "甘特图", + url: "/farming-operation/calendar/gantt", + isActive: false + }, + { + title: "进度跟踪", + url: "/farming-operation/calendar/progress", + isActive: false + } + ] + }, + { + title: "农事档案", + url: "/farming-operation/archive", + icon: , + items: [ + { + title: "档案聚合", + url: "/farming-operation/archive/aggregation", + isActive: false + }, + { + title: "档案查看", + url: "/farming-operation/archive/view", + isActive: false + }, + { + title: "档案追溯", + url: "/farming-operation/archive/trace", + isActive: false + } + ] + }, + { + title: "农事知识库", + url: "/farming-operation/knowledge", + icon: , + items: [ + { + title: "知识管理", + url: "/farming-operation/knowledge/management", + isActive: false + }, + { + title: "知识分类", + url: "/farming-operation/knowledge/category", + isActive: false + }, + { + title: "知识搜索", + url: "/farming-operation/knowledge/search", + isActive: false + } + ] + }, + { + title: "绩效管理", + url: "/farming-operation/performance", + icon: , + items: [ + { + title: "员工绩效", + url: "/farming-operation/performance/staff", + isActive: false + }, + { + title: "工时统计", + url: "/farming-operation/performance/hours", + isActive: false + }, + { + title: "绩效统计", + url: "/farming-operation/performance/statistics", + isActive: false + }, + { + title: "绩效调度", + url: "/farming-operation/performance/schedule", + isActive: false + } + ] + }, + { + title: "农事问题协同", + url: "/farming-operation/issue", + icon: , + items: [ + { + title: "问题上报", + url: "/farming-operation/issue/report", + isActive: false + }, + { + title: "问题分配", + url: "/farming-operation/issue/assign", + isActive: false + }, + { + title: "问题协同", + url: "/farming-operation/issue/collaborate", + isActive: false + } + ] + } + ] +} + +// 农业资产管理系统 +const agricultureAsset = { + navMain: [ + { + title: "基础信息管理", + url: "/agricultural-asset/basic", + icon: , + items: [ + { + title: "物料信息", + url: "/agricultural-asset/basic/materials", + isActive: false + }, + { + title: "农具信息", + url: "/agricultural-asset/basic/tools", + isActive: false + }, + { + title: "供应商信息", + url: "/agricultural-asset/basic/suppliers", + isActive: false + }, + { + title: "客户信息", + url: "/agricultural-asset/basic/customers", + isActive: false + } + ] + }, + { + title: "采购管理", + url: "/agricultural-asset/purchase", + icon: , + items: [ + { + title: "采购计划", + url: "/agricultural-asset/purchase/plan", + isActive: false + }, + { + title: "采购订单", + url: "/agricultural-asset/purchase/order", + isActive: false + } + ] + }, + { + title: "库存管理", + url: "/agricultural-asset/inventory", + icon: , + items: [ + { + title: "入库管理", + url: "/agricultural-asset/inventory/in", + isActive: false + }, + { + title: "出库管理", + url: "/agricultural-asset/inventory/out", + isActive: false + }, + { + title: "库存盘点", + url: "/agricultural-asset/inventory/check", + isActive: false + }, + { + title: "库存预警", + url: "/agricultural-asset/inventory/warning", + isActive: false + }, + { + title: "库存明细", + url: "/agricultural-asset/inventory/detail", + isActive: false + }, + { + title: "库位管理", + url: "/agricultural-asset/inventory/location", + isActive: false + }, + { + title: "补货建议", + url: "/agricultural-asset/inventory/suggest", + isActive: false + } + ] + }, + { + title: "物资领用", + url: "/agricultural-asset/requisition", + icon: , + items: [ + { + title: "领用申请", + url: "/agricultural-asset/requisition/apply", + isActive: false + }, + { + title: "领用审批", + url: "/agricultural-asset/requisition/approval", + isActive: false + }, + { + title: "领用发放", + url: "/agricultural-asset/requisition/checkout", + isActive: false + }, + { + title: "领用记录", + url: "/agricultural-asset/requisition/record", + isActive: false + } + ] + }, + { + title: "物资归还", + url: "/agricultural-asset/return", + icon: , + items: [ + { + title: "归还登记", + url: "/agricultural-asset/return/register", + isActive: false + }, + { + title: "归还处理", + url: "/agricultural-asset/return/process", + isActive: false + }, + { + title: "归还结算", + url: "/agricultural-asset/return/settlement", + isActive: false + }, + { + title: "归还历史", + url: "/agricultural-asset/return/history", + isActive: false + } + ] + }, + { + title: "农资农具管理", + url: "/agricultural-asset/equipment", + icon: , + items: [ + { + title: "设备档案", + url: "/agricultural-asset/equipment/archive", + isActive: false + }, + { + title: "设备调度", + url: "/agricultural-asset/equipment/dispatch", + isActive: false + }, + { + title: "设备维护", + url: "/agricultural-asset/equipment/maintenance", + isActive: false + }, + { + title: "设备折旧", + url: "/agricultural-asset/equipment/depreciation", + isActive: false + }, + { + title: "设备处置", + url: "/agricultural-asset/equipment/disposal", + isActive: false + } + ] + }, + { + title: "可视化报表", + url: "/agricultural-asset/report", + icon: , + items: [ + { + title: "总览报表", + url: "/agricultural-asset/report/overview", + isActive: false + }, + { + title: "库存报表", + url: "/agricultural-asset/report/inventory", + isActive: false + }, + { + title: "消耗报表", + url: "/agricultural-asset/report/consumption", + isActive: false + } + ] + } + ] +} + +// AI作物模型精准决策系统 +const aiCropModel = { + navMain: [ + { + title: "全域数据感知中心", + url: "/ai-crop-model/data-sense-center", + icon: , + items: [ + { + title: "多源数据接入", + url: "/ai-crop-model/data-sense-center/external", + isActive: false + }, + { + title: "物联设备数据接入", + url: "/ai-crop-model/data-sense-center/iot", + isActive: false + }, + { + title: "设备类型管理", + url: "/ai-crop-model/data-sense-center/device-type", + isActive: false + }, + { + title: "设备参数管理", + url: "/ai-crop-model/data-sense-center/device-parameter", + isActive: false + } + ] + }, + { + title: "模型接入集成", + url: "/ai-crop-model/model-integration", + icon: , + items: [ + { + title: "模型接入", + url: "/ai-crop-model/model-integration/access", + isActive: false + }, + { + title: "模型管理", + url: "/ai-crop-model/model-integration/management", + isActive: false + } + ] + }, + { + title: "模型应用中心", + url: "/ai-crop-model/model-application", + icon: , + items: [ + { + title: "生成调度", + url: "/ai-crop-model/model-application/generation", + isActive: false + }, + { + title: "应用调度", + url: "/ai-crop-model/model-application/scheduling", + isActive: false + } + ] + }, + { + title: "智能决策生成", + url: "/ai-crop-model/decision", + icon: , + items: [ + { + title: "融合决策", + url: "/ai-crop-model/decision/fusion", + isActive: false + }, + { + title: "决策仿真", + url: "/ai-crop-model/decision/simulation", + isActive: false + }, + { + title: "决策日志", + url: "/ai-crop-model/decision/log", + isActive: false + } + ] + }, + { + title: "智能决策支持", + url: "/ai-crop-model/support", + icon: , + items: [ + { + title: "决策仪表盘", + url: "/ai-crop-model/support/dashboard", + isActive: false + }, + { + title: "决策详情", + url: "/ai-crop-model/support/detail", + isActive: false + } + ] + }, + { + title: "决策应用", + url: "/ai-crop-model/application", + icon: , + items: [ + { + title: "设备控制", + url: "/ai-crop-model/application/device-control", + isActive: false + }, + { + title: "外部系统", + url: "/ai-crop-model/application/external-system", + isActive: false + } + ] + }, + { + title: "AI知识库", + url: "/ai-crop-model/knowledge", + icon: , + items: [ + { + title: "知识生成", + url: "/ai-crop-model/knowledge/generation", + isActive: false + } + ] + }, + { + title: "监控中心", + url: "/ai-crop-model/monitoring", + icon: , + items: [ + { + title: "模型监控", + url: "/ai-crop-model/monitoring/model", + isActive: false + }, + { + title: "审计监控", + url: "/ai-crop-model/monitoring/audit", + isActive: false + }, + { + title: "预警监控", + url: "/ai-crop-model/monitoring/alert", + isActive: false + } + ] + } + ] +} + +// 水肥一体化控制系统 +const waterFertilizerControl = { + navMain: [ + { + title: "水肥机管理", + url: "/water-fertilizer-control/wf-management", + icon: , + items: [ + { + title: "设备管理", + url: "/water-fertilizer-control/wf-management/device", + isActive: false + }, + { + title: "组件管理", + url: "/water-fertilizer-control/wf-management/component", + isActive: false + }, + { + title: "参数配置", + url: "/water-fertilizer-control/wf-management/parameter", + isActive: false + }, + { + title: "映射关系", + url: "/water-fertilizer-control/wf-management/mapping", + isActive: false + } + ] + }, + { + title: "智能灌溉", + url: "/water-fertilizer-control/smart", + icon: , + items: [ + { + title: "模型配置", + url: "/water-fertilizer-control/smart/model-config", + isActive: false + }, + { + title: "自动灌溉", + url: "/water-fertilizer-control/smart/auto", + isActive: false + }, + { + title: "手动灌溉", + url: "/water-fertilizer-control/smart/manual", + isActive: false + }, + { + title: "实时监控", + url: "/water-fertilizer-control/smart/realtime", + isActive: false + }, + { + title: "历史记录", + url: "/water-fertilizer-control/smart/history", + isActive: false + } + ] + }, + { + title: "施肥配方管理", + url: "/water-fertilizer-control/fertilizer", + icon: , + items: [ + { + title: "水量控制", + url: "/water-fertilizer-control/fertilizer/water-control", + isActive: false + }, + { + title: "液位设定", + url: "/water-fertilizer-control/fertilizer/level-setting", + isActive: false + }, + { + title: "搅拌控制", + url: "/water-fertilizer-control/fertilizer/stirring-control", + isActive: false + }, + { + title: "历史数据", + url: "/water-fertilizer-control/fertilizer/history-data", + isActive: false + } + ] + }, + { + title: "水肥控制", + url: "/water-fertilizer-control/wf-control", + icon: , + items: [ + { + title: "参数设置", + url: "/water-fertilizer-control/wf-control/params", + isActive: false + }, + { + title: "水箱实时监控", + url: "/water-fertilizer-control/wf-control/tank-realtime", + isActive: false + }, + { + title: "阀门控制", + url: "/water-fertilizer-control/wf-control/valve-control", + isActive: false + }, + { + title: "阀门实时监控", + url: "/water-fertilizer-control/wf-control/valve-realtime", + isActive: false + }, + { + title: "施肥历史", + url: "/water-fertilizer-control/wf-control/fertilizer-history", + isActive: false + }, + { + title: "阀门历史", + url: "/water-fertilizer-control/wf-control/valve-history", + isActive: false + } + ] + }, + { + title: "实时监测与预警", + url: "/water-fertilizer-control/monitoring", + icon: , + items: [ + { + title: "预警逻辑", + url: "/water-fertilizer-control/monitoring/alert-logic", + isActive: false + }, + { + title: "阈值预警", + url: "/water-fertilizer-control/monitoring/threshold-alert", + isActive: false + }, + { + title: "通知推送", + url: "/water-fertilizer-control/monitoring/notification-push", + isActive: false + } + ] + } + ] +} + +function RootLayoutContent({ children, }: { children: React.ReactNode }) { - return <>{children} + const pathname = usePathname(); + + // 根据当前路径动态选择侧边栏数据 + const getSidebarData = () => { + // 获取当前路径的一级路由 + const firstLevelPath = '/' + pathname.split('/')[1]; + + switch (firstLevelPath) { + case '/agricultural-machinery': + return machineryManagement; + case '/land-information': + return fieldMessageManagement; + case '/farming-operation': + return farmingOperation; + case '/agricultural-asset': + return agricultureAsset; + case '/ai-crop-model': + return aiCropModel; + case '/water-fertilizer-control': + return waterFertilizerControl; + case '/central-config': + return centralConfigData; + default: + return machineryManagement; // 默认返回农机管理 + } + }; + + const sidebarData = getSidebarData(); + + return ( +
+ +
+ + {children} + +
+
+ ); +} + +export default function RootLayout({ + children, +}: { + children: React.ReactNode +}) { + return ( + + + + {children} + + + + + ) } \ No newline at end of file diff --git a/crop-x/src/app/layout.tsx b/crop-x/src/app/layout.tsx index 66900d9..3dda49b 100644 --- a/crop-x/src/app/layout.tsx +++ b/crop-x/src/app/layout.tsx @@ -1,1348 +1,12 @@ -'use client'; - -import {Navbar1} from "@/components/layouts/Navbar" -import {SideBarOld} from '@/components/layouts/SideBar/SideBarOld' -import '@/styles/globals.css' -import { ThemeProvider } from 'next-themes' -import { usePathname } from 'next/navigation' -import { Toaster } from '@/components/ui/sonner' -import { Building2, Users, Cog, Activity, Mail, UserCircle, Database, Map, BarChart3, Cloud, TrendingUp, GitCompare, AlertTriangle, FileText, MapPin, Settings, User, Package, Navigation, Zap, Target, PieChart, Calendar, Shield, Tractor, Clipboard, ClipboardCheck, Brain, Droplets, Book, ShoppingCart } from 'lucide-react' - -const navbarData = { - logo: { - url: "/", - src: "https://deifkwefumgah.cloudfront.net/shadcnblocks/block/logos/shadcnblockscom-icon.svg", - alt: "Crop-X Logo", - title: "智慧农业生产管理系统", - }, - menu: [ - { - title: "智能农机管理系统", - url: "/agricultural-machinery", - description: "农机档案、实时监控、精准作业管理", - icon: , - }, - { - title: "地块信息管理系统", - url: "/land-information", - description: "地块档案、地图管理、空间分析", - icon: , - }, - { - title: "农事操作管理系统", - url: "/farming-operation", - description: "农事计划、任务管理、操作执行", - icon: , - }, - { - title: "农业资产管理系统", - url: "/agricultural-asset", - description: "基础信息、采购管理、库存管理", - icon: , - }, - { - title: "AI作物模型精准决策系统", - url: "/ai-crop-model", - description: "数据感知、模型应用、智能决策", - icon: , - }, - { - title: "水肥一体化控制系统", - url: "/water-fertilizer-control", - description: "水肥机管理、智能灌溉、配方管理", - icon: , - }, - { - title: "中心配置管理系统", - url: "/central-config", - description: "租户管理、用户管理、系统监控", - icon: , - }, - { - title: "API 测试示例", - url: "/api-example", - description: "测试和展示 OpenAPI 客户端调用", - icon: , - }, - ], - auth: { - login: { title: "登录", url: "/login" }, - signup: { title: "注册", url: "/register" }, - }, -}; - -const centralConfigData = { - navMain: [ - { - title: '个人中心', - url: "/central-config/personal-center", - icon: , - items: [ - { - title: "个人信息", - url: "/central-config/personal-center/personal-info", - isActive: false - },{ - title: "账户安全", - url: "/central-config/personal-center/account-security", - isActive: false - }, - ] - }, - { - title: "租户管理", - url: "/central-config/tenant", - icon: , - items: [ - { - title: "企业管理", - url: "/central-config/tenant/enterprise-management", - isActive: false - }, - { - title: "企业审核", - url: "/central-config/tenant/enterprise-audit", - isActive: false - }, - { - title: "审核历史", - url: "/central-config/tenant/audit-history", - isActive: false - }, - { - title: "企业信息", - url: "/central-config/tenant/enterprise-info", - isActive: false - }, - { - title: "用户管理", - url: "/central-config/tenant/user-management", - isActive: false - } - ] - }, - { - title: "用户管理", - url: "/central-config/user", - icon: , - items: [ - { - title: "员工管理", - url: "/central-config/user/employee", - isActive: false - }, - { - title: "角色管理", - url: "/central-config/user/role", - isActive: false - }, - { - title: "菜单管理", - url: "/central-config/user/menu", - isActive: false - }, - { - title: "权限配置管理", - url: "/central-config/user/permission", - isActive: false - } - ] - }, - { - title: "系统参数", - url: "/central-config/system", - icon: , - items: [ - { - title: "系统设置", - url: "/central-config/system/settings", - isActive: false - }, - { - title: "分类字典", - url: "/central-config/system/category", - isActive: false - }, - { - title: "数据字典", - url: "/central-config/system/dictionary", - isActive: false - } - ] - }, - { - title: "系统监控", - url: "/central-config/monitor", - icon: , - items: [ - { - title: "登录日志", - url: "/central-config/monitor/login-log", - isActive: false - }, - { - title: "操作日志", - url: "/central-config/monitor/operation-log", - isActive: false - }, - { - title: "性能监控", - url: "/central-config/monitor/performance", - isActive: false - }, - { - title: "网络日志", - url: "/central-config/monitor/network-log", - isActive: false - } - ] - }, - { - title: "消息中心", - url: "/central-config/message", - icon: , - items: [ - { - title: "消息发送", - url: "/central-config/message/send", - isActive: false - }, - { - title: "消息模版", - url: "/central-config/message/template", - isActive: false - }, - { - title: "消息日志", - url: "/central-config/message/log", - isActive: false - } - ] - } - ] -} -// 地块信息管理 -const fieldMessageManagement = { - navMain: [ - { - title: "地块档案管理", - url: "/land-information/archive", - icon: , - items: [ - { - title: "地块档案管理", - url: "/land-information/archive/manage", - isActive: false - }, - { - title: "地块分类与标签管理", - url: "/land-information/archive/classification", - isActive: false - }, - { - title: "统计分析", - url: "/land-information/archive/statistics", - isActive: false - } - ] - }, - { - title: "地块数字化与地图管理", - url: "/land-information/map", - icon: , - items: [ - { - title: "GIS地图管理", - url: "/land-information/map/gis", - isActive: false - }, - { - title: "数字化绘制与编辑", - url: "/land-information/map/draw", - isActive: false - }, - { - title: "空间数据管理", - url: "/land-information/map/spatial-query", - isActive: false - }, - { - title: "地块影像", - url: "/land-information/map/satellite", - isActive: false - } - ] - }, - { - title: "空间分析与决策支持", - url: "/land-information/analysis", - icon: , - items: [ - { - title: "土壤基础数据", - url: "/land-information/analysis/soil-data", - isActive: false - }, - { - title: "分层采样分析", - url: "/land-information/analysis/layer-sampling", - isActive: false - }, - { - title: "土壤质量评价", - url: "/land-information/analysis/soil-quality", - isActive: false - } - ] - }, - { - title: "地块环境监测", - url: "/land-information/monitoring", - icon: , - items: [ - { - title: "气象监测", - url: "/land-information/monitoring/weather", - isActive: false - }, - { - title: "环境监测", - url: "/land-information/monitoring/environment", - isActive: false - } - ] - }, - { - title: "地块适宜性评价", - url: "/land-information/suitability", - icon: , - items: [ - { - title: "多因子综合评价", - url: "/land-information/suitability/multiFactor", - isActive: false - }, - { - title: "自动化空间分析", - url: "/land-information/suitability/auto", - isActive: false - }, - { - title: "作物适配推荐", - url: "/land-information/suitability/recommend", - isActive: false - } - ] - }, - { - title: "地块对比分析", - url: "/land-information/comparison", - icon: , - items: [ - { - title: "多维度指标看板", - url: "/land-information/comparison/indicator", - isActive: false - }, - { - title: "可视化图表分析", - url: "/land-information/comparison/chart", - isActive: false - }, - { - title: "对比报告生成", - url: "/land-information/comparison/report", - isActive: false - } - ] - }, - { - title: "地块风险预警", - url: "/land-information/risk", - icon: , - items: [ - { - title: "实时风险监测", - url: "/land-information/risk/monitoring", - isActive: false - }, - { - title: "预警推送管理", - url: "/land-information/risk/push", - isActive: false - }, - { - title: "预警处置跟踪", - url: "/land-information/risk/disposal", - isActive: false - } - ] - } - ] -} - -// 农机管理 -const machineryManagement = { - navMain: [ - { - title: "农机档案", - url: "/agricultural-machinery/archive", - icon: , - items: [ - { - title: "农机录入维护", - url: "/agricultural-machinery/archive/entry", - isActive: false - }, - { - title: "农机分类管理", - url: "/agricultural-machinery/archive/classification", - isActive: false - }, - { - title: "农机二维码管理", - url: "/agricultural-machinery/archive/qrcode", - isActive: false - } - ] - }, - { - title: "驾驶员档案", - url: "/agricultural-machinery/driver-archive", - icon: , - items: [ - { - title: "驾驶员信息管理", - url: "/agricultural-machinery/driver-archive/info", - isActive: false - }, - { - title: "驾驶员任务管理", - url: "/agricultural-machinery/driver-archive/task", - isActive: false - } - ] - }, - { - title: "农机负载管理", - url: "/agricultural-machinery/load-management", - icon: , - items: [ - { - title: "负载类型管理", - url: "/agricultural-machinery/load-management/type", - isActive: false - }, - { - title: "负载参数管理", - url: "/agricultural-machinery/load-management/parameter", - isActive: false - }, - { - title: "负载设备库", - url: "/agricultural-machinery/load-management/library", - isActive: false - }, - { - title: "负载设备管理", - url: "/agricultural-machinery/load-management/device", - isActive: false - } - ] - }, - { - title: "设备实时监控与定位", - url: "/agricultural-machinery/monitoring", - icon: , - items: [ - { - title: "实时定位监控", - url: "/agricultural-machinery/monitoring/location", - isActive: false - }, - { - title: "作业状态监控", - url: "/agricultural-machinery/monitoring/status", - isActive: false - }, - { - title: "作业数据监控", - url: "/agricultural-machinery/monitoring/operation", - isActive: false - } - ] - }, - { - title: "远程诊断与故障预警", - url: "/agricultural-machinery/fault-diagnosis", - icon: , - items: [ - { - title: "故障预警规则", - url: "/agricultural-machinery/fault-diagnosis/alert-rules", - isActive: false - }, - { - title: "故障预警管理", - url: "/agricultural-machinery/fault-diagnosis/warning", - isActive: false - }, - { - title: "设备健康管理", - url: "/agricultural-machinery/fault-diagnosis/health", - isActive: false - }, - { - title: "设备参数监控", - url: "/agricultural-machinery/fault-diagnosis/parameter", - isActive: false - } - ] - }, - { - title: "精准作业管理与支持", - url: "/agricultural-machinery/precision-operation", - icon: , - items: [ - { - title: "作业记录管理", - url: "/agricultural-machinery/precision-operation/record", - isActive: false - }, - { - title: "路径规划管理", - url: "/agricultural-machinery/precision-operation/route", - isActive: false - }, - { - title: "作业计划调度", - url: "/agricultural-machinery/precision-operation/dispatch", - isActive: false - }, - { - title: "作业驾驶舱", - url: "/agricultural-machinery/precision-operation/cockpit", - isActive: false - } - ] - }, - { - title: "数据管理与分析报告", - url: "/agricultural-machinery/data-analysis", - icon: , - items: [ - { - title: "作业数据分析", - url: "/agricultural-machinery/data-analysis/analysis", - isActive: false - }, - { - title: "历史数据对比", - url: "/agricultural-machinery/data-analysis/comparison", - isActive: false - } - ] - }, - { - title: "农机管理与调度", - url: "/agricultural-machinery/scheduling", - icon: , - items: [ - { - title: "任务分配管理", - url: "/agricultural-machinery/scheduling/assignment", - isActive: false - }, - { - title: "实时调度管理", - url: "/agricultural-machinery/scheduling/dispatch", - isActive: false - }, - { - title: "轨迹回放管理", - url: "/agricultural-machinery/scheduling/playback", - isActive: false - } - ] - }, - { - title: "安全与安防", - url: "/agricultural-machinery/security", - icon: , - items: [ - { - title: "地理围栏管理", - url: "/agricultural-machinery/security/fence", - isActive: false - } - ] - } - ] -} - -// 农事操作管理系统 -const farmingOperation = { - navMain: [ - { - title: "农事计划", - url: "/farming-operation/planning", - icon: , - items: [ - { - title: "农事计划创建", - url: "/farming-operation/planning/creation", - isActive: false - }, - { - title: "农事计划分配", - url: "/farming-operation/planning/allocation", - isActive: false - }, - { - title: "农事计划进度", - url: "/farming-operation/planning/progress", - isActive: false - } - ] - }, - { - title: "农事任务", - url: "/farming-operation/task", - icon: , - items: [ - { - title: "任务管理", - url: "/farming-operation/task/management", - isActive: false - }, - { - title: "任务分配", - url: "/farming-operation/task/assignment", - isActive: false - }, - { - title: "任务监控", - url: "/farming-operation/task/monitoring", - isActive: false - }, - { - title: "任务统计", - url: "/farming-operation/task/statistics", - isActive: false - } - ] - }, - { - title: "农事执行", - url: "/farming-operation/execution", - icon: , - items: [ - { - title: "执行类型", - url: "/farming-operation/execution/type", - isActive: false - }, - { - title: "执行记录", - url: "/farming-operation/execution/record", - isActive: false - }, - { - title: "执行日志", - url: "/farming-operation/execution/log", - isActive: false - } - ] - }, - { - title: "农事日历", - url: "/farming-operation/calendar", - icon: , - items: [ - { - title: "日历视图", - url: "/farming-operation/calendar/view", - isActive: false - }, - { - title: "甘特图", - url: "/farming-operation/calendar/gantt", - isActive: false - }, - { - title: "进度跟踪", - url: "/farming-operation/calendar/progress", - isActive: false - } - ] - }, - { - title: "农事档案", - url: "/farming-operation/archive", - icon: , - items: [ - { - title: "档案聚合", - url: "/farming-operation/archive/aggregation", - isActive: false - }, - { - title: "档案查看", - url: "/farming-operation/archive/view", - isActive: false - }, - { - title: "档案追溯", - url: "/farming-operation/archive/trace", - isActive: false - } - ] - }, - { - title: "农事知识库", - url: "/farming-operation/knowledge", - icon: , - items: [ - { - title: "知识管理", - url: "/farming-operation/knowledge/management", - isActive: false - }, - { - title: "知识分类", - url: "/farming-operation/knowledge/category", - isActive: false - }, - { - title: "知识搜索", - url: "/farming-operation/knowledge/search", - isActive: false - } - ] - }, - { - title: "绩效管理", - url: "/farming-operation/performance", - icon: , - items: [ - { - title: "员工绩效", - url: "/farming-operation/performance/staff", - isActive: false - }, - { - title: "工时统计", - url: "/farming-operation/performance/hours", - isActive: false - }, - { - title: "绩效统计", - url: "/farming-operation/performance/statistics", - isActive: false - }, - { - title: "绩效调度", - url: "/farming-operation/performance/schedule", - isActive: false - } - ] - }, - { - title: "农事问题协同", - url: "/farming-operation/issue", - icon: , - items: [ - { - title: "问题上报", - url: "/farming-operation/issue/report", - isActive: false - }, - { - title: "问题分配", - url: "/farming-operation/issue/assign", - isActive: false - }, - { - title: "问题协同", - url: "/farming-operation/issue/collaborate", - isActive: false - } - ] - } - ] -} - -// 农业资产管理系统 -const agricultureAsset = { - navMain: [ - { - title: "基础信息管理", - url: "/agricultural-asset/basic", - icon: , - items: [ - { - title: "物料信息", - url: "/agricultural-asset/basic/materials", - isActive: false - }, - { - title: "农具信息", - url: "/agricultural-asset/basic/tools", - isActive: false - }, - { - title: "供应商信息", - url: "/agricultural-asset/basic/suppliers", - isActive: false - }, - { - title: "客户信息", - url: "/agricultural-asset/basic/customers", - isActive: false - } - ] - }, - { - title: "采购管理", - url: "/agricultural-asset/purchase", - icon: , - items: [ - { - title: "采购计划", - url: "/agricultural-asset/purchase/plan", - isActive: false - }, - { - title: "采购订单", - url: "/agricultural-asset/purchase/order", - isActive: false - } - ] - }, - { - title: "库存管理", - url: "/agricultural-asset/inventory", - icon: , - items: [ - { - title: "入库管理", - url: "/agricultural-asset/inventory/in", - isActive: false - }, - { - title: "出库管理", - url: "/agricultural-asset/inventory/out", - isActive: false - }, - { - title: "库存盘点", - url: "/agricultural-asset/inventory/check", - isActive: false - }, - { - title: "库存预警", - url: "/agricultural-asset/inventory/warning", - isActive: false - }, - { - title: "库存明细", - url: "/agricultural-asset/inventory/detail", - isActive: false - }, - { - title: "库位管理", - url: "/agricultural-asset/inventory/location", - isActive: false - }, - { - title: "补货建议", - url: "/agricultural-asset/inventory/suggest", - isActive: false - } - ] - }, - { - title: "物资领用", - url: "/agricultural-asset/requisition", - icon: , - items: [ - { - title: "领用申请", - url: "/agricultural-asset/requisition/apply", - isActive: false - }, - { - title: "领用审批", - url: "/agricultural-asset/requisition/approval", - isActive: false - }, - { - title: "领用发放", - url: "/agricultural-asset/requisition/checkout", - isActive: false - }, - { - title: "领用记录", - url: "/agricultural-asset/requisition/record", - isActive: false - } - ] - }, - { - title: "物资归还", - url: "/agricultural-asset/return", - icon: , - items: [ - { - title: "归还登记", - url: "/agricultural-asset/return/register", - isActive: false - }, - { - title: "归还处理", - url: "/agricultural-asset/return/process", - isActive: false - }, - { - title: "归还结算", - url: "/agricultural-asset/return/settlement", - isActive: false - }, - { - title: "归还历史", - url: "/agricultural-asset/return/history", - isActive: false - } - ] - }, - { - title: "农资农具管理", - url: "/agricultural-asset/equipment", - icon: , - items: [ - { - title: "设备档案", - url: "/agricultural-asset/equipment/archive", - isActive: false - }, - { - title: "设备调度", - url: "/agricultural-asset/equipment/dispatch", - isActive: false - }, - { - title: "设备维护", - url: "/agricultural-asset/equipment/maintenance", - isActive: false - }, - { - title: "设备折旧", - url: "/agricultural-asset/equipment/depreciation", - isActive: false - }, - { - title: "设备处置", - url: "/agricultural-asset/equipment/disposal", - isActive: false - } - ] - }, - { - title: "可视化报表", - url: "/agricultural-asset/report", - icon: , - items: [ - { - title: "总览报表", - url: "/agricultural-asset/report/overview", - isActive: false - }, - { - title: "库存报表", - url: "/agricultural-asset/report/inventory", - isActive: false - }, - { - title: "消耗报表", - url: "/agricultural-asset/report/consumption", - isActive: false - } - ] - } - ] -} - -// AI作物模型精准决策系统 -const aiCropModel = { - navMain: [ - { - title: "全域数据感知中心", - url: "/ai-crop-model/data-sense-center", - icon: , - items: [ - { - title: "多源数据接入", - url: "/ai-crop-model/data-sense-center/external", - isActive: false - }, - { - title: "物联设备数据接入", - url: "/ai-crop-model/data-sense-center/iot", - isActive: false - }, - { - title: "设备类型管理", - url: "/ai-crop-model/data-sense-center/device-type", - isActive: false - }, - { - title: "设备参数管理", - url: "/ai-crop-model/data-sense-center/device-parameter", - isActive: false - } - ] - }, - { - title: "模型接入集成", - url: "/ai-crop-model/model-integration", - icon: , - items: [ - { - title: "模型接入", - url: "/ai-crop-model/model-integration/access", - isActive: false - }, - { - title: "模型管理", - url: "/ai-crop-model/model-integration/management", - isActive: false - } - ] - }, - { - title: "模型应用中心", - url: "/ai-crop-model/model-application", - icon: , - items: [ - { - title: "生成调度", - url: "/ai-crop-model/model-application/generation", - isActive: false - }, - { - title: "应用调度", - url: "/ai-crop-model/model-application/scheduling", - isActive: false - } - ] - }, - { - title: "智能决策生成", - url: "/ai-crop-model/decision", - icon: , - items: [ - { - title: "融合决策", - url: "/ai-crop-model/decision/fusion", - isActive: false - }, - { - title: "决策仿真", - url: "/ai-crop-model/decision/simulation", - isActive: false - }, - { - title: "决策日志", - url: "/ai-crop-model/decision/log", - isActive: false - } - ] - }, - { - title: "智能决策支持", - url: "/ai-crop-model/support", - icon: , - items: [ - { - title: "决策仪表盘", - url: "/ai-crop-model/support/dashboard", - isActive: false - }, - { - title: "决策详情", - url: "/ai-crop-model/support/detail", - isActive: false - } - ] - }, - { - title: "决策应用", - url: "/ai-crop-model/application", - icon: , - items: [ - { - title: "设备控制", - url: "/ai-crop-model/application/device-control", - isActive: false - }, - { - title: "外部系统", - url: "/ai-crop-model/application/external-system", - isActive: false - } - ] - }, - { - title: "AI知识库", - url: "/ai-crop-model/knowledge", - icon: , - items: [ - { - title: "知识生成", - url: "/ai-crop-model/knowledge/generation", - isActive: false - } - ] - }, - { - title: "监控中心", - url: "/ai-crop-model/monitoring", - icon: , - items: [ - { - title: "模型监控", - url: "/ai-crop-model/monitoring/model", - isActive: false - }, - { - title: "审计监控", - url: "/ai-crop-model/monitoring/audit", - isActive: false - }, - { - title: "预警监控", - url: "/ai-crop-model/monitoring/alert", - isActive: false - } - ] - } - ] -} - -// 水肥一体化控制系统 -const waterFertilizerControl = { - navMain: [ - { - title: "水肥机管理", - url: "/water-fertilizer-control/wf-management", - icon: , - items: [ - { - title: "设备管理", - url: "/water-fertilizer-control/wf-management/device", - isActive: false - }, - { - title: "组件管理", - url: "/water-fertilizer-control/wf-management/component", - isActive: false - }, - { - title: "参数配置", - url: "/water-fertilizer-control/wf-management/parameter", - isActive: false - }, - { - title: "映射关系", - url: "/water-fertilizer-control/wf-management/mapping", - isActive: false - } - ] - }, - { - title: "智能灌溉", - url: "/water-fertilizer-control/smart", - icon: , - items: [ - { - title: "模型配置", - url: "/water-fertilizer-control/smart/model-config", - isActive: false - }, - { - title: "自动灌溉", - url: "/water-fertilizer-control/smart/auto", - isActive: false - }, - { - title: "手动灌溉", - url: "/water-fertilizer-control/smart/manual", - isActive: false - }, - { - title: "实时监控", - url: "/water-fertilizer-control/smart/realtime", - isActive: false - }, - { - title: "历史记录", - url: "/water-fertilizer-control/smart/history", - isActive: false - } - ] - }, - { - title: "施肥配方管理", - url: "/water-fertilizer-control/fertilizer", - icon: , - items: [ - { - title: "水量控制", - url: "/water-fertilizer-control/fertilizer/water-control", - isActive: false - }, - { - title: "液位设定", - url: "/water-fertilizer-control/fertilizer/level-setting", - isActive: false - }, - { - title: "搅拌控制", - url: "/water-fertilizer-control/fertilizer/stirring-control", - isActive: false - }, - { - title: "历史数据", - url: "/water-fertilizer-control/fertilizer/history-data", - isActive: false - } - ] - }, - { - title: "水肥控制", - url: "/water-fertilizer-control/wf-control", - icon: , - items: [ - { - title: "参数设置", - url: "/water-fertilizer-control/wf-control/params", - isActive: false - }, - { - title: "水箱实时监控", - url: "/water-fertilizer-control/wf-control/tank-realtime", - isActive: false - }, - { - title: "阀门控制", - url: "/water-fertilizer-control/wf-control/valve-control", - isActive: false - }, - { - title: "阀门实时监控", - url: "/water-fertilizer-control/wf-control/valve-realtime", - isActive: false - }, - { - title: "施肥历史", - url: "/water-fertilizer-control/wf-control/fertilizer-history", - isActive: false - }, - { - title: "阀门历史", - url: "/water-fertilizer-control/wf-control/valve-history", - isActive: false - } - ] - }, - { - title: "实时监测与预警", - url: "/water-fertilizer-control/monitoring", - icon: , - items: [ - { - title: "预警逻辑", - url: "/water-fertilizer-control/monitoring/alert-logic", - isActive: false - }, - { - title: "阈值预警", - url: "/water-fertilizer-control/monitoring/threshold-alert", - isActive: false - }, - { - title: "通知推送", - url: "/water-fertilizer-control/monitoring/notification-push", - isActive: false - } - ] - } - ] -} - -function RootLayoutContent({ - children, -}: { - children: React.ReactNode -}) { - const pathname = usePathname(); - - // 根据当前路径动态选择侧边栏数据 - const getSidebarData = () => { - // 获取当前路径的一级路由 - const firstLevelPath = '/' + pathname.split('/')[1]; - - switch (firstLevelPath) { - case '/agricultural-machinery': - return machineryManagement; - case '/land-information': - return fieldMessageManagement; - case '/farming-operation': - return farmingOperation; - case '/agricultural-asset': - return agricultureAsset; - case '/ai-crop-model': - return aiCropModel; - case '/water-fertilizer-control': - return waterFertilizerControl; - case '/central-config': - return centralConfigData; - default: - return machineryManagement; // 默认返回农机管理 - } - }; - - const sidebarData = getSidebarData(); - - return ( -
- -
- - {children} - -
-
- ); -} - -export default function RootLayout({ +export default function AppLayout({ children, }: { children: React.ReactNode }) { return ( - - - - {children} - - + + + {children} )