From 1d28d8699a00affe58befcc0add542f6db5e152f Mon Sep 17 00:00:00 2001 From: clumxc <2088043998@qq.com> Date: Sun, 28 Dec 2025 22:27:54 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 - src/README.md | 0 src/test/.gitattributes | 2 + src/test/.gitignore | 33 + src/test/api-test.http | 944 + src/test/docker-compose.yml | 125 + src/test/frontend/.editorconfig | 8 + src/test/frontend/.eslintrc.cjs | 96 + src/test/frontend/.gitattributes | 1 + src/test/frontend/.gitignore | 36 + src/test/frontend/.prettierrc.json | 6 + src/test/frontend/eslint.config.ts | 40 + src/test/frontend/index.html | 39 + src/test/frontend/metadata.json | 5 + src/test/frontend/package-lock.json | 7440 +++ src/test/frontend/package.json | 55 + src/test/frontend/public/favicon.ico | Bin 0 -> 4286 bytes src/test/frontend/src/App.vue | 494 + src/test/frontend/src/__tests__/App.spec.ts | 11 + src/test/frontend/src/assets/index.css | 855 + .../src/components/QueryShareCard.vue | 515 + .../src/components/ShareQueryDialog.vue | 301 + .../src/components/admin/AdminModal.vue | 96 + .../src/components/admin/StatCard.vue | 86 + .../frontend/src/components/admin/index.ts | 5 + .../src/components/common/BaseSidebar.vue | 150 + .../src/components/common/FilterBar.vue | 115 + .../src/components/common/FilterSelect.vue | 145 + .../src/components/common/SidebarCategory.vue | 117 + .../src/components/common/SidebarItem.vue | 51 + .../frontend/src/components/common/index.ts | 7 + .../data-admin/PermissionModalContent.vue | 141 + .../src/components/data-admin/index.ts | 4 + .../feature/ForgotPasswordModal.vue | 95 + .../components/feature/chat/ChatMessage.vue | 53 + .../src/components/feature/chat/ChatModal.vue | 350 + .../src/components/feature/chat/index.ts | 5 + .../frontend/src/components/feature/index.ts | 6 + .../feature/query/ChartComparison.vue | 345 + .../feature/query/ComparisonModal.vue | 346 + .../components/feature/query/QueryResult.vue | 732 + .../feature/query/TableComparison.vue | 109 + .../src/components/feature/query/index.ts | 7 + src/test/frontend/src/components/index.ts | 41 + .../src/components/layout/MainLayout.vue | 136 + .../layout/RecommendationLayout.vue | 90 + .../src/components/layout/TopHeader.vue | 312 + .../frontend/src/components/layout/index.ts | 12 + .../layout/sidebars/DataAdminSidebar.vue | 121 + .../layout/sidebars/LoginSidebar.vue | 41 + .../layout/sidebars/QueryHistorySidebar.vue | 215 + .../layout/sidebars/QueryRecommendSidebar.vue | 261 + .../layout/sidebars/SettingsSidebar.vue | 95 + .../layout/sidebars/SysAdminSidebar.vue | 118 + .../layout/sidebars/UserSidebar.vue | 102 + .../frontend/src/components/ui/Dropdown.vue | 126 + .../src/components/ui/ErrorBoundary.vue | 92 + .../src/components/ui/FilterDropdown.vue | 52 + src/test/frontend/src/components/ui/Modal.vue | 89 + .../frontend/src/components/ui/TabButton.vue | 45 + .../src/components/ui/ToastContainer.vue | 141 + src/test/frontend/src/components/ui/index.ts | 9 + .../src/composables/useErrorHandler.ts | 120 + .../src/composables/useQueryCollection.ts | 238 + .../frontend/src/composables/useQueryShare.ts | 114 + src/test/frontend/src/composables/useTheme.ts | 158 + src/test/frontend/src/composables/useToast.ts | 101 + src/test/frontend/src/config.ts | 17 + src/test/frontend/src/constants.ts | 504 + src/test/frontend/src/main.ts | 32 + src/test/frontend/src/router/index.ts | 18 + src/test/frontend/src/services/api.real.ts | 65 + src/test/frontend/src/services/api/auth.ts | 61 + src/test/frontend/src/services/api/db.ts | 65 + src/test/frontend/src/services/api/dialog.ts | 94 + src/test/frontend/src/services/api/friend.ts | 172 + src/test/frontend/src/services/api/index.ts | 90 + src/test/frontend/src/services/api/llm.ts | 63 + src/test/frontend/src/services/api/log.ts | 154 + .../frontend/src/services/api/notification.ts | 115 + .../frontend/src/services/api/permission.ts | 59 + src/test/frontend/src/services/api/query.ts | 256 + src/test/frontend/src/services/api/request.ts | 122 + src/test/frontend/src/services/api/user.ts | 103 + .../src/services/queryShareService.ts | 144 + src/test/frontend/src/stores/counter.ts | 12 + src/test/frontend/src/types.ts | 5 + src/test/frontend/src/types/chat.ts | 5 + src/test/frontend/src/types/friends-page.ts | 8 + src/test/frontend/src/types/index.ts | 274 + src/test/frontend/src/utils/logger.ts | 98 + src/test/frontend/src/views/AccountPage.vue | 504 + .../frontend/src/views/CollectionsPage.vue | 587 + src/test/frontend/src/views/DataAdminPage.vue | 149 + src/test/frontend/src/views/FriendsPage.vue | 1521 + src/test/frontend/src/views/HistoryPage.vue | 629 + src/test/frontend/src/views/LoginPage.vue | 168 + .../frontend/src/views/NotificationsPage.vue | 327 + .../frontend/src/views/PlaceholderPage.vue | 30 + src/test/frontend/src/views/QueryPage.vue | 1259 + src/test/frontend/src/views/SettingsPage.vue | 88 + src/test/frontend/src/views/UserPage.vue | 136 + .../src/views/admin/AdminAccountPage.vue | 444 + .../src/views/admin/DashboardPage.vue | 432 + .../src/views/admin/LLMConfigPage.vue | 484 + .../admin/NotificationManagementPage.vue | 552 + .../frontend/src/views/admin/SysAdminPage.vue | 83 + .../src/views/admin/SystemLogPage.vue | 572 + .../src/views/admin/UserManagementPage.vue | 775 + .../views/data-admin/ConnectionLogPage.vue | 285 + .../data-admin/DataAdminDashboardPage.vue | 271 + .../data-admin/DataAdminNotificationPage.vue | 552 + .../data-admin/DataSourceManagementPage.vue | 607 + .../views/data-admin/UserPermissionPage.vue | 511 + src/test/frontend/tsconfig.app.json | 12 + src/test/frontend/tsconfig.json | 30 + src/test/frontend/tsconfig.node.json | 19 + src/test/frontend/tsconfig.vitest.json | 11 + src/test/frontend/vite.config.ts | 55 + src/test/frontend/vitest.config.ts | 14 + src/test/last.md | 507 + src/test/mongodb_schema_from_last.js | 493 + src/test/mvnw | 295 + src/test/mysql_schema_from_last.sql | 414 + src/test/pom.xml | 164 + src/test/sakila-data.sql | 46444 ++++++++++++++++ src/test/sakila-schema.sql | 686 + src/test/scripts/export-data.bat | 27 + src/test/scripts/export-data.sh | 39 + src/test/scripts/import-data.bat | 32 + src/test/scripts/import-data.sh | 38 + .../NaturalLanguageQueryApplication.java | 42 + .../natural_language_query/common/Result.java | 106 + .../config/CorsConfig.java | 53 + .../config/JwtInterceptor.java | 94 + .../config/SecurityConfig.java | 127 + .../config/WebMvcConfig.java | 69 + .../config/WebSocketConfig.java | 50 + .../config/WebSocketEventListener.java | 104 + .../AiInteractionLogController.java | 39 + .../controller/AuthController.java | 55 + .../controller/ChatWebSocketController.java | 133 + .../CollectionRecordController.java | 270 + .../controller/ColumnMetadataController.java | 66 + .../controller/DbConnectionController.java | 135 + .../controller/DbConnectionLogController.java | 50 + .../controller/DbTypeController.java | 61 + .../controller/DialogController.java | 67 + .../controller/DialogDetailController.java | 44 + .../controller/ErrorLogController.java | 71 + .../controller/ErrorTypeController.java | 61 + .../controller/FriendChatController.java | 198 + .../controller/FriendRelationController.java | 63 + .../controller/FriendRequestController.java | 95 + .../controller/LLMConfigController.java | 263 + .../controller/LLMStatusController.java | 61 + .../controller/NotificationController.java | 245 + .../NotificationTargetController.java | 61 + .../controller/OperationLogController.java | 151 + .../PerformanceMetricController.java | 47 + .../controller/PriorityController.java | 61 + .../controller/QueryCollectionController.java | 191 + .../controller/QueryController.java | 83 + .../controller/QueryLogController.java | 120 + .../controller/QueryShareChatController.java | 130 + .../controller/QueryShareController.java | 67 + .../controller/RoleController.java | 30 + .../controller/SqlCacheController.java | 46 + .../controller/SystemHealthController.java | 63 + .../controller/TableMetadataController.java | 65 + .../controller/TestController.java | 129 + .../controller/TokenConsumeController.java | 54 + .../controller/UserController.java | 134 + .../UserDbPermissionController.java | 239 + .../controller/UserSearchController.java | 59 + .../dto/ChangePasswordDTO.java | 21 + .../dto/ChatMessagePageDTO.java | 28 + .../dto/CollectionRecordDTO.java | 42 + .../natural_language_query/dto/LoginDTO.java | 18 + .../dto/QueryCollectionDTO.java | 26 + .../dto/QueryLogDTO.java | 73 + .../dto/QueryRequestDTO.java | 56 + .../dto/SendChatMessageDTO.java | 33 + .../dto/SendFriendRequestDTO.java | 29 + .../dto/ShareQueryDTO.java | 83 + .../entity/mongodb/AiInteractionLog.java | 41 + .../entity/mongodb/CollectionRecord.java | 35 + .../entity/mongodb/DialogDetail.java | 27 + .../entity/mongodb/DialogRecord.java | 68 + .../entity/mongodb/FriendChat.java | 28 + .../entity/mongodb/QueryCollection.java | 21 + .../entity/mongodb/SqlCache.java | 30 + .../entity/mysql/ColumnMetadata.java | 26 + .../entity/mysql/DbConnection.java | 70 + .../entity/mysql/DbConnectionLog.java | 27 + .../entity/mysql/DbType.java | 19 + .../entity/mysql/ErrorLog.java | 25 + .../entity/mysql/ErrorType.java | 19 + .../entity/mysql/FriendRelation.java | 27 + .../entity/mysql/FriendRequest.java | 27 + .../entity/mysql/LlmConfig.java | 34 + .../entity/mysql/LlmStatus.java | 19 + .../entity/mysql/Notification.java | 40 + .../entity/mysql/NotificationTarget.java | 19 + .../entity/mysql/OperationLog.java | 36 + .../entity/mysql/PerformanceMetric.java | 24 + .../entity/mysql/Priority.java | 19 + .../entity/mysql/QueryLog.java | 27 + .../entity/mysql/QueryShare.java | 29 + .../entity/mysql/Role.java | 20 + .../entity/mysql/SystemHealth.java | 25 + .../entity/mysql/TableMetadata.java | 24 + .../entity/mysql/TokenConsume.java | 28 + .../entity/mysql/User.java | 73 + .../entity/mysql/UserDbPermission.java | 33 + .../entity/mysql/UserNotificationRead.java | 36 + .../entity/mysql/UserSearch.java | 68 + .../exception/BusinessException.java | 69 + .../mapper/ColumnMetadataMapper.java | 8 + .../mapper/DbConnectionLogMapper.java | 8 + .../mapper/DbConnectionMapper.java | 8 + .../mapper/DbTypeMapper.java | 8 + .../mapper/ErrorLogMapper.java | 8 + .../mapper/ErrorTypeMapper.java | 8 + .../mapper/FriendRelationMapper.java | 8 + .../mapper/FriendRequestMapper.java | 20 + .../mapper/LLMConfigMapper.java | 8 + .../mapper/LLMStatusMapper.java | 8 + .../mapper/NotificationMapper.java | 8 + .../mapper/NotificationTargetMapper.java | 8 + .../mapper/OperationLogMapper.java | 8 + .../mapper/PerformanceMetricMapper.java | 8 + .../mapper/PriorityMapper.java | 8 + .../mapper/QueryLogMapper.java | 8 + .../mapper/QueryShareMapper.java | 8 + .../mapper/RoleMapper.java | 8 + .../mapper/SystemHealthMapper.java | 8 + .../mapper/TableMetadataMapper.java | 8 + .../mapper/TokenConsumeMapper.java | 8 + .../mapper/UserDbPermissionMapper.java | 8 + .../mapper/UserMapper.java | 8 + .../mapper/UserNotificationReadMapper.java | 9 + .../mapper/UserSearchMapper.java | 8 + .../AiInteractionLogRepository.java | 16 + .../CollectionRecordRepository.java | 23 + .../repository/DialogDetailRepository.java | 11 + .../repository/DialogRecordRepository.java | 13 + .../repository/FriendChatRepository.java | 82 + .../repository/QueryCollectionRepository.java | 14 + .../repository/SqlCacheRepository.java | 15 + .../service/AiInteractionLogService.java | 15 + .../service/AuthService.java | 8 + .../service/CollectionRecordService.java | 58 + .../service/ColumnMetadataService.java | 10 + .../service/DatabaseSchemaService.java | 33 + .../service/DbConnectionLogService.java | 17 + .../service/DbConnectionService.java | 13 + .../service/DbTypeService.java | 9 + .../service/DialogDetailService.java | 12 + .../service/DialogService.java | 16 + .../service/ErrorLogService.java | 13 + .../service/ErrorTypeService.java | 9 + .../service/FriendChatService.java | 103 + .../service/FriendRelationService.java | 19 + .../service/FriendRequestService.java | 23 + .../service/LLMService.java | 71 + .../service/LLMStatusService.java | 9 + .../service/LlmConfigService.java | 10 + .../service/NotificationService.java | 19 + .../service/NotificationTargetService.java | 9 + .../service/OperationLogService.java | 16 + .../service/PerformanceMetricService.java | 16 + .../service/PriorityService.java | 13 + .../service/QueryCollectionService.java | 17 + .../service/QueryLogService.java | 13 + .../service/QueryService.java | 48 + .../service/QueryShareChatService.java | 65 + .../service/QueryShareService.java | 21 + .../service/RoleService.java | 6 + .../service/SqlCacheService.java | 16 + .../service/SystemHealthService.java | 13 + .../service/TableMetadataService.java | 10 + .../service/TablePermissionService.java | 91 + .../service/TokenConsumeService.java | 18 + .../service/UserDbPermissionService.java | 16 + .../service/UserNotificationReadService.java | 19 + .../service/UserService.java | 42 + .../impl/AiInteractionLogServiceImpl.java | 34 + .../service/impl/AuthServiceImpl.java | 68 + .../impl/CollectionRecordServiceImpl.java | 140 + .../impl/ColumnMetadataServiceImpl.java | 24 + .../impl/CustomUserDetailsService.java | 43 + .../impl/DatabaseSchemaServiceImpl.java | 270 + .../impl/DbConnectionLogServiceImpl.java | 44 + .../service/impl/DbConnectionServiceImpl.java | 78 + .../service/impl/DbTypeServiceImpl.java | 19 + .../service/impl/DialogDetailServiceImpl.java | 28 + .../service/impl/DialogServiceImpl.java | 67 + .../service/impl/ErrorLogServiceImpl.java | 30 + .../service/impl/ErrorTypeServiceImpl.java | 20 + .../service/impl/FriendChatServiceImpl.java | 318 + .../impl/FriendRelationServiceImpl.java | 75 + .../impl/FriendRequestServiceImpl.java | 166 + .../service/impl/LLMConfigServiceImpl.java | 22 + .../service/impl/LLMServiceImpl.java | 282 + .../service/impl/LLMStatusServiceImpl.java | 20 + .../service/impl/NotificationServiceImpl.java | 71 + .../impl/NotificationTargetServiceImpl.java | 21 + .../service/impl/OperationLogServiceImpl.java | 38 + .../impl/PerformanceMetricServiceImpl.java | 40 + .../service/impl/PriorityServiceImpl.java | 28 + .../impl/QueryCollectionServiceImpl.java | 39 + .../service/impl/QueryLogServiceImpl.java | 30 + .../service/impl/QueryServiceImpl.java | 626 + .../impl/QueryShareChatServiceImpl.java | 373 + .../service/impl/QueryShareServiceImpl.java | 56 + .../service/impl/RoleServiceImpl.java | 10 + .../service/impl/SqlCacheServiceImpl.java | 36 + .../service/impl/SystemHealthServiceImpl.java | 30 + .../impl/TableMetadataServiceImpl.java | 22 + .../impl/TablePermissionServiceImpl.java | 151 + .../service/impl/TokenConsumeServiceImpl.java | 45 + .../impl/UserDbPermissionServiceImpl.java | 55 + .../impl/UserNotificationReadServiceImpl.java | 142 + .../service/impl/UserServiceImpl.java | 141 + .../utils/DynamicDatabaseExecutor.java | 480 + .../natural_language_query/utils/JwtUtil.java | 140 + .../utils/SqlSimilarityUtil.java | 221 + .../utils/SqlTableExtractor.java | 303 + .../vo/ChartDataVO.java | 42 + .../vo/ChatMessageVO.java | 51 + .../natural_language_query/vo/DatasetVO.java | 34 + .../natural_language_query/vo/LoginVO.java | 37 + .../vo/NotificationVO.java | 48 + .../vo/QueryResponseVO.java | 64 + .../vo/QueryShareVO.java | 108 + .../vo/TableDataVO.java | 27 + .../vo/UnreadCountVO.java | 35 + src/test/src/main/resources/application.yml | 83 + .../NaturalLanguageQueryApplicationTests.java | 13 + .../natural_language_query/PasswordTest.java | 26 + .../service/TablePermissionServiceTest.java | 176 + src/test/前端集成示例.md | 938 + src/test/好友聊天功能API文档.md | 558 + src/test/好友聊天功能实现总结.md | 318 + src/test/快速启动指南.md | 398 + 346 files changed, 94561 insertions(+), 2 deletions(-) delete mode 100644 README.md delete mode 100644 src/README.md create mode 100644 src/test/.gitattributes create mode 100644 src/test/.gitignore create mode 100644 src/test/api-test.http create mode 100644 src/test/docker-compose.yml create mode 100644 src/test/frontend/.editorconfig create mode 100644 src/test/frontend/.eslintrc.cjs create mode 100644 src/test/frontend/.gitattributes create mode 100644 src/test/frontend/.gitignore create mode 100644 src/test/frontend/.prettierrc.json create mode 100644 src/test/frontend/eslint.config.ts create mode 100644 src/test/frontend/index.html create mode 100644 src/test/frontend/metadata.json create mode 100644 src/test/frontend/package-lock.json create mode 100644 src/test/frontend/package.json create mode 100644 src/test/frontend/public/favicon.ico create mode 100644 src/test/frontend/src/App.vue create mode 100644 src/test/frontend/src/__tests__/App.spec.ts create mode 100644 src/test/frontend/src/assets/index.css create mode 100644 src/test/frontend/src/components/QueryShareCard.vue create mode 100644 src/test/frontend/src/components/ShareQueryDialog.vue create mode 100644 src/test/frontend/src/components/admin/AdminModal.vue create mode 100644 src/test/frontend/src/components/admin/StatCard.vue create mode 100644 src/test/frontend/src/components/admin/index.ts create mode 100644 src/test/frontend/src/components/common/BaseSidebar.vue create mode 100644 src/test/frontend/src/components/common/FilterBar.vue create mode 100644 src/test/frontend/src/components/common/FilterSelect.vue create mode 100644 src/test/frontend/src/components/common/SidebarCategory.vue create mode 100644 src/test/frontend/src/components/common/SidebarItem.vue create mode 100644 src/test/frontend/src/components/common/index.ts create mode 100644 src/test/frontend/src/components/data-admin/PermissionModalContent.vue create mode 100644 src/test/frontend/src/components/data-admin/index.ts create mode 100644 src/test/frontend/src/components/feature/ForgotPasswordModal.vue create mode 100644 src/test/frontend/src/components/feature/chat/ChatMessage.vue create mode 100644 src/test/frontend/src/components/feature/chat/ChatModal.vue create mode 100644 src/test/frontend/src/components/feature/chat/index.ts create mode 100644 src/test/frontend/src/components/feature/index.ts create mode 100644 src/test/frontend/src/components/feature/query/ChartComparison.vue create mode 100644 src/test/frontend/src/components/feature/query/ComparisonModal.vue create mode 100644 src/test/frontend/src/components/feature/query/QueryResult.vue create mode 100644 src/test/frontend/src/components/feature/query/TableComparison.vue create mode 100644 src/test/frontend/src/components/feature/query/index.ts create mode 100644 src/test/frontend/src/components/index.ts create mode 100644 src/test/frontend/src/components/layout/MainLayout.vue create mode 100644 src/test/frontend/src/components/layout/RecommendationLayout.vue create mode 100644 src/test/frontend/src/components/layout/TopHeader.vue create mode 100644 src/test/frontend/src/components/layout/index.ts create mode 100644 src/test/frontend/src/components/layout/sidebars/DataAdminSidebar.vue create mode 100644 src/test/frontend/src/components/layout/sidebars/LoginSidebar.vue create mode 100644 src/test/frontend/src/components/layout/sidebars/QueryHistorySidebar.vue create mode 100644 src/test/frontend/src/components/layout/sidebars/QueryRecommendSidebar.vue create mode 100644 src/test/frontend/src/components/layout/sidebars/SettingsSidebar.vue create mode 100644 src/test/frontend/src/components/layout/sidebars/SysAdminSidebar.vue create mode 100644 src/test/frontend/src/components/layout/sidebars/UserSidebar.vue create mode 100644 src/test/frontend/src/components/ui/Dropdown.vue create mode 100644 src/test/frontend/src/components/ui/ErrorBoundary.vue create mode 100644 src/test/frontend/src/components/ui/FilterDropdown.vue create mode 100644 src/test/frontend/src/components/ui/Modal.vue create mode 100644 src/test/frontend/src/components/ui/TabButton.vue create mode 100644 src/test/frontend/src/components/ui/ToastContainer.vue create mode 100644 src/test/frontend/src/components/ui/index.ts create mode 100644 src/test/frontend/src/composables/useErrorHandler.ts create mode 100644 src/test/frontend/src/composables/useQueryCollection.ts create mode 100644 src/test/frontend/src/composables/useQueryShare.ts create mode 100644 src/test/frontend/src/composables/useTheme.ts create mode 100644 src/test/frontend/src/composables/useToast.ts create mode 100644 src/test/frontend/src/config.ts create mode 100644 src/test/frontend/src/constants.ts create mode 100644 src/test/frontend/src/main.ts create mode 100644 src/test/frontend/src/router/index.ts create mode 100644 src/test/frontend/src/services/api.real.ts create mode 100644 src/test/frontend/src/services/api/auth.ts create mode 100644 src/test/frontend/src/services/api/db.ts create mode 100644 src/test/frontend/src/services/api/dialog.ts create mode 100644 src/test/frontend/src/services/api/friend.ts create mode 100644 src/test/frontend/src/services/api/index.ts create mode 100644 src/test/frontend/src/services/api/llm.ts create mode 100644 src/test/frontend/src/services/api/log.ts create mode 100644 src/test/frontend/src/services/api/notification.ts create mode 100644 src/test/frontend/src/services/api/permission.ts create mode 100644 src/test/frontend/src/services/api/query.ts create mode 100644 src/test/frontend/src/services/api/request.ts create mode 100644 src/test/frontend/src/services/api/user.ts create mode 100644 src/test/frontend/src/services/queryShareService.ts create mode 100644 src/test/frontend/src/stores/counter.ts create mode 100644 src/test/frontend/src/types.ts create mode 100644 src/test/frontend/src/types/chat.ts create mode 100644 src/test/frontend/src/types/friends-page.ts create mode 100644 src/test/frontend/src/types/index.ts create mode 100644 src/test/frontend/src/utils/logger.ts create mode 100644 src/test/frontend/src/views/AccountPage.vue create mode 100644 src/test/frontend/src/views/CollectionsPage.vue create mode 100644 src/test/frontend/src/views/DataAdminPage.vue create mode 100644 src/test/frontend/src/views/FriendsPage.vue create mode 100644 src/test/frontend/src/views/HistoryPage.vue create mode 100644 src/test/frontend/src/views/LoginPage.vue create mode 100644 src/test/frontend/src/views/NotificationsPage.vue create mode 100644 src/test/frontend/src/views/PlaceholderPage.vue create mode 100644 src/test/frontend/src/views/QueryPage.vue create mode 100644 src/test/frontend/src/views/SettingsPage.vue create mode 100644 src/test/frontend/src/views/UserPage.vue create mode 100644 src/test/frontend/src/views/admin/AdminAccountPage.vue create mode 100644 src/test/frontend/src/views/admin/DashboardPage.vue create mode 100644 src/test/frontend/src/views/admin/LLMConfigPage.vue create mode 100644 src/test/frontend/src/views/admin/NotificationManagementPage.vue create mode 100644 src/test/frontend/src/views/admin/SysAdminPage.vue create mode 100644 src/test/frontend/src/views/admin/SystemLogPage.vue create mode 100644 src/test/frontend/src/views/admin/UserManagementPage.vue create mode 100644 src/test/frontend/src/views/data-admin/ConnectionLogPage.vue create mode 100644 src/test/frontend/src/views/data-admin/DataAdminDashboardPage.vue create mode 100644 src/test/frontend/src/views/data-admin/DataAdminNotificationPage.vue create mode 100644 src/test/frontend/src/views/data-admin/DataSourceManagementPage.vue create mode 100644 src/test/frontend/src/views/data-admin/UserPermissionPage.vue create mode 100644 src/test/frontend/tsconfig.app.json create mode 100644 src/test/frontend/tsconfig.json create mode 100644 src/test/frontend/tsconfig.node.json create mode 100644 src/test/frontend/tsconfig.vitest.json create mode 100644 src/test/frontend/vite.config.ts create mode 100644 src/test/frontend/vitest.config.ts create mode 100644 src/test/last.md create mode 100644 src/test/mongodb_schema_from_last.js create mode 100644 src/test/mvnw create mode 100644 src/test/mysql_schema_from_last.sql create mode 100644 src/test/pom.xml create mode 100644 src/test/sakila-data.sql create mode 100644 src/test/sakila-schema.sql create mode 100644 src/test/scripts/export-data.bat create mode 100644 src/test/scripts/export-data.sh create mode 100644 src/test/scripts/import-data.bat create mode 100644 src/test/scripts/import-data.sh create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/NaturalLanguageQueryApplication.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/common/Result.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/config/CorsConfig.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/config/JwtInterceptor.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/config/SecurityConfig.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/config/WebMvcConfig.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/config/WebSocketConfig.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/config/WebSocketEventListener.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/AiInteractionLogController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/AuthController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/ChatWebSocketController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/CollectionRecordController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/ColumnMetadataController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/DbConnectionController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/DbConnectionLogController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/DbTypeController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/DialogController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/DialogDetailController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/ErrorLogController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/ErrorTypeController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/FriendChatController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/FriendRelationController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/FriendRequestController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/LLMConfigController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/LLMStatusController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/NotificationController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/NotificationTargetController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/OperationLogController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/PerformanceMetricController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/PriorityController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/QueryCollectionController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/QueryController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/QueryLogController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/QueryShareChatController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/QueryShareController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/RoleController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/SqlCacheController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/SystemHealthController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/TableMetadataController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/TestController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/TokenConsumeController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/UserController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/UserDbPermissionController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/controller/UserSearchController.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/ChangePasswordDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/ChatMessagePageDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/CollectionRecordDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/LoginDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/QueryCollectionDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/QueryLogDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/QueryRequestDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/SendChatMessageDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/SendFriendRequestDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/dto/ShareQueryDTO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mongodb/AiInteractionLog.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mongodb/CollectionRecord.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mongodb/DialogDetail.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mongodb/DialogRecord.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mongodb/FriendChat.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mongodb/QueryCollection.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mongodb/SqlCache.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/ColumnMetadata.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/DbConnection.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/DbConnectionLog.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/DbType.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/ErrorLog.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/ErrorType.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/FriendRelation.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/FriendRequest.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/LlmConfig.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/LlmStatus.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/Notification.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/NotificationTarget.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/OperationLog.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/PerformanceMetric.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/Priority.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/QueryLog.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/QueryShare.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/Role.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/SystemHealth.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/TableMetadata.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/TokenConsume.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/User.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/UserDbPermission.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/UserNotificationRead.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/entity/mysql/UserSearch.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/exception/BusinessException.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/ColumnMetadataMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/DbConnectionLogMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/DbConnectionMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/DbTypeMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/ErrorLogMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/ErrorTypeMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/FriendRelationMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/FriendRequestMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/LLMConfigMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/LLMStatusMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/NotificationMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/NotificationTargetMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/OperationLogMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/PerformanceMetricMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/PriorityMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/QueryLogMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/QueryShareMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/RoleMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/SystemHealthMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/TableMetadataMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/TokenConsumeMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/UserDbPermissionMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/UserMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/UserNotificationReadMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/mapper/UserSearchMapper.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/repository/AiInteractionLogRepository.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/repository/CollectionRecordRepository.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/repository/DialogDetailRepository.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/repository/DialogRecordRepository.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/repository/FriendChatRepository.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/repository/QueryCollectionRepository.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/repository/SqlCacheRepository.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/AiInteractionLogService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/AuthService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/CollectionRecordService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/ColumnMetadataService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/DatabaseSchemaService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/DbConnectionLogService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/DbConnectionService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/DbTypeService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/DialogDetailService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/DialogService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/ErrorLogService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/ErrorTypeService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/FriendChatService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/FriendRelationService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/FriendRequestService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/LLMService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/LLMStatusService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/LlmConfigService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/NotificationService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/NotificationTargetService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/OperationLogService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/PerformanceMetricService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/PriorityService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/QueryCollectionService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/QueryLogService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/QueryService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/QueryShareChatService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/QueryShareService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/RoleService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/SqlCacheService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/SystemHealthService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/TableMetadataService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/TablePermissionService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/TokenConsumeService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/UserDbPermissionService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/UserNotificationReadService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/UserService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/AiInteractionLogServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/AuthServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/CollectionRecordServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/ColumnMetadataServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/CustomUserDetailsService.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/DatabaseSchemaServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/DbConnectionLogServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/DbConnectionServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/DbTypeServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/DialogDetailServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/DialogServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/ErrorLogServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/ErrorTypeServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/FriendChatServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/FriendRelationServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/FriendRequestServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/LLMConfigServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/LLMServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/LLMStatusServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/NotificationServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/NotificationTargetServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/OperationLogServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/PerformanceMetricServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/PriorityServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/QueryCollectionServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/QueryLogServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/QueryServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/QueryShareChatServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/QueryShareServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/RoleServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/SqlCacheServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/SystemHealthServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/TableMetadataServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/TablePermissionServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/TokenConsumeServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/UserDbPermissionServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/UserNotificationReadServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/service/impl/UserServiceImpl.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/utils/DynamicDatabaseExecutor.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/utils/JwtUtil.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/utils/SqlSimilarityUtil.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/utils/SqlTableExtractor.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/ChartDataVO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/ChatMessageVO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/DatasetVO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/LoginVO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/NotificationVO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/QueryResponseVO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/QueryShareVO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/TableDataVO.java create mode 100644 src/test/src/main/java/com/baoma/natural_language_query/vo/UnreadCountVO.java create mode 100644 src/test/src/main/resources/application.yml create mode 100644 src/test/src/test/java/com/baoma/natural_language_query/NaturalLanguageQueryApplicationTests.java create mode 100644 src/test/src/test/java/com/baoma/natural_language_query/PasswordTest.java create mode 100644 src/test/src/test/java/com/baoma/natural_language_query/service/TablePermissionServiceTest.java create mode 100644 src/test/前端集成示例.md create mode 100644 src/test/好友聊天功能API文档.md create mode 100644 src/test/好友聊天功能实现总结.md create mode 100644 src/test/快速启动指南.md diff --git a/README.md b/README.md deleted file mode 100644 index c6a79431..00000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Baoma - diff --git a/src/README.md b/src/README.md deleted file mode 100644 index e69de29b..00000000 diff --git a/src/test/.gitattributes b/src/test/.gitattributes new file mode 100644 index 00000000..3b41682a --- /dev/null +++ b/src/test/.gitattributes @@ -0,0 +1,2 @@ +/mvnw text eol=lf +*.cmd text eol=crlf diff --git a/src/test/.gitignore b/src/test/.gitignore new file mode 100644 index 00000000..667aaef0 --- /dev/null +++ b/src/test/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/src/test/api-test.http b/src/test/api-test.http new file mode 100644 index 00000000..f6dd22ba --- /dev/null +++ b/src/test/api-test.http @@ -0,0 +1,944 @@ +### 测试 Hello +GET http://localhost:8080/test/hello + +### 测试所有数据库 +GET http://localhost:8080/test/all + +### ==================== 新增表接口测试 ==================== + +### 好友关系 - 查询用户好友列表 +GET http://localhost:8080/friend-relation/list/1 + +### 好友关系 - 添加好友 +POST http://localhost:8080/friend-relation +Content-Type: application/json + +{ + "userId": 1, + "friendId": 2, + "friendUsername": "user2", + "remarkName": "小明" +} + +### 好友请求 - 查询待处理请求 +GET http://localhost:8080/friend-request/list/1/0 + +### 好友请求 - 发送好友请求 +POST http://localhost:8080/friend-request +Content-Type: application/json + +{ + "applicantId": 1, + "recipientId": 2, + "applyMsg": "我是张三,加个好友" +} + +### 好友请求 - 处理请求(同意) +PUT http://localhost:8080/friend-request +Content-Type: application/json + +{ + "id": 1, + "status": 1 +} + +### 查询分享 - 查询接收的分享 +GET http://localhost:8080/query-share/list/receive/1 + +### 查询分享 - 分享查询 +POST http://localhost:8080/query-share +Content-Type: application/json + +{ + "shareUserId": 1, + "receiveUserId": 2, + "dialogId": "conv_12345", + "targetRounds": "[1,2,3]", + "queryTitle": "销售数据分析" +} + +### Token消耗 - 查询所有记录 +GET http://localhost:8080/token-consume/list + +### Token消耗 - 查询指定日期 +GET http://localhost:8080/token-consume/gemini-2.5-pro/2025-12-01 + +### Token消耗 - 添加记录 +POST http://localhost:8080/token-consume +Content-Type: application/json + +{ + "llmName": "gemini-2.5-pro", + "totalTokens": 1500, + "promptTokens": 1000, + "completionTokens": 500, + "consumeDate": "2025-12-01" +} + +### 性能指标 - 查询所有 +GET http://localhost:8080/performance-metric/list + +### 性能指标 - 按类型查询 +GET http://localhost:8080/performance-metric/list/query_count + +### 性能指标 - 添加记录 +POST http://localhost:8080/performance-metric +Content-Type: application/json + +{ + "metricType": "query_count", + "metricValue": 150, + "metricTime": "2025-12-01T10:00:00" +} + +### 连接日志 - 查询所有 +GET http://localhost:8080/db-connection-log/list + +### 连接日志 - 按连接ID查询 +GET http://localhost:8080/db-connection-log/list/connection/1 + +### 连接日志 - 添加日志 +POST http://localhost:8080/db-connection-log +Content-Type: application/json + +{ + "dbConnectionId": 1, + "dbName": "订单主库", + "status": "success", + "handlerId": 1 +} + +### 用户搜索 - 查询用户搜索历史 +GET http://localhost:8080/user-search/list/1 + +### 用户搜索 - 查询常用搜索(Top 5) +GET http://localhost:8080/user-search/list/top/1/5 + +### 用户搜索 - 记录搜索 +POST http://localhost:8080/user-search +Content-Type: application/json + +{ + "userId": 1, + "sqlContent": "SELECT * FROM users WHERE status = 1", + "queryTitle": "查询活跃用户" +} + +### 收藏组 - 查询用户收藏组 +GET http://localhost:8080/query-collection/list/1 + +### 收藏组 - 创建收藏组 +POST http://localhost:8080/query-collection +Content-Type: application/json + +{ + "userId": 1, + "groupName": "销售报表查询" +} + +### 收藏记录 - 按组查询 +GET http://localhost:8080/collection-record/list/query/674c8e9f1234567890abcdef + +### 收藏记录 - 添加收藏 +POST http://localhost:8080/collection-record +Content-Type: application/json + +{ + "queryId": "674c8e9f1234567890abcdef", + "userId": 1, + "sqlContent": "SELECT * FROM orders WHERE date > '2025-01-01'", + "dbConnectionId": 1, + "llmConfigId": 1 +} + +### 对话详情 - 查询对话内容 +GET http://localhost:8080/dialog-detail/conv_12345 + +### 对话详情 - 保存对话 +POST http://localhost:8080/dialog-detail +Content-Type: application/json + +{ + "dialogId": "conv_12345", + "rounds": [ + { + "roundNum": 1, + "userInput": "查询所有用户", + "aiResponse": "已生成SQL查询", + "generatedSql": "SELECT * FROM users" + } + ] +} + +### SQL缓存 - 查询用户缓存 +GET http://localhost:8080/sql-cache/list/1 + +### SQL缓存 - 添加缓存 +POST http://localhost:8080/sql-cache +Content-Type: application/json + +{ + "nlHash": "abc123def456", + "userId": 1, + "connectionId": 1, + "tableIds": [1, 2], + "dbType": "mysql", + "generatedSql": "SELECT * FROM users", + "hitCount": 0, + "expireTime": "2025-12-08T00:00:00" +} + +### AI交互日志 - 按用户查询 +GET http://localhost:8080/ai-interaction-log/list/user/1 + +### AI交互日志 - 按模型查询 +GET http://localhost:8080/ai-interaction-log/list/llm/gemini-2.5-pro + +### AI交互日志 - 添加日志 +POST http://localhost:8080/ai-interaction-log +Content-Type: application/json + +{ + "userId": 1, + "requestType": "nl2sql", + "llmName": "gemini-2.5-pro", + "requestParams": { + "naturalLanguage": "查询所有用户" + }, + "tokenUsage": { + "promptTokens": 100, + "completionTokens": 50, + "totalTokens": 150 + }, + "responseTime": 1200, + "status": "success" +} + +### 好友聊天 - 查询聊天记录 +GET http://localhost:8080/friend-chat/list/1/2 + +### 好友聊天 - 查询未读消息 +GET http://localhost:8080/friend-chat/unread/1 + +### 好友聊天 - 发送消息 +POST http://localhost:8080/friend-chat +Content-Type: application/json + +{ + "userId": 1, + "friendId": 2, + "contentType": "text", + "content": { + "text": "你好,最近怎么样?" + } +} + +### ==================== 认证接口 ==================== + +### 登录 +POST http://localhost:8080/auth/login +Content-Type: application/json + +{ + "username": "admin", + "password": "123456" +} + +### ==================== 查询执行接口 ==================== + +### 执行查询(新对话) +POST http://localhost:8080/query/execute +Content-Type: application/json +userId: 1 + +{ + "userPrompt": "查询所有用户信息", + "model": "gemini-2.5-pro", + "database": "销售数据库" +} + +### 执行查询(继续对话) +POST http://localhost:8080/query/execute +Content-Type: application/json +userId: 1 + +{ + "userPrompt": "按订单量排序", + "model": "gemini-2.5-pro", + "database": "销售数据库", + "conversationId": "conv_12345678" +} + +### ==================== 对话历史接口 ==================== + +### 获取用户对话列表 +GET http://localhost:8080/dialog/list +userId: 1 + +### 获取对话详情 +GET http://localhost:8080/dialog/conv_12345678 + +### ==================== 用户管理接口 ==================== + +### 查询所有用户 +GET http://localhost:8080/user/list + +### 添加用户 +POST http://localhost:8080/user +Content-Type: application/json + +{ + "username": "admin", + "password": "123456", + "email": "admin@example.com", + "phonenumber": "13800138000", + "roleId": 1, + "status": 1 +} + +### 分页查询 +GET http://localhost:8080/user/page?current=1&size=10 + +### 根据ID查询 +GET http://localhost:8080/user/3 + +### 更新用户 +PUT http://localhost:8080/user +Content-Type: application/json + +{ + "id": 3, + "username": "admin", + "email": "newemail@example.com", + "status": 1 +} + +### 删除用户 +DELETE http://localhost:8080/user/3 + +### 根据用户名查询 +GET http://localhost:8080/user/username/admin + +### 根据手机号搜索用户 +GET http://localhost:8080/user/search/phone?phoneNumber=13800138000 + +### 修改密码 +POST http://localhost:8080/user/change-password +Content-Type: application/json + +{ + "userId": 1, + "oldPassword": "123456", + "newPassword": "newpassword123" +} + +### ==================== 好友管理接口 ==================== + +### 查询用户的好友列表 +GET http://localhost:8080/friend-relation/list/1 + +### 查询特定好友关系 +GET http://localhost:8080/friend-relation/1/2 + +### 添加好友关系(通常由系统自动创建) +POST http://localhost:8080/friend-relation +Content-Type: application/json + +{ + "userId": 1, + "friendId": 2, + "friendUsername": "user2", + "onlineStatus": 1, + "remarkName": "小明" +} + +### 更新好友备注 +PUT http://localhost:8080/friend-relation +Content-Type: application/json + +{ + "id": 1, + "remarkName": "我的好朋友小明" +} + +### 删除好友关系(通过关系ID) +DELETE http://localhost:8080/friend-relation/1 + +### 删除好友关系(通过用户ID和好友ID) +DELETE http://localhost:8080/friend-relation/1/2 + +### ==================== 好友请求接口 ==================== + +### 查询用户收到的所有好友请求 +GET http://localhost:8080/friend-request/list/1 + +### 查询用户收到的待处理好友请求(status=0) +GET http://localhost:8080/friend-request/list/1/0 + +### 查询特定好友请求 +GET http://localhost:8080/friend-request/1 + +### 发送好友请求 +POST http://localhost:8080/friend-request +Content-Type: application/json + +{ + "applicantId": 1, + "recipientId": 2, + "applyMsg": "你好,我想加你为好友", + "status": 0 +} + +### 接受好友请求(自动创建双向好友关系) +POST http://localhost:8080/friend-request/1/accept + +### 拒绝好友请求 +POST http://localhost:8080/friend-request/1/reject + +### 删除好友请求记录 +DELETE http://localhost:8080/friend-request/1 + +### ==================== 数据库连接管理接口 ==================== + +### 查询所有数据库连接 +GET http://localhost:8080/db-connection/list + +### 根据创建者查询数据库连接 +GET http://localhost:8080/db-connection/list/4 + +### 根据ID查询数据库连接 +GET http://localhost:8080/db-connection/1 + +### 添加数据库连接 +POST http://localhost:8080/db-connection +Content-Type: application/json + +{ + "name": "测试MySQL连接", + "dbTypeId": 1, + "url": "127.0.0.1:3306/test_db", + "username": "root", + "password": "password", + "status": "disconnected", + "createUserId": 4 +} + +### 更新数据库连接 +PUT http://localhost:8080/db-connection +Content-Type: application/json + +{ + "id": 1, + "name": "更新后的连接名称", + "status": "connected" +} + +### 测试数据库连接 +GET http://localhost:8080/db-connection/test/1 + +### 删除数据库连接 +DELETE http://localhost:8080/db-connection/1 + +### ==================== 大模型配置接口 ==================== + +### 查询所有大模型配置 +GET http://localhost:8080/llm-config/list + +### 查询可用的大模型配置 +GET http://localhost:8080/llm-config/list/available + +### 根据ID查询大模型配置 +GET http://localhost:8080/llm-config/1 + +### 添加大模型配置 +POST http://localhost:8080/llm-config +Content-Type: application/json + +{ + "name": "智谱AI", + "version": "4.0", + "apiKey": "your-api-key-here", + "apiUrl": "https://api.zhipuai.com/v4/chat/completions", + "statusId": 1, + "isDisabled": 0, + "timeout": 5000, + "createUserId": 4 +} + +### 更新大模型配置 +PUT http://localhost:8080/llm-config +Content-Type: application/json + +{ + "id": 1, + "name": "智谱AI", + "version": "4.5", + "timeout": 8000 +} + +### 禁用/启用大模型配置 +PUT http://localhost:8080/llm-config/1/toggle + +### 删除大模型配置 +DELETE http://localhost:8080/llm-config/1 + +### ==================== 数据表元数据接口 ==================== + +### 查询所有表元数据 +GET http://localhost:8080/table-metadata/list + +### 根据数据库连接ID查询表元数据 +GET http://localhost:8080/table-metadata/list/1 + +### 根据ID查询表元数据 +GET http://localhost:8080/table-metadata/1 + +### 添加表元数据 +POST http://localhost:8080/table-metadata +Content-Type: application/json + +{ + "dbConnectionId": 1, + "tableName": "orders", + "description": "订单表,存储所有订单信息" +} + +### 更新表元数据 +PUT http://localhost:8080/table-metadata +Content-Type: application/json + +{ + "id": 1, + "tableName": "orders", + "description": "订单表(已更新)" +} + +### 删除表元数据 +DELETE http://localhost:8080/table-metadata/1 + +### ==================== 字段元数据接口 ==================== + +### 查询所有字段元数据 +GET http://localhost:8080/column-metadata/list + +### 根据表ID查询字段元数据 +GET http://localhost:8080/column-metadata/list/1 + +### 根据ID查询字段元数据 +GET http://localhost:8080/column-metadata/1 + +### 添加字段元数据 +POST http://localhost:8080/column-metadata +Content-Type: application/json + +{ + "tableId": 1, + "columnName": "order_id", + "dataType": "bigint(20)", + "description": "订单唯一标识", + "isPrimary": 1 +} + +### 更新字段元数据 +PUT http://localhost:8080/column-metadata +Content-Type: application/json + +{ + "id": 1, + "columnName": "order_id", + "description": "订单ID(主键)" +} + +### 删除字段元数据 +DELETE http://localhost:8080/column-metadata/1 + +### ==================== 查询日志接口 ==================== + +### 查询所有查询日志 +GET http://localhost:8080/query-log/list + +### 根据用户ID查询查询日志 +GET http://localhost:8080/query-log/list/user/4 + +### 根据对话ID查询查询日志 +GET http://localhost:8080/query-log/list/dialog/conv_12345678 + +### 根据ID查询查询日志 +GET http://localhost:8080/query-log/1 + +### 添加查询日志 +POST http://localhost:8080/query-log +Content-Type: application/json + +{ + "dialogId": "conv_12345678", + "dataSourceId": 1, + "userId": 4, + "executeResult": 1 +} + +### 删除查询日志 +DELETE http://localhost:8080/query-log/1 + +### ==================== 数据库类型字典接口 ==================== + +### 查询所有数据库类型 +GET http://localhost:8080/db-type/list + +### 根据ID查询数据库类型 +GET http://localhost:8080/db-type/1 + +### 根据类型编码查询 +GET http://localhost:8080/db-type/code/mysql + +### 添加数据库类型 +POST http://localhost:8080/db-type +Content-Type: application/json + +{ + "typeName": "MySQL", + "typeCode": "mysql", + "description": "关系型数据库" +} + +### 更新数据库类型 +PUT http://localhost:8080/db-type +Content-Type: application/json + +{ + "id": 1, + "typeName": "MySQL", + "description": "关系型数据库(已更新)" +} + +### 删除数据库类型 +DELETE http://localhost:8080/db-type/1 + +### ==================== 大模型状态字典接口 ==================== + +### 查询所有大模型状态 +GET http://localhost:8080/llm-status/list + +### 根据ID查询大模型状态 +GET http://localhost:8080/llm-status/1 + +### 根据状态编码查询 +GET http://localhost:8080/llm-status/code/available + +### 添加大模型状态 +POST http://localhost:8080/llm-status +Content-Type: application/json + +{ + "statusName": "可用", + "statusCode": "available", + "description": "API成功率≥95%" +} + +### 更新大模型状态 +PUT http://localhost:8080/llm-status +Content-Type: application/json + +{ + "id": 1, + "statusName": "可用", + "description": "API成功率≥98%" +} + +### 删除大模型状态 +DELETE http://localhost:8080/llm-status/1 + +### ==================== 用户数据权限接口 ==================== + +### 查询所有权限 +GET http://localhost:8080/user-db-permission/list + +### 查询已分配权限的用户 +GET http://localhost:8080/user-db-permission/list/assigned + +### 查询未分配权限的用户 +GET http://localhost:8080/user-db-permission/list/unassigned + +### 根据ID查询权限 +GET http://localhost:8080/user-db-permission/1 + +### 根据用户ID查询权限 +GET http://localhost:8080/user-db-permission/user/4 + +### 添加用户权限 +POST http://localhost:8080/user-db-permission +Content-Type: application/json + +{ + "userId": 4, + "permissionDetails": "[{\"db_connection_id\":1,\"table_ids\":[1,2,3]}]", + "lastGrantUserId": 4, + "isAssigned": 1 +} + +### 更新用户权限 +PUT http://localhost:8080/user-db-permission +Content-Type: application/json + +{ + "id": 1, + "userId": 4, + "permissionDetails": "[{\"db_connection_id\":1,\"table_ids\":[1,2,3,4,5]}]", + "lastGrantUserId": 4 +} + +### 删除用户权限 +DELETE http://localhost:8080/user-db-permission/1 + +### ==================== 系统操作日志接口 ==================== + +### 查询所有操作日志 +GET http://localhost:8080/operation-log/list + +### 根据用户ID查询操作日志 +GET http://localhost:8080/operation-log/list/user/4 + +### 根据模块查询操作日志 +GET http://localhost:8080/operation-log/list/module/数据源管理 + +### 查询失败的操作日志 +GET http://localhost:8080/operation-log/list/failed + +### 根据ID查询操作日志 +GET http://localhost:8080/operation-log/1 + +### 添加操作日志 +POST http://localhost:8080/operation-log +Content-Type: application/json + +{ + "userId": 4, + "username": "admin", + "operation": "创建数据库连接", + "module": "数据源管理", + "relatedLlm": null, + "ipAddress": "127.0.0.1", + "result": 1, + "errorMsg": null +} + +### 删除操作日志 +DELETE http://localhost:8080/operation-log/1 + +### ==================== 错误日志接口 ==================== + +### 查询所有错误日志 +GET http://localhost:8080/error-log/list + +### 根据错误类型查询 +GET http://localhost:8080/error-log/list/type/1 + +### 根据统计周期查询 +GET http://localhost:8080/error-log/list/period/today + +### 根据ID查询错误日志 +GET http://localhost:8080/error-log/1 + +### 添加错误日志 +POST http://localhost:8080/error-log +Content-Type: application/json + +{ + "errorTypeId": 1, + "errorCount": 5, + "errorRate": 2.5, + "period": "today" +} + +### 更新错误日志 +PUT http://localhost:8080/error-log +Content-Type: application/json + +{ + "id": 1, + "errorCount": 10, + "errorRate": 5.0 +} + +### 删除错误日志 +DELETE http://localhost:8080/error-log/1 + +### ==================== 错误类型字典接口 ==================== + +### 查询所有错误类型 +GET http://localhost:8080/error-type/list + +### 根据ID查询错误类型 +GET http://localhost:8080/error-type/1 + +### 根据错误编码查询 +GET http://localhost:8080/error-type/code/llm_timeout + +### 添加错误类型 +POST http://localhost:8080/error-type +Content-Type: application/json + +{ + "errorName": "模型调用超时", + "errorCode": "llm_timeout", + "description": "大模型API响应时间超过设定阈值" +} + +### 更新错误类型 +PUT http://localhost:8080/error-type +Content-Type: application/json + +{ + "id": 1, + "errorName": "模型调用超时", + "description": "大模型API响应时间超过5秒" +} + +### 删除错误类型 +DELETE http://localhost:8080/error-type/1 + +### ==================== 通知目标字典接口 ==================== + +### 查询所有通知目标 +GET http://localhost:8080/notification-target/list + +### 根据ID查询通知目标 +GET http://localhost:8080/notification-target/1 + +### 根据目标编码查询 +GET http://localhost:8080/notification-target/code/all + +### 添加通知目标 +POST http://localhost:8080/notification-target +Content-Type: application/json + +{ + "targetName": "所有用户", + "targetCode": "all", + "description": "发送给系统所有用户" +} + +### 更新通知目标 +PUT http://localhost:8080/notification-target +Content-Type: application/json + +{ + "id": 1, + "targetName": "所有用户", + "description": "发送给系统所有注册用户" +} + +### 删除通知目标 +DELETE http://localhost:8080/notification-target/1 + +### ==================== 优先级字典接口 ==================== + +### 查询所有优先级(按排序) +GET http://localhost:8080/priority/list + +### 根据ID查询优先级 +GET http://localhost:8080/priority/1 + +### 根据优先级编码查询 +GET http://localhost:8080/priority/code/urgent + +### 添加优先级 +POST http://localhost:8080/priority +Content-Type: application/json + +{ + "priorityName": "紧急", + "priorityCode": "urgent", + "sort": 1 +} + +### 更新优先级 +PUT http://localhost:8080/priority +Content-Type: application/json + +{ + "id": 1, + "priorityName": "紧急", + "sort": 0 +} + +### 删除优先级 +DELETE http://localhost:8080/priority/1 + +### ==================== 通知管理接口 ==================== + +### 查询所有通知 +GET http://localhost:8080/notification/list + +### 查询已发布的通知 +GET http://localhost:8080/notification/list/published + +### 查询草稿 +GET http://localhost:8080/notification/list/drafts + +### 根据目标ID查询通知 +GET http://localhost:8080/notification/list/target/1 + +### 根据ID查询通知 +GET http://localhost:8080/notification/1 + +### 添加通知(草稿) +POST http://localhost:8080/notification +Content-Type: application/json + +{ + "title": "系统维护通知", + "content": "系统将于今晚22:00-24:00进行维护,请提前保存数据", + "targetId": 1, + "priorityId": 1, + "publisherId": 4, + "isTop": 0 +} + +### 更新通知 +PUT http://localhost:8080/notification +Content-Type: application/json + +{ + "id": 1, + "title": "系统维护通知(已更新)", + "content": "系统将于今晚22:00-次日00:30进行维护,请提前保存数据" +} + +### 发布通知 +PUT http://localhost:8080/notification/1/publish + +### 置顶/取消置顶 +PUT http://localhost:8080/notification/1/toggle-top + +### 删除通知 +DELETE http://localhost:8080/notification/1 + +### ==================== 系统健康监控接口 ==================== + +### 查询所有健康记录 +GET http://localhost:8080/system-health/list + +### 查询最新的健康记录 +GET http://localhost:8080/system-health/latest + +### 查询最近10条健康记录 +GET http://localhost:8080/system-health/recent/10 + +### 根据ID查询健康记录 +GET http://localhost:8080/system-health/1 + +### 添加健康记录 +POST http://localhost:8080/system-health +Content-Type: application/json + +{ + "dbDelay": 10, + "cacheDelay": 2, + "llmDelay": 150, + "storageUsage": 75.5 +} + +### 删除健康记录 +DELETE http://localhost:8080/system-health/1 + diff --git a/src/test/docker-compose.yml b/src/test/docker-compose.yml new file mode 100644 index 00000000..b7164221 --- /dev/null +++ b/src/test/docker-compose.yml @@ -0,0 +1,125 @@ +services: + # MySQL 8.4 服务 + mysql: + image: mysql:8.4 + container_name: nlq_mysql + restart: always + environment: + MYSQL_ROOT_PASSWORD: root123456 + MYSQL_DATABASE: natural_language_query_system + MYSQL_USER: nlq_user + MYSQL_PASSWORD: nlq_pass123 + TZ: Asia/Shanghai + ports: + - "3306:3306" + volumes: + # 挂载初始化脚本(MySQL会自动执行/docker-entrypoint-initdb.d/目录下的.sql文件,按字母顺序执行) + - ./mysql_schema_from_last.sql:/docker-entrypoint-initdb.d/01-init.sql + - ./sakila-schema.sql:/docker-entrypoint-initdb.d/02-sakila-schema.sql + - ./sakila-data.sql:/docker-entrypoint-initdb.d/03-sakila-data.sql + # 数据持久化 + - mysql_data:/var/lib/mysql + command: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + - --mysql-native-password=ON + networks: + - nlq_network + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot123456"] + interval: 10s + timeout: 5s + retries: 5 + + # MongoDB 8.2 服务 + mongodb: + image: mongo:8.2 + container_name: nlq_mongodb + restart: always + environment: + MONGO_INITDB_ROOT_USERNAME: admin + MONGO_INITDB_ROOT_PASSWORD: admin123456 + MONGO_INITDB_DATABASE: natural_language_query_system + TZ: Asia/Shanghai + ports: + - "27017:27017" + volumes: + # 挂载初始化脚本 + - ./mongodb_schema_from_last.js:/docker-entrypoint-initdb.d/init.js + # 数据持久化 + - mongodb_data:/data/db + - mongodb_config:/data/configdb + networks: + - nlq_network + healthcheck: + test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] + interval: 10s + timeout: 5s + retries: 5 + + # 可选:Mongo Express (MongoDB 的 Web 管理界面) + mongo-express: + image: mongo-express:latest + container_name: nlq_mongo_express + restart: always + ports: + - "8081:8081" + environment: + ME_CONFIG_MONGODB_ADMINUSERNAME: admin + ME_CONFIG_MONGODB_ADMINPASSWORD: admin123456 + ME_CONFIG_MONGODB_URL: mongodb://admin:admin123456@mongodb:27017/ + ME_CONFIG_BASICAUTH_USERNAME: admin + ME_CONFIG_BASICAUTH_PASSWORD: admin + depends_on: + - mongodb + networks: + - nlq_network + + # 可选:Adminer (MySQL 的 Web 管理界面) + adminer: + image: adminer:latest + container_name: nlq_adminer + restart: always + ports: + - "8082:8080" + environment: + ADMINER_DEFAULT_SERVER: mysql + depends_on: + - mysql + networks: + - nlq_network + + # Redis 缓存服务 + redis: + image: redis:7-alpine + container_name: nlq_redis + restart: always + ports: + - "6379:6379" + volumes: + - redis_data:/data + command: redis-server --appendonly yes + networks: + - nlq_network + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 3s + retries: 5 + +# 数据卷(数据持久化) +volumes: + mysql_data: + driver: local + mongodb_data: + driver: local + mongodb_config: + driver: local + redis_data: + driver: local + +# 网络配置 +networks: + nlq_network: + driver: bridge + diff --git a/src/test/frontend/.editorconfig b/src/test/frontend/.editorconfig new file mode 100644 index 00000000..3b510aa6 --- /dev/null +++ b/src/test/frontend/.editorconfig @@ -0,0 +1,8 @@ +[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}] +charset = utf-8 +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf +max_line_length = 100 diff --git a/src/test/frontend/.eslintrc.cjs b/src/test/frontend/.eslintrc.cjs new file mode 100644 index 00000000..b4cad8b1 --- /dev/null +++ b/src/test/frontend/.eslintrc.cjs @@ -0,0 +1,96 @@ +/** + * @fileoverview ESLint configuration for Vue 3 + TypeScript + * Follows Google Style Guide, with necessary overrides for Vue/TS. + * * Google 规范要求:4空格缩进,必须使用分号。 + * Vue/TS 社区惯例:2空格缩进,可选分号。 + * * 此配置在继承 Google 规范的基础上,强制使用 2空格缩进和不使用分号, + * 以便更好地适应现代前端开发环境。 + */ +module.exports = { + // 指定环境 + 'env': { + 'browser': true, + 'es2021': true, + 'node': true + }, + + // 指定解析器 + 'parser': 'vue-eslint-parser', + 'parserOptions': { + // 解析 + + + + + +
+ + + +