Full Code of iflytek/astron-agent for AI

main 6ae593fecc82 cached
3154 files
94.0 MB
5.6M tokens
14501 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (22,223K chars total). Download the full file to get everything.
Repository: iflytek/astron-agent
Branch: main
Commit: 6ae593fecc82
Files: 3154
Total size: 94.0 MB

Directory structure:
gitextract_l4du0bg5/

├── .gemini/
│   └── config.yaml
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── feature_request.yml
│   │   └── general_issue.yml
│   ├── code_of_conduct.md
│   ├── code_owners
│   ├── pull_request_template.md
│   ├── quality-requirements/
│   │   ├── branch-commit-standards-zh.md
│   │   ├── branch-commit-standards.md
│   │   ├── code-requirements-zh.md
│   │   ├── code-requirements.md
│   │   └── langs/
│   │       ├── go-zh.md
│   │       ├── go.md
│   │       ├── java-zh.md
│   │       ├── java.md
│   │       ├── python-zh.md
│   │       ├── python.md
│   │       ├── typescript-zh.md
│   │       └── typescript.md
│   └── workflows/
│       ├── build-push.yml
│       ├── ci.yml
│       ├── claude-review.yml
│       ├── claude.yml
│       ├── codeql-security-analysis.yml
│       └── release.yml
├── .gitignore
├── .pre-commit-config.yaml
├── AGENTS.md
├── CLAUDE.md
├── CONTRIBUTING.md
├── FAQ.md
├── LICENSE
├── Makefile
├── NOTICE
├── PR.md
├── README.md
├── console/
│   ├── .claude/
│   │   ├── DOC_VALIDATION_LOOP.md
│   │   ├── QUICK_REFERENCE.md
│   │   ├── WORKFLOW.md
│   │   ├── docs/
│   │   │   ├── ai-tools/
│   │   │   │   └── module.md
│   │   │   ├── bot-management/
│   │   │   │   └── module.md
│   │   │   ├── chat/
│   │   │   │   └── module.md
│   │   │   ├── enterprise-management/
│   │   │   │   └── module.md
│   │   │   ├── knowledge/
│   │   │   │   └── module.md
│   │   │   ├── model-management/
│   │   │   │   └── module.md
│   │   │   ├── overview.md
│   │   │   ├── publish/
│   │   │   │   └── module.md
│   │   │   ├── space-management/
│   │   │   │   └── module.md
│   │   │   ├── user-management/
│   │   │   │   └── module.md
│   │   │   └── workflow/
│   │   │       └── module.md
│   │   └── skills/
│   │       ├── backend-design.md
│   │       ├── bugfix.md
│   │       ├── context-check.md
│   │       ├── doc-module.md
│   │       ├── drift-check.md
│   │       ├── frontend-design.md
│   │       ├── requirement.md
│   │       ├── spec.md
│   │       ├── stories.md
│   │       └── tasks.md
│   ├── .gitignore
│   ├── README.md
│   ├── backend/
│   │   ├── commons/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── iflytek/
│   │   │       │   │           └── astron/
│   │   │       │   │               └── console/
│   │   │       │   │                   └── commons/
│   │   │       │   │                       ├── annotation/
│   │   │       │   │                       │   ├── RateLimit.java
│   │   │       │   │                       │   └── space/
│   │   │       │   │                       │       ├── EnterprisePreAuth.java
│   │   │       │   │                       │       └── SpacePreAuth.java
│   │   │       │   │                       ├── aspect/
│   │   │       │   │                       │   ├── RateLimitAspect.java
│   │   │       │   │                       │   └── space/
│   │   │       │   │                       │       ├── EnterpriseAuthAspect.java
│   │   │       │   │                       │       ├── PermissionValidator.java
│   │   │       │   │                       │       └── SpaceAuthAspect.java
│   │   │       │   │                       ├── config/
│   │   │       │   │                       │   └── JwtClaimsFilter.java
│   │   │       │   │                       ├── constant/
│   │   │       │   │                       │   ├── RedisKeyConstant.java
│   │   │       │   │                       │   └── ResponseEnum.java
│   │   │       │   │                       ├── data/
│   │   │       │   │                       │   ├── UserInfoDataService.java
│   │   │       │   │                       │   └── impl/
│   │   │       │   │                       │       └── UserInfoDataServiceImpl.java
│   │   │       │   │                       ├── dto/
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── AdvancedConfig.java
│   │   │       │   │                       │   │   ├── BotCloneWorkflowDto.java
│   │   │       │   │                       │   │   ├── BotCreateForm.java
│   │   │       │   │                       │   │   ├── BotDetail.java
│   │   │       │   │                       │   │   ├── BotFavoriteItemDto.java
│   │   │       │   │                       │   │   ├── BotFavoritePageDto.java
│   │   │       │   │                       │   │   ├── BotFavoriteQueryDto.java
│   │   │       │   │                       │   │   ├── BotInfoDto.java
│   │   │       │   │                       │   │   ├── BotListRequestDto.java
│   │   │       │   │                       │   │   ├── BotMarketForm.java
│   │   │       │   │                       │   │   ├── BotModelDto.java
│   │   │       │   │                       │   │   ├── BotPublishQueryResult.java
│   │   │       │   │                       │   │   ├── BotQueryCondition.java
│   │   │       │   │                       │   │   ├── BotTag.java
│   │   │       │   │                       │   │   ├── ChatBotApi.java
│   │   │       │   │                       │   │   ├── ChatBotMarketPage.java
│   │   │       │   │                       │   │   ├── ChatBotReqDto.java
│   │   │       │   │                       │   │   ├── DebugChatBotReqDto.java
│   │   │       │   │                       │   │   ├── PersonalityConfigDto.java
│   │   │       │   │                       │   │   ├── PromptBotDetail.java
│   │   │       │   │                       │   │   ├── TalkAgentConfigDto.java
│   │   │       │   │                       │   │   ├── TalkAgentCreateDto.java
│   │   │       │   │                       │   │   ├── TalkAgentHistoryDto.java
│   │   │       │   │                       │   │   ├── TalkAgentSceneDto.java
│   │   │       │   │                       │   │   └── TalkAgentUpgradeDto.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── ChatBotListDto.java
│   │   │       │   │                       │   │   ├── ChatContentMeta.java
│   │   │       │   │                       │   │   ├── ChatFileReq.java
│   │   │       │   │                       │   │   ├── ChatListCreateRequest.java
│   │   │       │   │                       │   │   ├── ChatListCreateResponse.java
│   │   │       │   │                       │   │   ├── ChatListDelRequest.java
│   │   │       │   │                       │   │   ├── ChatListResponseDto.java
│   │   │       │   │                       │   │   ├── ChatModelMeta.java
│   │   │       │   │                       │   │   ├── ChatReqModelDto.java
│   │   │       │   │                       │   │   ├── ChatRequestDto.java
│   │   │       │   │                       │   │   ├── ChatRequestDtoList.java
│   │   │       │   │                       │   │   └── ChatRespModelDto.java
│   │   │       │   │                       │   ├── dataset/
│   │   │       │   │                       │   │   └── DatasetStats.java
│   │   │       │   │                       │   ├── llm/
│   │   │       │   │                       │   │   ├── ChatCompletionRequest.java
│   │   │       │   │                       │   │   ├── ChatCompletionResponse.java
│   │   │       │   │                       │   │   ├── ChatMessage.java
│   │   │       │   │                       │   │   └── SparkChatRequest.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordParam.java
│   │   │       │   │                       │   │   ├── ApplyRecordVO.java
│   │   │       │   │                       │   │   ├── BatchChatUserVO.java
│   │   │       │   │                       │   │   ├── ChatUserVO.java
│   │   │       │   │                       │   │   ├── EnterpriseAddDTO.java
│   │   │       │   │                       │   │   ├── EnterpriseSpaceCountVO.java
│   │   │       │   │                       │   │   ├── EnterpriseUserParam.java
│   │   │       │   │                       │   │   ├── EnterpriseUserVO.java
│   │   │       │   │                       │   │   ├── EnterpriseVO.java
│   │   │       │   │                       │   │   ├── InviteRecordAddDTO.java
│   │   │       │   │                       │   │   ├── InviteRecordParam.java
│   │   │       │   │                       │   │   ├── InviteRecordVO.java
│   │   │       │   │                       │   │   ├── PageParam.java
│   │   │       │   │                       │   │   ├── SpaceAddDTO.java
│   │   │       │   │                       │   │   ├── SpaceUpdateDTO.java
│   │   │       │   │                       │   │   ├── SpaceUserParam.java
│   │   │       │   │                       │   │   ├── SpaceUserVO.java
│   │   │       │   │                       │   │   ├── SpaceVO.java
│   │   │       │   │                       │   │   └── UserLimitVO.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── BotDataParam.java
│   │   │       │   │                       │   │   └── JwtInfoDto.java
│   │   │       │   │                       │   ├── vcn/
│   │   │       │   │                       │   │   └── CustomV2VCNDTO.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── CloneSynchronize.java
│   │   │       │   │                       │       ├── MaasApi.java
│   │   │       │   │                       │       ├── WorkflowApiRequest.java
│   │   │       │   │                       │       ├── WorkflowChatRequest.java
│   │   │       │   │                       │       ├── WorkflowEventData.java
│   │   │       │   │                       │       ├── WorkflowInfoDto.java
│   │   │       │   │                       │       ├── WorkflowInputTypeDto.java
│   │   │       │   │                       │       ├── WorkflowInputsResponseDto.java
│   │   │       │   │                       │       ├── WorkflowResumeReq.java
│   │   │       │   │                       │       └── WorkflowResumeRequest.java
│   │   │       │   │                       ├── entity/
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotChatFileParam.java
│   │   │       │   │                       │   │   ├── BotDataset.java
│   │   │       │   │                       │   │   ├── BotFavorite.java
│   │   │       │   │                       │   │   ├── BotTemplate.java
│   │   │       │   │                       │   │   ├── BotTypeList.java
│   │   │       │   │                       │   │   ├── ChatBotBase.java
│   │   │       │   │                       │   │   ├── ChatBotList.java
│   │   │       │   │                       │   │   ├── ChatBotMarket.java
│   │   │       │   │                       │   │   ├── ChatBotPromptStruct.java
│   │   │       │   │                       │   │   ├── ChatBotTag.java
│   │   │       │   │                       │   │   ├── DatasetFile.java
│   │   │       │   │                       │   │   ├── DatasetInfo.java
│   │   │       │   │                       │   │   ├── TakeoffList.java
│   │   │       │   │                       │   │   ├── UserLangChainInfo.java
│   │   │       │   │                       │   │   └── UserLangChainLog.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── ChatFileUser.java
│   │   │       │   │                       │   │   ├── ChatList.java
│   │   │       │   │                       │   │   ├── ChatReanwserRecords.java
│   │   │       │   │                       │   │   ├── ChatReasonRecords.java
│   │   │       │   │                       │   │   ├── ChatReqModel.java
│   │   │       │   │                       │   │   ├── ChatReqRecords.java
│   │   │       │   │                       │   │   ├── ChatRespAlltoolData.java
│   │   │       │   │                       │   │   ├── ChatRespModel.java
│   │   │       │   │                       │   │   ├── ChatRespRecords.java
│   │   │       │   │                       │   │   ├── ChatTokenRecords.java
│   │   │       │   │                       │   │   ├── ChatTraceSource.java
│   │   │       │   │                       │   │   └── ChatTreeIndex.java
│   │   │       │   │                       │   ├── dataset/
│   │   │       │   │                       │   │   └── BotDatasetMaas.java
│   │   │       │   │                       │   ├── model/
│   │   │       │   │                       │   │   └── McpData.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── AgentShareRecord.java
│   │   │       │   │                       │   │   ├── ApplyRecord.java
│   │   │       │   │                       │   │   ├── Enterprise.java
│   │   │       │   │                       │   │   ├── EnterprisePermission.java
│   │   │       │   │                       │   │   ├── EnterpriseUser.java
│   │   │       │   │                       │   │   ├── InviteRecord.java
│   │   │       │   │                       │   │   ├── Space.java
│   │   │       │   │                       │   │   ├── SpacePermission.java
│   │   │       │   │                       │   │   └── SpaceUser.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── AppMst.java
│   │   │       │   │                       │   │   └── UserInfo.java
│   │   │       │   │                       │   ├── wechat/
│   │   │       │   │                       │   │   └── BotOffiaccount.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       └── Workflow.java
│   │   │       │   │                       ├── enums/
│   │   │       │   │                       │   ├── BotOffiaccountStatusEnum.java
│   │   │       │   │                       │   ├── PublishChannelEnum.java
│   │   │       │   │                       │   ├── ShelfStatusEnum.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotStatusEnum.java
│   │   │       │   │                       │   │   ├── BotTypeEnum.java
│   │   │       │   │                       │   │   ├── BotUploadEnum.java
│   │   │       │   │                       │   │   ├── BotVersionEnum.java
│   │   │       │   │                       │   │   ├── DefaultBotModelEnum.java
│   │   │       │   │                       │   │   └── ReleaseTypeEnum.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── EnterpriseRoleEnum.java
│   │   │       │   │                       │   │   ├── EnterpriseServiceTypeEnum.java
│   │   │       │   │                       │   │   ├── InviteRecordRoleEnum.java
│   │   │       │   │                       │   │   ├── InviteRecordStatusEnum.java
│   │   │       │   │                       │   │   ├── InviteRecordTypeEnum.java
│   │   │       │   │                       │   │   ├── SpaceRoleEnum.java
│   │   │       │   │                       │   │   └── SpaceTypeEnum.java
│   │   │       │   │                       │   └── user/
│   │   │       │   │                       │       └── WordsTypeEnum.java
│   │   │       │   │                       ├── event/
│   │   │       │   │                       │   └── UserNicknameUpdatedEvent.java
│   │   │       │   │                       ├── exception/
│   │   │       │   │                       │   └── BusinessException.java
│   │   │       │   │                       ├── listener/
│   │   │       │   │                       │   └── UserNicknameUpdateEventListener.java
│   │   │       │   │                       ├── mapper/
│   │   │       │   │                       │   ├── AgentShareRecordMapper.java
│   │   │       │   │                       │   ├── UserLangChainInfoMapper.java
│   │   │       │   │                       │   ├── UserLangChainLogMapper.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotDatasetMapper.java
│   │   │       │   │                       │   │   ├── BotFavoriteMapper.java
│   │   │       │   │                       │   │   ├── BotTemplateMapper.java
│   │   │       │   │                       │   │   ├── BotTypeListMapper.java
│   │   │       │   │                       │   │   ├── ChatBotApiMapper.java
│   │   │       │   │                       │   │   ├── ChatBotBaseMapper.java
│   │   │       │   │                       │   │   ├── ChatBotListMapper.java
│   │   │       │   │                       │   │   ├── ChatBotMarketMapper.java
│   │   │       │   │                       │   │   ├── ChatBotPromptStructMapper.java
│   │   │       │   │                       │   │   ├── ChatBotTagMapper.java
│   │   │       │   │                       │   │   ├── DatasetFileMapper.java
│   │   │       │   │                       │   │   └── DatasetInfoMapper.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── ChatListMapper.java
│   │   │       │   │                       │   │   └── ChatTreeIndexMapper.java
│   │   │       │   │                       │   ├── dataset/
│   │   │       │   │                       │   │   └── BotDatasetMaasMapper.java
│   │   │       │   │                       │   ├── model/
│   │   │       │   │                       │   │   └── McpDataMapper.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordMapper.java
│   │   │       │   │                       │   │   ├── EnterpriseMapper.java
│   │   │       │   │                       │   │   ├── EnterprisePermissionMapper.java
│   │   │       │   │                       │   │   ├── EnterpriseUserMapper.java
│   │   │       │   │                       │   │   ├── InviteRecordMapper.java
│   │   │       │   │                       │   │   ├── SpaceMapper.java
│   │   │       │   │                       │   │   ├── SpacePermissionMapper.java
│   │   │       │   │                       │   │   └── SpaceUserMapper.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── AppMstMapper.java
│   │   │       │   │                       │   │   └── UserInfoMapper.java
│   │   │       │   │                       │   ├── vcn/
│   │   │       │   │                       │   │   └── CustomVCNMapper.java
│   │   │       │   │                       │   └── wechat/
│   │   │       │   │                       │       └── BotOffiaccountMapper.java
│   │   │       │   │                       ├── request/
│   │   │       │   │                       │   └── .gitkeep
│   │   │       │   │                       ├── response/
│   │   │       │   │                       │   └── ApiResult.java
│   │   │       │   │                       ├── service/
│   │   │       │   │                       │   ├── ChatRecordModelService.java
│   │   │       │   │                       │   ├── WssListenerService.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotDatasetService.java
│   │   │       │   │                       │   │   ├── BotFavoriteService.java
│   │   │       │   │                       │   │   ├── BotMarketDataService.java
│   │   │       │   │                       │   │   ├── BotService.java
│   │   │       │   │                       │   │   ├── BotTypeListService.java
│   │   │       │   │                       │   │   ├── ChatBotDataService.java
│   │   │       │   │                       │   │   ├── ChatBotMarketService.java
│   │   │       │   │                       │   │   ├── ChatBotTagService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotDatasetServiceImpl.java
│   │   │       │   │                       │   │       ├── BotFavoriteServiceImpl.java
│   │   │       │   │                       │   │       ├── BotMarketDataServiceImpl.java
│   │   │       │   │                       │   │       ├── BotServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatBotDataServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatBotMarketServiceImpl.java
│   │   │       │   │                       │   │       └── ChatBotTagServiceImpl.java
│   │   │       │   │                       │   ├── data/
│   │   │       │   │                       │   │   ├── ChatDataService.java
│   │   │       │   │                       │   │   ├── ChatHistoryService.java
│   │   │       │   │                       │   │   ├── ChatListDataService.java
│   │   │       │   │                       │   │   ├── DatasetDataService.java
│   │   │       │   │                       │   │   ├── IDatasetFileService.java
│   │   │       │   │                       │   │   ├── IDatasetInfoService.java
│   │   │       │   │                       │   │   ├── UserLangChainDataService.java
│   │   │       │   │                       │   │   ├── UserLangChainLogService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotTypeListServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatListDataServiceImpl.java
│   │   │       │   │                       │   │       ├── DatasetDataServiceImpl.java
│   │   │       │   │                       │   │       ├── DatasetFileServiceImpl.java
│   │   │       │   │                       │   │       ├── DatasetInfoServiceImpl.java
│   │   │       │   │                       │   │       ├── UserLangChainInfoDataServiceImpl.java
│   │   │       │   │                       │   │       └── UserLangChainLogServiceImpl.java
│   │   │       │   │                       │   ├── mcp/
│   │   │       │   │                       │   │   ├── McpDataService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── McpDataServiceImpl.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordService.java
│   │   │       │   │                       │   │   ├── EnterprisePermissionService.java
│   │   │       │   │                       │   │   ├── EnterpriseService.java
│   │   │       │   │                       │   │   ├── EnterpriseSpaceService.java
│   │   │       │   │                       │   │   ├── EnterpriseUserService.java
│   │   │       │   │                       │   │   ├── InviteRecordService.java
│   │   │       │   │                       │   │   ├── SpacePermissionService.java
│   │   │       │   │                       │   │   ├── SpaceService.java
│   │   │       │   │                       │   │   ├── SpaceUserService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── ApplyRecordServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterprisePermissionServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseSpaceServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseUserServiceImpl.java
│   │   │       │   │                       │   │       ├── InviteRecordServiceImpl.java
│   │   │       │   │                       │   │       ├── SpacePermissionServiceImpl.java
│   │   │       │   │                       │   │       ├── SpaceServiceImpl.java
│   │   │       │   │                       │   │       └── SpaceUserServiceImpl.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── AppMstService.java
│   │   │       │   │                       │   │   ├── Impl/
│   │   │       │   │                       │   │   │   └── AppMstServiceImpl.java
│   │   │       │   │                       │   │   └── MessageCodeService.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── WorkflowBotChatService.java
│   │   │       │   │                       │       ├── WorkflowBotParamService.java
│   │   │       │   │                       │       ├── WorkflowBotService.java
│   │   │       │   │                       │       └── impl/
│   │   │       │   │                       │           ├── WorkflowBotChatServiceImpl.java
│   │   │       │   │                       │           ├── WorkflowBotParamServiceImpl.java
│   │   │       │   │                       │           └── WorkflowServiceImpl.java
│   │   │       │   │                       ├── util/
│   │   │       │   │                       │   ├── AudioValidator.java
│   │   │       │   │                       │   ├── AuthStringUtil.java
│   │   │       │   │                       │   ├── BotFileParamUtil.java
│   │   │       │   │                       │   ├── BotUtil.java
│   │   │       │   │                       │   ├── ChatFileHttpClient.java
│   │   │       │   │                       │   ├── I18nUtil.java
│   │   │       │   │                       │   ├── MaasUtil.java
│   │   │       │   │                       │   ├── RequestContextUtil.java
│   │   │       │   │                       │   ├── S3ClientUtil.java
│   │   │       │   │                       │   ├── SpringContextHolder.java
│   │   │       │   │                       │   ├── SseEmitterUtil.java
│   │   │       │   │                       │   └── space/
│   │   │       │   │                       │       ├── EnterpriseInfoUtil.java
│   │   │       │   │                       │       ├── OrderInfoUtil.java
│   │   │       │   │                       │       └── SpaceInfoUtil.java
│   │   │       │   │                       └── workflow/
│   │   │       │   │                           ├── WorkflowClient.java
│   │   │       │   │                           └── WorkflowListener.java
│   │   │       │   └── resources/
│   │   │       │       ├── mapper/
│   │   │       │       │   ├── ApplyRecordMapper.xml
│   │   │       │       │   ├── BotDatasetMaasMapper.xml
│   │   │       │       │   ├── BotDatasetMapper.xml
│   │   │       │       │   ├── BotFavoriteMapper.xml
│   │   │       │       │   ├── ChatBotApiMapper.xml
│   │   │       │       │   ├── ChatBotBaseMapper.xml
│   │   │       │       │   ├── ChatBotListMapper.xml
│   │   │       │       │   ├── ChatBotMarketMapper.xml
│   │   │       │       │   ├── ChatTreeIndexMapper.xml
│   │   │       │       │   ├── CustomVCNMapper.xml
│   │   │       │       │   ├── EnterpriseMapper.xml
│   │   │       │       │   ├── EnterpriseUserMapper.xml
│   │   │       │       │   ├── InviteRecordMapper.xml
│   │   │       │       │   ├── McpDataMapper.xml
│   │   │       │       │   ├── SpaceMapper.xml
│   │   │       │       │   └── SpaceUserMapper.xml
│   │   │       │       ├── messages_en.properties
│   │   │       │       ├── messages_zh.properties
│   │   │       │       ├── speaker_en.properties
│   │   │       │       └── speaker_zh.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── iflytek/
│   │   │                       └── astron/
│   │   │                           └── console/
│   │   │                               └── commons/
│   │   │                                   ├── CommonsModuleTests.java
│   │   │                                   ├── data/
│   │   │                                   │   └── impl/
│   │   │                                   │       └── UserInfoDataServiceImplUnitTest.java
│   │   │                                   ├── event/
│   │   │                                   │   └── UserNicknameEventSimpleTest.java
│   │   │                                   ├── service/
│   │   │                                   │   ├── bot/
│   │   │                                   │   │   └── impl/
│   │   │                                   │   │       └── ChatBotDataServiceImplTest.java
│   │   │                                   │   ├── data/
│   │   │                                   │   │   └── impl/
│   │   │                                   │   │       ├── ChatListDataServiceImplTest.java
│   │   │                                   │   │       └── UserLangChainInfoDataServiceImplTest.java
│   │   │                                   │   ├── space/
│   │   │                                   │   │   └── impl/
│   │   │                                   │   │       ├── ApplyRecordServiceImplTest.java
│   │   │                                   │   │       ├── EnterprisePermissionServiceImplTest.java
│   │   │                                   │   │       ├── EnterpriseServiceImplTest.java
│   │   │                                   │   │       ├── EnterpriseSpaceServiceImplTest.java
│   │   │                                   │   │       ├── EnterpriseUserServiceImplTest.java
│   │   │                                   │   │       ├── InviteRecordServiceImplTest.java
│   │   │                                   │   │       ├── SpacePermissionServiceImplTest.java
│   │   │                                   │   │       ├── SpaceServiceImplTest.java
│   │   │                                   │   │       └── SpaceUserServiceImplTest.java
│   │   │                                   │   └── workflow/
│   │   │                                   │       └── impl/
│   │   │                                   │           ├── WorkflowBotChatServiceImplTest.java
│   │   │                                   │           └── WorkflowBotParamServiceImplTest.java
│   │   │                                   └── util/
│   │   │                                       ├── BotFileParamUtilTest.java
│   │   │                                       ├── MaasUtilTest.java
│   │   │                                       ├── S3ClientUtilTest.java
│   │   │                                       └── SseEmitterUtilTest.java
│   │   ├── config/
│   │   │   ├── checkstyle.xml
│   │   │   ├── eclipse-formatter.xml
│   │   │   ├── pmd-ruleset.xml
│   │   │   └── spotbugs-exclude.xml
│   │   ├── hub/
│   │   │   ├── Dockerfile
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── iflytek/
│   │   │       │   │           └── astron/
│   │   │       │   │               └── console/
│   │   │       │   │                   └── hub/
│   │   │       │   │                       ├── HubApplication.java
│   │   │       │   │                       ├── annotation/
│   │   │       │   │                       │   └── DistributedLock.java
│   │   │       │   │                       ├── aspect/
│   │   │       │   │                       │   └── DistributedLockAspect.java
│   │   │       │   │                       ├── config/
│   │   │       │   │                       │   ├── DeepSeekConfig.java
│   │   │       │   │                       │   ├── DistributedLockConfig.java
│   │   │       │   │                       │   ├── GlobalExceptionHandler.java
│   │   │       │   │                       │   ├── InternationalConfig.java
│   │   │       │   │                       │   ├── JacksonConfig.java
│   │   │       │   │                       │   ├── MyBatisPlusConfig.java
│   │   │       │   │                       │   ├── RedisCacheConfig.java
│   │   │       │   │                       │   ├── SecurityConfig.java
│   │   │       │   │                       │   ├── SpringDocConfig.java
│   │   │       │   │                       │   ├── VoiceTrainConfig.java
│   │   │       │   │                       │   ├── WebMvcConfig.java
│   │   │       │   │                       │   ├── WorkflowConfig.java
│   │   │       │   │                       │   ├── security/
│   │   │       │   │                       │   │   ├── RestfulAccessDeniedHandler.java
│   │   │       │   │                       │   │   └── RestfulAuthenticationEntryPoint.java
│   │   │       │   │                       │   └── space/
│   │   │       │   │                       │       └── EnterpriseSpaceConfig.java
│   │   │       │   │                       ├── controller/
│   │   │       │   │                       │   ├── HealthController.java
│   │   │       │   │                       │   ├── S3Controller.java
│   │   │       │   │                       │   ├── SparkChatController.java
│   │   │       │   │                       │   ├── WorkflowChatController.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotController.java
│   │   │       │   │                       │   │   ├── BotCreateController.java
│   │   │       │   │                       │   │   ├── BotFavoriteController.java
│   │   │       │   │                       │   │   ├── PersonalityController.java
│   │   │       │   │                       │   │   ├── SpeakerTrainController.java
│   │   │       │   │                       │   │   ├── TalkAgentController.java
│   │   │       │   │                       │   │   └── VoiceApiController.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── ChatEnhanceController.java
│   │   │       │   │                       │   │   ├── ChatHistoryController.java
│   │   │       │   │                       │   │   ├── ChatListController.java
│   │   │       │   │                       │   │   ├── ChatMessageController.java
│   │   │       │   │                       │   │   └── ChatRestartController.java
│   │   │       │   │                       │   ├── extra/
│   │   │       │   │                       │   │   └── RtasrController.java
│   │   │       │   │                       │   ├── homepage/
│   │   │       │   │                       │   │   └── AgentSquareController.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   └── NotificationController.java
│   │   │       │   │                       │   ├── publish/
│   │   │       │   │                       │   │   ├── BotPublishController.java
│   │   │       │   │                       │   │   └── PublishApiController.java
│   │   │       │   │                       │   ├── share/
│   │   │       │   │                       │   │   └── ShareController.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordController.java
│   │   │       │   │                       │   │   ├── EnterpriseController.java
│   │   │       │   │                       │   │   ├── EnterprisePermissionController.java
│   │   │       │   │                       │   │   ├── EnterpriseUserController.java
│   │   │       │   │                       │   │   ├── InviteRecordController.java
│   │   │       │   │                       │   │   ├── SpaceController.java
│   │   │       │   │                       │   │   ├── SpacePermissionController.java
│   │   │       │   │                       │   │   └── SpaceUserController.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── MyBotController.java
│   │   │       │   │                       │   │   └── UserInfoController.java
│   │   │       │   │                       │   ├── wechat/
│   │   │       │   │                       │   │   └── WechatCallbackController.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── ChatWorkflowController.java
│   │   │       │   │                       │       └── WorkflowBotController.java
│   │   │       │   │                       ├── converter/
│   │   │       │   │                       │   ├── BotPublishConverter.java
│   │   │       │   │                       │   ├── McpDataConverter.java
│   │   │       │   │                       │   └── WorkflowVersionConverter.java
│   │   │       │   │                       ├── data/
│   │   │       │   │                       │   ├── NotificationDataService.java
│   │   │       │   │                       │   ├── ReqKnowledgeRecordsDataService.java
│   │   │       │   │                       │   ├── ShareDataService.java
│   │   │       │   │                       │   └── impl/
│   │   │       │   │                       │       ├── ChatDataServiceImpl.java
│   │   │       │   │                       │       ├── NotificationDataServiceImpl.java
│   │   │       │   │                       │       ├── ReqKnowledgeRecordsDataServiceImpl.java
│   │   │       │   │                       │       └── ShareDataServiceImpl.java
│   │   │       │   │                       ├── dto/
│   │   │       │   │                       │   ├── DeepSeekChatRequest.java
│   │   │       │   │                       │   ├── DeepSeekChatResponse.java
│   │   │       │   │                       │   ├── PageResponse.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotGenerationDTO.java
│   │   │       │   │                       │   │   ├── ChatBotMarketPage.java
│   │   │       │   │                       │   │   ├── MaasDuplicate.java
│   │   │       │   │                       │   │   └── PromptStructDTO.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── BotDebugRequest.java
│   │   │       │   │                       │   │   ├── ChatEnhanceChatHistoryListFileVo.java
│   │   │       │   │                       │   │   ├── ChatEnhanceSaveFileVo.java
│   │   │       │   │                       │   │   ├── ChatHistoryResponseDto.java
│   │   │       │   │                       │   │   ├── LongFileDto.java
│   │   │       │   │                       │   │   └── StopStreamResponse.java
│   │   │       │   │                       │   ├── homepage/
│   │   │       │   │                       │   │   ├── BotInfoDto.java
│   │   │       │   │                       │   │   ├── BotListPageDto.java
│   │   │       │   │                       │   │   ├── BotTypeDto.java
│   │   │       │   │                       │   │   └── GetBotListPageRequestDto.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   ├── MarkReadRequest.java
│   │   │       │   │                       │   │   ├── NotificationDto.java
│   │   │       │   │                       │   │   ├── NotificationPageResponse.java
│   │   │       │   │                       │   │   ├── NotificationQueryRequest.java
│   │   │       │   │                       │   │   └── SendNotificationRequest.java
│   │   │       │   │                       │   ├── publish/
│   │   │       │   │                       │   │   ├── AppListDTO.java
│   │   │       │   │                       │   │   ├── BotApiInfoDTO.java
│   │   │       │   │                       │   │   ├── BotApiRealTimeUsageDTO.java
│   │   │       │   │                       │   │   ├── BotDetailResponseDto.java
│   │   │       │   │                       │   │   ├── BotPublishInfoDto.java
│   │   │       │   │                       │   │   ├── BotSummaryStatsVO.java
│   │   │       │   │                       │   │   ├── BotTimeSeriesResponseDto.java
│   │   │       │   │                       │   │   ├── BotTimeSeriesStatsVO.java
│   │   │       │   │                       │   │   ├── BotTraceRequestDto.java
│   │   │       │   │                       │   │   ├── BotVersionVO.java
│   │   │       │   │                       │   │   ├── CreateAppVo.java
│   │   │       │   │                       │   │   ├── CreateBotApiVo.java
│   │   │       │   │                       │   │   ├── PublishStatusUpdateDto.java
│   │   │       │   │                       │   │   ├── ReleaseBotReqDto.java
│   │   │       │   │                       │   │   ├── ReleaseBotRespDto.java
│   │   │       │   │                       │   │   ├── UnifiedPrepareDto.java
│   │   │       │   │                       │   │   ├── UnifiedPublishRequestDto.java
│   │   │       │   │                       │   │   ├── WechatAuthUrlRequestDto.java
│   │   │       │   │                       │   │   ├── WechatAuthUrlResponseDto.java
│   │   │       │   │                       │   │   ├── cbm/
│   │   │       │   │                       │   │   │   ├── AssistantInfo.java
│   │   │       │   │                       │   │   │   ├── CbmBody.java
│   │   │       │   │                       │   │   │   ├── CbmForm.java
│   │   │       │   │                       │   │   │   ├── CbmResponse.java
│   │   │       │   │                       │   │   │   └── Options.java
│   │   │       │   │                       │   │   ├── mcp/
│   │   │       │   │                       │   │   │   ├── McpContentResponseDto.java
│   │   │       │   │                       │   │   │   └── McpPublishRequestDto.java
│   │   │       │   │                       │   │   └── prepare/
│   │   │       │   │                       │   │       ├── ApiPrepareDto.java
│   │   │       │   │                       │   │       ├── BasePrepareDto.java
│   │   │       │   │                       │   │       ├── FeishuPrepareDto.java
│   │   │       │   │                       │   │       ├── MarketPrepareDto.java
│   │   │       │   │                       │   │       ├── McpPrepareDto.java
│   │   │       │   │                       │   │       └── WechatPrepareDto.java
│   │   │       │   │                       │   ├── share/
│   │   │       │   │                       │   │   ├── CardAddBody.java
│   │   │       │   │                       │   │   └── ShareKey.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── MyBotPageDTO.java
│   │   │       │   │                       │   │   ├── MyBotParamDTO.java
│   │   │       │   │                       │   │   ├── MyBotResponseDTO.java
│   │   │       │   │                       │   │   ├── TenantAuth.java
│   │   │       │   │                       │   │   ├── UpdateUserBasicInfoRequest.java
│   │   │       │   │                       │   │   ├── UserInfoExcelDTO.java
│   │   │       │   │                       │   │   └── UserInfoResultExcelDTO.java
│   │   │       │   │                       │   ├── wechat/
│   │   │       │   │                       │   │   └── WechatAuthCallbackDto.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── WorkflowReleaseRequestDto.java
│   │   │       │   │                       │       └── WorkflowReleaseResponseDto.java
│   │   │       │   │                       ├── entity/
│   │   │       │   │                       │   ├── AiPromptTemplate.java
│   │   │       │   │                       │   ├── ApplicationForm.java
│   │   │       │   │                       │   ├── BotConversationStats.java
│   │   │       │   │                       │   ├── BotOffiaccountChat.java
│   │   │       │   │                       │   ├── BotOffiaccountRecord.java
│   │   │       │   │                       │   ├── ChatBotRemove.java
│   │   │       │   │                       │   ├── CustomSpeaker.java
│   │   │       │   │                       │   ├── PronunciationPersonConfig.java
│   │   │       │   │                       │   ├── ReqKnowledgeRecords.java
│   │   │       │   │                       │   ├── ShareChat.java
│   │   │       │   │                       │   ├── ShareQa.java
│   │   │       │   │                       │   ├── WorkflowTemplateGroup.java
│   │   │       │   │                       │   ├── XingchenOfficialPrompt.java
│   │   │       │   │                       │   ├── XingchenPromptManage.java
│   │   │       │   │                       │   ├── XingchenPromptVersion.java
│   │   │       │   │                       │   ├── maas/
│   │   │       │   │                       │   │   ├── MaasDuplicate.java
│   │   │       │   │                       │   │   ├── MaasTemplate.java
│   │   │       │   │                       │   │   └── WorkflowTemplateQueryDto.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   ├── Notification.java
│   │   │       │   │                       │   │   ├── UserBroadcastRead.java
│   │   │       │   │                       │   │   └── UserNotification.java
│   │   │       │   │                       │   └── personality/
│   │   │       │   │                       │       ├── PersonalityCategory.java
│   │   │       │   │                       │       ├── PersonalityConfig.java
│   │   │       │   │                       │       └── PersonalityRole.java
│   │   │       │   │                       ├── enums/
│   │   │       │   │                       │   ├── ChatFileLimitEnum.java
│   │   │       │   │                       │   ├── ConfigTypeEnum.java
│   │   │       │   │                       │   ├── LongContextStatusEnum.java
│   │   │       │   │                       │   ├── NotificationType.java
│   │   │       │   │                       │   ├── PersonalitySceneTypeEnum.java
│   │   │       │   │                       │   ├── TalkAgentSceneEnum.java
│   │   │       │   │                       │   ├── TtsTypeEnum.java
│   │   │       │   │                       │   ├── UserInfoResultEnum.java
│   │   │       │   │                       │   └── WordsTypeEnum.java
│   │   │       │   │                       ├── event/
│   │   │       │   │                       │   ├── BotPublishStatusChangedEvent.java
│   │   │       │   │                       │   └── PublishChannelUpdateEvent.java
│   │   │       │   │                       ├── exception/
│   │   │       │   │                       │   └── DistributedLockException.java
│   │   │       │   │                       ├── listener/
│   │   │       │   │                       │   └── WorkflowBotPublishListener.java
│   │   │       │   │                       ├── mapper/
│   │   │       │   │                       │   ├── AiPromptTemplateMapper.java
│   │   │       │   │                       │   ├── ApplicationFormMapper.java
│   │   │       │   │                       │   ├── BotChatFileParamMapper.java
│   │   │       │   │                       │   ├── BotConversationStatsMapper.java
│   │   │       │   │                       │   ├── BotOffiaccountChatMapper.java
│   │   │       │   │                       │   ├── BotOffiaccountRecordMapper.java
│   │   │       │   │                       │   ├── ChatBotRemoveMapper.java
│   │   │       │   │                       │   ├── ChatFileReqMapper.java
│   │   │       │   │                       │   ├── ChatFileUserMapper.java
│   │   │       │   │                       │   ├── ChatReanwserRecordsMapper.java
│   │   │       │   │                       │   ├── ChatReasonRecordsMapper.java
│   │   │       │   │                       │   ├── ChatReqModelMapper.java
│   │   │       │   │                       │   ├── ChatReqRecordsMapper.java
│   │   │       │   │                       │   ├── ChatRespAlltoolDataMapper.java
│   │   │       │   │                       │   ├── ChatRespModelMapper.java
│   │   │       │   │                       │   ├── ChatRespRecordsMapper.java
│   │   │       │   │                       │   ├── ChatTokenRecordsMapper.java
│   │   │       │   │                       │   ├── ChatTraceSourceMapper.java
│   │   │       │   │                       │   ├── CustomSpeakerMapper.java
│   │   │       │   │                       │   ├── MaasTemplateMapper.java
│   │   │       │   │                       │   ├── PronunciationPersonConfigMapper.java
│   │   │       │   │                       │   ├── ReqKnowledgeRecordsMapper.java
│   │   │       │   │                       │   ├── ShareChatMapper.java
│   │   │       │   │                       │   ├── ShareQaMapper.java
│   │   │       │   │                       │   ├── WorkflowTemplateGroupMapper.java
│   │   │       │   │                       │   ├── XingchenOfficialPromptMapper.java
│   │   │       │   │                       │   ├── XingchenPromptManageMapper.java
│   │   │       │   │                       │   ├── XingchenPromptVersionMapper.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   ├── NotificationMapper.java
│   │   │       │   │                       │   │   ├── UserBroadcastReadMapper.java
│   │   │       │   │                       │   │   └── UserNotificationMapper.java
│   │   │       │   │                       │   └── personality/
│   │   │       │   │                       │       ├── PersonalityCategoryMapper.java
│   │   │       │   │                       │       ├── PersonalityConfigMapper.java
│   │   │       │   │                       │       └── PersonalityRoleMapper.java
│   │   │       │   │                       ├── properties/
│   │   │       │   │                       │   ├── InviteMessageTempProperties.java
│   │   │       │   │                       │   └── SpaceLimitProperties.java
│   │   │       │   │                       ├── service/
│   │   │       │   │                       │   ├── ManagedWebSearchService.java
│   │   │       │   │                       │   ├── PromptChatService.java
│   │   │       │   │                       │   ├── SparkChatService.java
│   │   │       │   │                       │   ├── WorkflowChatService.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotAIService.java
│   │   │       │   │                       │   │   ├── BotTransactionalService.java
│   │   │       │   │                       │   │   ├── CustomSpeakerService.java
│   │   │       │   │                       │   │   ├── PersonalityConfigService.java
│   │   │       │   │                       │   │   ├── SpeakerTrainService.java
│   │   │       │   │                       │   │   ├── TalkAgentService.java
│   │   │       │   │                       │   │   ├── VoiceService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotAIServiceImpl.java
│   │   │       │   │                       │   │       ├── BotTransactionalServiceImpl.java
│   │   │       │   │                       │   │       ├── CustomSpeakerServiceImpl.java
│   │   │       │   │                       │   │       ├── PersonalityConfigServiceImpl.java
│   │   │       │   │                       │   │       ├── SpeakerTrainServiceImpl.java
│   │   │       │   │                       │   │       ├── TalkAgentServiceImpl.java
│   │   │       │   │                       │   │       └── VoiceServiceImpl.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── BotChatService.java
│   │   │       │   │                       │   │   ├── ChatBotApiService.java
│   │   │       │   │                       │   │   ├── ChatEnhanceService.java
│   │   │       │   │                       │   │   ├── ChatHistoryMultiModalService.java
│   │   │       │   │                       │   │   ├── ChatListService.java
│   │   │       │   │                       │   │   ├── ChatReasonRecordsService.java
│   │   │       │   │                       │   │   ├── ChatReqRespService.java
│   │   │       │   │                       │   │   ├── ChatRestartService.java
│   │   │       │   │                       │   │   ├── TraceToSourceService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotChatServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatBotApiServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatEnhanceServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatHistoryMultiModalServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatHistoryServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatListServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatReasonRecordsServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatRecordModelServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatReqRespServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatRestartServiceImpl.java
│   │   │       │   │                       │   │       ├── ProviderToolOrchestrator.java
│   │   │       │   │                       │   │       └── TraceToSourceServiceImpl.java
│   │   │       │   │                       │   ├── homepage/
│   │   │       │   │                       │   │   ├── AgentSquareService.java
│   │   │       │   │                       │   │   └── Impl/
│   │   │       │   │                       │   │       └── AgentSquareServiceImpl.java
│   │   │       │   │                       │   ├── knowledge/
│   │   │       │   │                       │   │   ├── KnowledgeService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── KnowledgeServiceImpl.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   ├── NotificationService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── NotificationServiceImpl.java
│   │   │       │   │                       │   ├── publish/
│   │   │       │   │                       │   │   ├── BotPublishService.java
│   │   │       │   │                       │   │   ├── McpService.java
│   │   │       │   │                       │   │   ├── PublishApiService.java
│   │   │       │   │                       │   │   ├── PublishChannelService.java
│   │   │       │   │                       │   │   ├── ReleaseManageClientService.java
│   │   │       │   │                       │   │   ├── TenantService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotPublishServiceImpl.java
│   │   │       │   │                       │   │       ├── McpServiceImpl.java
│   │   │       │   │                       │   │       ├── PublishApiServiceImpl.java
│   │   │       │   │                       │   │       ├── PublishChannelServiceImpl.java
│   │   │       │   │                       │   │       ├── ReleaseManageClientServiceImpl.java
│   │   │       │   │                       │   │       └── TenantServiceImpl.java
│   │   │       │   │                       │   ├── share/
│   │   │       │   │                       │   │   ├── ShareService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── ShareServiceImpl.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordBizService.java
│   │   │       │   │                       │   │   ├── EnterpriseBizService.java
│   │   │       │   │                       │   │   ├── EnterpriseUserBizService.java
│   │   │       │   │                       │   │   ├── InviteRecordBizService.java
│   │   │       │   │                       │   │   ├── SpaceBizService.java
│   │   │       │   │                       │   │   ├── SpaceUserBizService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── ApplyRecordBizServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseBizServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseUserBizServiceImpl.java
│   │   │       │   │                       │   │       ├── InviteRecordBizServiceImpl.java
│   │   │       │   │                       │   │       ├── SpaceBizServiceImpl.java
│   │   │       │   │                       │   │       └── SpaceUserBizServiceImpl.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── UserBotService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── UserBotServiceImpl.java
│   │   │       │   │                       │   ├── wechat/
│   │   │       │   │                       │   │   ├── BotOffiaccountService.java
│   │   │       │   │                       │   │   ├── WechatThirdpartyService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotOffiaccountServiceImpl.java
│   │   │       │   │                       │   │       └── WechatThirdpartyServiceImpl.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── BotChainService.java
│   │   │       │   │                       │       ├── BotMaasService.java
│   │   │       │   │                       │       ├── WorkflowReleaseService.java
│   │   │       │   │                       │       ├── WorkflowTemplateGroupService.java
│   │   │       │   │                       │       └── impl/
│   │   │       │   │                       │           ├── BotChainServiceImpl.java
│   │   │       │   │                       │           ├── BotMaasServiceImpl.java
│   │   │       │   │                       │           ├── WorkflowReleaseServiceImpl.java
│   │   │       │   │                       │           └── WorkflowTemplateGroupServiceImpl.java
│   │   │       │   │                       ├── strategy/
│   │   │       │   │                       │   └── publish/
│   │   │       │   │                       │       ├── PublishStrategy.java
│   │   │       │   │                       │       ├── PublishStrategyFactory.java
│   │   │       │   │                       │       └── impl/
│   │   │       │   │                       │           ├── ApiPublishStrategy.java
│   │   │       │   │                       │           ├── FeishuPublishStrategy.java
│   │   │       │   │                       │           ├── MarketPublishStrategy.java
│   │   │       │   │                       │           ├── McpPublishStrategy.java
│   │   │       │   │                       │           └── WechatPublishStrategy.java
│   │   │       │   │                       └── util/
│   │   │       │   │                           ├── AESUtil.java
│   │   │       │   │                           ├── BotAIServiceClient.java
│   │   │       │   │                           ├── BotPermissionUtil.java
│   │   │       │   │                           ├── CommonUtil.java
│   │   │       │   │                           ├── DistributedLockExample.java
│   │   │       │   │                           ├── HttpServiceClient.java
│   │   │       │   │                           ├── ImageUtil.java
│   │   │       │   │                           ├── Md5Util.java
│   │   │       │   │                           ├── NameUtil.java
│   │   │       │   │                           └── wechat/
│   │   │       │   │                               ├── AesException.java
│   │   │       │   │                               ├── WXBizMsgCrypt.java
│   │   │       │   │                               ├── WXBizMsgParse.java
│   │   │       │   │                               ├── WechatMessageCrypto.java
│   │   │       │   │                               ├── WechatMessageParser.java
│   │   │       │   │                               └── XMLParse.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── db/
│   │   │       │       │   └── migration/
│   │   │       │       │       ├── README.md
│   │   │       │       │       ├── V1.10__insert_permission_data.sql
│   │   │       │       │       ├── V1.11__insert_template_data.sql
│   │   │       │       │       ├── V1.12__insert_other_data.sql
│   │   │       │       │       ├── V1.13__insert_config_data.sql
│   │   │       │       │       ├── V1.14__insert_config_data2.sql
│   │   │       │       │       ├── V1.15__fix_missing_alter.sql
│   │   │       │       │       ├── V1.16__insert_workflow_data.sql
│   │   │       │       │       ├── V1.17__insert_workflow_node_config.sql
│   │   │       │       │       ├── V1.18__update_ai_code_prompts.sql
│   │   │       │       │       ├── V1.19__update_sensitive_sql_info.sql
│   │   │       │       │       ├── V1.1__init_core.sql
│   │   │       │       │       ├── V1.20__add_model_provider.sql
│   │   │       │       │       ├── V1.21__add_official_deepseek_models.sql
│   │   │       │       │       ├── V1.22__add_is_think_to_model_table.sql
│   │   │       │       │       ├── V1.23__add_variable_aggregation_node_template.sql
│   │   │       │       │       ├── V1.2__init_enterprise.sql
│   │   │       │       │       ├── V1.3__init_space.sql
│   │   │       │       │       ├── V1.4__init_bot.sql
│   │   │       │       │       ├── V1.5__init_workflow.sql
│   │   │       │       │       ├── V1.6__init_model.sql
│   │   │       │       │       ├── V1.7__init_knowledge.sql
│   │   │       │       │       └── V1.9__init_toolbox.sql
│   │   │       │       ├── logback-spring.xml
│   │   │       │       ├── mapper/
│   │   │       │       │   ├── BotConversationStatsMapper.xml
│   │   │       │       │   ├── ChatReasonRecordsMapper.xml
│   │   │       │       │   ├── CustomSpeakerMapper.xml
│   │   │       │       │   ├── notification/
│   │   │       │       │   │   ├── NotificationMapper.xml
│   │   │       │       │   │   ├── UserBroadcastReadMapper.xml
│   │   │       │       │   │   └── UserNotificationMapper.xml
│   │   │       │       │   └── personality/
│   │   │       │       │       ├── PersonalityConfigMapper.xml
│   │   │       │       │       └── PersonalityRoleMapper.xml
│   │   │       │       └── sql/
│   │   │       │           └── req_knowledge_records.sql
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── iflytek/
│   │   │                       └── astron/
│   │   │                           └── console/
│   │   │                               └── hub/
│   │   │                                   ├── data/
│   │   │                                   │   ├── UserInfoDataServiceFinalTest.java
│   │   │                                   │   └── impl/
│   │   │                                   │       ├── ChatDataServiceImplTest.java
│   │   │                                   │       ├── ReqKnowledgeRecordsDataServiceImplTest.java
│   │   │                                   │       └── ShareDataServiceImplTest.java
│   │   │                                   ├── dto/
│   │   │                                   │   └── notification/
│   │   │                                   │       ├── NotificationDtoTest.java
│   │   │                                   │       ├── NotificationGroupingTest.java
│   │   │                                   │       └── NotificationPageResponseTest.java
│   │   │                                   ├── enums/
│   │   │                                   │   └── NotificationTypeTest.java
│   │   │                                   ├── mapper/
│   │   │                                   │   └── notification/
│   │   │                                   │       └── NotificationEnumMappingTest.java
│   │   │                                   └── service/
│   │   │                                       ├── PromptChatServiceTest.java
│   │   │                                       ├── SparkChatServiceTest.java
│   │   │                                       ├── bot/
│   │   │                                       │   └── impl/
│   │   │                                       │       └── BotTransactionalServiceImplTest.java
│   │   │                                       ├── chat/
│   │   │                                       │   └── impl/
│   │   │                                       │       ├── BotChatServiceImplUnitTest.java
│   │   │                                       │       ├── ChatEnhanceServiceImplTest.java
│   │   │                                       │       ├── ChatHistoryMultiModalServiceImplTest.java
│   │   │                                       │       ├── ChatHistoryServiceImplTest.java
│   │   │                                       │       ├── ChatListServiceImplTest.java
│   │   │                                       │       ├── ChatReasonRecordsServiceImplTest.java
│   │   │                                       │       ├── ChatRecordModelServiceImplTest.java
│   │   │                                       │       ├── ChatReqRespServiceImplTest.java
│   │   │                                       │       ├── ChatRestartServiceImplTest.java
│   │   │                                       │       └── TraceToSourceServiceImplTest.java
│   │   │                                       ├── knowledge/
│   │   │                                       │   └── impl/
│   │   │                                       │       └── KnowledgeServiceImplTest.java
│   │   │                                       ├── notification/
│   │   │                                       │   └── impl/
│   │   │                                       │       └── NotificationServiceImplTest.java
│   │   │                                       ├── share/
│   │   │                                       │   └── impl/
│   │   │                                       │       └── ShareServiceImplTest.java
│   │   │                                       ├── space/
│   │   │                                       │   └── impl/
│   │   │                                       │       ├── ApplyRecordBizServiceImplTest.java
│   │   │                                       │       ├── EnterpriseBizServiceImplTest.java
│   │   │                                       │       ├── EnterpriseUserBizServiceImplTest.java
│   │   │                                       │       ├── InviteRecordBizServiceImplTest.java
│   │   │                                       │       └── SpaceUserBizServiceImplTest.java
│   │   │                                       └── workflow/
│   │   │                                           └── impl/
│   │   │                                               └── BotChainServiceImplTest.java
│   │   ├── pom.xml
│   │   └── toolkit/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── com/
│   │           │   │       └── iflytek/
│   │           │   │           └── astron/
│   │           │   │               └── console/
│   │           │   │                   └── toolkit/
│   │           │   │                       ├── common/
│   │           │   │                       │   ├── CustomExceptionCode.java
│   │           │   │                       │   ├── Result.java
│   │           │   │                       │   ├── ResultStatus.java
│   │           │   │                       │   ├── ResultStatusEN.java
│   │           │   │                       │   ├── anno/
│   │           │   │                       │   │   ├── ExcelHeader.java
│   │           │   │                       │   │   └── ResponseResultBody.java
│   │           │   │                       │   └── constant/
│   │           │   │                       │       ├── ChatConstant.java
│   │           │   │                       │       ├── CommonConst.java
│   │           │   │                       │       ├── EffectEvalConst.java
│   │           │   │                       │       ├── EsConst.java
│   │           │   │                       │       ├── LLMConstant.java
│   │           │   │                       │       ├── OpenApiConst.java
│   │           │   │                       │       ├── ProjectContent.java
│   │           │   │                       │       ├── ToolConst.java
│   │           │   │                       │       ├── WorkflowConst.java
│   │           │   │                       │       ├── core/
│   │           │   │                       │       │   └── ToolErrorStatus.java
│   │           │   │                       │       └── http/
│   │           │   │                       │           └── CustomHeader.java
│   │           │   │                       ├── config/
│   │           │   │                       │   ├── aop/
│   │           │   │                       │   │   └── ResponseResultBodyAdvice.java
│   │           │   │                       │   ├── exception/
│   │           │   │                       │   │   ├── CustomException.java
│   │           │   │                       │   │   ├── OpenApiException.java
│   │           │   │                       │   │   └── handler/
│   │           │   │                       │   │       └── GlobalExceptionHandler.java
│   │           │   │                       │   ├── jooq/
│   │           │   │                       │   │   ├── JooqBatchExecutor.java
│   │           │   │                       │   │   ├── JooqConfig.java
│   │           │   │                       │   │   ├── JooqRetry.java
│   │           │   │                       │   │   └── SqlSender.java
│   │           │   │                       │   ├── mybatis/
│   │           │   │                       │   │   ├── MyBatisConfig.java
│   │           │   │                       │   │   └── MybatisPlusConfig.java
│   │           │   │                       │   ├── properties/
│   │           │   │                       │   │   ├── ApiUrl.java
│   │           │   │                       │   │   ├── AsyncExecutorProperties.java
│   │           │   │                       │   │   ├── BizConfig.java
│   │           │   │                       │   │   ├── CommonConfig.java
│   │           │   │                       │   │   ├── RepoAuthorizedConfig.java
│   │           │   │                       │   │   └── SchedulingPoolProperties.java
│   │           │   │                       │   ├── rest/
│   │           │   │                       │   │   └── RestConfig.java
│   │           │   │                       │   ├── spring/
│   │           │   │                       │   │   └── ExecuteShutdown.java
│   │           │   │                       │   ├── task/
│   │           │   │                       │   │   └── SchedulingConfig.java
│   │           │   │                       │   ├── thread/
│   │           │   │                       │   │   ├── AppSchedulingConfig.java
│   │           │   │                       │   │   └── AsyncExecutorConfig.java
│   │           │   │                       │   └── web/
│   │           │   │                       │       └── CorsConfig.java
│   │           │   │                       ├── controller/
│   │           │   │                       │   ├── bot/
│   │           │   │                       │   │   └── PromptController.java
│   │           │   │                       │   ├── common/
│   │           │   │                       │   │   ├── ConfigInfoController.java
│   │           │   │                       │   │   ├── ImageController.java
│   │           │   │                       │   │   └── LLMController.java
│   │           │   │                       │   ├── database/
│   │           │   │                       │   │   └── DataBaseController.java
│   │           │   │                       │   ├── knowledge/
│   │           │   │                       │   │   ├── FileController.java
│   │           │   │                       │   │   ├── KnowledgeController.java
│   │           │   │                       │   │   └── RepoController.java
│   │           │   │                       │   ├── model/
│   │           │   │                       │   │   └── ModelController.java
│   │           │   │                       │   ├── node/
│   │           │   │                       │   │   └── TextNodeConfigController.java
│   │           │   │                       │   ├── open/
│   │           │   │                       │   │   └── OpenApiController.java
│   │           │   │                       │   ├── tool/
│   │           │   │                       │   │   ├── RpaController.java
│   │           │   │                       │   │   └── ToolBoxController.java
│   │           │   │                       │   └── workflow/
│   │           │   │                       │       ├── VersionController.java
│   │           │   │                       │       └── WorkflowController.java
│   │           │   │                       ├── entity/
│   │           │   │                       │   ├── UserInfo.java
│   │           │   │                       │   ├── biz/
│   │           │   │                       │   │   ├── AiCode.java
│   │           │   │                       │   │   ├── AiGenerate.java
│   │           │   │                       │   │   ├── BizChatRequest.java
│   │           │   │                       │   │   ├── ChatSampleDto.java
│   │           │   │                       │   │   ├── FeedbackRequest.java
│   │           │   │                       │   │   ├── QaData.java
│   │           │   │                       │   │   ├── apply/
│   │           │   │                       │   │   │   └── AuthApplyInfo.java
│   │           │   │                       │   │   ├── external/
│   │           │   │                       │   │   │   ├── app/
│   │           │   │                       │   │   │   │   ├── AkSk.java
│   │           │   │                       │   │   │   │   ├── App3Ele.java
│   │           │   │                       │   │   │   │   ├── PlatformApp.java
│   │           │   │                       │   │   │   │   └── PlatformAppDetail.java
│   │           │   │                       │   │   │   └── shelf/
│   │           │   │                       │   │   │       ├── LLMExpeDto.java
│   │           │   │                       │   │   │       └── LLMServerInfo.java
│   │           │   │                       │   │   ├── modelconfig/
│   │           │   │                       │   │   │   ├── CompletionParams.java
│   │           │   │                       │   │   │   ├── Config.java
│   │           │   │                       │   │   │   ├── ConversationStarter.java
│   │           │   │                       │   │   │   ├── Enabled.java
│   │           │   │                       │   │   │   ├── Flow.java
│   │           │   │                       │   │   │   ├── LocalModelDto.java
│   │           │   │                       │   │   │   ├── Model.java
│   │           │   │                       │   │   │   ├── ModelConfigProtocolDto.java
│   │           │   │                       │   │   │   ├── ModelDto.java
│   │           │   │                       │   │   │   ├── ModelValidationRequest.java
│   │           │   │                       │   │   │   ├── Models.java
│   │           │   │                       │   │   │   ├── PresetQuestion.java
│   │           │   │                       │   │   │   ├── RepoConfigs.java
│   │           │   │                       │   │   │   ├── TextToSpeech.java
│   │           │   │                       │   │   │   └── Tool.java
│   │           │   │                       │   │   ├── openplatform/
│   │           │   │                       │   │   │   └── XfYunRepo.java
│   │           │   │                       │   │   └── workflow/
│   │           │   │                       │   │       ├── AgentStrategy.java
│   │           │   │                       │   │       ├── BizChatInput.java
│   │           │   │                       │   │       ├── BizWorkflowData.java
│   │           │   │                       │   │       ├── BizWorkflowEdge.java
│   │           │   │                       │   │       ├── BizWorkflowNode.java
│   │           │   │                       │   │       ├── ChatBizReq.java
│   │           │   │                       │   │       ├── ChatInputHistory.java
│   │           │   │                       │   │       ├── ChatResumeReq.java
│   │           │   │                       │   │       ├── FlowReleaseReq.java
│   │           │   │                       │   │       ├── WorkflowDebugDto.java
│   │           │   │                       │   │       ├── channel/
│   │           │   │                       │   │       │   └── AiuiAgentInfo.java
│   │           │   │                       │   │       └── node/
│   │           │   │                       │   │           ├── BizInputOutput.java
│   │           │   │                       │   │           ├── BizNodeData.java
│   │           │   │                       │   │           ├── BizProperty.java
│   │           │   │                       │   │           ├── BizSchema.java
│   │           │   │                       │   │           ├── BizValue.java
│   │           │   │                       │   │           └── IntentChain.java
│   │           │   │                       │   ├── botConfigProtocol/
│   │           │   │                       │   │   ├── BotConfig.java
│   │           │   │                       │   │   ├── BotConfigOld.java
│   │           │   │                       │   │   ├── KnowledgeConfig.java
│   │           │   │                       │   │   ├── Match.java
│   │           │   │                       │   │   ├── ModelConfig.java
│   │           │   │                       │   │   ├── ModelParameter.java
│   │           │   │                       │   │   ├── ModelProperty.java
│   │           │   │                       │   │   ├── Rag.java
│   │           │   │                       │   │   └── RegularConfig.java
│   │           │   │                       │   ├── common/
│   │           │   │                       │   │   ├── FlagResponseEntity.java
│   │           │   │                       │   │   ├── PageData.java
│   │           │   │                       │   │   ├── PagedList.java
│   │           │   │                       │   │   ├── Pagination.java
│   │           │   │                       │   │   └── ValueLabelTree.java
│   │           │   │                       │   ├── core/
│   │           │   │                       │   │   ├── knowledge/
│   │           │   │                       │   │   │   ├── CbgKnowledgeData.java
│   │           │   │                       │   │   │   ├── ChunkInfo.java
│   │           │   │                       │   │   │   ├── KnowledgeRequest.java
│   │           │   │                       │   │   │   ├── KnowledgeResponse.java
│   │           │   │                       │   │   │   ├── QueryMatchObj.java
│   │           │   │                       │   │   │   ├── QueryRequest.java
│   │           │   │                       │   │   │   ├── QueryRespData.java
│   │           │   │                       │   │   │   └── SplitRequest.java
│   │           │   │                       │   │   ├── openapi/
│   │           │   │                       │   │   │   ├── Components.java
│   │           │   │                       │   │   │   ├── Info.java
│   │           │   │                       │   │   │   ├── MediaType.java
│   │           │   │                       │   │   │   ├── OpenApiSchema.java
│   │           │   │                       │   │   │   ├── Operation.java
│   │           │   │                       │   │   │   ├── Parameter.java
│   │           │   │                       │   │   │   ├── Property.java
│   │           │   │                       │   │   │   ├── RequestBody.java
│   │           │   │                       │   │   │   ├── Response.java
│   │           │   │                       │   │   │   ├── Schema.java
│   │           │   │                       │   │   │   ├── SecurityScheme.java
│   │           │   │                       │   │   │   └── Server.java
│   │           │   │                       │   │   └── workflow/
│   │           │   │                       │   │       ├── Edge.java
│   │           │   │                       │   │       ├── FlowProtocol.java
│   │           │   │                       │   │       ├── FlowProtocolData.java
│   │           │   │                       │   │       ├── Node.java
│   │           │   │                       │   │       ├── NodeDebugResponse.java
│   │           │   │                       │   │       ├── node/
│   │           │   │                       │   │       │   ├── FunctionTextItem.java
│   │           │   │                       │   │       │   ├── InputOutput.java
│   │           │   │                       │   │       │   ├── NodeData.java
│   │           │   │                       │   │       │   ├── Property.java
│   │           │   │                       │   │       │   ├── Schema.java
│   │           │   │                       │   │       │   └── Value.java
│   │           │   │                       │   │       ├── sse/
│   │           │   │                       │   │       │   ├── ChatResponse.java
│   │           │   │                       │   │       │   ├── ChatSysReq.java
│   │           │   │                       │   │       │   ├── Choice.java
│   │           │   │                       │   │       │   ├── Delta.java
│   │           │   │                       │   │       │   ├── EventData.java
│   │           │   │                       │   │       │   ├── Node.java
│   │           │   │                       │   │       │   ├── PromptChatResponse.java
│   │           │   │                       │   │       │   ├── PromptChatX1Response.java
│   │           │   │                       │   │       │   ├── Usage.java
│   │           │   │                       │   │       │   ├── V3Request.java
│   │           │   │                       │   │       │   ├── V3Response.java
│   │           │   │                       │   │       │   ├── Value.java
│   │           │   │                       │   │       │   └── WorkflowStep.java
│   │           │   │                       │   │       └── ws/
│   │           │   │                       │   │           ├── ChatInput.java
│   │           │   │                       │   │           ├── SparkFlowResponse.java
│   │           │   │                       │   │           ├── SparkFlowResponseHeader.java
│   │           │   │                       │   │           ├── SparkFlowResponsePayloadContent.java
│   │           │   │                       │   │           └── Step.java
│   │           │   │                       │   ├── dto/
│   │           │   │                       │   │   ├── BotSquareDto.java
│   │           │   │                       │   │   ├── CloneFlowReq.java
│   │           │   │                       │   │   ├── ConsultDto.java
│   │           │   │                       │   │   ├── FeedbackDto.java
│   │           │   │                       │   │   ├── FileDirectoryTreeDto.java
│   │           │   │                       │   │   ├── FileInfoV2Dto.java
│   │           │   │                       │   │   ├── KnowledgeDto.java
│   │           │   │                       │   │   ├── McpPushDto.java
│   │           │   │                       │   │   ├── McpToolReq.java
│   │           │   │                       │   │   ├── PreviewKnowledgeDto.java
│   │           │   │                       │   │   ├── RelatedDocDto.java
│   │           │   │                       │   │   ├── RepoDto.java
│   │           │   │                       │   │   ├── ResourceParameter.java
│   │           │   │                       │   │   ├── SparkBotVO.java
│   │           │   │                       │   │   ├── TagDto.java
│   │           │   │                       │   │   ├── ToolBoxDto.java
│   │           │   │                       │   │   ├── ToolBoxFeedbackReq.java
│   │           │   │                       │   │   ├── ToolBoxVo.java
│   │           │   │                       │   │   ├── ToolFavoriteToolDto.java
│   │           │   │                       │   │   ├── ToolSquareDto.java
│   │           │   │                       │   │   ├── ToolUseDto.java
│   │           │   │                       │   │   ├── UploadDocTaskDto.java
│   │           │   │                       │   │   ├── WorkflowComparisonReq.java
│   │           │   │                       │   │   ├── WorkflowDsl.java
│   │           │   │                       │   │   ├── WorkflowFeedbackReq.java
│   │           │   │                       │   │   ├── WorkflowModelErrorReq.java
│   │           │   │                       │   │   ├── WorkflowModelReq.java
│   │           │   │                       │   │   ├── WorkflowReq.java
│   │           │   │                       │   │   ├── database/
│   │           │   │                       │   │   │   ├── DatabaseDto.java
│   │           │   │                       │   │   │   ├── DatabaseExportDto.java
│   │           │   │                       │   │   │   ├── DbTableCountDto.java
│   │           │   │                       │   │   │   ├── DbTableDataDto.java
│   │           │   │                       │   │   │   ├── DbTableDto.java
│   │           │   │                       │   │   │   ├── DbTableFieldDto.java
│   │           │   │                       │   │   │   ├── DbTableOperateDto.java
│   │           │   │                       │   │   │   ├── DbTableSelectDataDto.java
│   │           │   │                       │   │   │   └── FlowDbRelCountDto.java
│   │           │   │                       │   │   ├── eval/
│   │           │   │                       │   │   │   ├── NodeDataDto.java
│   │           │   │                       │   │   │   ├── NodeSimpleDto.java
│   │           │   │                       │   │   │   └── WorkflowComparisonSaveReq.java
│   │           │   │                       │   │   ├── external/
│   │           │   │                       │   │   │   └── AppInfoResponse.java
│   │           │   │                       │   │   ├── openapi/
│   │           │   │                       │   │   │   └── WorkflowIoTransRequest.java
│   │           │   │                       │   │   ├── rpa/
│   │           │   │                       │   │   │   └── StartReq.java
│   │           │   │                       │   │   └── talkagent/
│   │           │   │                       │   │       └── TalkAgentConfigDto.java
│   │           │   │                       │   ├── enumVo/
│   │           │   │                       │   │   ├── DBOperateEnum.java
│   │           │   │                       │   │   ├── DBTableEnvEnum.java
│   │           │   │                       │   │   ├── DebugStatus.java
│   │           │   │                       │   │   ├── DomainNameEnum.java
│   │           │   │                       │   │   ├── ModelStatusEnum.java
│   │           │   │                       │   │   ├── ScoreEnum.java
│   │           │   │                       │   │   ├── TagsEnum.java
│   │           │   │                       │   │   ├── ToolboxStatusEnum.java
│   │           │   │                       │   │   └── VarType.java
│   │           │   │                       │   ├── es/
│   │           │   │                       │   │   ├── ChatHistory.java
│   │           │   │                       │   │   ├── DialogueHistory.java
│   │           │   │                       │   │   └── agentBuilder/
│   │           │   │                       │   │       ├── FlowDataLog.java
│   │           │   │                       │   │       ├── FlowTraceLog.java
│   │           │   │                       │   │       ├── SparkAgentBuilder.java
│   │           │   │                       │   │       ├── Status.java
│   │           │   │                       │   │       ├── Trace.java
│   │           │   │                       │   │       ├── TraceData.java
│   │           │   │                       │   │       └── TraceDataConfig.java
│   │           │   │                       │   ├── finetune/
│   │           │   │                       │   │   ├── AlpacaTrainLine.java
│   │           │   │                       │   │   ├── Conversation.java
│   │           │   │                       │   │   └── ShareGptTrainLine.java
│   │           │   │                       │   ├── knowledge/
│   │           │   │                       │   │   ├── ChunkInfo.java
│   │           │   │                       │   │   ├── KnowledgeRequest.java
│   │           │   │                       │   │   ├── KnowledgeResponse.java
│   │           │   │                       │   │   ├── QueryMatchObj.java
│   │           │   │                       │   │   ├── QueryRequest.java
│   │           │   │                       │   │   ├── QueryRespData.java
│   │           │   │                       │   │   └── SplitRequest.java
│   │           │   │                       │   ├── metrological/
│   │           │   │                       │   │   ├── MetrologicalAppLicenseDto.java
│   │           │   │                       │   │   ├── MetrologicalAuthorizationResponse.java
│   │           │   │                       │   │   └── MetrologicalV2AuthDto.java
│   │           │   │                       │   ├── mongo/
│   │           │   │                       │   │   ├── Knowledge.java
│   │           │   │                       │   │   └── PreviewKnowledge.java
│   │           │   │                       │   ├── pojo/
│   │           │   │                       │   │   ├── ChunkResult.java
│   │           │   │                       │   │   ├── DealFileResult.java
│   │           │   │                       │   │   ├── DeleteKnowledgeFileExecuteResult.java
│   │           │   │                       │   │   ├── DeleteKnowledgeFileFailedResult.java
│   │           │   │                       │   │   ├── DeleteKnowledgeFileResult.java
│   │           │   │                       │   │   ├── FileSummary.java
│   │           │   │                       │   │   ├── KnowledgeFileResult.java
│   │           │   │                       │   │   ├── KnowledgeResult.java
│   │           │   │                       │   │   ├── KnowledgeTaskResult.java
│   │           │   │                       │   │   └── SliceConfig.java
│   │           │   │                       │   ├── spark/
│   │           │   │                       │   │   ├── Header.java
│   │           │   │                       │   │   ├── Parameter.java
│   │           │   │                       │   │   ├── Payload.java
│   │           │   │                       │   │   ├── SparkApiProtocol.java
│   │           │   │                       │   │   ├── Text.java
│   │           │   │                       │   │   ├── chat/
│   │           │   │                       │   │   │   ├── ChatRecord.java
│   │           │   │                       │   │   │   ├── ChatRequest.java
│   │           │   │                       │   │   │   ├── ChatResponse.java
│   │           │   │                       │   │   │   ├── ExtraInfo.java
│   │           │   │                       │   │   │   ├── Header.java
│   │           │   │                       │   │   │   ├── KnowledgeKwargs.java
│   │           │   │                       │   │   │   ├── LlmModelConfig.java
│   │           │   │                       │   │   │   ├── Message.java
│   │           │   │                       │   │   │   ├── ModelCallParameter.java
│   │           │   │                       │   │   │   ├── Payload.java
│   │           │   │                       │   │   │   └── ToolUpstreamKwargs.java
│   │           │   │                       │   │   ├── request/
│   │           │   │                       │   │   │   ├── Chat.java
│   │           │   │                       │   │   │   ├── FcFunction.java
│   │           │   │                       │   │   │   └── Message.java
│   │           │   │                       │   │   └── response/
│   │           │   │                       │   │       ├── Choices.java
│   │           │   │                       │   │       ├── Usage.java
│   │           │   │                       │   │       └── UsageText.java
│   │           │   │                       │   ├── table/
│   │           │   │                       │   │   ├── BaseModelMap.java
│   │           │   │                       │   │   ├── CallLog.java
│   │           │   │                       │   │   ├── ConfigInfo.java
│   │           │   │                       │   │   ├── FineTuneTask.java
│   │           │   │                       │   │   ├── VcnInfo.java
│   │           │   │                       │   │   ├── auth/
│   │           │   │                       │   │   │   └── AuthApplyRecord.java
│   │           │   │                       │   │   ├── bot/
│   │           │   │                       │   │   │   ├── BotModelBind.java
│   │           │   │                       │   │   │   ├── BotModelConfig.java
│   │           │   │                       │   │   │   ├── BotRepoSubscript.java
│   │           │   │                       │   │   │   ├── CreateBotContext.java
│   │           │   │                       │   │   │   ├── SparkBot.java
│   │           │   │                       │   │   │   └── UserFavoriteBot.java
│   │           │   │                       │   │   ├── database/
│   │           │   │                       │   │   │   ├── DbInfo.java
│   │           │   │                       │   │   │   ├── DbTable.java
│   │           │   │                       │   │   │   └── DbTableField.java
│   │           │   │                       │   │   ├── eval/
│   │           │   │                       │   │   │   ├── EffectEvalSetVerExcelDataValue.java
│   │           │   │                       │   │   │   ├── EffectEvalSetVerExcelHeader.java
│   │           │   │                       │   │   │   ├── EffectEvalTaskOnlineLog.java
│   │           │   │                       │   │   │   ├── EvalDimension.java
│   │           │   │                       │   │   │   ├── EvalDimensionTemplate.java
│   │           │   │                       │   │   │   ├── EvalScene.java
│   │           │   │                       │   │   │   ├── EvalSet.java
│   │           │   │                       │   │   │   ├── EvalSetVer.java
│   │           │   │                       │   │   │   ├── EvalSetVerData.java
│   │           │   │                       │   │   │   ├── EvalTask.java
│   │           │   │                       │   │   │   ├── EvalTaskData.java
│   │           │   │                       │   │   │   ├── EvalTaskOnlineData.java
│   │           │   │                       │   │   │   ├── EvalTaskReport.java
│   │           │   │                       │   │   │   ├── EvalTaskUnfinished.java
│   │           │   │                       │   │   │   ├── ModelListConfig.java
│   │           │   │                       │   │   │   ├── ModelOptimizeTask.java
│   │           │   │                       │   │   │   ├── NodeMarkData.java
│   │           │   │                       │   │   │   ├── NodeScoreData.java
│   │           │   │                       │   │   │   ├── TrainSet.java
│   │           │   │                       │   │   │   ├── TrainSetVer.java
│   │           │   │                       │   │   │   ├── TrainSetVerData.java
│   │           │   │                       │   │   │   └── UserThreadPoolConfig.java
│   │           │   │                       │   │   ├── group/
│   │           │   │                       │   │   │   ├── GroupTag.java
│   │           │   │                       │   │   │   ├── GroupUser.java
│   │           │   │                       │   │   │   └── GroupVisibility.java
│   │           │   │                       │   │   ├── knowledge/
│   │           │   │                       │   │   │   ├── MysqlKnowledge.java
│   │           │   │                       │   │   │   └── MysqlPreviewKnowledge.java
│   │           │   │                       │   │   ├── model/
│   │           │   │                       │   │   │   ├── Model.java
│   │           │   │                       │   │   │   ├── ModelCategory.java
│   │           │   │                       │   │   │   ├── ModelCommon.java
│   │           │   │                       │   │   │   └── ModelCustomCategory.java
│   │           │   │                       │   │   ├── node/
│   │           │   │                       │   │   │   └── TextNodeConfig.java
│   │           │   │                       │   │   ├── relation/
│   │           │   │                       │   │   │   ├── BotFlowRel.java
│   │           │   │                       │   │   │   ├── BotRepoRel.java
│   │           │   │                       │   │   │   ├── BotToolRel.java
│   │           │   │                       │   │   │   ├── FlowDbRel.java
│   │           │   │                       │   │   │   ├── FlowRepoRel.java
│   │           │   │                       │   │   │   └── FlowToolRel.java
│   │           │   │                       │   │   ├── repo/
│   │           │   │                       │   │   │   ├── ExtractKnowledgeTask.java
│   │           │   │                       │   │   │   ├── FileDirectoryTree.java
│   │           │   │                       │   │   │   ├── FileInfo.java
│   │           │   │                       │   │   │   ├── FileInfoV2.java
│   │           │   │                       │   │   │   ├── HitTestHistory.java
│   │           │   │                       │   │   │   ├── Repo.java
│   │           │   │                       │   │   │   ├── TagInfoV2.java
│   │           │   │                       │   │   │   └── UploadDocTask.java
│   │           │   │                       │   │   ├── tool/
│   │           │   │                       │   │   │   ├── RpaInfo.java
│   │           │   │                       │   │   │   ├── RpaUserAssistant.java
│   │           │   │                       │   │   │   ├── RpaUserAssistantField.java
│   │           │   │                       │   │   │   ├── ToolBox.java
│   │           │   │                       │   │   │   ├── ToolBoxFeedback.java
│   │           │   │                       │   │   │   ├── ToolBoxOperateHistory.java
│   │           │   │                       │   │   │   └── UserFavoriteTool.java
│   │           │   │                       │   │   ├── trace/
│   │           │   │                       │   │   │   ├── ChatInfo.java
│   │           │   │                       │   │   │   ├── FeedbackInfo.java
│   │           │   │                       │   │   │   └── NodeInfo.java
│   │           │   │                       │   │   ├── users/
│   │           │   │                       │   │   │   └── SystemUser.java
│   │           │   │                       │   │   └── workflow/
│   │           │   │                       │   │       ├── FlowProtocolTemp.java
│   │           │   │                       │   │       ├── FlowReleaseAiuiInfo.java
│   │           │   │                       │   │       ├── FlowReleaseChannel.java
│   │           │   │                       │   │       ├── McpToolConfig.java
│   │           │   │                       │   │       ├── PromptTemplate.java
│   │           │   │                       │   │       ├── WorkflowComparison.java
│   │           │   │                       │   │       ├── WorkflowConfig.java
│   │           │   │                       │   │       ├── WorkflowDialog.java
│   │           │   │                       │   │       ├── WorkflowFeedback.java
│   │           │   │                       │   │       ├── WorkflowNodeHistory.java
│   │           │   │                       │   │       ├── WorkflowVersion.java
│   │           │   │                       │   │       └── node/
│   │           │   │                       │   │           ├── BizNodeData.java
│   │           │   │                       │   │           ├── BizProperty.java
│   │           │   │                       │   │           ├── BizSchema.java
│   │           │   │                       │   │           ├── BizValue.java
│   │           │   │                       │   │           └── IntentChain.java
│   │           │   │                       │   ├── tool/
│   │           │   │                       │   │   ├── CreateRpaAssistantReq.java
│   │           │   │                       │   │   ├── McpServerTool.java
│   │           │   │                       │   │   ├── Message.java
│   │           │   │                       │   │   ├── PlatformFieldSpec.java
│   │           │   │                       │   │   ├── RpaAssistantResp.java
│   │           │   │                       │   │   ├── ServiceAuthInfo.java
│   │           │   │                       │   │   ├── Text.java
│   │           │   │                       │   │   ├── Tool.java
│   │           │   │                       │   │   ├── ToolDebugRequest.java
│   │           │   │                       │   │   ├── ToolHeader.java
│   │           │   │                       │   │   ├── ToolParameter.java
│   │           │   │                       │   │   ├── ToolPayload.java
│   │           │   │                       │   │   ├── ToolProtocolDto.java
│   │           │   │                       │   │   ├── ToolResp.java
│   │           │   │                       │   │   ├── UpdateRpaAssistantReq.java
│   │           │   │                       │   │   ├── WebSchema.java
│   │           │   │                       │   │   └── WebSchemaItem.java
│   │           │   │                       │   └── vo/
│   │           │   │                       │       ├── ApplicationVo.java
│   │           │   │                       │       ├── BotUsedToolVo.java
│   │           │   │                       │       ├── CategoryTreeVO.java
│   │           │   │                       │       ├── DocStatusVO.java
│   │           │   │                       │       ├── HtmlFileVO.java
│   │           │   │                       │       ├── LLMInfoVo.java
│   │           │   │                       │       ├── McpServerToolDetailVO.java
│   │           │   │                       │       ├── ModelCategoryReq.java
│   │           │   │                       │       ├── OpenResult.java
│   │           │   │                       │       ├── ToolBoxExportVo.java
│   │           │   │                       │       ├── WorkflowErrorModelVo.java
│   │           │   │                       │       ├── WorkflowErrorVo.java
│   │           │   │                       │       ├── WorkflowListVo.java
│   │           │   │                       │       ├── WorkflowModelVo.java
│   │           │   │                       │       ├── WorkflowUserFeedbackErrorVo.java
│   │           │   │                       │       ├── WorkflowVo.java
│   │           │   │                       │       ├── bot/
│   │           │   │                       │       │   ├── SparkBotDto.java
│   │           │   │                       │       │   └── SparkBotSquaerVo.java
│   │           │   │                       │       ├── database/
│   │           │   │                       │       │   ├── DataBaseSearchVo.java
│   │           │   │                       │       │   ├── DatabaseVo.java
│   │           │   │                       │       │   ├── DbTableInfoVo.java
│   │           │   │                       │       │   └── DbTableVo.java
│   │           │   │                       │       ├── eval/
│   │           │   │                       │       │   └── EvalSetVerDataVo.java
│   │           │   │                       │       ├── group/
│   │           │   │                       │       │   ├── DeleteGroupUserVO.java
│   │           │   │                       │       │   ├── GroupTagVO.java
│   │           │   │                       │       │   ├── GroupUserTagVO.java
│   │           │   │                       │       │   └── GroupUserVO.java
│   │           │   │                       │       ├── knowledge/
│   │           │   │                       │       │   ├── RepoVO.java
│   │           │   │                       │       │   └── SparkUploadVo.java
│   │           │   │                       │       ├── model/
│   │           │   │                       │       │   ├── ModelDeployVo.java
│   │           │   │                       │       │   └── ModelFileVo.java
│   │           │   │                       │       ├── openapi/
│   │           │   │                       │       │   └── WorkflowIoTransVo.java
│   │           │   │                       │       ├── repo/
│   │           │   │                       │       │   ├── CreateChunkVO.java
│   │           │   │                       │       │   ├── CreateFolderVO.java
│   │           │   │                       │       │   ├── CreateRepoVO.java
│   │           │   │                       │       │   ├── DealFileVO.java
│   │           │   │                       │       │   ├── DeleteRepoVO.java
│   │           │   │                       │       │   ├── FileStatusVO.java
│   │           │   │                       │       │   ├── KnowledgeQueryVO.java
│   │           │   │                       │       │   ├── KnowledgeVO.java
│   │           │   │                       │       │   └── SparkFileVo.java
│   │           │   │                       │       └── rpa/
│   │           │   │                       │           └── DebugSession.java
│   │           │   │                       ├── handler/
│   │           │   │                       │   ├── KnowledgeV2ServiceCallHandler.java
│   │           │   │                       │   ├── LocalModelHandler.java
│   │           │   │                       │   ├── McpServerHandler.java
│   │           │   │                       │   ├── MySqlJsonHandler.java
│   │           │   │                       │   ├── RpaHandler.java
│   │           │   │                       │   ├── SidManagerHandler.java
│   │           │   │                       │   ├── SparkKnowledgeCallHandler.java
│   │           │   │                       │   ├── ToolServiceCallHandler.java
│   │           │   │                       │   ├── UserInfoManagerHandler.java
│   │           │   │                       │   └── language/
│   │           │   │                       │       └── LanguageContext.java
│   │           │   │                       ├── mapper/
│   │           │   │                       │   ├── BaseModelMapMapper.java
│   │           │   │                       │   ├── CallLogMapper.java
│   │           │   │                       │   ├── ConfigInfoMapper.java
│   │           │   │                       │   ├── bot/
│   │           │   │                       │   │   ├── BotRepoSubscriptMapper.java
│   │           │   │                       │   │   ├── SparkBotMapper.java
│   │           │   │                       │   │   └── UserFavoriteBotMapper.java
│   │           │   │                       │   ├── database/
│   │           │   │                       │   │   ├── DbInfoMapper.java
│   │           │   │                       │   │   ├── DbTableFieldMapper.java
│   │           │   │                       │   │   └── DbTableMapper.java
│   │           │   │                       │   ├── eval/
│   │           │   │                       │   │   ├── EvalSetMapper.java
│   │           │   │                       │   │   ├── EvalSetVerDataMapper.java
│   │           │   │                       │   │   └── EvalSetVerMapper.java
│   │           │   │                       │   ├── group/
│   │           │   │                       │   │   ├── GroupTagMapper.java
│   │           │   │                       │   │   ├── GroupUserMapper.java
│   │           │   │                       │   │   └── GroupVisibilityMapper.java
│   │           │   │                       │   ├── knowledge/
│   │           │   │                       │   │   ├── KnowledgeMapper.java
│   │           │   │                       │   │   └── PreviewKnowledgeMapper.java
│   │           │   │                       │   ├── model/
│   │           │   │                       │   │   ├── ModelCategoryMapper.java
│   │           │   │                       │   │   ├── ModelCommonMapper.java
│   │           │   │                       │   │   ├── ModelCustomCategoryMapper.java
│   │           │   │                       │   │   └── ModelMapper.java
│   │           │   │                       │   ├── node/
│   │           │   │                       │   │   └── TextNodeConfigMapper.java
│   │           │   │                       │   ├── relation/
│   │           │   │                       │   │   ├── BotFlowRelMapper.java
│   │           │   │                       │   │   ├── BotRepoRelMapper.java
│   │           │   │                       │   │   ├── BotToolRelMapper.java
│   │           │   │                       │   │   ├── FlowDbRelMapper.java
│   │           │   │                       │   │   ├── FlowRepoRelMapper.java
│   │           │   │                       │   │   └── FlowToolRelMapper.java
│   │           │   │                       │   ├── repo/
│   │           │   │                       │   │   ├── ExtractKnowledgeTaskMapper.java
│   │           │   │                       │   │   ├── FileDirectoryTreeMapper.java
│   │           │   │                       │   │   ├── FileInfoMapper.java
│   │           │   │                       │   │   ├── FileInfoV2Mapper.java
│   │           │   │                       │   │   ├── HitTestHistoryMapper.java
│   │           │   │                       │   │   ├── RepoMapper.java
│   │           │   │                       │   │   ├── TagInfoV2Mapper.java
│   │           │   │                       │   │   └── UploadDocTaskMapper.java
│   │           │   │                       │   ├── tool/
│   │           │   │                       │   │   ├── RpaInfoMapper.java
│   │           │   │                       │   │   ├── RpaUserAssistantFieldMapper.java
│   │           │   │                       │   │   ├── RpaUserAssistantMapper.java
│   │           │   │                       │   │   ├── ToolBoxFeedbackMapper.java
│   │           │   │                       │   │   ├── ToolBoxMapper.java
│   │           │   │                       │   │   ├── ToolBoxOperateHistoryMapper.java
│   │           │   │                       │   │   └── UserFavoriteToolMapper.java
│   │           │   │                       │   ├── trace/
│   │           │   │                       │   │   ├── ChatInfoMapper.java
│   │           │   │                       │   │   ├── FeedbackInfoMapper.java
│   │           │   │                       │   │   └── NodeInfoMapper.java
│   │           │   │                       │   ├── users/
│   │           │   │                       │   │   └── SystemUserMapper.java
│   │           │   │                       │   └── workflow/
│   │           │   │                       │       ├── FlowProtocolTempMapper.java
│   │           │   │                       │       ├── FlowReleaseAiuiInfoMapper.java
│   │           │   │                       │       ├── FlowReleaseChannelMapper.java
│   │           │   │                       │       ├── McpToolConfigMapper.java
│   │           │   │                       │       ├── PromptTemplateMapper.java
│   │           │   │                       │       ├── WorkflowComparisonMapper.java
│   │           │   │                       │       ├── WorkflowConfigMapper.java
│   │           │   │                       │       ├── WorkflowDialogMapper.java
│   │           │   │                       │       ├── WorkflowFeedbackMapper.java
│   │           │   │                       │       ├── WorkflowMapper.java
│   │           │   │                       │       ├── WorkflowNodeHistoryMapper.java
│   │           │   │                       │       └── WorkflowVersionMapper.java
│   │           │   │                       ├── service/
│   │           │   │                       │   ├── bot/
│   │           │   │                       │   │   ├── BotRepoRelService.java
│   │           │   │                       │   │   ├── BotRepoSubscriptService.java
│   │           │   │                       │   │   ├── BotToolRelService.java
│   │           │   │                       │   │   ├── OpenAiModelProcessService.java
│   │           │   │                       │   │   └── PromptService.java
│   │           │   │                       │   ├── common/
│   │           │   │                       │   │   ├── ConfigInfoService.java
│   │           │   │                       │   │   └── ImageService.java
│   │           │   │                       │   ├── database/
│   │           │   │                       │   │   ├── DBExcelReadListener.java
│   │           │   │                       │   │   ├── DBTableExcelReadListener.java
│   │           │   │                       │   │   └── DatabaseService.java
│   │           │   │                       │   ├── external/
│   │           │   │                       │   │   └── ExternalApiService.java
│   │           │   │                       │   ├── extra/
│   │           │   │                       │   │   ├── AppService.java
│   │           │   │                       │   │   ├── CoreSystemService.java
│   │           │   │                       │   │   └── OpenPlatformService.java
│   │           │   │                       │   ├── group/
│   │           │   │                       │   │   └── GroupVisibilityService.java
│   │           │   │                       │   ├── model/
│   │           │   │                       │   │   ├── LLMService.java
│   │           │   │                       │   │   ├── ModelCategoryService.java
│   │           │   │                       │   │   ├── ModelCommonService.java
│   │           │   │                       │   │   ├── ModelService.java
│   │           │   │                       │   │   └── ShelfModelService.java
│   │           │   │                       │   ├── node/
│   │           │   │                       │   │   └── TextNodeConfigService.java
│   │           │   │                       │   ├── openapi/
│   │           │   │                       │   │   ├── OpenApiService.java
│   │           │   │                       │   │   └── impl/
│   │           │   │                       │   │       └── OpenApiServiceImpl.java
│   │           │   │                       │   ├── repo/
│   │           │   │                       │   │   ├── FileDirectoryTreeService.java
│   │           │   │                       │   │   ├── FileInfoV2Service.java
│   │           │   │                       │   │   ├── HitTestHistoryService.java
│   │           │   │                       │   │   ├── KnowledgeService.java
│   │           │   │                       │   │   ├── MassDatasetInfoService.java
│   │           │   │                       │   │   └── RepoService.java
│   │           │   │                       │   ├── task/
│   │           │   │                       │   │   ├── ExtractKnowledgeTaskService.java
│   │           │   │                       │   │   └── UploadDocTaskService.java
│   │           │   │                       │   ├── tool/
│   │           │   │                       │   │   ├── RpaAssistantService.java
│   │           │   │                       │   │   ├── RpaInfoService.java
│   │           │   │                       │   │   └── ToolBoxService.java
│   │           │   │                       │   └── workflow/
│   │           │   │                       │       ├── TalkAgentService.java
│   │           │   │                       │       ├── VersionService.java
│   │           │   │                       │       ├── WorkflowExportService.java
│   │           │   │                       │       └── WorkflowService.java
│   │           │   │                       ├── sse/
│   │           │   │                       │   ├── WorkflowInnerEventSourceListener.java
│   │           │   │                       │   └── WorkflowSseEventSourceListener.java
│   │           │   │                       ├── task/
│   │           │   │                       │   ├── EmbeddingFileTask.java
│   │           │   │                       │   ├── SliceFileTask.java
│   │           │   │                       │   └── scheduler/
│   │           │   │                       │       └── ModelStatusScheduler.java
│   │           │   │                       ├── tool/
│   │           │   │                       │   ├── CommonTool.java
│   │           │   │                       │   ├── DataPermissionCheckTool.java
│   │           │   │                       │   ├── FileUploadTool.java
│   │           │   │                       │   ├── JsonConverter.java
│   │           │   │                       │   ├── MyThreadTool.java
│   │           │   │                       │   ├── OpenPlatformTool.java
│   │           │   │                       │   ├── UrlCheckTool.java
│   │           │   │                       │   ├── http/
│   │           │   │                       │   │   ├── AssembleParam.java
│   │           │   │                       │   │   ├── HeaderAuthHttpTool.java
│   │           │   │                       │   │   └── HttpAuthTool.java
│   │           │   │                       │   └── spark/
│   │           │   │                       │       ├── MessageBuilder.java
│   │           │   │                       │       └── SparkApiTool.java
│   │           │   │                       ├── util/
│   │           │   │                       │   ├── CsvExportUtil.java
│   │           │   │                       │   ├── JacksonUtil.java
│   │           │   │                       │   ├── ObjectIsNull.java
│   │           │   │                       │   ├── OkHttpUtil.java
│   │           │   │                       │   ├── RedisUtil.java
│   │           │   │                       │   ├── S3Util.java
│   │           │   │                       │   ├── SpringUtils.java
│   │           │   │                       │   ├── URIUtils.java
│   │           │   │                       │   ├── XssSanitizer.java
│   │           │   │                       │   ├── database/
│   │           │   │                       │   │   ├── NamePolicy.java
│   │           │   │                       │   │   └── SqlRenderer.java
│   │           │   │                       │   ├── idata/
│   │           │   │                       │   │   └── RSAUtil.java
│   │           │   │                       │   ├── sid/
│   │           │   │                       │   │   └── SidGenerator2.java
│   │           │   │                       │   └── ssrf/
│   │           │   │                       │       ├── SsrfParamGuard.java
│   │           │   │                       │       ├── SsrfProperties.java
│   │           │   │                       │       └── SsrfValidators.java
│   │           │   │                       └── websocket/
│   │           │   │                           ├── FlowCanvasHoldWebSocketHandler.java
│   │           │   │                           └── WebSocketConfig.java
│   │           │   └── resources/
│   │           │       ├── application-toolkit.yml
│   │           │       ├── mcp-server/
│   │           │       │   ├── iat.json
│   │           │       │   ├── ost.json
│   │           │       │   └── translate.json
│   │           │       └── mybatis/
│   │           │           └── mapper/
│   │           │               └── mysql/
│   │           │                   ├── BotRepoRelMapper.xml
│   │           │                   ├── BotToolRelMapper.xml
│   │           │                   ├── ChatInfoMapper.xml
│   │           │                   ├── ConfigInfoMapper.xml
│   │           │                   ├── DbTableFieldMapper.xml
│   │           │                   ├── DbTableMapper.xml
│   │           │                   ├── FileDirectoryTreeMapper.xml
│   │           │                   ├── FileInfoV2Mapper.xml
│   │           │                   ├── FlowDbRelMapper.xml
│   │           │                   ├── FlowToolRelMapper.xml
│   │           │                   ├── GroupTagMapper.xml
│   │           │                   ├── GroupUserMapper.xml
│   │           │                   ├── GroupVisibilityMapper.xml
│   │           │                   ├── HitTestHistoryMapper.xml
│   │           │                   ├── KnowledgeMapper.xml
│   │           │                   ├── ModelCategoryMapper.xml
│   │           │                   ├── NodeInfoMapper.xml
│   │           │                   ├── PreviewKnowledgeMapper.xml
│   │           │                   ├── RepoMapper.xml
│   │           │                   ├── SparkBotMapper.xml
│   │           │                   ├── SystemUserMapper.xml
│   │           │                   ├── TagInfoV2Mapper.xml
│   │           │                   ├── ToolBoxMapper.xml
│   │           │                   ├── UserFavoriteBotMapper.xml
│   │           │                   ├── UserFavoriteToolMapper.xml
│   │           │                   ├── UserLangChainDataService.xml
│   │           │                   └── WorkflowVersionMapper.xml
│   │           └── test/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── iflytek/
│   │               │           └── astron/
│   │               │               └── console/
│   │               │                   └── toolkit/
│   │               │                       ├── controller/
│   │               │                       │   ├── bot/
│   │               │                       │   │   └── PromptControllerTest.java
│   │               │                       │   ├── common/
│   │               │                       │   │   ├── ConfigInfoControllerTest.java
│   │               │                       │   │   ├── ImageControllerTest.java
│   │               │                       │   │   └── LLMControllerTest.java
│   │               │                       │   ├── knowledge/
│   │               │                       │   │   ├── FileControllerTest.java
│   │               │                       │   │   ├── KnowledgeControllerTest.java
│   │               │                       │   │   └── RepoControllerTest.java
│   │               │                       │   ├── model/
│   │               │                       │   │   └── ModelControllerTest.java
│   │               │                       │   ├── node/
│   │               │                       │   │   └── TextNodeConfigControllerTest.java
│   │               │                       │   └── workflow/
│   │               │                       │       ├── VersionControllerTest.java
│   │               │                       │       └── WorkflowControllerTest.java
│   │               │                       └── service/
│   │               │                           ├── bot/
│   │               │                           │   └── PromptServiceTest.java
│   │               │                           ├── common/
│   │               │                           │   ├── ConfigInfoServiceTest.java
│   │               │                           │   └── ImageServiceTest.java
│   │               │                           ├── extra/
│   │               │                           │   ├── AppServiceTest.java
│   │               │                           │   └── OpenPlatformServiceTest.java
│   │               │                           ├── group/
│   │               │                           │   └── GroupVisibilityServiceTest.java
│   │               │                           ├── knowledge/
│   │               │                           │   ├── FileInfoV2ServiceTest.java
│   │               │                           │   ├── KnowledgeServiceTest.java
│   │               │                           │   └── RepoServiceTest.java
│   │               │                           └── model/
│   │               │                               └── ModelServiceTest.java
│   │               └── resources/
│   │                   ├── application-test.yml
│   │                   └── mcp-servers/
│   │                       └── test-server-1.json
│   └── frontend/
│       ├── .env.development
│       ├── .env.production
│       ├── .env.test
│       ├── .prettierignore
│       ├── .prettierrc
│       ├── CLAUDE.md
│       ├── Dockerfile
│       ├── Dockerfile.dev
│       ├── I18N.md
│       ├── _tests_/
│       │   ├── utils.test.ts
│       │   └── workflow.test.tsx
│       ├── deployment.yml
│       ├── docker-entrypoint.sh
│       ├── eslint.config.js
│       ├── index.html
│       ├── nginx.conf
│       ├── nginx.conf.template
│       ├── package.json
│       ├── postcss.config.js
│       ├── public/
│       │   ├── fonts/
│       │   │   ├── D-DIN-PRO-500-Medium.otf
│       │   │   └── PingFang.ttc
│       │   └── runtime-config.js
│       ├── src/
│       │   ├── app.tsx
│       │   ├── assets/
│       │   │   └── fonts/
│       │   │       ├── Barlow-SemiBoldItalic.otf
│       │   │       └── barlow-emibold-italic.otf
│       │   ├── components/
│       │   │   ├── agent-creation/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── bot-center/
│       │   │   │   └── edit-bot/
│       │   │   │       └── placeholder.ts
│       │   │   ├── button-group/
│       │   │   │   ├── README.md
│       │   │   │   ├── button-group.module.scss
│       │   │   │   ├── button-group.tsx
│       │   │   │   ├── index.ts
│       │   │   │   ├── space-button.module.scss
│       │   │   │   ├── space-button.tsx
│       │   │   │   └── types.ts
│       │   │   ├── combo-modal/
│       │   │   │   ├── combo-config.ts
│       │   │   │   ├── combo-contrast-modal.module.scss
│       │   │   │   ├── combo-contrast-modal.tsx
│       │   │   │   ├── combo-modal.module.scss
│       │   │   │   ├── combo-modal.tsx
│       │   │   │   ├── index.ts
│       │   │   │   └── table-body.tsx
│       │   │   ├── config-page-component/
│       │   │   │   ├── bot-analysis/
│       │   │   │   │   ├── config.ts
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── config-base/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── CapabilityDevelopment.module.scss
│       │   │   │   │   │   ├── CapabilityDevelopment.tsx
│       │   │   │   │   │   └── personality-component/
│       │   │   │   │   │       ├── index.module.scss
│       │   │   │   │   │       ├── index.tsx
│       │   │   │   │   │       ├── personality-detail-modal.tsx
│       │   │   │   │   │       └── personality-library-modal.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   └── types.ts
│       │   │   │   ├── config-header/
│       │   │   │   │   ├── ConfigHeader.module.scss
│       │   │   │   │   └── ConfigHeader.tsx
│       │   │   │   └── config-overview/
│       │   │   │       ├── index.module.scss
│       │   │   │       └── index.tsx
│       │   │   ├── crash-error-component/
│       │   │   │   └── index.tsx
│       │   │   ├── create-application-modal/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── create-key-modal/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── drawer/
│       │   │   │   └── plugin/
│       │   │   │       └── version-management/
│       │   │   │           ├── index.css
│       │   │   │           └── index.tsx
│       │   │   ├── global-markdown/
│       │   │   │   └── index.tsx
│       │   │   ├── header/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── language-switcher/
│       │   │   │   └── index.tsx
│       │   │   ├── loading/
│       │   │   │   └── index.tsx
│       │   │   ├── login-pop/
│       │   │   │   ├── index.tsx
│       │   │   │   └── style.module.scss
│       │   │   ├── make-creation/
│       │   │   │   ├── components/
│       │   │   │   │   └── WorkflowImportModal.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── markdown-render/
│       │   │   │   ├── custom-footnote-plugin.ts
│       │   │   │   └── index.tsx
│       │   │   ├── modal/
│       │   │   │   ├── json-modal/
│       │   │   │   │   ├── index.css
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── more-icons/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-more-icons.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── plugin/
│       │   │   │   │   ├── array-default.tsx
│       │   │   │   │   ├── feedback/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-create-tool.tsx
│       │   │   │   │   │   └── use-tool-debugger.ts
│       │   │   │   │   ├── import/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   └── workflow/
│       │   │   │       └── array-default/
│       │   │   │           ├── hooks/
│       │   │   │           │   ├── use-array-default.tsx
│       │   │   │           │   └── use-columns.tsx
│       │   │   │           └── index.tsx
│       │   │   ├── monaco-editor/
│       │   │   │   ├── JsonMonacoEditor.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   └── json-monaco-editor/
│       │   │   │       └── index.tsx
│       │   │   ├── more-icons/
│       │   │   │   └── index.tsx
│       │   │   ├── plugin/
│       │   │   │   └── PluginContext.tsx
│       │   │   ├── plugin-store/
│       │   │   │   ├── debugger-table.tsx
│       │   │   │   ├── tool-input-parameters-detail.tsx
│       │   │   │   └── tool-output-parameters-detail.tsx
│       │   │   ├── prompt-try/
│       │   │   │   ├── index.tsx
│       │   │   │   ├── input-box.tsx
│       │   │   │   └── message-list.tsx
│       │   │   ├── sidebar/
│       │   │   │   ├── bottom-login/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── control-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── create-button.tsx
│       │   │   │   ├── icon-entry/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   ├── menu-list/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── notice-modal/
│       │   │   │   │   ├── bot-card/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── order-type-display/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── personal-center/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── sidebar-logo/
│       │   │   │       └── index.tsx
│       │   │   ├── sider-container/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── space/
│       │   │   │   ├── add-member-modal/
│       │   │   │   │   ├── config.ts
│       │   │   │   │   ├── cus-check-box/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   ├── selected-user-item/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── user-item/
│       │   │   │   │       ├── index.module.scss
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── delete-space-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── empty/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── leave-space-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── person-space/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── share-space-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-card/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── action-list/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── join-status/
│       │   │   │   │   │       ├── index.module.scss
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-list/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   └── upload-avatar/
│       │   │   │   │       ├── index.module.scss
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── space-search/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-tab/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-table/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-tag/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── transfer-ownership-modal/
│       │   │   │       ├── index.module.scss
│       │   │   │       └── index.tsx
│       │   │   ├── speaker-modal/
│       │   │   │   ├── index.tsx
│       │   │   │   └── voice-training.tsx
│       │   │   ├── svg-icons/
│       │   │   │   ├── index.tsx
│       │   │   │   ├── model.tsx
│       │   │   │   └── space.tsx
│       │   │   ├── table/
│       │   │   │   ├── debugger-table/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-columns.tsx
│       │   │   │   │   │   ├── use-debugger-table.tsx
│       │   │   │   │   │   └── use-render-input.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── tool-input-parameters/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-columns.tsx
│       │   │   │   │   │   └── use-tool-input-parameters.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── tool-input-parameters-detail/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── tool-output-parameters/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-columns.tsx
│       │   │   │   │   │   └── use-table-logic.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   └── tool-output-parameters-detail/
│       │   │   │       └── index.tsx
│       │   │   ├── tailwind-important-examples.tsx
│       │   │   ├── tts-module/
│       │   │   │   └── index.tsx
│       │   │   ├── ui/
│       │   │   │   ├── back/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── btns/
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   ├── primary-btn/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── second-btn/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── empty-state/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── global/
│       │   │   │   │   └── retract-table-input/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   └── table/
│       │   │   │       └── index.tsx
│       │   │   ├── upload-avatar/
│       │   │   │   ├── crop-modal.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   ├── index.tsx
│       │   │   │   └── upload-display.tsx
│       │   │   ├── upload-background/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── virtual-config-modal/
│       │   │   │   ├── component/
│       │   │   │   │   └── iconModal.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── vms-interaction-cmp/
│       │   │   │   └── index.tsx
│       │   │   ├── voice-broadcast/
│       │   │   │   └── index.jsx
│       │   │   ├── workflow/
│       │   │   │   ├── constant/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── drawer/
│       │   │   │   │   ├── advanced-config/
│       │   │   │   │   │   ├── index.tsx
│       │   │   │   │   │   └── opening-remarks.tsx
│       │   │   │   │   ├── chat-debugger/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── chat-content.tsx
│       │   │   │   │   │   │   └── chat-input.tsx
│       │   │   │   │   │   ├── index.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── chat-result/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── code-idea/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── debugger-check/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── node-detail/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── single-node-debugging/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── version-management/
│       │   │   │   │       ├── index.tsx
│       │   │   │   │       └── version-management.css
│       │   │   │   ├── edges/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── hooks/
│       │   │   │   │   ├── use-flow-common.ts
│       │   │   │   │   ├── use-flow-type-render.tsx
│       │   │   │   │   ├── use-if-else-node-compare-operator.tsx
│       │   │   │   │   ├── use-node-common.tsx
│       │   │   │   │   ├── use-one-click-update.tsx
│       │   │   │   │   └── use-variable-memory-handlers.ts
│       │   │   │   ├── icons/
│       │   │   │   │   └── index.ts
│       │   │   │   ├── modal/
│       │   │   │   │   ├── add-flow/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── add-knowledge/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── add-mcp/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── add-plugin/
│       │   │   │   │   │   ├── delete-plugin.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── add-rpa/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── clear-flow-canvas/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── delete-chat-history/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── feedback-dialog/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── flow-edit/
│       │   │   │   │   │   ├── index.tsx
│       │   │   │   │   │   └── more-icons/
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── iterative-amplification/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge-detail/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge-parameter/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge-pro-parameter/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── modal-detail/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── modal-rpa-run/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── node-detail/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── prompt-optimize/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── select-agent-prompt/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── set-default-value/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── nodes/
│       │   │   │   │   ├── agent/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── add-tool/
│       │   │   │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   │   │   ├── knowledge-list.tsx
│       │   │   │   │   │   │   │   │   └── mcp-detail.tsx
│       │   │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   │   └── model-select/
│       │   │   │   │   │   │       └── index.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── code/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── chat-history/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── connection-line/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── exception-handling/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── fixed-inputs/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── fixed-outputs/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── handle/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── inputs/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── model-params/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── model-select/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── node-debugger/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── node-operation/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── outputs/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── remark/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── single-input/
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── database/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── AddDataInputs.tsx
│       │   │   │   │   │   │   ├── CasesInputs.tsx
│       │   │   │   │   │   │   ├── OutputDatabase.tsx
│       │   │   │   │   │   │   ├── QueryField.tsx
│       │   │   │   │   │   │   └── QueryLimit.tsx
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── decision-making/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── end/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── extractor-parameterNode/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   └── OutputParams.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── flow/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── if-else/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   ├── iterator/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   └── flow-container/
│       │   │   │   │   │   │       └── index.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge-pro/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── llm/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── mcp/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── message/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── node-common/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── plugin/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── question-answer/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── answer-settings.tsx
│       │   │   │   │   │   │   ├── fixed-options.tsx
│       │   │   │   │   │   │   └── output-params.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── rpa/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── start/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── text-handle/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── variable-aggregation/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── variable-memory/
│       │   │   │   │       ├── components/
│       │   │   │   │       │   └── inputs.tsx
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── panel/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── store/
│       │   │   │   │   ├── flow-chat-function.ts
│       │   │   │   │   ├── flow-function.ts
│       │   │   │   │   ├── flow-manager-function.ts
│       │   │   │   │   ├── use-chat-store.ts
│       │   │   │   │   ├── use-flow-store.ts
│       │   │   │   │   ├── use-flows-manager.ts
│       │   │   │   │   └── use-iterator-flow-store.ts
│       │   │   │   ├── tips/
│       │   │   │   │   └── select-node/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── types/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── drawer/
│       │   │   │   │   │   ├── advanced-config.ts
│       │   │   │   │   │   ├── chat-debugger.ts
│       │   │   │   │   │   ├── code-idea.ts
│       │   │   │   │   │   ├── index.ts
│       │   │   │   │   │   └── single-node-debugging.ts
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── index.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── modal/
│       │   │   │   │   │   ├── add-flow.ts
│       │   │   │   │   │   ├── add-knowledge.ts
│       │   │   │   │   │   ├── add-mcp.ts
│       │   │   │   │   │   ├── add-plugin.ts
│       │   │   │   │   │   ├── index.ts
│       │   │   │   │   │   ├── iterative-amplification.ts
│       │   │   │   │   │   ├── knowledge-detail.tsx
│       │   │   │   │   │   ├── knowledge-parameter.ts
│       │   │   │   │   │   ├── knowledge-pro-parameter.ts
│       │   │   │   │   │   ├── node-detail.ts
│       │   │   │   │   │   ├── prompt-optimize.ts
│       │   │   │   │   │   ├── select-agent-prompt.ts
│       │   │   │   │   │   └── select-llm-prompt.ts
│       │   │   │   │   ├── nodes/
│       │   │   │   │   │   ├── agent.ts
│       │   │   │   │   │   ├── code.ts
│       │   │   │   │   │   ├── components.ts
│       │   │   │   │   │   ├── database.ts
│       │   │   │   │   │   └── index.ts
│       │   │   │   │   └── zustand/
│       │   │   │   │       ├── chat/
│       │   │   │   │       │   └── index.ts
│       │   │   │   │       ├── flow/
│       │   │   │   │       │   └── index.ts
│       │   │   │   │       └── flowsManager/
│       │   │   │   │           └── index.ts
│       │   │   │   ├── ui/
│       │   │   │   │   ├── flow-cascader.tsx
│       │   │   │   │   ├── flow-collapse.tsx
│       │   │   │   │   ├── flow-input-number.tsx
│       │   │   │   │   ├── flow-input.tsx
│       │   │   │   │   ├── flow-node-input.tsx
│       │   │   │   │   ├── flow-node-textarea.tsx
│       │   │   │   │   ├── flow-select.tsx
│       │   │   │   │   ├── flow-template-editor.tsx
│       │   │   │   │   ├── flow-textarea.tsx
│       │   │   │   │   ├── flow-tree.tsx
│       │   │   │   │   ├── flow-type-cascader.tsx
│       │   │   │   │   ├── flow-upload.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   └── utils/
│       │   │   │       ├── index.ts
│       │   │   │       ├── reactflowUtils.ts
│       │   │   │       └── variable-aggregation.ts
│       │   │   └── wx-modal/
│       │   │       ├── index.module.scss
│       │   │       └── index.tsx
│       │   ├── config/
│       │   │   ├── casdoor.ts
│       │   │   ├── file-icon-config.ts
│       │   │   ├── index.ts
│       │   │   └── monaco-config.ts
│       │   ├── constants/
│       │   │   ├── config.ts
│       │   │   ├── index.ts
│       │   │   └── lottie-react/
│       │   │       ├── chat-loading.json
│       │   │       ├── chatSpeaking.json
│       │   │       ├── jiexi.json
│       │   │       ├── loading.json
│       │   │       ├── mingzhong.json
│       │   │       └── voice.json
│       │   ├── hooks/
│       │   │   ├── index.ts
│       │   │   ├── search-event-bind.ts
│       │   │   ├── use-ant-modal.tsx
│       │   │   ├── use-chat-file-upload.ts
│       │   │   ├── use-chat.ts
│       │   │   ├── use-enterprise.ts
│       │   │   ├── use-image-crop-upload-core.ts
│       │   │   ├── use-image-crop-upload-helpers.ts
│       │   │   ├── use-image-crop-upload.ts
│       │   │   ├── use-login.ts
│       │   │   ├── use-order-data.ts
│       │   │   ├── use-permissions.ts
│       │   │   ├── use-prompt.ts
│       │   │   ├── use-screen-width.ts
│       │   │   ├── use-scrollbar.ts
│       │   │   ├── use-space-type.ts
│       │   │   ├── use-toggle.ts
│       │   │   └── use-user-store.ts
│       │   ├── i18n/
│       │   │   └── index.ts
│       │   ├── layouts/
│       │   │   └── index.tsx
│       │   ├── locales/
│       │   │   ├── README.md
│       │   │   ├── en-En/
│       │   │   │   ├── common.ts
│       │   │   │   ├── database.ts
│       │   │   │   ├── effectEvaluation.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── knowledge.ts
│       │   │   │   ├── mcp.ts
│       │   │   │   ├── model.ts
│       │   │   │   ├── openPlatform-En/
│       │   │   │   │   ├── agentPage.ts
│       │   │   │   │   ├── appManage.ts
│       │   │   │   │   ├── botApi.ts
│       │   │   │   │   ├── chatPage.ts
│       │   │   │   │   ├── comboContrastModal.ts
│       │   │   │   │   ├── commonModal.ts
│       │   │   │   │   ├── configBase.ts
│       │   │   │   │   ├── createAgent.ts
│       │   │   │   │   ├── feedback.ts
│       │   │   │   │   ├── global.ts
│       │   │   │   │   ├── home.ts
│       │   │   │   │   ├── loginModal.ts
│       │   │   │   │   ├── orderManagement.ts
│       │   │   │   │   ├── prompt.ts
│       │   │   │   │   ├── promption.ts
│       │   │   │   │   ├── releaseManagement.ts
│       │   │   │   │   ├── shareModal.ts
│       │   │   │   │   ├── space.ts
│       │   │   │   │   ├── systemMessage.ts
│       │   │   │   │   ├── virtualConfig.ts
│       │   │   │   │   └── vmsInteractionCmp.ts
│       │   │   │   ├── openPlatformEnModule.ts
│       │   │   │   ├── plugin.ts
│       │   │   │   ├── rpa.ts
│       │   │   │   └── workflow.ts
│       │   │   ├── en.js
│       │   │   ├── i18n/
│       │   │   │   └── index.ts
│       │   │   ├── index.ts
│       │   │   ├── localeConfig.ts
│       │   │   ├── zh-ZH/
│       │   │   │   ├── common.ts
│       │   │   │   ├── database.ts
│       │   │   │   ├── effectEvaluation.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── knowledge.ts
│       │   │   │   ├── mcp.ts
│       │   │   │   ├── model.ts
│       │   │   │   ├── openPlatform-ZH/
│       │   │   │   │   ├── agentPage.ts
│       │   │   │   │   ├── appManage.ts
│       │   │   │   │   ├── botApi.ts
│       │   │   │   │   ├── chatPage.ts
│       │   │   │   │   ├── comboContrastModal.ts
│       │   │   │   │   ├── commonModal.ts
│       │   │   │   │   ├── configBase.ts
│       │   │   │   │   ├── createAgent.ts
│       │   │   │   │   ├── feedback.ts
│       │   │   │   │   ├── global.ts
│       │   │   │   │   ├── home.ts
│       │   │   │   │   ├── loginModal.ts
│       │   │   │   │   ├── orderManagement.ts
│       │   │   │   │   ├── prompt.ts
│       │   │   │   │   ├── promption.ts
│       │   │   │   │   ├── releaseManagement.ts
│       │   │   │   │   ├── shareModal.ts
│       │   │   │   │   ├── space.ts
│       │   │   │   │   ├── systemMessage.ts
│       │   │   │   │   ├── virtualConfig.ts
│       │   │   │   │   └── vmsInteractionCmp.ts
│       │   │   │   ├── openPlatformZHModule.ts
│       │   │   │   ├── plugin.ts
│       │   │   │   ├── rpa.ts
│       │   │   │   └── workflow.ts
│       │   │   └── zh.js
│       │   ├── main.tsx
│       │   ├── pages/
│       │   │   ├── bot-api/
│       │   │   │   ├── api.module.scss
│       │   │   │   ├── api.tsx
│       │   │   │   ├── app-list.module.scss
│       │   │   │   └── app-list.tsx
│       │   │   ├── callback/
│       │   │   │   └── index.tsx
│       │   │   ├── chat-page/
│       │   │   │   ├── components/
│       │   │   │   │   ├── audio-animate.tsx
│       │   │   │   │   ├── chat-header.tsx
│       │   │   │   │   ├── chat-input.tsx
│       │   │   │   │   ├── chat-side.tsx
│       │   │   │   │   ├── deep-think-progress.tsx
│       │   │   │   │   ├── delete-modal.tsx
│       │   │   │   │   ├── file-grid-display.tsx
│       │   │   │   │   ├── file-preview.tsx
│       │   │   │   │   ├── message-list.tsx
│       │   │   │   │   ├── multi-upload-buttons.tsx
│       │   │   │   │   ├── recorder-com.tsx
│       │   │   │   │   ├── resq-bottom-buttons.tsx
│       │   │   │   │   ├── source-info-box.tsx
│       │   │   │   │   ├── use-tools-info.tsx
│       │   │   │   │   └── workflow-node-options.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── config-page/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── home-page/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── model-management/
│       │   │   │   ├── components/
│       │   │   │   │   ├── category-aside.tsx
│       │   │   │   │   ├── integer-step.tsx
│       │   │   │   │   ├── modal-component.tsx
│       │   │   │   │   ├── model-card-list.tsx
│       │   │   │   │   ├── model-card.module.scss
│       │   │   │   │   ├── model-card.tsx
│       │   │   │   │   ├── model-management-header.tsx
│       │   │   │   │   ├── model-modal-components.tsx
│       │   │   │   │   ├── model-params-table.tsx
│       │   │   │   │   └── status-tag/
│       │   │   │   │       ├── index.module.scss
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── context/
│       │   │   │   │   └── model-context.tsx
│       │   │   │   ├── hooks/
│       │   │   │   │   ├── use-model-filters.ts
│       │   │   │   │   ├── use-model-initializer.ts
│       │   │   │   │   └── use-model-operations.ts
│       │   │   │   ├── index.tsx
│       │   │   │   ├── model-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── model-config-section.tsx
│       │   │   │   │   │   ├── model-detail-header.tsx
│       │   │   │   │   │   └── model-info-display.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── official-model/
│       │   │   │   │   └── official-model-home.tsx
│       │   │   │   ├── personal-model/
│       │   │   │   │   └── personal-model-home.tsx
│       │   │   │   └── utils/
│       │   │   │       └── provider.ts
│       │   │   ├── plugin-store/
│       │   │   │   ├── components/
│       │   │   │   │   ├── banner/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── category-tabs/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── tool-card/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── toolbar/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── detail/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   └── style.css
│       │   │   ├── release-management/
│       │   │   │   ├── agent-list/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── detail-list-page/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── detail-overview/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   ├── index.tsx
│       │   │   │   ├── released-page/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── trace-logs/
│       │   │   │       ├── CheckModal/
│       │   │   │       │   ├── ContentDisplay/
│       │   │   │       │   │   ├── index.module.scss
│       │   │   │       │   │   └── index.tsx
│       │   │   │       │   ├── TreeNode/
│       │   │   │       │   │   ├── index.module.scss
│       │   │   │       │   │   └── index.tsx
│       │   │   │       │   ├── index.module.scss
│       │   │   │       │   └── index.tsx
│       │   │   │       ├── ExportBtn/
│       │   │   │       │   ├── index.module.scss
│       │   │   │       │   └── index.tsx
│       │   │   │       ├── common/
│       │   │   │       │   └── CopyButton/
│       │   │   │       │       ├── index.module.scss
│       │   │   │       │       └── index.tsx
│       │   │   │       ├── config/
│       │   │   │       │   ├── README.md
│       │   │   │       │   ├── index.ts
│       │   │   │       │   ├── type.d.ts
│       │   │   │       │   └── utils.ts
│       │   │   │       ├── index.module.scss
│       │   │   │       └── index.tsx
│       │   │   ├── resource-management/
│       │   │   │   ├── card-button-group/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── database/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── card-item/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── create-database.tsx
│       │   │   │   │   │   ├── database-grid.tsx
│       │   │   │   │   │   ├── delete-database.tsx
│       │   │   │   │   │   └── import-data-modal.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-database-list.ts
│       │   │   │   │   │   └── use-infinite-scroll.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── database-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── action-buttons.tsx
│       │   │   │   │   │   ├── add-tablerow-modal.tsx
│       │   │   │   │   │   ├── database-sidebar.tsx
│       │   │   │   │   │   ├── main-content.module.scss
│       │   │   │   │   │   ├── main-content.tsx
│       │   │   │   │   │   ├── modal-components.tsx
│       │   │   │   │   │   ├── test-table.module.scss
│       │   │   │   │   │   └── test-table.tsx
│       │   │   │   │   ├── context/
│       │   │   │   │   │   └── database-context.tsx
│       │   │   │   │   ├── database-table-add/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── action-buttons.tsx
│       │   │   │   │   │   │   ├── back-button.tsx
│       │   │   │   │   │   │   ├── database-table.tsx
│       │   │   │   │   │   │   ├── field-actions.tsx
│       │   │   │   │   │   │   └── table-form.tsx
│       │   │   │   │   │   ├── context/
│       │   │   │   │   │   │   └── table-add-context.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   ├── use-table-actions.ts
│       │   │   │   │   │   │   ├── use-table-datasource.ts
│       │   │   │   │   │   │   ├── use-table-field-validation.ts
│       │   │   │   │   │   │   ├── use-table-import-ops.ts
│       │   │   │   │   │   │   ├── use-table-initializer.ts
│       │   │   │   │   │   │   └── use-table-save.ts
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-data-event-handlers.ts
│       │   │   │   │   │   ├── use-data-ops.ts
│       │   │   │   │   │   ├── use-database-actions.ts
│       │   │   │   │   │   ├── use-database-initializer.ts
│       │   │   │   │   │   ├── use-database-ops.ts
│       │   │   │   │   │   ├── use-modal-ops.ts
│       │   │   │   │   │   └── use-table-ops.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   ├── knowledge-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── knowledge-header.tsx
│       │   │   │   │   │   └── knowledge-info.tsx
│       │   │   │   │   ├── document-page/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   └── modal-components.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   ├── use-columns.tsx
│       │   │   │   │   │   │   └── use-document-page.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── file-page/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   └── modal-components.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   └── use-file-page.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── hit-page/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── history-content.tsx
│       │   │   │   │   │   │   └── modal-components.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   └── use-hit-page.ts
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   ├── segmentation-page/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── data-clean.tsx
│       │   │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   │   └── use-data-clean.tsx
│       │   │   │   │   │   │   └── processing-completion.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   └── use-processing-completion.ts
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── setting-page/
│       │   │   │   │       ├── hooks/
│       │   │   │   │       │   └── use-setting-page.ts
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── knowledge-page/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── card-item/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── knowledge-content.tsx
│       │   │   │   │   │   └── modal-component.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-knowledge-page.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── plugin-create/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── plugin-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   └── tool-header.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-tool-header.ts
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   └── setting-page/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── plugin-page/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── card-item/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── modal-component.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-plugin-page.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── resource-empty/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── rpa-detail/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-rpa-detail.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── rpa-page/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── card-item/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── modal-form/
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-rpa-page.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   └── upload-page/
│       │   │   │       ├── components/
│       │   │   │       │   ├── data-clean.tsx
│       │   │   │       │   ├── hooks/
│       │   │   │       │   │   ├── use-config-management.ts
│       │   │   │       │   │   ├── use-data-clean.ts
│       │   │   │       │   │   ├── use-data-operations.ts
│       │   │   │       │   │   ├── use-file-display.ts
│       │   │   │       │   │   ├── use-knowledge-select.ts
│       │   │   │       │   │   ├── use-pagination.ts
│       │   │   │       │   │   └── use-slice-operations.ts
│       │   │   │       │   ├── import-data.tsx
│       │   │   │       │   ├── import-upload.tsx
│       │   │   │       │   ├── processing-completion-info.tsx
│       │   │   │       │   ├── processing-completion.tsx
│       │   │   │       │   ├── upload-header.tsx
│       │   │   │       │   └── utils/
│       │   │   │       │       └── data-clean-utils.ts
│       │   │   │       ├── hooks/
│       │   │   │       │   ├── use-import-data.ts
│       │   │   │       │   └── use-upload-page.ts
│       │   │   │       ├── index.tsx
│       │   │   │       └── utils/
│       │   │   │           └── index.ts
│       │   │   ├── share-page/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── space/
│       │   │   │   ├── config.ts
│       │   │   │   ├── enterprise/
│       │   │   │   │   ├── base-layout/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── config.ts
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   └── page-components/
│       │   │   │   │       ├── member-manage/
│       │   │   │   │       │   ├── components/
│       │   │   │   │       │   │   ├── batch-import/
│       │   │   │   │       │   │   │   ├── config.ts
│       │   │   │   │       │   │   │   ├── index.module.scss
│       │   │   │   │       │   │   │   ├── index.tsx
│       │   │   │   │       │   │   │   └── utils.ts
│       │   │   │   │       │   │   ├── invitation-list/
│       │   │   │   │       │   │   │   └── index.tsx
│       │   │   │   │       │   │   └── member-list/
│       │   │   │   │       │   │       └── index.tsx
│       │   │   │   │       │   ├── index.module.scss
│       │   │   │   │       │   └── index.tsx
│       │   │   │   │       ├── space-manage/
│       │   │   │   │       │   ├── index.module.scss
│       │   │   │   │       │   └── index.tsx
│       │   │   │   │       └── team-settings/
│       │   │   │   │           ├── components/
│       │   │   │   │           │   ├── enterprise-certification-card/
│       │   │   │   │           │   │   ├── index.module.scss
│       │   │   │   │           │   │   └── index.tsx
│       │   │   │   │           │   ├── info-header/
│       │   │   │   │           │   │   ├── index.module.scss
│       │   │   │   │           │   │   └── index.tsx
│       │   │   │   │           │   ├── leave-team-modal/
│       │   │   │   │           │   │   ├── index.module.scss
│       │   │   │   │           │   │   └── index.tsx
│       │   │   │   │           │   ├── team-info/
│       │   │   │   │           │   │   ├── index.module.scss
│       │   │   │   │           │   │   └── index.tsx
│       │   │   │   │           │   └── upload-image/
│       │   │   │   │           │       └── index.tsx
│       │   │   │   │           ├── index.module.scss
│       │   │   │   │           └── index.tsx
│       │   │   │   ├── hooks/
│       │   │   │   │   └── use-space-i18n.ts
│       │   │   │   ├── personal/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   └── personal-space-card/
│       │   │   │   │   │       ├── index.module.scss
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── apply-management/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── detail-header/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── invitation-management/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── member-management/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── space-settings/
│       │   │   │   │   │       ├── index.module.scss
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── team-create/
│       │   │   │       ├── index.module.scss
│       │   │   │       └── index.tsx
│       │   │   ├── space-page/
│       │   │   │   ├── agent-page/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── create-bot/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── delete-bot/
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── index.tsx
│       │   │   └── workflow/
│       │   │       ├── components/
│       │   │       │   ├── btn-groups/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── community-qr-code/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── flow-container/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── flow-drawer/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── flow-header/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── flow-modal/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── multiple-canvases-tip/
│       │   │       │   │   └── index.tsx
│       │   │       │   └── node-list/
│       │   │       │       └── index.tsx
│       │   │       ├── index.tsx
│       │   │       └── workflow-analysis/
│       │   │           └── index.tsx
│       │   ├── permissions/
│       │   │   ├── config/
│       │   │   │   ├── enterprise-permissions.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── route-permissions.ts
│       │   │   │   └── share-permissions.ts
│       │   │   └── utils.ts
│       │   ├── router/
│       │   │   └── index.tsx
│       │   ├── services/
│       │   │   ├── agent-personality.ts
│       │   │   ├── agent-square.ts
│       │   │   ├── agent.ts
│       │   │   ├── api-key.ts
│       │   │   ├── chat.ts
│       │   │   ├── common.ts
│       │   │   ├── database.ts
│       │   │   ├── enterprise-auth-api.ts
│       │   │   ├── enterprise.ts
│       │   │   ├── flow.ts
│       │   │   ├── knowledge.ts
│       │   │   ├── login.ts
│       │   │   ├── model.ts
│       │   │   ├── notification.ts
│       │   │   ├── order.ts
│       │   │   ├── plugin.ts
│       │   │   ├── prompt.ts
│       │   │   ├── release-management.ts
│       │   │   ├── rpa.ts
│       │   │   ├── space.ts
│       │   │   ├── spark-common.ts
│       │   │   ├── square.ts
│       │   │   ├── tool.ts
│       │   │   └── trace.ts
│       │   ├── store/
│       │   │   ├── agent-directive-create.ts
│       │   │   ├── bot-info-store.ts
│       │   │   ├── chat-store.ts
│       │   │   ├── database-store.ts
│       │   │   ├── enterprise-store.ts
│       │   │   ├── global-store.ts
│       │   │   ├── home-store.ts
│       │   │   ├── index.ts
│       │   │   ├── login-store.ts
│       │   │   ├── space-store.ts
│       │   │   ├── spark-store/
│       │   │   │   ├── bot-state.ts
│       │   │   │   ├── locale-store.ts
│       │   │   │   ├── multi-modle-store.ts
│       │   │   │   ├── order-store.ts
│       │   │   │   └── spark-common.ts
│       │   │   ├── user-store.tsx
│       │   │   └── voice-play-store.tsx
│       │   ├── styles/
│       │   │   ├── antd.scss
│       │   │   ├── applies.scss
│       │   │   ├── classes.scss
│       │   │   ├── flow.scss
│       │   │   ├── global.scss
│       │   │   └── ui.scss
│       │   ├── types/
│       │   │   ├── agent-create.ts
│       │   │   ├── agent-square.ts
│       │   │   ├── chat.ts
│       │   │   ├── common.ts
│       │   │   ├── database.ts
│       │   │   ├── global.d.ts
│       │   │   ├── jquery.d.ts
│       │   │   ├── model-extensions.d.ts
│       │   │   ├── model.ts
│       │   │   ├── permission.ts
│       │   │   ├── plugin-store.ts
│       │   │   ├── resource.ts
│       │   │   ├── rpa.ts
│       │   │   ├── space.ts
│       │   │   ├── types-services/
│       │   │   │   └── index.ts
│       │   │   └── typesServices.ts
│       │   └── utils/
│       │       ├── agent-create-utils.ts
│       │       ├── auth.ts
│       │       ├── avatar-sdk-web_3.1.2.1002/
│       │       │   ├── index-OS7Lza_r.js
│       │       │   ├── index.d.ts
│       │       │   ├── index.js
│       │       │   ├── webrtc-player--YuOiwFd.js
│       │       │   └── xrtc-player-BJTnVhG9.js
│       │       ├── chat.ts
│       │       ├── event-bus.ts
│       │       ├── http.ts
│       │       ├── index.ts
│       │       ├── lang.ts
│       │       ├── pattern.ts
│       │       ├── reactflow-utils.ts
│       │       ├── record/
│       │       │   ├── media.js
│       │       │   ├── pcm.js
│       │       │   ├── record.js
│       │       │   ├── recorder-core.js
│       │       │   ├── sampleRate.js
│       │       │   ├── wav.js
│       │       │   └── ws.js
│       │       ├── rpa.ts
│       │       ├── sanitizer.ts
│       │       ├── spark-utils.ts
│       │       ├── tts.ts
│       │       └── utils.ts
│       ├── tailwind.config.js
│       ├── tsconfig.json
│       ├── tsconfig.node.json
│       ├── vite-env.d.ts
│       └── vite.config.js
├── core/
│   ├── agent/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── router.py
│   │   │   ├── schemas/
│   │   │   │   ├── agent_response.py
│   │   │   │   ├── base_inputs.py
│   │   │   │   ├── completion_chunk.py
│   │   │   │   ├── llm_message.py
│   │   │   │   ├── node_trace_patch.py
│   │   │   │   └── workflow_agent_inputs.py
│   │   │   └── v1/
│   │   │       ├── base_api.py
│   │   │       └── workflow_agent.py
│   │   ├── config.env
│   │   ├── domain/
│   │   │   ├── __init__.py
│   │   │   └── models/
│   │   │       └── base.py
│   │   ├── engine/
│   │   │   ├── __init__.py
│   │   │   └── nodes/
│   │   │       ├── __init__.py
│   │   │       ├── base.py
│   │   │       ├── chat/
│   │   │       │   ├── chat_prompt.py
│   │   │       │   └── chat_runner.py
│   │   │       ├── cot/
│   │   │       │   ├── cot_prompt.py
│   │   │       │   └── cot_runner.py
│   │   │       └── cot_process/
│   │   │           ├── cot_process_prompt.py
│   │   │           └── cot_process_runner.py
│   │   ├── exceptions/
│   │   │   ├── __init__.py
│   │   │   ├── agent_exc.py
│   │   │   ├── base.py
│   │   │   ├── codes.py
│   │   │   ├── cot_exc.py
│   │   │   ├── llm_codes.py
│   │   │   ├── middleware_exc.py
│   │   │   └── plugin_exc.py
│   │   ├── infra/
│   │   │   ├── __init__.py
│   │   │   └── app_auth.py
│   │   ├── main.py
│   │   ├── pyproject.toml
│   │   ├── service/
│   │   │   ├── __init__.py
│   │   │   ├── builder/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_builder.py
│   │   │   │   └── workflow_agent_builder.py
│   │   │   ├── plugin/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── knowledge.py
│   │   │   │   ├── link.py
│   │   │   │   ├── mcp.py
│   │   │   │   └── workflow.py
│   │   │   └── runner/
│   │   │       ├── __init__.py
│   │   │       └── workflow_agent_runner.py
│   │   └── tests/
│   │       ├── __init__.py
│   │       ├── test_app_auth.py
│   │       ├── test_base_api.py
│   │       ├── test_base_builder.py
│   │       ├── test_base_inputs.py
│   │       ├── test_base_llm_model.py
│   │       ├── test_knowledge_plugin.py
│   │       ├── test_plugin_base_link_mcp_workflow.py
│   │       ├── test_router_and_schemas.py
│   │       ├── test_runner_base_and_chat_cot.py
│   │       ├── test_workflow_agent.py
│   │       ├── test_workflow_agent_builder.py
│   │       ├── test_workflow_agent_inputs_and_plugin_inputs.py
│   │       └── test_workflow_agent_runner.py
│   ├── common/
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── audit_system/
│   │   │   ├── __init__.py
│   │   │   ├── audit_api/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   └── iflytek/
│   │   │   │       ├── __init__.py
│   │   │   │       └── ifly_audit_api.py
│   │   │   ├── base.py
│   │   │   ├── enums.py
│   │   │   ├── orchestrator.py
│   │   │   ├── strategy/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_strategy.py
│   │   │   │   └── text_strategy.py
│   │   │   └── utils.py
│   │   ├── exceptions/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── codes.py
│   │   │   └── errs.py
│   │   ├── initialize/
│   │   │   └── initialize.py
│   │   ├── ma-sdk.toml
│   │   ├── metrology_auth/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── calc.py
│   │   │   ├── conc.py
│   │   │   ├── config_client.toml.findercache
│   │   │   ├── errors.py
│   │   │   ├── include/
│   │   │   │   └── ma_sdk.h
│   │   │   ├── licc.py
│   │   │   ├── ma-sdk-cfg/
│   │   │   │   ├── config_ma-sdk.toml.findercache
│   │   │   │   └── service_janus_1.0.0.findercache
│   │   │   ├── ma-sdk-default.toml
│   │   │   ├── ma-sdk.cfg.toml
│   │   │   ├── ma-sdk.toml
│   │   │   ├── ma_sdk_linux_x64.h
│   │   │   ├── ma_sdk_macos_arm64.h
│   │   │   ├── ma_sdk_windows.h
│   │   │   └── rep.py
│   │   ├── otlp/
│   │   │   ├── __init__.py
│   │   │   ├── args/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── metric.py
│   │   │   │   ├── node_log.py
│   │   │   │   ├── sid.py
│   │   │   │   └── trace.py
│   │   │   ├── ip.py
│   │   │   ├── log_trace/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── node_log.py
│   │   │   │   ├── node_trace_log.py
│   │   │   │   └── workflow_log.py
│   │   │   ├── metrics/
│   │   │   │   ├── consts.py
│   │   │   │   ├── meter.py
│   │   │   │   └── metric.py
│   │   │   ├── sid.py
│   │   │   └── trace/
│   │   │       ├── span.py
│   │   │       ├── span_instance.py
│   │   │       └── trace.py
│   │   ├── pyproject.toml
│   │   ├── pytest.ini
│   │   ├── run_basic_tests.sh
│   │   ├── run_simple_tests.sh
│   │   ├── run_tests.sh
│   │   ├── service/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── cache/
│   │   │   │   ├── base_cache.py
│   │   │   │   ├── factory.py
│   │   │   │   └── redis_cache.py
│   │   │   ├── db/
│   │   │   │   ├── db_service.py
│   │   │   │   └── factory.py
│   │   │   ├── kafka/
│   │   │   │   ├── factory.py
│   │   │   │   └── kafka_service.py
│   │   │   ├── log/
│   │   │   │   ├── factory.py
│   │   │   │   └── logger_service.py
│   │   │   ├── ma/
│   │   │   │   ├── factory.py
│   │   │   │   └── metrology_auth_service.py
│   │   │   ├── oss/
│   │   │   │   ├── base_oss.py
│   │   │   │   ├── factory.py
│   │   │   │   ├── ifly_storage_gateway_service.py
│   │   │   │   └── s3_service.py
│   │   │   ├── otlp/
│   │   │   │   ├── metric/
│   │   │   │   │   ├── base_metric.py
│   │   │   │   │   ├── factory.py
│   │   │   │   │   └── metric_service.py
│   │   │   │   ├── node_log/
│   │   │   │   │   ├── base_node_log.py
│   │   │   │   │   ├── factory.py
│   │   │   │   │   └── node_log_service.py
│   │   │   │   ├── sid/
│   │   │   │   │   ├── factory.py
│   │   │   │   │   └── sid_service.py
│   │   │   │   └── span/
│   │   │   │       ├── factory.py
│   │   │   │       └── span_service.py
│   │   │   ├── settings/
│   │   │   │   ├── base_settings.py
│   │   │   │   ├── factory.py
│   │   │   │   └── settings_service.py
│   │   │   └── utils.py
│   │   ├── settings/
│   │   │   ├── polaris.py
│   │   │   └── settings.py
│   │   ├── tests/
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── conftest.py
│   │   │   ├── test_audit_system.py
│   │   │   ├── test_exceptions.py
│   │   │   ├── test_json_schema_cn.py
│   │   │   ├── test_json_schema_validator.py
│   │   │   ├── test_main.py
│   │   │   ├── test_metrology_auth.py
│   │   │   ├── test_otlp_args.py
│   │   │   ├── test_otlp_log_trace.py
│   │   │   ├── test_otlp_utils.py
│   │   │   ├── test_service_base.py
│   │   │   ├── test_service_utils.py
│   │   │   ├── test_snowfake.py
│   │   │   └── test_utils.py
│   │   └── utils/
│   │       ├── __init__.py
│   │       ├── hmac_auth.py
│   │       ├── json_schema/
│   │       │   ├── __init__.py
│   │       │   ├── json_schema_cn.py
│   │       │   └── json_schema_validator.py
│   │       └── snowfake.py
│   ├── knowledge/
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   └── v1/
│   │   │       ├── __init__.py
│   │   │       └── api.py
│   │   ├── config.env
│   │   ├── consts/
│   │   │   ├── __init__.py
│   │   │   ├── constants.py
│   │   │   └── error_code.py
│   │   ├── domain/
│   │   │   ├── __init__.py
│   │   │   ├── entity/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── chunk_dto.py
│   │   │   │   └── rag_do.py
│   │   │   └── response.py
│   │   ├── exceptions/
│   │   │   ├── __init__.py
│   │   │   └── exception.py
│   │   ├── infra/
│   │   │   ├── __init__.py
│   │   │   ├── aiui/
│   │   │   │   ├── __init__.py
│   │   │   │   └── aiui.py
│   │   │   ├── desk/
│   │   │   │   ├── __init__.py
│   │   │   │   └── sparkdesk.py
│   │   │   ├── ragflow/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── ragflow_client.py
│   │   │   │   └── ragflow_utils.py
│   │   │   └── xinghuo/
│   │   │       ├── __init__.py
│   │   │       └── xinghuo.py
│   │   ├── llm/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   └── openai_llm.py
│   │   ├── main.py
│   │   ├── pyproject.toml
│   │   ├── service/
│   │   │   ├── __init__.py
│   │   │   ├── impl/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── aiui_strategy.py
│   │   │   │   ├── cbg_strategy.py
│   │   │   │   ├── ragflow_strategy.py
│   │   │   │   └── sparkdesk_strategy.py
│   │   │   ├── rag_strategy.py
│   │   │   ├── rag_strategy_factory.py
│   │   │   └── rq/
│   │   │       ├── __init__.py
│   │   │       └── rewrite_query.py
│   │   ├── tests/
│   │   │   ├── __init__.py
│   │   │   ├── domain/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── entity/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── chunk_dto_test.py
│   │   │   │   │   └── rag_do_test.py
│   │   │   │   └── response_test.py
│   │   │   ├── exceptions/
│   │   │   │   ├── __init__.py
│   │   │   │   └── exception_test.py
│   │   │   ├── infra/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── aiui/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── aiui_test.py
│   │   │   │   ├── desk/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── sparkdesk_test.py
│   │   │   │   ├── ragflow/
│   │   │   │   │   └── __init__.py
│   │   │   │   └── xinghuo/
│   │   │   │       ├── __init__.py
│   │   │   │       └── xinghuo_test.py
│   │   │   └── service/
│   │   │       ├── __init__.py
│   │   │       └── impl/
│   │   │           ├── __init__.py
│   │   │           ├── aiui_strategy_test.py
│   │   │           ├── cbg_strategy_test.py
│   │   │           ├── ragflow_strategy_test.py
│   │   │           └── sparkdesk_strategy_test.py
│   │   └── utils/
│   │       ├── __init__.py
│   │       ├── file_utils.py
│   │       ├── spark_signature.py
│   │       └── verification.py
│   ├── memory/
│   │   ├── __init__.py
│   │   └── database/
│   │       ├── .gitignore
│   │       ├── Dockerfile
│   │       ├── README.md
│   │       ├── __init__.py
│   │       ├── alembic/
│   │       │   ├── README.md
│   │       │   ├── alembic.ini
│   │       │   ├── env.py
│   │       │   ├── script.py.mako
│   │       │   └── versions/
│   │       │       └── 2026_02_11_1801-f2a4ce6e3198_init.py
│   │       ├── api/
│   │       │   ├── __init__.py
│   │       │   ├── router.py
│   │       │   ├── schemas/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── clone_db_types.py
│   │       │   │   ├── common_types.py
│   │       │   │   ├── create_db_types.py
│   │       │   │   ├── drop_db_types.py
│   │       │   │   ├── exec_ddl_types.py
│   │       │   │   ├── exec_dml_types.py
│   │       │   │   ├── export_data_types.py
│   │       │   │   ├── modify_db_desc_types.py
│   │       │   │   └── upload_data_types.py
│   │       │   └── v1/
│   │       │       ├── __init__.py
│   │       │       ├── common.py
│   │       │       ├── db_operator.py
│   │       │       ├── exec_ddl.py
│   │       │       ├── exec_dml.py
│   │       │       ├── export_data.py
│   │       │       └── upload_data.py
│   │       ├── config.env
│   │       ├── consts/
│   │       │   └── consts.py
│   │       ├── domain/
│   │       │   ├── __init__.py
│   │       │   ├── entity/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── database_meta.py
│   │       │   │   ├── general.py
│   │       │   │   ├── schema.py
│   │       │   │   ├── schema_meta.py
│   │       │   │   └── views/
│   │       │   │       ├── __init__.py
│   │       │   │       └── http_resp.py
│   │       │   └── models/
│   │       │       ├── __init__.py
│   │       │       ├── base.py
│   │       │       ├── database_meta.py
│   │       │       └── schema_meta.py
│   │       ├── exceptions/
│   │       │   ├── e.py
│   │       │   └── error_code.py
│   │       ├── main.py
│   │       ├── pyproject.toml
│   │       ├── repository/
│   │       │   ├── __init__.py
│   │       │   └── middleware/
│   │       │       ├── __init__.py
│   │       │       ├── base.py
│   │       │       ├── database/
│   │       │       │   ├── __init__.py
│   │       │       │   ├── database_migration.py
│   │       │       │   ├── db_factory.py
│   │       │       │   └── db_manager.py
│   │       │       ├── factory.py
│   │       │       ├── getters.py
│   │       │       ├── initialize.py
│   │       │       ├── manager.py
│   │       │       └── mid_utils.py
│   │       ├── tests/
│   │       │   ├── __init__.py
│   │       │   ├── common_test.py
│   │       │   ├── db_operator_test.py
│   │       │   ├── exec_ddl_test.py
│   │       │   ├── exec_dml_test.py
│   │       │   ├── export_data_test.py
│   │       │   └── upload_data_test.py
│   │       └── utils/
│   │           ├── __init__.py
│   │           ├── exception_util.py
│   │           └── retry.py
│   ├── plugin/
│   │   ├── __init__.py
│   │   ├── aitools/
│   │   │   ├── .gitignore
│   │   │   ├── Dockerfile
│   │   │   ├── __init__.py
│   │   │   ├── api/
│   │   │   │   ├── decorators/
│   │   │   │   │   ├── api_meta.py
│   │   │   │   │   └── api_service.py
│   │   │   │   ├── middlewares/
│   │   │   │   │   └── otlp_middleware.py
│   │   │   │   ├── routes/
│   │   │   │   │   ├── endpoint_factory.py
│   │   │   │   │   ├── register.py
│   │   │   │   │   └── service_scanner.py
│   │   │   │   └── schemas/
│   │   │   │       └── types.py
│   │   │   ├── app/
│   │   │   │   └── start_server.py
│   │   │   ├── common/
│   │   │   │   ├── clients/
│   │   │   │   │   ├── adapters.py
│   │   │   │   │   ├── aiohttp_client.py
│   │   │   │   │   ├── hooks.py
│   │   │   │   │   ├── task_factory.py
│   │   │   │   │   └── websockets_client.py
│   │   │   │   ├── exceptions/
│   │   │   │   │   ├── error/
│   │   │   │   │   │   └── code_enums.py
│   │   │   │   │   └── exceptions.py
│   │   │   │   └── log/
│   │   │   │       └── logger.py
│   │   │   ├── config.env
│   │   │   ├── conftest.py
│   │   │   ├── const/
│   │   │   │   └── const.py
│   │   │   ├── main.py
│   │   │   ├── pyproject.toml
│   │   │   ├── pytest.ini
│   │   │   ├── service/
│   │   │   │   ├── ase_image_generator/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── req_ase_ability_image_generate_service.py
│   │   │   │   ├── dial_test/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── dial_test.py
│   │   │   │   │   └── dial_test_client.py
│   │   │   │   ├── image_understanding/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── image_understanding_service.py
│   │   │   │   ├── ise/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── ise_client.py
│   │   │   │   │   └── ise_evaluate_service.py
│   │   │   │   ├── ocr_llm/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── req_ase_ability_ocr_service.py
│   │   │   │   ├── smart_tts/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── smart_tts_service.py
│   │   │   │   └── translation/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── translation_client.py
│   │   │   │       └── translation_service.py
│   │   │   ├── tests/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── api/
│   │   │   │   │   ├── decorators/
│   │   │   │   │   │   ├── test_api_meta.py
│   │   │   │   │   │   └── test_api_service.py
│   │   │   │   │   ├── routes/
│   │   │   │   │   │   ├── test_endpoint_factory.py
│   │   │   │   │   │   └── test_service_scanner.py
│   │   │   │   │   ├── schemas/
│   │   │   │   │   │   └── test_types.py
│   │   │   │   │   └── test_api.py
│   │   │   │   ├── app/
│   │   │   │   │   ├── test_main.py
│   │   │   │   │   └── test_start_server.py
│   │   │   │   ├── common/
│   │   │   │   │   ├── clients/
│   │   │   │   │   │   ├── test_adapters.py
│   │   │   │   │   │   ├── test_hooks.py
│   │   │   │   │   │   ├── test_http_client.py
│   │   │   │   │   │   ├── test_task_factory.py
│   │   │   │   │   │   └── test_websocket_client.py
│   │   │   │   │   ├── exceptions/
│   │   │   │   │   │   ├── test_code_enums.py
│   │   │   │   │   │   └── test_exceptions.py
│   │   │   │   │   └── log/
│   │   │   │   │       └── test_logger.py
│   │   │   │   ├── const/
│   │   │   │   │   └── test_const.py
│   │   │   │   └── utils/
│   │   │   │       ├── test_aiokafka_factory.py
│   │   │   │       ├── test_aiokafka_service.py
│   │   │   │       ├── test_aitools_service_manager.py
│   │   │   │       ├── test_config_utils.py
│   │   │   │       ├── test_env_utils.py
│   │   │   │       └── test_otlp_utils.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── aiokafka_factory.py
│   │   │       ├── aiokafka_service.py
│   │   │       ├── config_utils.py
│   │   │       ├── env_utils.py
│   │   │       ├── initialize.py
│   │   │       ├── oss_utils.py
│   │   │       └── otlp_utils.py
│   │   ├── link/
│   │   │   ├── .gitignore
│   │   │   ├── Dockerfile
│   │   │   ├── __init__.py
│   │   │   ├── alembic/
│   │   │   │   ├── README
│   │   │   │   ├── env.py
│   │   │   │   ├── script.py.mako
│   │   │   │   └── versions/
│   │   │   │       └── 2026_03_06_0257-5c4f1b5ab83d_init.py
│   │   │   ├── alembic.ini
│   │   │   ├── api/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── router.py
│   │   │   │   ├── schemas/
│   │   │   │   │   ├── community/
│   │   │   │   │   │   ├── deprecated/
│   │   │   │   │   │   │   └── management_schema.py
│   │   │   │   │   │   └── tools/
│   │   │   │   │   │       ├── http/
│   │   │   │   │   │       │   ├── execution_schema.py
│   │   │   │   │   │       │   └── management_schema.py
│   │   │   │   │   │       └── mcp/
│   │   │   │   │   │           └── mcp_tools_schema.py
│   │   │   │   │   └── enterprise/
│   │   │   │   │       └── extension_schema.py
│   │   │   │   └── v1/
│   │   │   │       ├── community/
│   │   │   │       │   ├── deprecated/
│   │   │   │       │   │   └── management.py
│   │   │   │       │   └── tools/
│   │   │   │       │       ├── http/
│   │   │   │       │       │   ├── execution.py
│   │   │   │       │       │   └── management.py
│   │   │   │       │       └── mcp/
│   │   │   │       │           └── mcp_tools.py
│   │   │   │       └── enterprise/
│   │   │   │           └── extension.py
│   │   │   ├── app/
│   │   │   │   ├── __init__.py
│   │   │   │   └── start_server.py
│   │   │   ├── config.env
│   │   │   ├── consts/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── const.py
│   │   │   │   └── keys/
│   │   │   │       ├── common_keys.py
│   │   │   │       ├── mysql_keys.py
│   │   │   │       ├── redis_keys.py
│   │   │   │       ├── spark_keys.py
│   │   │   │       ├── uvicorn_keys.py
│   │   │   │       └── xc_utils_keys.py
│   │   │   ├── domain/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── entity/
│   │   │   │   │   └── tool_schema.py
│   │   │   │   └── models/
│   │   │   │       ├── manager.py
│   │   │   │       └── utils.py
│   │   │   ├── exceptions/
│   │   │   │   ├── __init__.py
│   │   │   │   └── sparklink_exceptions.py
│   │   │   ├── extensions/
│   │   │   │   ├── __init__.py
│   │   │   │   └── database_migration.py
│   │   │   ├── infra/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── kafka_telemetry.py
│   │   │   │   ├── tool_crud/
│   │   │   │   │   └── process.py
│   │   │   │   └── tool_exector/
│   │   │   │       ├── http_auth.py
│   │   │   │       └── process.py
│   │   │   ├── main.py
│   │   │   ├── pyproject.toml
│   │   │   ├── pytest.ini
│   │   │   ├── service/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── community/
│   │   │   │   │   ├── deprecated/
│   │   │   │   │   │   └── management_server.py
│   │   │   │   │   └── tools/
│   │   │   │   │       ├── http/
│   │   │   │   │       │   ├── execution_server.py
│   │   │   │   │       │   └── management_server.py
│   │   │   │   │       └── mcp/
│   │   │   │   │           └── mcp_server.py
│   │   │   │   └── enterprise/
│   │   │   │       └── extension.py
│   │   │   ├── tests/
│   │   │   │   ├── FINAL_STATUS.md
│   │   │   │   ├── IMPLEMENTATION_STATUS.md
│   │   │   │   ├── README.md
│   │   │   │   ├── SUMMARY.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── conftest.py
│   │   │   │   ├── integration/
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── test_runner.py
│   │   │   │   └── unit/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── test_alembic_migration.py
│   │   │   │       ├── test_domain_models.py
│   │   │   │       ├── test_infra.py
│   │   │   │       ├── test_infra_fixed.py
│   │   │   │       ├── test_main.py
│   │   │   │       ├── test_response_filter.py
│   │   │   │       ├── test_schemas.py
│   │   │   │       ├── test_schemas_fixed.py
│   │   │   │       ├── test_services.py
│   │   │   │       └── test_utils.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── errors/
│   │   │       │   └── code.py
│   │   │       ├── json_schemas/
│   │   │       │   ├── read_json_schemas.py
│   │   │       │   ├── schema_files/
│   │   │       │   │   ├── action_run_schema.json
│   │   │       │   │   ├── create_tools_schema.json
│   │   │       │   │   ├── http_run_schema.json
│   │   │       │   │   ├── mcp_register_schema.json
│   │   │       │   │   ├── tool_debug_schema.json
│   │   │       │   │   └── update_tools_schema.json
│   │   │       │   └── schema_validate.py
│   │   │       ├── log/
│   │   │       │   └── logger.py
│   │   │       ├── open_api_schema/
│   │   │       │   ├── common_schema.py
│   │   │       │   ├── response_filter.py
│   │   │       │   ├── schema_parser.py
│   │   │       │   ├── schema_validate.py
│   │   │       │   └── types/
│   │   │       │       └── schema_parser_types.py
│   │   │       ├── security/
│   │   │       │   └── access_interceptor.py
│   │   │       ├── sid/
│   │   │       │   └── sid_generator2.py
│   │   │       ├── snowflake/
│   │   │       │   └── gen_snowflake.py
│   │   │       └── uid/
│   │   │           └── generate_uid.py
│   │   └── rpa/
│   │       ├── .flake8
│   │       ├── .gitignore
│   │       ├── Dockerfile
│   │       ├── __init__.py
│   │       ├── api/
│   │       │   ├── __init__.py
│   │       │   ├── app.py
│   │       │   ├── router.py
│   │       │   ├── schemas/
│   │       │   │   └── execution_schema.py
│   │       │   └── v1/
│   │       │       ├── execution.py
│   │       │       └── health_check.py
│   │       ├── config.env
│   │       ├── consts/
│   │       │   ├── __init__.py
│   │       │   ├── app/
│   │       │   │   └── app_keys.py
│   │       │   ├── const.py
│   │       │   ├── log/
│   │       │   │   └── log_keys.py
│   │       │   ├── otlp/
│   │       │   │   └── otlp_keys.py
│   │       │   └── rpa/
│   │       │       └── rpa_keys.py
│   │       ├── doc/
│   │       │   ├── API_EXAMPLES.md
│   │       │   ├── DEPLOYMENT.md
│   │       │   └── TEST_SUMMARY.md
│   │       ├── errors/
│   │       │   ├── __init__.py
│   │       │   └── error_code.py
│   │       ├── exceptions/
│   │       │   ├── __init__.py
│   │       │   └── config_exceptions.py
│   │       ├── infra/
│   │       │   ├── __init__.py
│   │       │   └── xiaowu/
│   │       │       └── tasks.py
│   │       ├── main.py
│   │       ├── pyproject.toml
│   │       ├── run_tests.py
│   │       ├── service/
│   │       │   ├── __init__.py
│   │       │   └── xiaowu/
│   │       │       └── process.py
│   │       ├── tests/
│   │       │   ├── README.md
│   │       │   ├── __init__.py
│   │       │   ├── conftest.py
│   │       │   ├── integration/
│   │       │   │   ├── __init__.py
│   │       │   │   └── test_api_integration.py
│   │       │   ├── test_runner.py
│   │       │   └── unit/
│   │       │       ├── __init__.py
│   │       │       ├── api/
│   │       │       │   ├── schemas/
│   │       │       │   │   └── test_execution_schema.py
│   │       │       │   ├── test_app.py
│   │       │       │   ├── test_router.py
│   │       │       │   └── v1/
│   │       │       │       ├── test_execution.py
│   │       │       │       └── test_health_check.py
│   │       │       ├── consts/
│   │       │       │   └── test_const.py
│   │       │       ├── errors/
│   │       │       │   └── test_error_code.py
│   │       │       ├── exceptions/
│   │       │       │   └── test_config_exceptions.py
│   │       │       ├── infra/
│   │       │       │   └── xiaowu/
│   │       │       │       └── test_tasks.py
│   │       │       ├── service/
│   │       │       │   └── xiaowu/
│   │       │       │       └── test_process.py
│   │       │       ├── test_main.py
│   │       │       └── utils/
│   │       │           ├── log/
│   │       │           │   └── test_logger.py
│   │       │           └── urls/
│   │       │               └── test_url_util.py
│   │       └── utils/
│   │           ├── __init__.py
│   │           ├── log/
│   │           │   └── logger.py
│   │           └── urls/
│   │               └── url_util.py
│   ├── tenant/
│   │   ├── .gitkeep
│   │   ├── Dockerfile
│   │   ├── app/
│   │   │   └── server.go
│   │   ├── config/
│   │   │   ├── config.go
│   │   │   ├── config_test.go
│   │   │   ├── env_loader.go
│   │   │   ├── env_loader_test.go
│   │   │   ├── loader.go
│   │   │   ├── loader_test.go
│   │   │   ├── local_loader.go
│   │   │   └── local_loader_test.go
│   │   ├── config.toml
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── internal/
│   │   │   ├── dao/
│   │   │   │   ├── app_dao.go
│   │   │   │   ├── app_dao_test.go
│   │   │   │   ├── auth_dao.go
│   │   │   │   ├── auth_dao_test.go
│   │   │   │   ├── base.go
│   │   │   │   └── base_test.go
│   │   │   ├── handler/
│   │   │   │   ├── app_handler.go
│   │   │   │   ├── app_handler_test.go
│   │   │   │   ├── auth_handler.go
│   │   │   │   ├── auth_handler_test.go
│   │   │   │   ├── errors.go
│   │   │   │   ├── errors_test.go
│   │   │   │   ├── req.go
│   │   │   │   ├── req_test.go
│   │   │   │   ├── resp.go
│   │   │   │   ├── resp_test.go
│   │   │   │   ├── router.go
│   │   │   │   └── router_test.go
│   │   │   ├──

================================================
FILE CONTENTS
================================================

================================================
FILE: .gemini/config.yaml
================================================
# https://developers.google.com/gemini-code-assist/docs/customize-gemini-behavior-github
have_fun: false  # Just review the code
code_review:
  comment_severity_threshold: HIGH  # Reduce quantity of comments
  pull_request_opened:
    summary: false  # Don't summarize the PR in a separate comment


================================================
FILE: .gitattributes
================================================
# Shell scripts must always use LF line endings
*.sh text eol=lf

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
---
name: "🐞 Bug Report"
description: Report a bug to help us improve
title: "[BUG] "
labels:
  - bug
assignees: []
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to share an issue. Please fill out every section so we can reproduce and fix the problem quickly.
  - type: textarea
    id: bug-description
    attributes:
      label: Bug Description
      description: Briefly describe what went wrong.
      placeholder: A concise summary of the bug and any supporting details.
    validations:
      required: true
  - type: dropdown
    id: severity
    attributes:
      label: Severity Level
      description: How badly does this bug impact you?
      options:
        - Critical - system crash, data loss, or security issue
        - High - major feature broken, significant impact
        - Medium - partial feature break, workaround exists
        - Low - minor or cosmetic issue
  - type: dropdown
    id: reproduction-rate
    attributes:
      label: Reproduction Rate
      description: How often do you see the issue?
      options:
        - Always (100%)
        - Often (>50%)
        - Sometimes (<50%)
        - Rarely (<10%)
  - type: checkboxes
    id: component
    attributes:
      label: Component / Module
      description: Select the areas that are affected.
      options:
        - label: Core Agent
        - label: API
        - label: UI / Frontend
        - label: Documentation
        - label: Installation / Setup
        - label: Other (describe below)
  - type: textarea
    id: steps-to-reproduce
    attributes:
      label: Steps to Reproduce
      description: Provide each step required to trigger the issue.
      placeholder: |
        1. Go to ...
        2. Click ...
        3. See error ...
    validations:
      required: true
  - type: textarea
    id: expected-vs-actual
    attributes:
      label: Expected vs Actual Behavior
      description: Tell us what you expected to happen and what actually happened instead.
      placeholder: |
        **Expected:** ...
        **Actual:** ...
      render: markdown
    validations:
      required: true
  - type: textarea
    id: environment
    attributes:
      label: Environment
      description: List the versions, OS, deployment method, browser, and Docker info used when reproducing the issue.
      placeholder: |
        - Astron Agent Version:
        - OS:
        - Deployment (Docker Compose, Source, etc.):
        - Browser (if applicable):
        - Docker image info: output of `docker images --digests | grep astron-agent`
      render: markdown
    validations:
      required: true
  - type: textarea
    id: impact
    attributes:
      label: Impact
      description: Who or what is affected by this bug?
  - type: textarea
    id: logs
    attributes:
      label: Logs / Screenshots
      description: Paste relevant logs or drag-and-drop screenshots.
      render: shell
  - type: textarea
    id: possible-fix
    attributes:
      label: Possible Fix
      description: Optional ideas for how to resolve the issue.


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: 💬 Discussions
    url: https://github.com/iflytek/astron-agent/discussions
    about: Ask questions and discuss ideas with the community

================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
---
name: "✨ Feature Request"
description: Suggest an improvement or new capability for the project
title: "[FEATURE] "
labels:
  - enhancement
body:
  - type: markdown
    attributes:
      value: |
        Thank you for proposing a feature! Please complete every required section so we can evaluate and plan effectively.
  - type: textarea
    id: feature-description
    attributes:
      label: Feature Description
      description: Briefly describe the feature or change you would like to see.
      placeholder: Provide a concise summary of the capability you are requesting.
    validations:
      required: true
  - type: textarea
    id: use-case
    attributes:
      label: Use Case
      description: Explain the specific scenario or workflow this feature will support.
      placeholder: Describe who needs this feature, what they are trying to do, and why current behavior is insufficient.
    validations:
      required: true
  - type: dropdown
    id: priority-level
    attributes:
      label: Priority Level
      description: How urgent or impactful is this request?
      options:
        - High — Critical for users, blocking workflows
        - Medium — Important improvement, enhances experience
        - Low — Nice to have or incremental improvement
  - type: checkboxes
    id: feature-category
    attributes:
      label: Feature Category
      description: Select all relevant areas.
      options:
        - label: Core Functionality
        - label: API / Backend
        - label: UI / UX
        - label: Developer Experience
        - label: Performance
        - label: Security
        - label: Documentation
        - label: Other (explain below)
  - type: textarea
    id: proposed-solution
    attributes:
      label: Proposed Solution
      description: Share any ideas, designs, or implementation thoughts.
      placeholder: Optional sketches, pseudo-code, or bullet points describing the approach.
  - type: textarea
    id: success-criteria
    attributes:
      label: Success Criteria
      description: List measurable outcomes for this feature.
      placeholder: Bullet points describing what success looks like.
  - type: textarea
    id: additional-context
    attributes:
      label: Additional Context
      description: Add references, screenshots, mockups, or related issues.


================================================
FILE: .github/ISSUE_TEMPLATE/general_issue.yml
================================================
---
name: "💬 General Issue"
description: Questions, documentation gaps, performance topics, or other general discussions
title: "[GENERAL] "
labels:
  - question
body:
  - type: markdown
    attributes:
      value: |
        Please provide enough detail so we can reproduce, investigate, or answer efficiently. Required sections are marked with *.
  - type: dropdown
    id: issue-type
    attributes:
      label: Issue Type *
      description: Select the option that best matches your topic.
      options:
        - Question / Help
        - Documentation Improvement
        - Performance Issue
        - Installation / Setup
        - Configuration
        - Usage Guidance
        - Integration
        - Maintenance / Cleanup
        - Discussion / RFC
        - Other
    validations:
      required: true
  - type: dropdown
    id: urgency-level
    attributes:
      label: Urgency Level
      description: Let us know how time-sensitive this is.
      options:
        - Urgent — Blocking production or critical workflow
        - High — Affects multiple users, needs attention soon
        - Medium — Important but not urgent
        - Low — Nice to resolve when possible
  - type: textarea
    id: description
    attributes:
      label: Description *
      description: Provide a clear explanation of your question, request, or issue.
      placeholder: Include background, what you have tried, and any relevant commands or logs.
    validations:
      required: true
  - type: checkboxes
    id: affected-component
    attributes:
      label: Affected Component
      description: Select all components involved, if known.
      options:
        - label: Core Agent
        - label: API / Backend
        - label: Frontend / UI
        - label: Documentation
        - label: CI / CD
        - label: Development Environment
        - label: Deployment
        - label: Dependencies
        - label: Not Sure
  - type: textarea
    id: environment
    attributes:
      label: Environment *
      description: Share versions, OS, deployment method, browser, or other context needed to understand the issue.
      placeholder: |
        - Version:
        - OS:
        - Deployment method:
        - Browser / CLI / Tooling details:
    validations:
      required: true
  - type: textarea
    id: expected-outcome
    attributes:
      label: Expected Outcome
      description: Tell us what you hope to achieve or learn.
  - type: textarea
    id: additional-context
    attributes:
      label: Additional Context
      description: Add logs, screenshots, links, or anything else that helps us help you.


================================================
FILE: .github/code_of_conduct.md
================================================

# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [INSERT CONTACT METHOD]. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of actions.

**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior,  harassment of an individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].

Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations



================================================
FILE: .github/code_owners
================================================
* @scguoi @wowo_zZ @shuanchengtang @hellovigoss

/console/backend @abelzha @vsxd @yun-zhi-ztl @cherrywooo @mingsuiyongheng @likes1234-bro @Omuigix @BillorBear @zyzy0116
/console/frontend @slqcode @wq457 @woicw @ah-wq @ssyamv @hant1 @lantianhemao @snoopyYang

/core/agent @dm57 @byliu
/core/common @dm57
/core/knowledge @zhubin4615
/core/memory @sharphu @hygao1024
/core/plugin @MacGe @Alex-Smith-1234 @Laevata1n
/core/tenant @chenjian01
/core/workflow @Kexinist @hygao1024

================================================
FILE: .github/pull_request_template.md
================================================
## Summary
<!-- Brief description of what this PR does -->

## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
- [ ] Refactoring

## Related Issue
<!-- Closes #123 or Fixes #456 -->

## Changes
<!-- Key changes made in this PR -->
-

## Testing
<!-- How these changes were tested -->
- [ ] Existing tests pass
- [ ] New tests added (if applicable)
- [ ] Manual testing completed

## Screenshots (if applicable)
<!-- Add screenshots for UI changes -->

## Checklist
- [ ] Code follows project coding standards
- [ ] Self-review completed
- [ ] Documentation updated (if needed)
- [ ] Breaking changes documented


================================================
FILE: .github/quality-requirements/branch-commit-standards-zh.md
================================================
# 分支与提交规范

本文档定义了项目的分支管理和提交消息规范,确保团队协作的一致性和代码质量。

## 分支管理规范

### 分支类型

| 分支类型 | 命名格式 | 用途 | 示例 |
|---------|---------|------|------|
| **主分支** | `main` | 生产环境代码 | `main` |
| **开发分支** | `develop` | 开发集成分支 | `develop` |
| **功能分支** | `feature/功能名` | 新功能开发 | `feature/user-login` |
| **修复分支** | `bugfix/问题名` | Bug修复 | `bugfix/auth-error` |
| **热修复分支** | `hotfix/补丁名` | 紧急修复 | `hotfix/security-patch` |
| **设计分支** | `design/设计名` | UI/UX优化 | `design/mobile-layout` |
| **重构分支** | `refactor/重构名` | 代码重构 | `refactor/user-service` |
| **测试分支** | `test/测试名` | 测试开发 | `test/integration-tests` |
| **文档分支** | `doc/文档名` | 文档更新 | `doc/api-guide` |

### 分支创建命令

```bash
# 使用Makefile命令创建规范分支
make new-feature name=user-login      # 创建功能分支
make new-bugfix name=auth-error       # 创建修复分支
make new-hotfix name=security-patch   # 创建热修复分支
make new-design name=mobile-layout    # 创建设计分支

# 手动创建分支
git checkout -b feature/user-login
git checkout -b bugfix/auth-error
git checkout -b hotfix/security-patch
```

### 分支工作流

```bash
# 1. 从main分支创建功能分支
git checkout main
git pull origin main
git checkout -b feature/user-login

# 2. 开发完成后合并到develop
git checkout develop
git merge feature/user-login
git push origin develop

# 3. 通过Pull Request合并到main
# 在GitHub上创建PR: develop → main
```

## 提交消息规范

### 提交类型

| 类型 | 说明 | 示例 |
|------|------|------|
| `feat` | 新功能 | `feat: 支持手机号登录` |
| `fix` | Bug修复 | `fix: 解决token过期问题` |
| `docs` | 文档更新 | `docs: 完善API说明` |
| `style` | 代码格式 | `style: 统一缩进格式` |
| `refactor` | 代码重构 | `refactor: 拆分用户服务` |
| `perf` | 性能优化 | `perf: 优化数据库查询` |
| `test` | 测试相关 | `test: 添加单元测试` |
| `build` | 构建系统 | `build: 升级webpack到5.0` |
| `ci` | CI/CD配置 | `ci: 添加GitHub Actions` |
| `chore` | 杂项任务 | `chore: 更新.gitignore` |
| `revert` | 回滚提交 | `revert: 回滚commit abc123` |

### 提交格式

```
<type>(<scope>): <description>

[optional body]

[optional footer(s)]
```

### 格式要求

- **类型**: 必须使用上述预定义类型
- **范围**: 可选,表示影响范围(如模块名)
- **描述**: 简洁明了,使用中文
- **长度**: 标题不超过50字符,正文每行不超过72字符
- **时态**: 使用现在时,如"添加"而不是"添加了"

### 提交示例

```bash
# 基础格式
feat: 添加用户登录功能
fix: 修复密码验证bug
docs: 更新API文档

# 带范围的格式
feat(auth): 添加OAuth2登录支持
fix(api): 修复用户信息查询接口
docs(guide): 完善快速开始指南

# 详细格式
feat: 添加用户权限管理

- 实现角色基础权限控制
- 添加权限验证中间件
- 更新用户管理界面

Closes #123
```

## 质量门禁

### 提交前检查

```bash
# 自动运行(通过Git hooks)
make format    # 代码格式化
make check     # 质量检查
make test      # 运行测试

# 手动检查
make check-branch    # 检查分支命名
make safe-push       # 安全推送
```

### 检查项目

- **代码格式**: 自动格式化所有语言代码
- **语法检查**: 通过各语言的lint工具
- **类型检查**: TypeScript/Python类型验证
- **复杂度控制**: 函数复杂度限制
- **分支命名**: 验证分支命名规范
- **提交消息**: 验证提交消息格式

## 最佳实践

### 开发流程

1. **开始开发**: `make dev-setup` (首次) → `make new-feature name=功能名`
2. **编写代码**: 频繁commit,使用规范的commit message
3. **提交前检查**: `make fmt && make check` 确保质量
4. **推送代码**: `make safe-push` 验证并推送
5. **创建PR**: 通过GitHub界面创建Pull Request
6. **代码审查**: 团队review,修改建议
7. **合并代码**: 审查通过后合并到主分支

### 团队约定

- 🚫 **禁止直接推送到main/develop分支**
- ✅ **必须通过分支开发 + PR流程**
- ✅ **提交前必须通过所有质量检查**
- ✅ **使用规范的分支命名和提交消息**
- ✅ **大功能拆分为小commit,便于review**

## 常见问题

### 分支管理问题

**问题**: 在错误分支开发
**解决**: 使用git命令迁移代码到正确分支
```bash
git stash
git checkout -b feature/correct-branch
git stash pop
```

**问题**: 分支名不规范
**解决**: 重命名分支或创建新的规范分支
```bash
git branch -m old-branch-name feature/new-name
```

### 提交问题

**问题**: 提交消息格式错误
**解决**: 使用 `git commit --amend` 修改最近一次提交
```bash
git commit --amend -m "feat: 正确的提交消息"
```

**问题**: 质量检查失败
**解决**: 运行 `make check` 查看详细错误,修复后重新提交

## 相关文档

- [代码质量要求](./code-requirements-zh.md) - 各语言代码质量检测
- [Makefile使用指南](../docs/Makefile-readme-zh.md) - 完整的Makefile命令说明
- [本地开发配置](../docs/Makefile-readme-zh.md#本地开发配置) - 使用`.localci.toml`进行模块化开发


================================================
FILE: .github/quality-requirements/branch-commit-standards.md
================================================
# Branch and Commit Standards

This document defines the branch management and commit message standards for the project, ensuring consistency in team collaboration and code quality.

## Branch Management Standards

### Branch Types

| Branch Type | Naming Format | Purpose | Example |
|-------------|---------------|---------|---------|
| **Main Branch** | `main` | Production code | `main` |
| **Development Branch** | `develop` | Development integration | `develop` |
| **Feature Branch** | `feature/feature-name` | New feature development | `feature/user-login` |
| **Bugfix Branch** | `bugfix/issue-name` | Bug fixes | `bugfix/auth-error` |
| **Hotfix Branch** | `hotfix/patch-name` | Emergency fixes | `hotfix/security-patch` |
| **Design Branch** | `design/design-name` | UI/UX optimization | `design/mobile-layout` |
| **Refactor Branch** | `refactor/refactor-name` | Code refactoring | `refactor/user-service` |
| **Test Branch** | `test/test-name` | Test development | `test/integration-tests` |
| **Documentation Branch** | `doc/doc-name` | Documentation updates | `doc/api-guide` |

### Branch Creation Commands

```bash
# Using Makefile commands to create standard branches
make new-feature name=user-login      # Create feature branch
make new-bugfix name=auth-error       # Create bugfix branch
make new-hotfix name=security-patch   # Create hotfix branch
make new-design name=mobile-layout    # Create design branch

# Manual branch creation
git checkout -b feature/user-login
git checkout -b bugfix/auth-error
git checkout -b hotfix/security-patch
```

### Branch Workflow

```bash
# 1. Create feature branch from main
git checkout main
git pull origin main
git checkout -b feature/user-login

# 2. After development, merge to develop
git checkout develop
git merge feature/user-login
git push origin develop

# 3. Merge to main via Pull Request
# Create PR on GitHub: develop → main
```

## Commit Message Standards

### Commit Types

| Type | Description | Example |
|------|-------------|---------|
| `feat` | New feature | `feat: add phone number login` |
| `fix` | Bug fix | `fix: resolve token expiration issue` |
| `docs` | Documentation update | `docs: update API documentation` |
| `style` | Code formatting | `style: unify indentation format` |
| `refactor` | Code refactoring | `refactor: split user service` |
| `perf` | Performance optimization | `perf: optimize database queries` |
| `test` | Test related | `test: add unit tests` |
| `build` | Build system | `build: upgrade webpack to 5.0` |
| `ci` | CI/CD configuration | `ci: add GitHub Actions` |
| `chore` | Miscellaneous tasks | `chore: update .gitignore` |
| `revert` | Revert commit | `revert: revert commit abc123` |

### Commit Format

```
<type>(<scope>): <description>

[optional body]

[optional footer(s)]
```

### Format Requirements

- **Type**: Must use predefined types above
- **Scope**: Optional, indicates affected area (e.g., module name)
- **Description**: Concise and clear, use English
- **Length**: Title max 50 characters, body max 72 characters per line
- **Tense**: Use present tense, e.g., "add" not "added"

### Commit Examples

```bash
# Basic format
feat: add user login functionality
fix: resolve password validation bug
docs: update API documentation

# With scope
feat(auth): add OAuth2 login support
fix(api): resolve user info query endpoint
docs(guide): improve quick start guide

# Detailed format
feat: add user permission management

- Implement role-based permission control
- Add permission validation middleware
- Update user management interface

Closes #123
```

## Quality Gates

### Pre-commit Checks

```bash
# Automatic execution (via Git hooks)
make format    # Code formatting
make check     # Quality checks
make test      # Run tests

# Manual checks
make check-branch    # Check branch naming
make safe-push       # Safe push
```

### Check Items

- **Code Format**: Auto-format all language code
- **Syntax Check**: Pass all language lint tools
- **Type Check**: TypeScript/Python type validation
- **Complexity Control**: Function complexity limits
- **Branch Naming**: Validate branch naming conventions
- **Commit Message**: Validate commit message format

## Best Practices

### Development Workflow

1. **Start Development**: `make dev-setup` (first time) → `make new-feature name=feature-name`
2. **Write Code**: Frequent commits with standard commit messages
3. **Pre-commit Check**: `make fmt && make check` ensure quality
4. **Push Code**: `make safe-push` validate and push
5. **Create PR**: Create Pull Request via GitHub interface
6. **Code Review**: Team review and feedback
7. **Merge Code**: Merge to main branch after approval

### Team Conventions

- 🚫 **No direct push to main/develop branches**
- ✅ **Must use branch development + PR process**
- ✅ **Must pass all quality checks before commit**
- ✅ **Use standard branch naming and commit messages**
- ✅ **Break large features into small commits for easier review**

## Common Issues

### Branch Management Issues

**Issue**: Developing on wrong branch
**Solution**: Use git commands to migrate code to correct branch
```bash
git stash
git checkout -b feature/correct-branch
git stash pop
```

**Issue**: Non-standard branch name
**Solution**: Rename branch or create new standard branch
```bash
git branch -m old-branch-name feature/new-name
```

### Commit Issues

**Issue**: Incorrect commit message format
**Solution**: Use `git commit --amend` to modify last commit
```bash
git commit --amend -m "feat: correct commit message"
```

**Issue**: Quality check failure
**Solution**: Run `make check` to see detailed errors, fix and recommit

## Related Documentation

- [Code Quality Requirements](./code-requirements.md) - Language-specific code quality detection
- [Makefile Usage Guide](../docs/Makefile-readme.md) - Complete Makefile command reference
- [Local Development Configuration](../docs/Makefile-readme.md#local-development-configuration) - Using `.localci.toml` for modular development


================================================
FILE: .github/quality-requirements/code-requirements-zh.md
================================================
# 代码质量检测文档

本目录包含各语言的代码质量检测工具说明,与Makefile工具链集成。

## 支持的语言

| 语言 | 文档 | Makefile命令 | 工具链 |
|------|------|-------------|--------|
| **Go** | [`go-zh.md`](./langs/go-zh.md) | `make fmt-go`, `make check-go` | gofmt + goimports + gofumpt + golines + staticcheck + golangci-lint |
| **Java** | [`java-zh.md`](./langs/java-zh.md) | `make fmt-java`, `make check-java` | spotless + checkstyle + spotbugs + pmd |
| **Python** | [`python-zh.md`](./langs/python-zh.md) | `make fmt-python`, `make check-python` | black + isort + flake8 + mypy + pylint |
| **TypeScript** | [`typescript-zh.md`](./langs/typescript-zh.md) | `make fmt-typescript`, `make check-typescript` | prettier + eslint + tsc |

## 快速使用

### 统一命令(推荐)
```bash
make format    # 格式化所有语言
make check     # 检查所有语言质量
```

### 单语言命令
```bash
make fmt-go && make check-go           # Go
make fmt-java && make check-java       # Java  
make fmt-python && make check-python   # Python
make fmt-typescript && make check-typescript  # TypeScript
```

## 文档说明

每个语言文档包含:
- 工具链说明
- 质量标准
- Makefile集成方式
- 常见问题解决

## 相关文档

- [分支与提交规范](./branch-commit-standards-zh.md) - 分支管理和提交消息规范
- [Makefile使用指南](../docs/Makefile-readme.md) - 完整的Makefile命令说明
- [本地开发配置](../docs/Makefile-readme.md#local-development-configuration) - 使用`.localci.toml`进行模块化开发

================================================
FILE: .github/quality-requirements/code-requirements.md
================================================
# Code Quality Requirements

This directory contains code quality detection tool documentation for different programming languages, integrated with the Makefile toolchain.

## Supported Languages

| Language | Documentation | Makefile Commands | Toolchain |
|----------|---------------|-------------------|-----------|
| **Go** | [`go.md`](./langs/go.md) | `make fmt-go`, `make check-go` | gofmt + goimports + gofumpt + golines + staticcheck + golangci-lint |
| **Java** | [`java.md`](./langs/java.md) | `make fmt-java`, `make check-java` | spotless + checkstyle + spotbugs + pmd |
| **Python** | [`python.md`](./langs/python.md) | `make fmt-python`, `make check-python` | black + isort + flake8 + mypy + pylint |
| **TypeScript** | [`typescript.md`](./langs/typescript.md) | `make fmt-typescript`, `make check-typescript` | prettier + eslint + tsc |

## Quick Start

### Unified Commands (Recommended)
```bash
make format    # Format all languages
make check     # Check all language quality
```

### Single Language Commands
```bash
make fmt-go && make check-go           # Go
make fmt-java && make check-java       # Java  
make fmt-python && make check-python   # Python
make fmt-typescript && make check-typescript  # TypeScript
```

## Documentation Overview

Each language documentation includes:
- Toolchain description
- Quality standards
- Makefile integration
- Common issue resolution

## Related Documentation

- [Branch and Commit Standards](./branch-commit-standards.md) - Branch management and commit message standards
- [Makefile Usage Guide](../docs/Makefile-readme.md) - Complete Makefile command reference
- [Local Development Configuration](../docs/Makefile-readme.md#local-development-configuration) - Using `.localci.toml` for modular development


================================================
FILE: .github/quality-requirements/langs/go-zh.md
================================================
# Go代码质量检测

## 工具链

### 格式化工具
- **gofmt**: Go官方格式化
- **goimports**: 自动管理imports
- **gofumpt**: 更严格的格式化
- **golines**: 控制行长度(120字符)

### 质量检测工具
- **gocyclo**: 圈复杂度检测(≤10)
- **staticcheck**: 静态分析
- **golangci-lint**: 综合代码规范检查

## Makefile集成

### 统一命令
```bash
make format    # 格式化所有语言(包含Go)
make check     # 检查所有语言质量(包含Go)
```

### Go专用命令
```bash
make fmt-go              # 格式化Go代码
make check-go            # Go质量检查
make test-go             # 运行Go测试
make build-go            # 构建Go项目
```

### 工具安装
```bash
make install-tools-go    # 安装Go开发工具
make check-tools-go      # 检查Go工具状态
```

## 质量标准

| 检测项 | 标准 | 工具 |
|--------|------|------|
| 代码格式 | Go标准格式 | gofmt + gofumpt |
| Import管理 | 无未使用导入 | goimports |
| 行长度 | ≤120字符 | golines |
| 函数复杂度 | 圈复杂度≤10 | gocyclo |
| 静态分析 | 0 issues | staticcheck |
| 代码规范 | 0 issues | golangci-lint |

## 常见问题

### 格式化问题
```bash
make fmt-go  # 自动修复格式问题
```

### Import问题
```bash
goimports -w .  # 自动修复imports
```

### 复杂度问题
```bash
gocyclo -over 10 .  # 检测复杂函数
# 需要重构复杂度>10的函数
```

### 静态分析问题
```bash
staticcheck ./...  # 查看详细报告
# 根据报告建议修复代码
```

## 配置文件

### golangci-lint配置 (`.golangci.yml`)
```yaml
linters-settings:
  gocyclo:
    min-complexity: 10
  funlen:
    lines: 50

linters:
  enable:
    - gocyclo
    - funlen
    - staticcheck
    - govet
    - unused
```

## 相关资源

- [Go官方代码规范](https://golang.org/doc/effective_go.html)
- [golangci-lint文档](https://golangci-lint.run/)
- [staticcheck文档](https://staticcheck.io/)

================================================
FILE: .github/quality-requirements/langs/go.md
================================================
# Go Code Quality Detection

## Toolchain

### Formatting Tools
- **gofmt**: Go official formatting
- **goimports**: Automatic import management
- **gofumpt**: Stricter formatting
- **golines**: Line length control (120 characters)

### Quality Detection Tools
- **gocyclo**: Cyclomatic complexity detection (≤10)
- **staticcheck**: Static analysis
- **golangci-lint**: Comprehensive code standard checks

## Makefile Integration

### Unified Commands
```bash
make format    # Format all languages (including Go)
make check     # Check all language quality (including Go)
```

### Go-specific Commands
```bash
make fmt-go              # Format Go code
make check-go            # Go quality check
make test-go             # Run Go tests
make build-go            # Build Go project
```

### Tool Installation
```bash
make install-tools-go    # Install Go development tools
make check-tools-go      # Check Go tool status
```

## Quality Standards

| Check Item | Standard | Tool |
|------------|----------|------|
| Code Format | Go standard format | gofmt + gofumpt |
| Import Management | No unused imports | goimports |
| Line Length | ≤120 characters | golines |
| Function Complexity | Cyclomatic complexity ≤10 | gocyclo |
| Static Analysis | 0 issues | staticcheck |
| Code Standards | 0 issues | golangci-lint |

## Common Issues

### Formatting Issues
```bash
make fmt-go  # Auto-fix format issues
```

### Import Issues
```bash
goimports -w .  # Auto-fix imports
```

### Complexity Issues
```bash
gocyclo -over 10 .  # Detect complex functions
# Need to refactor functions with complexity >10
```

### Static Analysis Issues
```bash
staticcheck ./...  # View detailed report
# Fix code according to report suggestions
```

## Configuration Files

### golangci-lint Configuration (`.golangci.yml`)
```yaml
linters-settings:
  gocyclo:
    min-complexity: 10
  funlen:
    lines: 50

linters:
  enable:
    - gocyclo
    - funlen
    - staticcheck
    - govet
    - unused
```

## Related Resources

- [Go Official Code Standards](https://golang.org/doc/effective_go.html)
- [golangci-lint Documentation](https://golangci-lint.run/)
- [staticcheck Documentation](https://staticcheck.io/)


================================================
FILE: .github/quality-requirements/langs/java-zh.md
================================================
# Java代码质量检测

## 工具链

### 格式化工具
- **Spotless**: 基于Google Java Format的自动格式化
- **Maven集成**: 通过spotless-maven-plugin实现

### 质量检测工具
- **Checkstyle**: 代码风格验证(Google Java Style Guide)
- **SpotBugs**: 静态分析和bug检测
- **PMD**: 代码质量分析和复杂度控制

## Makefile集成

### 统一命令
```bash
make format    # 格式化所有语言(包含Java)
make check     # 检查所有语言质量(包含Java)
```

### Java专用命令
```bash
make fmt-java              # 格式化Java代码
make check-java            # Java质量检查
make test-java             # 运行Java测试
make build-java            # 构建Java项目
```

### 工具安装
```bash
make install-tools-java    # 安装Java开发工具
make check-tools-java      # 检查Java工具状态
```

## 质量标准

| 检测项 | 标准 | 工具 |
|--------|------|------|
| 代码格式 | Google Java Format | Spotless |
| 代码风格 | Google Java Style Guide | Checkstyle |
| 行长度 | ≤120字符 | Checkstyle |
| 圈复杂度 | 函数≤10,类≤40 | PMD |
| 方法长度 | ≤50行 | PMD |
| 参数数量 | ≤7个 | PMD |
| 类长度 | ≤500行 | PMD |
| 静态分析 | 0 issues | SpotBugs |

## 常见问题

### 格式化问题
```bash
make fmt-java  # 自动修复格式问题
# 内部执行: mvn spotless:apply
```

### 风格检查问题
```bash
make check-java  # 运行所有质量检查
# 内部执行: mvn checkstyle:check pmd:check spotbugs:check
```

### 复杂度问题
```bash
# PMD会检测复杂度过高的方法
# 需要重构复杂度>10的方法
```

### 静态分析问题
```bash
# SpotBugs会检测潜在bug
# 根据报告建议修复代码
```

## 配置文件

### Maven插件配置 (pom.xml)
```xml
<properties>
    <spotless.version>2.43.0</spotless.version>
    <checkstyle.version>3.3.1</checkstyle.version>
    <spotbugs.version>4.8.2.0</spotbugs.version>
    <pmd.version>3.21.2</pmd.version>
</properties>
```

### Checkstyle配置 (checkstyle.xml)
```xml
<module name="Checker">
    <module name="TreeWalker">
        <module name="LineLength">
            <property name="max" value="120"/>
        </module>
        <module name="CyclomaticComplexity">
            <property name="max" value="10"/>
        </module>
    </module>
</module>
```

## 相关资源

- [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)
- [Spotless文档](https://github.com/diffplug/spotless)
- [Checkstyle文档](https://checkstyle.sourceforge.io/)
- [SpotBugs文档](https://spotbugs.github.io/)
- [PMD文档](https://pmd.github.io/)

================================================
FILE: .github/quality-requirements/langs/java.md
================================================
# Java Code Quality Detection

## Toolchain

### Formatting Tools
- **Spotless**: Automatic formatting based on Google Java Format
- **Maven Integration**: Implemented through spotless-maven-plugin

### Quality Detection Tools
- **Checkstyle**: Code style validation (Google Java Style Guide)
- **SpotBugs**: Static analysis and bug detection
- **PMD**: Code quality analysis and complexity control

## Makefile Integration

### Unified Commands
```bash
make format    # Format all languages (including Java)
make check     # Check all language quality (including Java)
```

### Java-specific Commands
```bash
make fmt-java              # Format Java code
make check-java            # Java quality check
make test-java             # Run Java tests
make build-java            # Build Java project
```

### Tool Installation
```bash
make install-tools-java    # Install Java development tools
make check-tools-java      # Check Java tool status
```

## Quality Standards

| Check Item | Standard | Tool |
|------------|----------|------|
| Code Format | Google Java Format | Spotless |
| Code Style | Google Java Style Guide | Checkstyle |
| Line Length | ≤120 characters | Checkstyle |
| Cyclomatic Complexity | Function ≤10, Class ≤40 | PMD |
| Method Length | ≤50 lines | PMD |
| Parameter Count | ≤7 parameters | PMD |
| Class Length | ≤500 lines | PMD |
| Static Analysis | 0 issues | SpotBugs |

## Common Issues

### Formatting Issues
```bash
make fmt-java  # Auto-fix format issues
# Internal execution: mvn spotless:apply
```

### Style Check Issues
```bash
make check-java  # Run all quality checks
# Internal execution: mvn checkstyle:check pmd:check spotbugs:check
```

### Complexity Issues
```bash
# PMD will detect overly complex methods
# Need to refactor methods with complexity >10
```

### Static Analysis Issues
```bash
# SpotBugs will detect potential bugs
# Fix code according to report suggestions
```

## Configuration Files

### Maven Plugin Configuration (pom.xml)
```xml
<properties>
    <spotless.version>2.43.0</spotless.version>
    <checkstyle.version>3.3.1</checkstyle.version>
    <spotbugs.version>4.8.2.0</spotbugs.version>
    <pmd.version>3.21.2</pmd.version>
</properties>
```

### Checkstyle Configuration (checkstyle.xml)
```xml
<module name="Checker">
    <module name="TreeWalker">
        <module name="LineLength">
            <property name="max" value="120"/>
        </module>
        <module name="CyclomaticComplexity">
            <property name="max" value="10"/>
        </module>
    </module>
</module>
```

## Related Resources

- [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)
- [Spotless Documentation](https://github.com/diffplug/spotless)
- [Checkstyle Documentation](https://checkstyle.sourceforge.io/)
- [SpotBugs Documentation](https://spotbugs.github.io/)
- [PMD Documentation](https://pmd.github.io/)


================================================
FILE: .github/quality-requirements/langs/python-zh.md
================================================
# Python代码质量检测

## 工具链

### 格式化工具
- **black**: 代码格式化(PEP 8标准)
- **isort**: 导入语句排序和整理

### 质量检测工具
- **flake8**: 代码风格和错误检查
- **mypy**: 静态类型检查
- **pylint**: 综合代码质量分析

## Makefile集成

### 统一命令
```bash
make format    # 格式化所有语言(包含Python)
make check     # 检查所有语言质量(包含Python)
```

### Python专用命令
```bash
make fmt-python          # 格式化Python代码
make check-python        # Python质量检查
make test-python         # 运行Python测试
```

### 工具安装
```bash
make install-tools-python    # 安装Python开发工具
make check-tools-python      # 检查Python工具状态
```

## 质量标准

| 检测项 | 标准 | 工具 |
|--------|------|------|
| 代码格式 | PEP 8标准 | black |
| 导入排序 | 标准库、第三方、本地 | isort |
| 代码风格 | PEP 8 + flake8规则 | flake8 |
| 类型检查 | 严格类型检查 | mypy |
| 代码质量 | 综合质量分析 | pylint |
| 行长度 | ≤88字符 | black |
| 复杂度 | 圈复杂度≤10 | pylint |

## 常见问题

### 格式化问题
```bash
make fmt-python  # 自动修复格式问题
# 内部执行: black + isort
```

### 风格检查问题
```bash
make check-python  # 运行所有质量检查
# 内部执行: flake8 + mypy + pylint
```

### 类型检查问题
```bash
# mypy会检测类型错误
# 需要添加类型注解或修复类型问题
```

### 复杂度问题
```bash
# pylint会检测复杂度过高的函数
# 需要重构复杂度>10的函数
```

## 配置文件

### pyproject.toml配置
```toml
[tool.black]
line-length = 88
target-version = ['py38', 'py39', 'py310', 'py311']
include = '\.pyi?$'
extend-exclude = '''
/(
  # directories
  \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | build
  | dist
)/
'''

[tool.isort]
profile = "black"
multi_line_output = 3
line_length = 88
known_first_party = ["your_package_name"]

[tool.mypy]
python_version = "3.8"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
disallow_untyped_decorators = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
warn_unreachable = true
strict_equality = true

[tool.pylint.messages_control]
disable = [
    "C0330",  # wrong-import-position
    "C0326",  # bad-whitespace
]

[tool.pylint.format]
max-line-length = 88

[tool.pylint.design]
max-args = 7
max-locals = 15
max-returns = 6
max-branches = 12
max-statements = 50
max-attributes = 10
max-public-methods = 20
max-bool-expr = 5
```

### .flake8配置
```ini
[flake8]
max-line-length = 88
extend-ignore = E203, W503
exclude = 
    .git,
    __pycache__,
    .venv,
    .eggs,
    *.egg,
    build,
    dist
```

## 相关资源

- [PEP 8 - Python代码风格指南](https://pep8.org/)
- [Black文档](https://black.readthedocs.io/)
- [isort文档](https://pycqa.github.io/isort/)
- [flake8文档](https://flake8.pycqa.org/)
- [mypy文档](https://mypy.readthedocs.io/)
- [pylint文档](https://pylint.pycqa.org/)


================================================
FILE: .github/quality-requirements/langs/python.md
================================================
# Python Code Quality Detection

## Toolchain

### Formatting Tools
- **black**: Code formatting (PEP 8 standard)
- **isort**: Import statement sorting and organization

### Quality Detection Tools
- **flake8**: Code style and error checking
- **mypy**: Static type checking
- **pylint**: Comprehensive code quality analysis

## Makefile Integration

### Unified Commands
```bash
make format    # Format all languages (including Python)
make check     # Check all language quality (including Python)
```

### Python-specific Commands
```bash
make fmt-python          # Format Python code
make check-python        # Python quality check
make test-python         # Run Python tests
```

### Tool Installation
```bash
make install-tools-python    # Install Python development tools
make check-tools-python      # Check Python tool status
```

## Quality Standards

| Check Item | Standard | Tool |
|------------|----------|------|
| Code Format | PEP 8 standard | black |
| Import Sorting | Standard library, third-party, local | isort |
| Code Style | PEP 8 + flake8 rules | flake8 |
| Type Checking | Strict type checking | mypy |
| Code Quality | Comprehensive quality analysis | pylint |
| Line Length | ≤88 characters | black |
| Complexity | Cyclomatic complexity ≤10 | pylint |

## Common Issues

### Formatting Issues
```bash
make fmt-python  # Auto-fix format issues
# Internal execution: black + isort
```

### Style Check Issues
```bash
make check-python  # Run all quality checks
# Internal execution: flake8 + mypy + pylint
```

### Type Check Issues
```bash
# mypy will detect type errors
# Need to add type annotations or fix type issues
```

### Complexity Issues
```bash
# pylint will detect overly complex functions
# Need to refactor functions with complexity >10
```

## Configuration Files

### pyproject.toml Configuration
```toml
[tool.black]
line-length = 88
target-version = ['py38', 'py39', 'py310', 'py311']
include = '\.pyi?$'
extend-exclude = '''
/(
  # directories
  \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | build
  | dist
)/
'''

[tool.isort]
profile = "black"
multi_line_output = 3
line_length = 88
known_first_party = ["your_package_name"]

[tool.mypy]
python_version = "3.8"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
disallow_untyped_decorators = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
warn_unreachable = true
strict_equality = true

[tool.pylint.messages_control]
disable = [
    "C0330",  # wrong-import-position
    "C0326",  # bad-whitespace
]

[tool.pylint.format]
max-line-length = 88

[tool.pylint.design]
max-args = 7
max-locals = 15
max-returns = 6
max-branches = 12
max-statements = 50
max-attributes = 10
max-public-methods = 20
max-bool-expr = 5
```

### .flake8 Configuration
```ini
[flake8]
max-line-length = 88
extend-ignore = E203, W503
exclude = 
    .git,
    __pycache__,
    .venv,
    .eggs,
    *.egg,
    build,
    dist
```

## Related Resources

- [PEP 8 - Python Code Style Guide](https://pep8.org/)
- [Black Documentation](https://black.readthedocs.io/)
- [isort Documentation](https://pycqa.github.io/isort/)
- [flake8 Documentation](https://flake8.pycqa.org/)
- [mypy Documentation](https://mypy.readthedocs.io/)
- [pylint Documentation](https://pylint.pycqa.org/)


================================================
FILE: .github/quality-requirements/langs/typescript-zh.md
================================================
# TypeScript代码质量检测

## 工具链

### 格式化工具
- **prettier**: 代码格式化(统一代码风格)
- **全局安装**: 避免项目空间污染

### 质量检测工具
- **eslint**: 代码规范和最佳实践检查
- **tsc**: TypeScript编译器类型检查
- **@typescript-eslint**: TypeScript专用ESLint规则

## Makefile集成

### 统一命令
```bash
make format    # 格式化所有语言(包含TypeScript)
make check     # 检查所有语言质量(包含TypeScript)
```

### TypeScript专用命令
```bash
make fmt-typescript      # 格式化TypeScript代码
make check-typescript    # TypeScript质量检查
make test-typescript     # 运行TypeScript测试
make build-typescript    # 构建TypeScript项目
```

### 工具安装
```bash
make install-tools-typescript    # 全局安装TypeScript工具
make check-tools-typescript      # 检查TypeScript工具状态
```

## 质量标准

| 检测项 | 标准 | 工具 |
|--------|------|------|
| 代码格式 | Prettier标准 | prettier |
| 代码规范 | ESLint规则 | eslint |
| 类型检查 | 严格类型检查 | tsc |
| Import管理 | 自动排序 | eslint-plugin-import |
| 代码复杂度 | 圈复杂度≤10 | eslint-complexity |
| 最佳实践 | TypeScript最佳实践 | @typescript-eslint |

## 常见问题

### 格式化问题
```bash
make fmt-typescript  # 自动修复格式问题
# 内部执行: prettier --write
```

### 代码规范问题
```bash
make check-typescript  # 运行所有质量检查
# 内部执行: eslint + tsc
```

### 类型检查问题
```bash
# tsc会检测类型错误
# 需要添加类型注解或修复类型问题
```

### 复杂度问题
```bash
# eslint会检测复杂度过高的函数
# 需要重构复杂度>10的函数
```

## 配置文件

### .prettierrc配置
```json
{
  "semi": true,
  "trailingComma": "es5",
  "singleQuote": true,
  "printWidth": 80,
  "tabWidth": 2,
  "useTabs": false
}
```

### .eslintrc.js配置
```javascript
module.exports = {
  parser: '@typescript-eslint/parser',
  plugins: ['@typescript-eslint'],
  extends: [
    'eslint:recommended',
    '@typescript-eslint/recommended',
    'prettier'
  ],
  rules: {
    '@typescript-eslint/no-unused-vars': 'error',
    '@typescript-eslint/explicit-function-return-type': 'warn',
    'complexity': ['error', 10]
  }
};
```

### tsconfig.json配置
```json
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true
  }
}
```

## 相关资源

- [TypeScript官方文档](https://www.typescriptlang.org/)
- [Prettier文档](https://prettier.io/)
- [ESLint文档](https://eslint.org/)
- [TypeScript ESLint文档](https://typescript-eslint.io/)


================================================
FILE: .github/quality-requirements/langs/typescript.md
================================================
# TypeScript Code Quality Detection

## Toolchain

### Formatting Tools
- **prettier**: Code formatting (unified code style)
- **Global Installation**: Avoid project space pollution

### Quality Detection Tools
- **eslint**: Code standards and best practices checking
- **tsc**: TypeScript compiler type checking
- **@typescript-eslint**: TypeScript-specific ESLint rules

## Makefile Integration

### Unified Commands
```bash
make format    # Format all languages (including TypeScript)
make check     # Check all language quality (including TypeScript)
```

### TypeScript-specific Commands
```bash
make fmt-typescript      # Format TypeScript code
make check-typescript    # TypeScript quality check
make test-typescript     # Run TypeScript tests
make build-typescript    # Build TypeScript project
```

### Tool Installation
```bash
make install-tools-typescript    # Global TypeScript tool installation
make check-tools-typescript      # Check TypeScript tool status
```

## Quality Standards

| Check Item | Standard | Tool |
|------------|----------|------|
| Code Format | Prettier standard | prettier |
| Code Standards | ESLint rules | eslint |
| Type Checking | Strict type checking | tsc |
| Import Management | Auto sorting | eslint-plugin-import |
| Code Complexity | Cyclomatic complexity ≤10 | eslint-complexity |
| Best Practices | TypeScript best practices | @typescript-eslint |

## Common Issues

### Formatting Issues
```bash
make fmt-typescript  # Auto-fix format issues
# Internal execution: prettier --write
```

### Code Standards Issues
```bash
make check-typescript  # Run all quality checks
# Internal execution: eslint + tsc
```

### Type Check Issues
```bash
# tsc will detect type errors
# Need to add type annotations or fix type issues
```

### Complexity Issues
```bash
# eslint will detect overly complex functions
# Need to refactor functions with complexity >10
```

## Configuration Files

### .prettierrc Configuration
```json
{
  "semi": true,
  "trailingComma": "es5",
  "singleQuote": true,
  "printWidth": 80,
  "tabWidth": 2,
  "useTabs": false
}
```

### .eslintrc.js Configuration
```javascript
module.exports = {
  parser: '@typescript-eslint/parser',
  plugins: ['@typescript-eslint'],
  extends: [
    'eslint:recommended',
    '@typescript-eslint/recommended',
    'prettier'
  ],
  rules: {
    '@typescript-eslint/no-unused-vars': 'error',
    '@typescript-eslint/explicit-function-return-type': 'warn',
    'complexity': ['error', 10]
  }
};
```

### tsconfig.json Configuration
```json
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true
  }
}
```

## Related Resources

- [TypeScript Official Documentation](https://www.typescriptlang.org/)
- [Prettier Documentation](https://prettier.io/)
- [ESLint Documentation](https://eslint.org/)
- [TypeScript ESLint Documentation](https://typescript-eslint.io/)


================================================
FILE: .github/workflows/build-push.yml
================================================
name: Build and Push astron Agent Images

on:
  push:
    branches:
      - main
      - master
      - bugfix/superteam
  workflow_dispatch:
    inputs:
      push_images:
        description: 'Push images to registry'
        required: false
        default: true
        type: boolean

concurrency:
  group: build-push-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read
  packages: write
  attestations: write
  id-token: write

env:
  REGISTRY_GHCR: ghcr.io

jobs:
  # ============================================================================
  # Stage 1: Project Detection and Metadata
  # ============================================================================
  detect-and-prepare:
    name: 🔍 Detection & Metadata
    runs-on: ubuntu-latest
    outputs:
      version: ${{ steps.meta.outputs.version }}
      should-push: ${{ steps.meta.outputs.should-push }}
      platforms: ${{ steps.meta.outputs.platforms }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Extract metadata
        id: meta
        run: |
          # Mainline branches publish latest, bugfix branch publishes fix
          VERSION="latest"
          if [[ "${{ github.ref }}" == "refs/heads/bugfix/superteam" ]]; then
            VERSION="fix"
          fi

          # Determine if should push (main/master/bugfix branch or manual dispatch)
          SHOULD_PUSH="false"
          if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/main" ]]; then
            SHOULD_PUSH="true"
          elif [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/master" ]]; then
            SHOULD_PUSH="true"
          elif [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/bugfix/superteam" ]]; then
            SHOULD_PUSH="true"
          elif [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ github.event.inputs.push_images }}" == "true" ]]; then
            SHOULD_PUSH="true"
          fi

          # Set platforms (multi-arch builds for better compatibility)
          PLATFORMS="linux/amd64,linux/arm64"

          echo "version=$VERSION" >> $GITHUB_OUTPUT
          echo "should-push=$SHOULD_PUSH" >> $GITHUB_OUTPUT
          echo "platforms=$PLATFORMS" >> $GITHUB_OUTPUT

          echo "🏷️ Version: $VERSION"
          echo "📤 Should push: $SHOULD_PUSH"
          echo "🏗️ Platforms: $PLATFORMS"

  # ============================================================================
  # Stage 2: Build astron Agent Docker Images (Parallel Jobs)
  # ============================================================================
  build-core-tenant:
    name: 🏢 Build Core Tenant
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-tenant
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Core Tenant image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./core/tenant/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-core-database:
    name: 🧠 Build Core Database
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-database
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Core Database image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./core/memory/database/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-core-rpa:
    name: 🤖 Build Core RPA
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-rpa
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Core RPA image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./core/plugin/rpa/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-core-link:
    name: 🔗 Build Core Link
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-link
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Core Link image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./core/plugin/link/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-core-aitools:
    name: 🛠️ Build Core AI Tools
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-aitools
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Core AI Tools image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./core/plugin/aitools/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-core-agent:
    name: 🤖 Build Core Agent
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-agent
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Core Agent image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./core/agent/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-core-knowledge:
    name: 📚 Build Core Knowledge
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-knowledge
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Core Knowledge image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./core/knowledge/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-core-workflow:
    name: ⚡ Build Core Workflow
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-workflow
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Core Workflow image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./core/workflow/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-console-frontend:
    name: 🌐 Build Console Frontend
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        with:
          install: true

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/console-frontend
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Console Frontend image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./console/frontend/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-console-hub:
    name: 🎯 Build Console Hub
    runs-on: ubuntu-latest
    needs: detect-and-prepare
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        if: needs.detect-and-prepare.outputs.should-push == 'true'
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/console-hub
          tags: |
            type=raw,value=${{ needs.detect-and-prepare.outputs.version }}

      - name: Build and push Console Hub image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./console/backend/hub/Dockerfile
          platforms: ${{ needs.detect-and-prepare.outputs.platforms }}
          push: ${{ needs.detect-and-prepare.outputs.should-push }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.detect-and-prepare.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true
          provenance: false
          sbom: false

  # ============================================================================
  # Stage 3: Summary and Notifications
  # ============================================================================
  build-summary:
    name: 📊 Build Summary
    runs-on: ubuntu-latest
    needs:
      - detect-and-prepare
      - build-core-tenant
      - build-core-database
      - build-core-rpa
      - build-core-link
      - build-core-aitools
      - build-core-agent
      - build-core-knowledge
      - build-core-workflow
      - build-console-frontend
      - build-console-hub
    if: always()
    steps:
      - name: Generate build summary
        run: |
          echo "=== 🐳 astron Agent Multi-Service Docker Build Summary ==="
          echo ""
          echo "🔍 Project Detection: ${{ needs.detect-and-prepare.result }}"
          echo "📊 Version: ${{ needs.detect-and-prepare.outputs.version }}"
          echo "📤 Push to Registry: ${{ needs.detect-and-prepare.outputs.should-push }}"
          echo "🏗️ Target Platforms: ${{ needs.detect-and-prepare.outputs.platforms }}"
          echo ""

          echo "🐳 Docker Build Results:"
          echo "  🏢 Core Tenant: ${{ needs.build-core-tenant.result }}"
          echo "  🧠 Core Database: ${{ needs.build-core-database.result }}"
          echo "  🤖 Core RPA: ${{ needs.build-core-rpa.result }}"
          echo "  🔗 Core Link: ${{ needs.build-core-link.result }}"
          echo "  🛠️ Core AI Tools: ${{ needs.build-core-aitools.result }}"
          echo "  🤖 Core Agent: ${{ needs.build-core-agent.result }}"
          echo "  📚 Core Knowledge: ${{ needs.build-core-knowledge.result }}"
          echo "  ⚡ Core Workflow: ${{ needs.build-core-workflow.result }}"
          echo "  🌐 Console Frontend: ${{ needs.build-console-frontend.result }}"
          echo "  🎯 Console Hub: ${{ needs.build-console-hub.result }}"
          echo ""

          # Count successful builds
          SUCCESS_COUNT=0
          TOTAL_COUNT=10

          [[ "${{ needs.build-core-tenant.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-core-database.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-core-rpa.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-core-link.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-core-aitools.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-core-agent.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-core-knowledge.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-core-workflow.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-console-frontend.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
          [[ "${{ needs.build-console-hub.result }}" == "success" ]] && SUCCESS_COUNT=$((SUCCESS_COUNT + 1))

          echo "📊 Build Success Rate: $SUCCESS_COUNT/$TOTAL_COUNT images built successfully"

          if [[ "${{ needs.detect-and-prepare.outputs.should-push }}" == "true" ]]; then
            echo ""
            echo "🎯 Published Images:"
            [[ "${{ needs.build-core-tenant.result }}" == "success" ]] && echo "  🏢 ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-tenant:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-core-database.result }}" == "success" ]] && echo "  🧠 ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-database:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-core-rpa.result }}" == "success" ]] && echo "  🤖 ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-rpa:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-core-link.result }}" == "success" ]] && echo "  🔗 ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-link:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-core-aitools.result }}" == "success" ]] && echo "  🛠️ ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-aitools:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-core-agent.result }}" == "success" ]] && echo "  🤖 ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-agent:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-core-knowledge.result }}" == "success" ]] && echo "  📚 ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-knowledge:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-core-workflow.result }}" == "success" ]] && echo "  ⚡ ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-workflow:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-console-frontend.result }}" == "success" ]] && echo "  🌐 ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/console-frontend:${{ needs.detect-and-prepare.outputs.version }}"
            [[ "${{ needs.build-console-hub.result }}" == "success" ]] && echo "  🎯 ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/console-hub:${{ needs.detect-and-prepare.outputs.version }}"
          fi

          if [[ "$SUCCESS_COUNT" == "$TOTAL_COUNT" ]]; then
            echo ""
            echo "✅ 🎉 All astron Agent Docker images built successfully!"
            if [[ "${{ needs.detect-and-prepare.outputs.should-push }}" == "true" ]]; then
              echo "🚀 Images are now available in GitHub Container Registry"
            else
              echo "📦 Images built locally (not pushed to registry)"
            fi
          else
            echo ""
            echo "❌ 🚨 Some Docker builds failed - check individual job results"
            exit 1
          fi

          # Additional info for manual workflow dispatch
          if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
            echo ""
            echo "🔧 Manual Workflow Dispatch Summary:"
            echo "  Trigger: ${{ github.actor }}"
            echo "  Ref: ${{ github.ref }}"
            echo "  Push Images: ${{ github.event.inputs.push_images }}"
          fi


================================================
FILE: .github/workflows/ci.yml
================================================
name: 🚀 CI Pipeline

on:
  push:
    branches: [main, master, 'feature/**']
  pull_request:
    branches: [main, master, 'feature/**']
  workflow_dispatch:

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read
  packages: write
  attestations: write
  id-token: write

env:
  PYTHON: python3

jobs:
  # ============================================================================
  # Stage 1: Project Detection & Setup
  # ============================================================================
  detect-projects:
    name: 🔍 Detect Projects
    runs-on: ubuntu-latest
    timeout-minutes: 2
    outputs:
      matrix: ${{ steps.detect.outputs.matrix }}
      has-projects: ${{ steps.detect.outputs.has-projects }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Detect active projects
        id: detect
        run: |
          echo "🔍 Detecting projects..."

          # Generate project matrix
          matrix="{\"include\":["
          first=true

          # Java projects
          if [[ -f "console/backend/pom.xml" ]]; then
            [[ "$first" == "false" ]] && matrix+=","
            matrix+="{\"name\":\"console-backend\",\"path\":\"console/backend\",\"type\":\"java\",\"setup\":\"java\",\"cache\":\"maven\"}"
            first=false
            echo "✅ Java: console/backend"
          fi

          # TypeScript projects
          if [[ -f "console/frontend/package.json" && -f "console/frontend/tsconfig.json" ]]; then
            [[ "$first" == "false" ]] && matrix+=","
            matrix+="{\"name\":\"console-frontend\",\"path\":\"console/frontend\",\"type\":\"typescript\",\"setup\":\"node\",\"cache\":\"npm\"}"
            first=false
            echo "✅ TypeScript: console/frontend"
          fi

          # Go projects
          if [[ -f "core/tenant/go.mod" ]]; then
            [[ "$first" == "false" ]] && matrix+=","
            matrix+="{\"name\":\"core-tenant\",\"path\":\"core/tenant\",\"type\":\"go\",\"setup\":\"go\",\"cache\":\"go\"}"
            first=false
            echo "✅ Go: core/tenant"
          fi

          # Python projects - use pyproject.toml detection
          for project in core/memory/database core/plugin/rpa core/plugin/link core/plugin/aitools core/agent core/knowledge core/workflow; do
            if [[ -f "$project/pyproject.toml" ]] || [[ -f "$project/requirements.txt" ]]; then
              [[ "$first" == "false" ]] && matrix+=","
              name=$(basename "$project")
              # Handle nested paths
              if [[ "$project" == core/memory/database ]]; then
                name="core-database"
              elif [[ "$project" == core/plugin/* ]]; then
                name="core-$(basename "$project")"
              fi
              matrix+="{\"name\":\"$name\",\"path\":\"$project\",\"type\":\"python\",\"setup\":\"python\",\"cache\":\"pip\"}"
              first=false
              echo "✅ Python: $project"
            fi
          done

          matrix+="]}"

          echo "matrix=$matrix" >> $GITHUB_OUTPUT

          # Fix: Ensure clean boolean output without extra whitespace
          if [[ "$first" == "false" ]]; then
            echo "has-projects=true" >> $GITHUB_OUTPUT
          else
            echo "has-projects=false" >> $GITHUB_OUTPUT
          fi

          echo "🎯 Generated matrix: $matrix"

  # ============================================================================
  # Stage 2: Quality Checks & Tests (Parallel by Project)
  # ============================================================================
  check:
    name: 🔍 Check ${{ matrix.name }}
    runs-on: ubuntu-latest
    needs: [detect-projects]
    if: needs.detect-projects.outputs.has-projects == 'true'
    timeout-minutes: 5
    strategy:
      matrix: ${{ fromJson(needs.detect-projects.outputs.matrix) }}
      fail-fast: false
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Java
        if: matrix.setup == 'java'
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: '21'
          cache: maven

      - name: Setup Node.js
        if: matrix.setup == 'node'
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: npm
          cache-dependency-path: console/frontend/package-lock.json

      - name: Setup Go
        if: matrix.setup == 'go'
        uses: actions/setup-go@v5
        with:
          go-version: '1.23'
          cache-dependency-path: core/tenant/go.sum

      - name: Setup Python
        if: matrix.setup == 'python'
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install uv
        if: matrix.setup == 'python'
        run: |
          curl -LsSf https://astral.sh/uv/install.sh | sh
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH

      - name: Quality check
        working-directory: ${{ matrix.path }}
        run: |
          echo "🔍 Running quality check for ${{ matrix.name }} (${{ matrix.type }})"
          case "${{ matrix.type }}" in
            java)
              echo "📦 Compiling Java project..."
              mvn clean compile
              echo "✨ Running Spotless format check..."
              mvn spotless:check
              echo "🔍 Running Checkstyle..."
              mvn checkstyle:check
              echo "🐛 Running SpotBugs..."
              mvn clean compile spotbugs:check
              echo "📊 Running PMD..."
              mvn clean compile pmd:check
              ;;
            typescript)
              echo "📦 Installing dependencies..."
              npm ci --legacy-peer-deps
              echo "✨ Checking format compliance..."
              UNFORMATTED=$(npx prettier --list-different "**/*.{ts,tsx,js,jsx,json,md}" 2>/dev/null || true) && \
              if [ -n "$UNFORMATTED" ]; then \
                echo "Files that need formatting:" && \
                echo "$UNFORMATTED" && \
                echo "Run 'npm run format' to fix formatting issues." && \
                exit 1; \
              fi && \
              echo "🔍 Running TypeScript type checking..." && \
              (npx tsc --noEmit --pretty || echo "⚠️ TypeScript type checking found errors, but continuing...") && \
              echo "📋 Running ESLint (errors only)..." && \
              npx eslint "**/*.{ts,tsx}" --quiet
              ;;
            go)
              echo "🔍 Running Go quality checks..."
              echo "🛠️ Installing Go tools..."
              go install golang.org/x/tools/cmd/goimports@latest
              go install github.com/fzipp/gocyclo/cmd/gocyclo@latest
              go install honnef.co/go/tools/cmd/staticcheck@2025.1.1
              curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.5.0
              export PATH=$PATH:$(go env GOPATH)/bin
              echo "✨ Checking goimports compliance..."
              UNFORMATTED=$(goimports -l .) && \
              if [ -n "$UNFORMATTED" ]; then \
                echo "Files that need formatting:" && \
                echo "$UNFORMATTED" && \
                echo "Run 'goimports -w .' to fix formatting issues." && \
                exit 1; \
              fi
              echo "🔍 Running go vet..."
              go vet ./...
              echo "🔍 Running gocyclo..."
              gocyclo -over 10 . || (echo "High cyclomatic complexity detected" && exit 1)
              echo "🔍 Running staticcheck..."
              PKGS=$(go list ./... 2>/dev/null)
              if [ -n "$PKGS" ]; then \
                staticcheck $PKGS || exit 1; \
              fi
              echo "📋 Running golangci-lint..."
              golangci-lint run ./... --timeout=5m
              ;;
            python)
              echo "🛠️ Installing Python quality tools..."
              python3 -m pip install black==24.4.2 isort==5.13.2 flake8==7.0.0 mypy==1.18.2 pylint==3.1.0 types-requests>=2.32.4.20250913
              echo "🔍 Running Python quality checks..."
              echo "1. Running flake8 code style check..."
              python3 -m flake8 --max-line-length 88 --ignore=E203,W503,E501 --max-complexity 10 .
              echo "2. Checking isort import order..."
              python3 -m isort --check-only --profile black .
              echo "3. Checking black code format..."
              python3 -m black --check .
              echo "4. Running mypy type checking..."
              python3 -m mypy --disallow-untyped-defs --disallow-incomplete-defs --check-untyped-defs --no-implicit-optional --ignore-missing-imports --explicit-package-bases .
              echo "5. Running pylint code analysis..."
              find . -name "*.py" -type f -print0 | xargs -0 python3 -m pylint --disable=import-error --max-line-length=88 --max-args=7 --max-locals=15 --max-returns=6 --max-branches=12 --max-statements=50 --fail-under=8.0
              ;;
          esac

  test:
    name: 🧪 Test ${{ matrix.name }}
    runs-on: ubuntu-latest
    needs: [detect-projects]
    if: needs.detect-projects.outputs.has-projects == 'true'
    timeout-minutes: 5
    strategy:
      matrix: ${{ fromJson(needs.detect-projects.outputs.matrix) }}
      fail-fast: false
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Java
        if: matrix.setup == 'java'
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: '21'
          cache: maven

      - name: Setup Node.js
        if: matrix.setup == 'node'
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: npm
          cache-dependency-path: console/frontend/package-lock.json

      - name: Setup Go
        if: matrix.setup == 'go'
        uses: actions/setup-go@v5
        with:
          go-version: '1.23'
          cache-dependency-path: core/tenant/go.sum

      - name: Setup Python
        if: matrix.setup == 'python'
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install uv
        if: matrix.setup == 'python'
        run: |
          curl -LsSf https://astral.sh/uv/install.sh | sh
          echo "$HOME/.cargo/bin" >> $GITHUB_PATH

      - name: Run tests with coverage
        working-directory: ${{ matrix.path }}
        run: |
          echo "🧪 Running tests with coverage for ${{ matrix.name }} (${{ matrix.type }})"
          case "${{ matrix.type }}" in
            java)
              echo "🧪 Running Java tests with JaCoCo coverage..."
              mvn org.jacoco:jacoco-maven-plugin:0.8.12:prepare-agent test org.jacoco:jacoco-maven-plugin:0.8.12:report
              echo "📊 Coverage report generated at target/site/jacoco/index.html"
              ;;
            typescript)
              echo "📦 Installing dependencies..."
              npm ci --legacy-peer-deps
              echo "🧪 Running TypeScript tests with coverage..."
              if [ -f package.json ] && grep -q '"test"' package.json; then
                # Check if test script is actually for unit testing (not dev server)
                if grep -q '"test":.*vite.*--host' package.json || grep -q '"test":.*dev' package.json; then
                  echo "Test script appears to be dev server, skipping"
                else
                  npm test -- --coverage --coverageReporters=text --coverageReporters=lcov || \
                  npm test -- --coverage || \
                  npm test
                fi
              else
                echo "No test script found in package.json"
              fi
              ;;
            go)
              echo "🧪 Running Go tests with coverage..."
              go test -coverprofile=coverage.out -covermode=atomic ./...
              echo "📊 Generating coverage report..."
              go tool cover -func=coverage.out
              ;;
            python)
              echo "📦 Installing dependencies..."
              if [ -f "uv.lock" ]; then
                echo "Installing dependencies with uv..."
                uv sync
                echo "🛠️ Installing coverage tools..."
                uv pip install pytest-cov
                echo "🧪 Running Python tests with coverage..."
                if [ -d "tests" ]; then
                  uv run python -m pytest tests/ -v --cov=. --cov-report=term --cov-report=xml --cov-report=html
                else
                  echo "No tests directory found"
                fi
              elif [ -f "requirements.txt" ]; then
                echo "Installing from requirements.txt..."
                python3 -m pip install -r requirements.txt
                echo "🛠️ Installing pytest and coverage tools..."
                python3 -m pip install pytest==8.0.0 pytest-cov
                echo "🧪 Running Python tests with coverage..."
                if [ -d "tests" ]; then
                  python3 -m pytest tests/ -v --cov=. --cov-report=term --cov-report=xml --cov-report=html
                else
                  echo "No tests directory found"
                fi
              elif [ -f "pyproject.toml" ]; then
                echo "Extracting dependencies from pyproject.toml..."
                sed -n '/^dependencies = \[/,/^\]/p' pyproject.toml | grep -E '^\s*"' | sed 's/^\s*"//' | sed 's/",\?$//' > /tmp/deps.txt
                echo "Installing dependencies..."
                python3 -m pip install -r /tmp/deps.txt
                echo "🛠️ Installing pytest and coverage tools..."
                python3 -m pip install pytest==8.0.0 pytest-cov
                echo "🧪 Running Python tests with coverage..."
                if [ -d "tests" ]; then
                  python3 -m pytest tests/ -v --cov=. --cov-report=term --cov-report=xml --cov-report=html
                else
                  echo "No tests directory found"
                fi
              fi
              ;;
          esac

      - name: Upload coverage reports
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: coverage-${{ matrix.name }}
          path: |
            ${{ matrix.path }}/**/target/site/jacoco/
            ${{ matrix.path }}/coverage/
            ${{ matrix.path }}/coverage.out
            ${{ matrix.path }}/coverage.xml
            ${{ matrix.path }}/htmlcov/
          retention-days: 30
          include-hidden-files: false

      - name: Display coverage summary
        if: always()
        working-directory: ${{ matrix.path }}
        run: |
          echo "📊 Coverage Summary for ${{ matrix.name }}"
          case "${{ matrix.type }}" in
            java)
              echo "✅ Java Coverage Report:"
              echo "================================================"
              # Find all jacoco.csv files in submodules
              CSV_FILES=$(find . -name "jacoco.csv" -path "*/site/jacoco/jacoco.csv" 2>/dev/null)

              if [ -n "$CSV_FILES" ]; then
                # Aggregate coverage from all modules
                awk -F',' '
                  FNR==1 {next}  # Skip header of each file
                  $2 != "" {
                    branch_covered += $6;
                    branch_missed += $5;
                    line_covered += $8;
                    line_missed += $7;
                    method_covered += $12;
                    method_missed += $11;
                  }
                  END {
                    if ((line_covered + line_missed) > 0) {
                      printf "Lines:    %.1f%% (%d/%d)\n", (line_covered/(line_covered+line_missed))*100, line_covered, line_covered+line_missed;
                    }
                    if ((branch_covered + branch_missed) > 0) {
                      printf "Branches: %.1f%% (%d/%d)\n", (branch_covered/(branch_covered+branch_missed))*100, branch_covered, branch_covered+branch_missed;
                    }
                    if ((method_covered + method_missed) > 0) {
                      printf "Methods:  %.1f%% (%d/%d)\n", (method_covered/(method_covered+method_missed))*100, method_covered, method_covered+method_missed;
                    }
                  }
                ' $CSV_FILES
                echo "================================================"
                echo "📄 Module reports:"
                find . -name "index.html" -path "*/site/jacoco/index.html" | while read report; do
                  echo "  - ${report#./}"
                done
              else
                echo "⚠️ No coverage reports found"
              fi
              ;;
            typescript)
              echo "✅ TypeScript Coverage Report:"
              echo "================================================"
              if [ -f coverage/lcov-report/index.html ]; then
                echo "Coverage report generated successfully"
                echo "📄 HTML report: coverage/lcov-report/index.html"
                if [ -f coverage/lcov.info ]; then
                  echo "📄 LCOV report: coverage/lcov.info"
                fi
                echo ""
                echo "💡 Coverage summary is displayed above in test output"
              else
                echo "⚠️ No coverage report found"
              fi
              echo "================================================"
              ;;
            go)
              if [ -f coverage.out ]; then
                echo "✅ Go Coverage Report:"
                echo "================================================"
                go tool cover -func=coverage.out | tail -n 1
                echo "================================================"
                echo "📄 Coverage profile: coverage.out"
                echo "💡 View HTML report: go tool cover -html=coverage.out"
              else
                echo "⚠️ No Go coverage report found"
              fi
              ;;
            python)
              echo "✅ Python Coverage Report:"
              echo "================================================"
              if [ -f coverage.xml ]; then
                echo "Coverage report generated successfully"
                if [ -f htmlcov/index.html ]; then
                  echo "📄 HTML report: htmlcov/index.html"
                fi
                echo "📄 XML report: coverage.xml"
                echo ""
                echo "💡 Coverage summary is displayed above in test output"
              else
                echo "⚠️ No coverage report found"
              fi
              echo "================================================"
              ;;
          esac

  # ============================================================================
  # Stage 4: Additional Checks
  # ============================================================================
  comment-check:
    name: 💬 Comment Check
    runs-on: ubuntu-latest
    needs: [detect-projects]
    # TODO: Temporarily disabled - will re-enable with improved implementation
    if: false && needs.detect-projects.outputs.has-projects == 'true'
    timeout-minutes: 10
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Check comment language
        run: |
          echo "💬 Checking comment language compliance..."
          chmod +x makefiles/check-comments.sh
          ./makefiles/check-comments.sh

  # ============================================================================
  # Stage 5: Summary
  # ============================================================================
  summary:
    name: 📊 Summary
    runs-on: ubuntu-latest
    needs: [detect-projects, check, test, comment-check]
    if: always() && needs.detect-projects.outputs.has-projects == 'true'
    timeout-minutes: 2
    steps:
      - name: Generate summary
        run: |
          echo "=== 🚀 CI Pipeline Summary ==="
          echo ""
          echo "🔍 Project Detection: ${{ needs.detect-projects.result }}"
          echo "🔍 Quality Checks: ${{ needs.check.result }}"
          echo "🧪 Tests: ${{ needs.test.result }}"
          echo "💬 Comment Check: ${{ needs.comment-check.result }} (temporarily disabled)"
          echo ""

          # Check overall success (comment-check is temporarily disabled, so we accept 'skipped')
          if [[ "${{ needs.detect-projects.result }}" == "success" && \
                "${{ needs.check.result }}" == "success" && \
                "${{ needs.test.result }}" == "success" && \
                ("${{ needs.comment-check.result }}" == "success" || "${{ needs.comment-check.result }}" == "skipped") ]]; then
            echo "✅ 🎉 All checks passed! Ready for merge."
          else
            echo "❌ 🚨 Some checks failed. Please review the logs."
            exit 1
          fi


================================================
FILE: .github/workflows/claude-review.yml
================================================
name: Claude Review

on:
  pull_request_target:
    types: [opened, synchronize]
    # Optional: Only run on specific file changes
    # paths:
    #   - "src/**/*.ts"
    #   - "src/**/*.tsx"
    #   - "src/**/*.js"
    #   - "src/**/*.jsx"

jobs:
  claude-review:
    if: |
      contains(fromJSON('["MEMBER","OWNER","COLLABORATOR"]'), github.event.pull_request.author_association)
    # Optional: Filter by PR author
    # if: |
    #   github.event.pull_request.user.login == 'external-contributor' ||
    #   github.event.pull_request.user.login == 'new-developer' ||
    #   github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'

    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      id-token: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Run Claude Review
        id: claude-review
        uses: anthropics/claude-code-action@v1
        env:
          # ANTHROPIC_BASE_URL: https://api.moonshot.cn/anthropic
          ANTHROPIC_BASE_URL: https://subus.imds.ai/
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          model: claude-opus-4-6
          track_progress: true
          prompt: |
            REPO: ${{ github.repository }}
            PR NUMBER: ${{ github.event.pull_request.number }}
 
            Please review this pull request with a focus on:
            - Code quality and best practices
            - Potential bugs or issues
            - Security implications
            - Performance considerations
 
            Provide detailed feedback using inline comments for specific issues.
            Please respond in Simplified Chinese.

          claude_args: |
            --allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*)"


================================================
FILE: .github/workflows/claude.yml
================================================
name: Claude Code

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]
  pull_request_review:
    types: [submitted]

jobs:
  claude:
    if: |
      (
        (github.event_name == 'issue_comment' && contains(fromJSON('["MEMBER","OWNER","COLLABORATOR"]'), github.event.comment.author_association)) ||
        (github.event_name == 'pull_request_review_comment' && contains(fromJSON('["MEMBER","OWNER","COLLABORATOR"]'), github.event.comment.author_association)) ||
        (github.event_name == 'pull_request_review' && contains(fromJSON('["MEMBER","OWNER","COLLABORATOR"]'), github.event.review.author_association)) ||
        (github.event_name == 'issues' && contains(fromJSON('["MEMBER","OWNER","COLLABORATOR"]'), github.event.issue.author_association))
      ) && (
        (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
        (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
        (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
        (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
      )
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      issues: write
      id-token: write
      actions: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Run Claude Code
        id: claude
        uses: anthropics/claude-code-action@v1
        env:
          # ANTHROPIC_BASE_URL: https://api.moonshot.cn/anthropic
          ANTHROPIC_BASE_URL: https://subus.imds.ai/
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          model: claude-opus-4-6
          claude_args: |
            --allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh issue:*),Bash(gh search:*),Bash(gh label:*)"


================================================
FILE: .github/workflows/codeql-security-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"

on:
  push:
    branches: [main, master, 'feature/**']
  pull_request:
    branches: [main, master, 'feature/**']
  schedule:
    - cron: '18 7 * * 3'

permissions:
  contents: read
  packages: write
  attestations: write
  id-token: write

jobs:
  analyze:
    name: Analyze (${{ matrix.language }})
    # Runner size impacts CodeQL analysis time. To learn more, please see:
    #   - https://gh.io/recommended-hardware-resources-for-running-codeql
    #   - https://gh.io/supported-runners-and-hardware-resources
    #   - https://gh.io/using-larger-runners (GitHub.com only)
    # Consider using larger runners or machines with greater resources for possible analysis time improvements.
    runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
    permissions:
      # required for all workflows
      security-events: write

      # required to fetch internal or private CodeQL packs
      packages: read

      # only required for workflows in private repositories
      actions: read
      contents: read

    strategy:
      fail-fast: false
      matrix:
        include:
        - language: actions
          build-mode: none
        - language: go
          build-mode: autobuild
        - language: java-kotlin
          build-mode: none # This mode only analyzes Java. Set this to 'autobuild' or 'manual' to analyze Kotlin too.
        - language: javascript-typescript
          build-mode: none
        - language: python
          build-mode: none
        # CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
        # Use `c-cpp` to analyze code written in C, C++ or both
        # Use 'java-kotlin' to analyze code written in Java, Kotlin or both
        # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
        # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
        # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
        # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
        # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    # Add any setup steps before running the `github/codeql-action/init` action.
    # This includes steps like installing compilers or runtimes (`actions/setup-node`
    # or others). This is typically only required for manual builds.
    # - name: Setup runtime (example)
    #   uses: actions/setup-example@v1

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v3
      with:
        languages: ${{ matrix.language }}
        build-mode: ${{ matrix.build-mode }}
        # If you wish to specify custom queries, you can do so here or in a config file.
        # By default, queries listed here will override any specified in a config file.
        # Prefix the list here with "+" to use these queries and those in the config file.

        # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
        # queries: security-extended,security-and-quality

    # If the analyze step fails for one of the languages you are analyzing with
    # "We were unable to automatically build your code", modify the matrix above
    # to set the build mode to "manual" for that language. Then modify this step
    # to build your code.
    # ℹ️ Command-line programs to run using the OS shell.
    # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
    - if: matrix.build-mode == 'manual'
      shell: bash
      run: |
        echo 'If you are using a "manual" build mode for one or more of the' \
          'languages you are analyzing, replace this with the commands to build' \
          'your code, for example:'
        echo '  make bootstrap'
        echo '  make release'
        exit 1

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v3
      with:
        category: "/language:${{matrix.language}}"


================================================
FILE: .github/workflows/release.yml
================================================
name: Release Astron Agent

on:
  push:
    tags:
      - 'v*.*.*'      # 匹配语义版本号 (v1.0.0, v2.1.3, etc.)
      - 'v*.*.*-*'    # 匹配预发布版本 (v1.0.0-beta.1, v2.1.0-rc.1, etc.)
  workflow_dispatch:
    inputs:
      tag:
        description: 'Tag to release (e.g., v1.0.0)'
        required: true
        type: string
      prerelease:
        description: 'Mark as pre-release'
        required: false
        default: false
        type: boolean

concurrency:
  group: release-${{ github.ref }}
  cancel-in-progress: false

permissions:
  contents: write
  packages: write
  attestations: write
  id-token: write

env:
  REGISTRY_GHCR: ghcr.io

jobs:
  # ============================================================================
  # Stage 1: Validation and Preparation
  # ============================================================================
  prepare-release:
    name: 🚀 Prepare Release
    runs-on: ubuntu-latest
    outputs:
      version: ${{ steps.meta.outputs.version }}
      is-prerelease: ${{ steps.meta.outputs.is-prerelease }}
      has-core-services: ${{ steps.detect.outputs.has-core-services }}
      has-console-hub: ${{ steps.detect.outputs.has-console-hub }}
      has-console-frontend: ${{ steps.detect.outputs.has-console-frontend }}
      changelog: ${{ steps.changelog.outputs.changelog }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0  # Fetch complete history for changelog generation

      - name: Validate tag format
        id: meta
        run: |
          if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
            VERSION="${{ github.event.inputs.tag }}"
            IS_PRERELEASE="${{ github.event.inputs.prerelease }}"
          else
            VERSION=${GITHUB_REF#refs/tags/}
            # Check if it's a pre-release version (contains -, alpha, beta, rc, etc.)
            if [[ "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
              IS_PRERELEASE="false"
            else
              IS_PRERELEASE="true"
            fi
          fi

          # Validate version format
          if [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+ ]]; then
            echo "❌ Invalid version format: $VERSION"
            echo "✅ Correct format: v1.0.0, v1.0.0-beta.1, v1.0.0-rc.1"
            exit 1
          fi

          echo "version=$VERSION" >> $GITHUB_OUTPUT
          echo "is-prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT

          echo "🏷️ Release version: $VERSION"
          echo "🔖 Pre-release: $IS_PRERELEASE"

      - name: Smart project detection
        id: detect
        run: |
          echo "🔍 Detecting Astron Agent components..."

          HAS_CORE_SERVICES="false"
          HAS_CONSOLE_HUB="false"
          HAS_CONSOLE_FRONTEND="false"

          # Detect Core service components (based on build-push.yml structure)
          CORE_COMPONENTS=("tenant" "memory/database" "plugin/rpa" "plugin/link" "plugin/aitools" "agent" "knowledge" "workflow")
          CORE_COUNT=0

          for component in "${CORE_COMPONENTS[@]}"; do
            if [[ -f "core/${component}/Dockerfile" ]]; then
              CORE_COUNT=$((CORE_COUNT + 1))
              echo "✅ Core component: core/${component}/"
            fi
          done

          if [[ $CORE_COUNT -gt 0 ]]; then
            HAS_CORE_SERVICES="true"
            echo "✅ Detected $CORE_COUNT Core service components"
          fi

          # Detect Console Hub (Java)
          if [[ -f "console/backend/hub/pom.xml" && -f "console/backend/hub/Dockerfile" ]]; then
            HAS_CONSOLE_HUB="true"
            echo "✅ Console Hub: console/backend/hub/ (Java Spring Boot)"
          fi

          # Detect Console Frontend (React)
          if [[ -f "console/frontend/package.json" && -f "console/frontend/Dockerfile" ]]; then
            HAS_CONSOLE_FRONTEND="true"
            echo "✅ Console Frontend: console/frontend/ (React)"
          fi

          echo "has-core-services=$HAS_CORE_SERVICES" >> $GITHUB_OUTPUT
          echo "has-console-hub=$HAS_CONSOLE_HUB" >> $GITHUB_OUTPUT
          echo "has-console-frontend=$HAS_CONSOLE_FRONTEND" >> $GITHUB_OUTPUT

      - name: Generate Changelog
        id: changelog
        run: |
          echo "📝 Generating changelog..."

          # Get previous tag
          PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
          CURRENT_TAG="${{ steps.meta.outputs.version }}"

          if [[ -z "$PREVIOUS_TAG" ]]; then
            echo "🆕 This is the first release"
            COMMIT_RANGE="HEAD"
          else
            echo "📊 Comparing: $PREVIOUS_TAG...$CURRENT_TAG"
            COMMIT_RANGE="$PREVIOUS_TAG..HEAD"
          fi

          # Create changelog
          CHANGELOG_FILE="/tmp/changelog.md"

          # Write header
          echo "## What's Changed" > "$CHANGELOG_FILE"
          echo "" >> "$CHANGELOG_FILE"

          # Collect and categorize commits
          echo "### ✨ New Features" >> "$CHANGELOG_FILE"
          FEATURES=$(git log --pretty=format:"%s" $COMMIT_RANGE | grep "^feat" | sed 's/^feat[^:]*: /- /')
          if [[ -n "$FEATURES" ]]; then
            echo "$FEATURES" >> "$CHANGELOG_FILE"
          else
            echo "- No new features in this release" >> "$CHANGELOG_FILE"
          fi

          echo "" >> "$CHANGELOG_FILE"
          echo "### 🐛 Fixes" >> "$CHANGELOG_FILE"
          FIXES=$(git log --pretty=format:"%s" $COMMIT_RANGE | grep "^fix" | sed 's/^fix[^:]*: /- /')
          if [[ -n "$FIXES" ]]; then
            echo "$FIXES" >> "$CHANGELOG_FILE"
          else
            echo "- No bug fixes in this release" >> "$CHANGELOG_FILE"
          fi

          echo "" >> "$CHANGELOG_FILE"
          echo "### 🔧 Improvements" >> "$CHANGELOG_FILE"
          IMPROVEMENTS=$(git log --pretty=format:"%s" $COMMIT_RANGE | grep -E "^(chore|docs|refactor|test|ci|perf|style)" | sed 's/^[^:]*: /- /')
          if [[ -n "$IMPROVEMENTS" ]]; then
            echo "$IMPROVEMENTS" >> "$CHANGELOG_FILE"
          else
            echo "- No improvements in this release" >> "$CHANGELOG_FILE"
          fi

          # Output to GitHub Output
          {
            echo "changelog<<EOF"
            cat "$CHANGELOG_FILE"
            echo "EOF"
          } >> $GITHUB_OUTPUT

          echo "📄 Changelog generated successfully"

  # ============================================================================
  # Stage 2: Build Docker Images (reuse build-push logic)
  # ============================================================================
  build-core-services:
    name: 🏗️ Build Core Services
    runs-on: ubuntu-latest
    needs: prepare-release
    if: needs.prepare-release.outputs.has-core-services == 'true'
    strategy:
      matrix:
        service:
          - { name: "tenant", path: "core/tenant", emoji: "🏢" }
          - { name: "database", path: "core/memory/database", emoji: "🧠" }
          - { name: "rpa", path: "core/plugin/rpa", emoji: "🤖" }
          - { name: "link", path: "core/plugin/link", emoji: "🔗" }
          - { name: "aitools", path: "core/plugin/aitools", emoji: "🛠️" }
          - { name: "agent", path: "core/agent", emoji: "🤖" }
          - { name: "knowledge", path: "core/knowledge", emoji: "📚" }
          - { name: "workflow", path: "core/workflow", emoji: "⚡" }
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/core-${{ matrix.service.name }}
          tags: |
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=semver,pattern={{major}}
            type=raw,value=${{ needs.prepare-release.outputs.version }}

      - name: Build and push ${{ matrix.service.emoji }} ${{ matrix.service.name }} image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./${{ matrix.service.path }}/Dockerfile
          platforms: linux/amd64,linux/arm64
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.prepare-release.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  build-console-hub:
    name: ☕ Build Console Hub
    runs-on: ubuntu-latest
    needs: prepare-release
    if: needs.prepare-release.outputs.has-console-hub == 'true'
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/console-hub
          tags: |
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=semver,pattern={{major}}
            type=raw,value=${{ needs.prepare-release.outputs.version }}

      - name: Build and push Console Hub image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./console/backend/hub/Dockerfile
          platforms: linux/amd64,linux/arm64
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.prepare-release.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true
          provenance: false
          sbom: false

  build-console-frontend:
    name: 🌐 Build Console Frontend
    runs-on: ubuntu-latest
    needs: prepare-release
    if: needs.prepare-release.outputs.has-console-frontend == 'true'
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        with:
          install: true

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY_GHCR }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Extract metadata
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
            ${{ env.REGISTRY_GHCR }}/${{ github.repository }}/console-frontend
          tags: |
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=semver,pattern={{major}}
            type=raw,value=${{ needs.prepare-release.outputs.version }}

      - name: Build and push Console Frontend image
        uses: docker/build-push-action@v5
        with:
          context: .
          file: ./console/frontend/Dockerfile
          platforms: linux/amd64,linux/arm64
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            VERSION=${{ needs.prepare-release.outputs.version }}
            GIT_COMMIT=${{ github.sha }}
            BUILD_TIME=${{ github.run_id }}
          no-cache: true

  # ============================================================================
  # Stage 3: Create GitHub Release
  # ============================================================================
  create-release:
    name: 🎉 Create GitHub Release
    runs-on: ubuntu-latest
    needs:
      - prepare-release
      - build-core-services
      - build-console-hub
      - build-console-frontend
    if: always() && needs.prepare-release.result == 'success'
    steps:
      - name: Create GitHub Release
        uses: softprops/action-gh-release@v1
        with:
          tag_name: ${{ needs.prepare-release.outputs.version }}
          name: "Astron Agent ${{ needs.prepare-release.outputs.version }}"
          body: ${{ needs.prepare-release.outputs.changelog }}
          prerelease: ${{ needs.prepare-release.outputs.is-prerelease }}
          generate_release_notes: true
          append_body: true
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Release Summary
        run: |
          echo "=== 🎉 Astron Agent Release Summary ==="
          echo ""
          echo "🏷️ Version: ${{ needs.prepare-release.outputs.version }}"
          echo "🔖 Pre-release: ${{ needs.prepare-release.outputs.is-prerelease }}"
          echo "📦 Release page: https://github.com/${{ github.repository }}/releases/tag/${{ needs.prepare-release.outputs.version }}"
          echo ""

          echo "🐳 Docker Image Build Status:"
          echo "  🏗️ Core Services: ${{ needs.build-core-services.result }}"
          echo "  ☕ Console Hub: ${{ needs.build-console-hub.result }}"
          echo "  🌐 Console Frontend: ${{ needs.build-console-frontend.result }}"
          echo ""

          echo "🎯 Quick Start:"
          echo "git clone https://github.com/${{ github.repository }}.git"
          echo "cd astron-agent"
          echo "git checkout ${{ needs.prepare-release.outputs.version }}"
          echo "docker-compose up -d"
          echo ""

          echo "✅ 🚀 Astron Agent Release Complete!"

================================================
FILE: .gitignore
================================================
.vscode

# IntelliJ IDEA project files
# ===================================
.idea/
*.iml
*.iws
out/

# =============================================================================
# Language-Specific Build Files
# =============================================================================

# Go
*.exe
*.exe~
*.dll
*.so
*.dylib
*.test
*.out
go.work
go.work.sum
bin/
pkg/
vendor/
.gocache/
.golangci-cache/

# Java/Maven
target/
*.class
*.jar
*.war
*.ear
*.nar

# TypeScript/Node.js
node_modules/
*.tsbuildinfo
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Python
__pycache__/
*.py[cod]
*$py.class
*.pyc
*.pyo
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
pip-log.txt
pip-delete-this-directory.txt

# =============================================================================
# Build & Output Directories
# =============================================================================

build/
dist/
out/
tmp/

# =============================================================================
# Development Tools & IDEs
# =============================================================================

# IDEs
.vscode/
.idea/
.cursor/
*.swp
*.swo
*.swn
*~
.project
.classpath
.c9/
.settings/
.loadpath
.vimrc.local
.exrc

# Claude Code (user-specific)
.claude/
!console/.claude/

# Serena MCP cache
.serena/

# =============================================================================
# Operating Systems
# =============================================================================

# macOS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
.AppleDouble
.LSOverride
Icon
.DocumentRevisions-V100
.fseventsd
.TemporaryItems
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Windows
Thumbs.db
ehthumbs.db

# Linux/Unix
*~

# =============================================================================
# Runtime & Configuration
# =============================================================================

# Environment variables
.env
.env.dev
.env.local
.env.production
.env.development

!console/frontend/.env.production
!console/frontend/.env.development
!console/frontend/.env.test

# Logs
*.log
logs/

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Temporary files
*.tmp
*.temp

# Local development
.local/

# =============================================================================
# Security & Sensitive Data
# =============================================================================

# Database files
*.db
*.sqlite
*.sqlite3

# Certificate files
*.pem
*.key
*.crt
*.cert

# Configuration files that might contain secrets
config.local.*
secrets.yml


# =============================================================================
# Backup & Archive Files
# =============================================================================

*.bak
*.backup

# =============================================================================
# Test Coverage
# =============================================================================

*.cover
coverage.html
coverage.txt
coverage.out
core/.serena/project.yml


# Python Virtual Environments
venv/
env/
ENV/
.venv/
.env/
virtualenv/
*.venv*
.python-version

# Python Tools Cache
.ruff_cache/
.uv/
.pdm-python
.pdm-build/
.tox/
.nox/
.hypothesis/
.pytype/

# local ci
.localci.toml

# =============================================================================
# Cache & Testing
# =============================================================================
.mypy_cache/
.pytest_cache/
.cache/
.benchmarks/
htmlcov/
.coverage
.coverage.*
nosetests.xml
coverage.xml
*.cover
.hypothesis/

# =============================================================================
# Docker & Containers
# =============================================================================
docker-compose.override.yml
.dockerignore.local
*.dockerignore.local
.codex/
openspec/

================================================
FILE: .pre-commit-config.yaml
================================================
# =============================================================================
# Pre-commit Configuration for Multi-language Project
# Fast code quality checks for changed files only
# =============================================================================
# Install: pip install pre-commit && pre-commit install
#          pre-commit install --hook-type commit-msg
#
# Usage:   pre-commit run --all-files  (check all files)
#          pre-commit run               (check staged files)
#          git commit                   (auto trigger)
#
# Mode:    CHECK ONLY - Reports issues without auto-fixing
#          To fix issues manually:
#          - Python:     black . && isort .
#          - TypeScript: npm run format
#          - Go:         gofmt -w . && goimports -w .
#          - Java:       mvn spotless:apply
# =============================================================================

default_language_version:
  python: python3.11
  node: 20.0.0

repos:
  # =============================================================================
  # Common Checks (All Languages) - Check Only Mode
  # =============================================================================
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: check-yaml
        exclude: 'console/frontend/node_modules|helm/'
      - id: check-json
        exclude: 'console/frontend/node_modules'
      - id: check-added-large-files
        args: ['--maxkb=1000']
      - id: check-merge-conflict

  # =============================================================================
  # Python Code Quality - Check Only Mode
  # =============================================================================
  - repo: https://github.com/psf/black
    rev: 24.4.2
    hooks:
      - id: black
        name: Check Python code format with Black
        language_version: python3.11
        args: ['--check']
        files: ^(core/agent|core/workflow|core/knowledge|core/plugin|core/memory/database)/.*\.py$

  - repo: local
    hooks:
      - id: isort-knowledge
        name: Check Python imports (knowledge)
        entry: bash -c 'cd core/knowledge && python3 -m isort --check-only --profile black .'
        language: system
        files: ^core/knowledge/.*\.py$
        pass_filenames: false

      - id: isort-workflow
        name: Check Python imports (workflow)
        entry: bash -c 'cd core/workflow && python3 -m isort --check-only --profile black .'
        language: system
        files: ^core/workflow/.*\.py$
        pass_filenames: false

      - id: isort-agent
        name: Check Python imports (agent)
        entry: bash -c 'cd core/agent && python3 -m isort --check-only --profile black .'
        language: system
        files: ^core/agent/.*\.py$
        pass_filenames: false

      - id: isort-plugin
        name: Check Python imports (plugin)
        entry: bash -c 'cd core/plugin/aitools && python3 -m isort --check-only --profile black .'
        language: system
        files: ^core/plugin/.*\.py$
        pass_filenames: false

  - repo: local
    hooks:
      - id: flake8-agent
        name: Lint Python with Flake8 (agent)
        entry: bash -c 'cd core/agent && python3 -m flake8 .'
        language: system
        files: ^core/agent/.*\.py$
        pass_filenames: false

      - id: flake8-workflow
        name: Lint Python with Flake8 (workflow)
        entry: bash -c 'cd core/workflow && python3 -m flake8 --max-line-length 88 --ignore=E203,W503,E501 --max-complexity 10 .'
        language: system
        files: ^core/workflow/.*\.py$
        pass_filenames: false

      - id: flake8-knowledge
        name: Lint Python with Flake8 (knowledge)
        entry: bash -c 'cd core/knowledge && python3 -m flake8 --max-line-length 88 --ignore=E203,W503,E501 --max-complexity 10 .'
        language: system
        files: ^core/knowledge/.*\.py$
        pass_filenames: false

      - id: flake8-plugin
        name: Lint Python with Flake8 (plugin)
        entry: bash -c 'cd core/plugin/rpa && python3 -m flake8 --max-line-length 88 --ignore=E203,W503,E501 --max-complexity 10 .'
        language: system
        files: ^core/plugin/rpa/.*\.py$
        pass_filenames: false

  - repo: local
    hooks:
      - id: mypy-agent
        name: Type check Python with mypy (agent)
        entry: bash -c 'cd core/agent && python3 -m mypy --disallow-untyped-defs --disallow-incomplete-defs --check-untyped-defs --no-implicit-optional --ignore-missing-imports --explicit-package-bases .'
        language: system
        files: ^core/agent/.*\.py$
        pass_filenames: false

      - id: mypy-workflow
        name: Type check Python with mypy (workflow)
        entry: bash -c 'cd core/workflow && python3 -m mypy --disallow-untyped-defs --disallow-incomplete-defs --check-untyped-defs --no-implicit-optional --ignore-missing-imports --explicit-package-bases .'
        language: system
        files: ^core/workflow/.*\.py$
        pass_filenames: false

      - id: mypy-knowledge
        name: Type check Python with mypy (knowledge)
        entry: bash -c 'cd core/knowledge && python3 -m mypy --disallow-untyped-defs --disallow-incomplete-defs --check-untyped-defs --no-implicit-optional --ignore-missing-imports --explicit-package-bases .'
        language: system
        files: ^core/knowledge/.*\.py$
        pass_filenames: false

      - id: mypy-database
        name: Type check Python with mypy (database)
        entry: bash -c 'cd core/memory/database && python3 -m mypy --disallow-untyped-defs --disallow-incomplete-defs --check-untyped-defs --no-implicit-optional --ignore-missing-imports --explicit-package-bases .'
        language: system
        files: ^core/memory/database/.*\.py$
        pass_filenames: false

      - id: mypy-aitools
        name: Type check Python with mypy (aitools)
        entry: bash -c 'cd core/plugin/aitools && python3 -m mypy --disallow-untyped-defs --disallow-incomplete-defs --check-untyped-defs --no-implicit-optional --ignore-missing-imports --explicit-package-bases .'
        language: system
        files: ^core/plugin/aitools/.*\.py$
        pass_filenames: false

      - id: mypy-link
        name: Type check Python with mypy (link)
        entry: bash -c 'cd core/plugin/link && python3 -m mypy --disallow-untyped-defs --disallow-incomplete-defs --check-untyped-defs --no-implicit-optional --ignore-missing-imports --explicit-package-bases .'
        language: system
        files: ^core/plugin/link/.*\.py$
        pass_filenames: false

      - id: mypy-rpa
        name: Type check Python with mypy (rpa)
        entry: bash -c 'cd core/plugin/rpa && python3 -m mypy --disallow-untyped-defs --disallow-incomplete-defs --check-untyped-defs --no-implicit-optional --ignore-missing-imports --explicit-package-bases .'
        language: system
        files: ^core/plugin/rpa/.*\.py$
        pass_filenames: false

  - repo: local
    hooks:
      - id: pylint-agent
        name: Analyze Python with Pylint (agent)
        entry: bash -c 'cd core/agent && python3 -m pylint --disable=import-error --max-line-length=88 --max-args=7 --max-locals=15 --max-returns=6 --max-branches=12 --max-statements=50 --fail-under=8.0 *.py'
        language: system
        files: ^core/agent/.*\.py$
        pass_filenames: false

      - id: pylint-workflow
        name: Analyze Python with Pylint (workflow)
        entry: bash -c 'cd core/workflow && python3 -m pylint --disable=import-error --max-line-length=88 --max-args=7 --max-locals=15 --max-returns=6 --max-branches=12 --max-statements=50 --fail-under=8.0 *.py'
        language: system
        files: ^core/workflow/.*\.py$
        pass_filenames: false

      - id: pylint-knowledge
        name: Analyze Python with Pylint (knowledge)
        entry: bash -c 'cd core/knowledge && python3 -m pylint --disable=import-error --max-line-length=88 --max-args=7 --max-locals=15 --max-returns=6 --max-branches=12 --max-statements=50 --fail-under=8.0 *.py'
        language: system
        files: ^core/knowledge/.*\.py$
        pass_filenames: false

      - id: pylint-database
        name: Analyze Python with Pylint (database)
        entry: bash -c 'cd core/memory/database && python3 -m pylint --disable=import-error --max-line-length=88 --max-args=7 --max-locals=15 --max-returns=6 --max-branches=12 --max-statements=50 --fail-under=8.0 *.py'
        language: system
        files: ^core/memory/database/.*\.py$
        pass_filenames: false

      - id: pylint-aitools
        name: Analyze Python with Pylint (aitools)
        entry: bash -c 'cd core/plugin/aitools && python3 -m pylint --disable=import-error --max-line-length=88 --max-args=7 --max-locals=15 --max-returns=6 --max-branches=12 --max-statements=50 --fail-under=8.0 *.py'
        language: system
        files: ^core/plugin/aitools/.*\.py$
        pass_filenames: false

      - id: pylint-link
        name: Analyze Python with Pylint (link)
        entry: bash -c 'cd core/plugin/link && python3 -m pylint --disable=import-error --max-line-length=88 --max-args=7 --max-locals=15 --max-returns=6 --max-branches=12 --max-statements=50 --fail-under=8.0 *.py'
        language: system
        files: ^core/plugin/link/.*\.py$
        pass_filenames: false

      - id: pylint-rpa
        name: Analyze Python with Pylint (rpa)
        entry: bash -c 'cd core/plugin/rpa && python3 -m pylint --disable=import-error --max-line-length=88 --max-args=7 --max-locals=15 --max-returns=6 --max-branches=12 --max-statements=50 --fail-under=8.0 *.py'
        language: system
        files: ^core/plugin/rpa/.*\.py$
        pass_filenames: false

  # =============================================================================
  # TypeScript/JavaScript Code Quality - Check Only Mode
  # =============================================================================
  - repo: local
    hooks:
      - id: prettier-check
        name: Check TypeScript/JavaScript format with Prettier
        entry: bash -c 'cd console/frontend && npx prettier --check "src/**/*.{ts,tsx,js,jsx,json,md}" --ignore-path .gitignore'
        language: system
        files: ^console/frontend/src/.*\.(ts|tsx|js|jsx|json|md)$
        pass_filenames: false

      - id: eslint-check
        name: Lint TypeScript with ESLint
        entry: bash -c 'cd console/frontend && npx eslint "src/**/*.{ts,tsx}" --quiet'
        language: system
        files: ^console/frontend/src/.*\.(ts|tsx)$
        pass_filenames: false

  # =============================================================================
  # Go Code Quality - Check Only Mode
  # =============================================================================
  - repo: local
    hooks:
      - id: golangci-lint
        name: Lint Go with golangci-lint
        entry: bash -c 'cd core/tenant && golangci-lint run --timeout=5m ./...'
        language: system
        files: ^core/tenant/.*\.go$
        pass_filenames: false

      - id: go-fmt-check
        name: Check Go code format with gofmt
        entry: bash -c 'cd core/tenant && gofmt -l . | tee /dev/stderr | test -z "$(cat)"'
        language: system
        files: ^core/tenant/.*\.go$
        pass_filenames: false

      - id: go-imports-check
        name: Check Go imports with goimports
        entry: bash -c 'cd core/tenant && goimports -l . | tee /dev/stderr | test -z "$(cat)"'
        language: system
        files: ^core/tenant/.*\.go$
        pass_filenames: false

      - id: go-vet
        name: Check Go code with go vet
        entry: bash -c 'cd core/tenant && go vet ./...'
        language: system
        files: ^core/tenant/.*\.go$
        pass_filenames: false

  # =============================================================================
  # Java Code Quality (requires local Maven)
  # =============================================================================
  - repo: local
    hooks:
      - id: spotless-check
        name: Check Java formatting with Spotless
        entry: bash -c 'cd console/backend && mvn spotless:check'
        language: system
        files: ^console/backend/.*\.java$
        pass_filenames: false

      - id: checkstyle
        name: Check Java style with Checkstyle
        entry: bash -c 'cd console/backend && mvn checkstyle:check'
        language: system
        files: ^console/backend/.*\.java$
        pass_filenames: false

  # =============================================================================
  # Security Scanning
  # =============================================================================
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.21.2
    hooks:
      - id: gitleaks
        name: Detect secrets with gitleaks

  # =============================================================================
  # Commit Message Validation
  # =============================================================================
  - repo: https://github.com/compilerla/conventional-pre-commit
    rev: v3.1.0
    hooks:
      - id: conventional-pre-commit
        name: Check commit message format
        stages: [commit-msg]
        args:
          - feat
          - fix
          - docs
          - style
          - refactor
          - perf
          - test
          - build
          - ci
          - chore
          - revert

# =============================================================================
# CI Integration Config
# =============================================================================
ci:
  autofix_commit_msg: 'ci: auto fixes from pre-commit hooks'
  autofix_prs: true
  autoupdate_commit_msg: 'ci: pre-commit autoupdate'
  autoupdate_schedule: weekly
  skip: [spotless-check, checkstyle]


================================================
FILE: AGENTS.md
================================================
# AGENTS.md

## 项目概览

Astron Agent 是一个企业级 Agentic Workflow 开发平台,包含控制台前后端、多个核心微服务、插件系统以及部署与基础设施配置。仓库采用多语言多模块结构,主要语言包括 TypeScript、Java、Python 和 Go。

## 仓库结构

### 控制台

- `console/frontend`
  - React 18 + TypeScript + Vite 前端应用
  - 负责控制台 UI、Agent 创建、聊天界面、工作流可视化、模型管理、插件商店等功能
- `console/backend`
  - Java Spring Boot 后端
  - 负责控制台 REST API、SSE、鉴权、管理能力和业务聚合
  - 主要子模块:
    - `hub`
    - `toolkit`
    - `commons`

### 核心微服务

- `core/agent`
  - Python FastAPI 服务
  - 负责 Agent 执行引擎、Chat/CoT/CoT Process Agent、插件调用、会话上下文处理
- `core/workflow`
  - Python FastAPI 服务
  - 负责工作流编排、执行、调试、版本与事件处理
- `core/knowledge`
  - Python FastAPI 服务
  - 负责知识库、文档处理、向量化、检索、RAG 集成
- `core/memory`
  - Python 模块
  - 负责对话历史、短期/长期记忆、会话持久化
- `core/tenant`
  - Go 服务
  - 负责多租户、空间隔离、组织与资源配额管理
- `core/plugin`
  - 插件能力目录
  - 包含 `aitools`、`rpa`、`link` 等插件服务
- `core/common`
  - Python 公共能力模块
  - 负责认证、日志、观测、数据库/缓存/消息队列/对象存储等基础设施抽象

### 其他目录

- `docs`
  - 项目说明、部署、配置、模块说明
  - 架构理解优先参考 `docs/PROJECT_MODULES_zh.md`
- `docker`
  - Docker Compose 及相关基础设施配置
- `helm`
  - Helm Chart 与 Kubernetes 部署配置
- `makefiles`
  - 各语言和模块的构建、检查脚本
- `openspec`
  - OpenSpec 变更提案与任务管理

## 架构理解

建议按以下路径理解系统:

1. `console/frontend` 负责用户交互入口。
2. `console/backend` 负责控制台 API 聚合和管理逻辑。
3. `core/*` 承担实际智能体、工作流、知识库、租户、插件等核心能力。
4. `core/common` 为 Python 微服务提供统一基础设施支持。
5. 底层依赖 MySQL、Redis、Kafka、MinIO 等基础设施。

典型通信关系:

- Frontend -> Console Backend:HTTP/REST、SSE
- Console Backend -> Core Services:HTTP/REST
- Core Services -> Core Services:Kafka 事件驱动

## 技术栈

- 前端:React 18、TypeScript 5、Vite 5、Ant Design 5、Tailwind CSS
- 控制台后端:Java 21、Spring Boot 3.5.x、MyBatis Plus、Spring Security、OAuth2
- 核心服务:Python 3.11+、FastAPI、SQLAlchemy / SQLModel、Pydantic、OpenTelemetry
- 租户服务:Go 1.23、Gin
- 基础设施:MySQL、Redis、Kafka、MinIO

## 开发约定

### 通用

- 优先做最小必要改动,避免跨模块无关重构。
- 改动前先确认模块边界,避免把控制台逻辑误放到核心服务,或把领域逻辑误放到 API 层。
- 优先沿用现有工程风格、目录组织和命名习惯。
- 如果变更涉及多个服务,明确调用链和依赖方向。

### Python 模块

- 重点目录:`core/agent`、`core/workflow`、`core/knowledge`、`core/common`
- 优先保持清晰分层,避免把业务逻辑堆进路由层。
- 测试使用 `pytest`
- 风格和质量工具以仓库现有配置为准,例如 Black、isort、MyPy、Pylint、Flake8

### Java 模块

- 重点目录:`console/backend/*`
- 遵守 Spring Boot 分层结构
- DTO、Service、Controller、Mapper 各司其职
- 测试通常使用 JUnit

### TypeScript 前端

- 重点目录:`console/frontend/src`
- 页面在 `pages`,复用组件在 `components`,状态在 `store`,接口调用在 `services` 或相邻模块中
- 优先复用已有状态管理、工具函数和样式体系
- 风格和质量工具以 ESLint、Prettier、TypeScript 配置为准

### Go 模块

- 重点目录:`core/tenant`
- 保持接口、服务、存储职责清晰
- 遵循 `go fmt` 和现有项目结构

## 修改建议

- 改前先定位目标模块,不要在不了解调用链时直接改公共层。
- 涉及接口字段变更时,同时检查:
  - 前端调用
  - 控制台后端 DTO / Controller / Service
  - 下游核心服务 schema 或接口定义
- 涉及工作流、知识库、插件能力时,优先检查是否已有测试覆盖。
- 涉及 Kafka、Redis、MinIO 或鉴权时,优先评估对其他服务的联动影响。

## 常用关注路径

- `docs/PROJECT_MODULES_zh.md`
- `README.md`
- `console/README.md`
- `console/frontend`
- `console/backend`
- `core/agent`
- `core/workflow`
- `core/knowledge`
- `core/common`
- `helm/astron-agent`
- `docker`

## 协作说明

- 进行实现前,优先确认目标模块、上下游依赖和验证方式。


================================================
FILE: CLAUDE.md
================================================
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## 项目概述

Astron Agent 是一个企业级 Agentic Workflow 开发平台,采用微服务架构,整合了 AI 工作流编排、模型管理、AI 工具、RPA 自动化和团队协作功能。

### 技术栈概览

- **前端**: TypeScript + React 18 + Vite + Ant Design (位于 `console/frontend/`)
- **控制台后端**: Java 21 + Spring Boot 3.5.4 (位于 `console/backend/`)
- **核心微服务**: Python 3.11+ + FastAPI (位于 `core/` 目录)
- **租户服务**: Go 1.23 + Gin (位于 `core/tenant/`)
- **基础设施**: MySQL, Redis, Kafka, MinIO

## 常用开发命令

### 统一构建工具 (Makefile)

项目使用统一的 Makefile 管理所有语言的构建、测试和质量检查:

```bash
# 一次性环境设置
make setup              # 安装所有工具,配置 Git 钩子

# 日常开发命令
make format             # 格式化所有代码 (Go/Java/Python/TypeScript)
make check              # 运行所有质量检查 (lint)
make test               # 运行所有测试
make build              # 构建所有项目
make ci                 # 完整 CI 流程: format + check + test + build

# 代码推送
make push               # 安全推送 (带预检查)

# 项目状态
make status             # 显示项目信息
make info               # 显示工具版本
```

### 本地开发配置

为提高开发效率,可创建 `.localci.toml` 文件只启用正在开发的模块:

```bash
cp makefiles/localci.toml .localci.toml
# 编辑 .localci.toml,设置 enabled = true/false 来启用/禁用模块
```

### 运行各服务

```bash
# Go 服务 (租户服务)
cd core/tenant && go run cmd/main.go

# Java 服务 (控制台后端)
cd console/backend && mvn spring-boot:run

# Python 服务 (Agent 服务)
cd core/agent && python main.py

# Python 服务 (Workflow 服务)
cd core/workflow && python main.py

# Python 服务 (Knowledge 服务)
cd core/knowledge && python main.py

# TypeScript 前端
cd console/frontend && npm run dev
```

### Python 模块测试

```bash
# 在各 Python 模块目录下运行
pytest                          # 运行所有测试
pytest tests/test_xxx.py        # 运行单个测试文件
pytest -v --cov                 # 运行测试并生成覆盖率报告
```

### Java 模块测试

```bash
cd console/backend
mvn test                        # 运行所有测试
mvn test -Dtest=ClassName       # 运行单个测试类
```

### 前端开发

```bash
cd console/frontend
npm run dev                     # 启动开发服务器 (端口 3000)
npm run build                   # 生产构建
npm run lint                    # ESLint 检查
npm run format                  # Prettier 格式化
npm run type-check              # TypeScript 类型检查
npm run quality                 # 运行所有检查
```

## 项目架构

### 目录结构

```
astron-agent/
├── console/                    # 控制台模块
│   ├── frontend/              # React 前端 (TypeScript)
│   └── backend/               # Spring Boot 后端 (Java)
│       ├── hub/               # 主 API 服务
│       ├── toolkit/           # 工具模块
│       └── commons/           # 公共模块
├── core/                      # 核心微服务
│   ├── agent/                 # Agent 服务 (Python FastAPI)
│   ├── workflow/              # 工作流服务 (Python FastAPI)
│   ├── knowledge/             # 知识库服务 (Python FastAPI)
│   ├── memory/                # 内存数据库服务 (Python)
│   ├── tenant/                # 租户服务 (Go Gin)
│   ├── common/                # 公共模块 (Python)
│   └── plugin/                # 插件系统
│       ├── aitools/           # AI 工具插件
│       ├── rpa/               # RPA 插件
│       └── link/              # 链接插件
├── docker/                    # Docker 配置
├── docs/                      # 文档
├── helm/                      # Kubernetes Helm Charts
└── makefiles/                 # Makefile 工具链
```

### 核心架构模式

#### 1. 微服务通信

- **Frontend → Backend**: HTTP/REST + SSE (服务端推送)
- **Backend → Core Services**: HTTP/REST API
- **Core Services ↔ Core Services**: Kafka 事件驱动 (异步)
- **数据持久化**: MySQL (关系数据) + Redis (缓存/会话)
- **文件存储**: MinIO (对象存储)

#### 2. Kafka 事件主题

- `workflow-events`: 工作流事件
- `knowledge-events`: 知识库事件
- `agent-events`: Agent 事件

#### 3. Python 服务架构 (DDD)

所有 Python 微服务遵循领域驱动设计 (DDD):

```
service/
├── api/                       # API 层 (FastAPI 路由)
├── service/                   # 服务层 (业务逻辑)
├── domain/                    # 领域层 (领域模型)
├── repository/                # 仓储层 (数据访问)
└── main.py                    # 服务入口
```

#### 4. 公共模块 (core/common)

为所有 Python 服务提供统一的基础设施:

- 认证和审计系统 (MetrologyAuth)
- 可观测性支持 (OpenTelemetry)
- 数据库、缓存、消息队列连接管理
- 统一日志系统
- OSS 对象存储集成

## 代码质量标准

### Python 代码规范

- **格式化**: Black + isort
- **类型检查**: MyPy
- **代码分析**: Pylint + Flake8
- **测试覆盖率**: ≥ 70% (使用 pytest)
- **架构**: DDD (领域驱动设计)

### Java 代码规范

- **格式化**: Maven Spotless
- **代码分析**: Checkstyle + PMD + SpotBugs
- **测试**: JUnit
- **架构**: Spring Boot 分层架构

### TypeScript 代码规范

- **格式化**: Prettier
- **代码检查**: ESLint
- **类型检查**: TypeScript 严格模式
- **测试**: Jest + React Testing Library

### Go 代码规范

- **格式化**: gofmt + goimports + gofumpt + golines
- **代码分析**: staticcheck + golangci-lint
- **测试**: go test with coverage

## Git 工作流

### 分支命名规范

```bash
feature/功能名              # 新功能开发
bugfix/问题名               # Bug 修复
hotfix/补丁名               # 紧急修复
refactor/重构名             # 代码重构
test/测试名                 # 测试开发
doc/文档名                  # 文档更新
```

### 提交消息规范

使用 Conventional Commits 格式:

```
<type>(<scope>): <description>

[optional body]

[optional footer(s)]
```

**类型 (type)**:
- `feat`: 新功能
- `fix`: Bug 修复
- `docs`: 文档更新
- `style`: 代码格式
- `refactor`: 代码重构
- `perf`: 性能优化
- `test`: 测试相关
- `build`: 构建系统
- `ci`: CI/CD 配置
- `chore`: 杂项任务

**示例**:
```bash
feat(auth): 添加 OAuth2 登录支持
fix(api): 修复用户信息查询接口
docs(guide): 完善快速开始指南
```

### Git 钩子

```bash
make hooks-install              # 安装完整钩子 (格式化+检查)
make hooks-install-basic        # 安装轻量级钩子 (仅格式化)
make hooks-uninstall            # 卸载钩子
```

## 部署

### Docker Compose 部署 (推荐快速开始)

```bash
cd docker/astronAgent
cp .env.example .env
vim .env                        # 配置环境变量

# 启动所有服务 (包括 Casdoor 认证)
docker compose -f docker-compose-with-auth.yaml up -d

# 访问地址
# - 前端: http://localhost/
# - Casdoor 管理: http://localhost:8000 (admin/123)
```

### 必须配置的环境变量

在 `.env` 文件中必须配置:

1. **讯飞开放平台凭证** (需要申请):
   - `PLATFORM_APP_ID`, `PLATFORM_API_KEY`, `PLATFORM_API_SECRET`
   - `SPARK_API_PASSWORD`, `SPARK_RTASR_API_KEY`

2. **Casdoor 认证配置**:
   - `CONSOLE_CASDOOR_URL`, `CONSOLE_CASDOOR_ID`
   - `CONSOLE_CASDOOR_APP`, `CONSOLE_CASDOOR_ORG`

3. **RAGFlow 知识库配置** (如使用):
   - `RAGFLOW_BASE_URL`, `RAGFLOW_API_TOKEN`

4. **主机地址**:
   - `HOST_BASE_ADDRESS` - 服务器地址或域名

详细配置说明见 `docs/CONFIGURATION_zh.md`

## 重要注意事项

### 开发约定

1. **禁止直接推送到 main/develop 分支** - 必须通过分支开发 + PR 流程
2. **提交前必须通过所有质量检查** - 运行 `make format && make check`
3. **使用规范的分支命名和提交消息** - 遵循上述规范
4. **大功能拆分为小 commit** - 便于代码审查

### 模块间依赖

- **Common Module** 被所有 Python 服务依赖,修改时需谨慎
- **Agent Service** 被 Workflow 服务调用
- **Knowledge Service** 为 Agent 和 Workflow 提供 RAG 能力
- **Tenant Service** 为所有服务提供租户上下文

### 数据库迁移

Python 服务使用 Alembic 进行数据库迁移:

```bash
# 在各服务目录下
alembic upgrade head            # 应用迁移
alembic revision -m "描述"      # 创建新迁移
```

## 相关文档

- [项目模块说明](docs/PROJECT_MODULES_zh.md) - 详细架构说明
- [部署指南](docs/DEPLOYMENT_GUIDE_WITH_AUTH_zh.md) - 完整部署步骤
- [配置说明](docs/CONFIGURATION_zh.md) - 环境变量配置
- [Makefile 使用指南](docs/Makefile-readme-zh.md) - 构建工具详解
- [代码质量要求](.github/quality-requirements/code-requirements-zh.md) - 质量标准
- [分支提交规范](.github/quality-requirements/branch-commit-standards-zh.md) - Git 规范
- [前端开发指南](console/frontend/CLAUDE.md) - 前端特定指南


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Astron Agent

Thank you for your interest in contributing to Astron Agent! We welcome contributions from the community and appreciate your help in making this project better.

## Table of Contents

- [Code of Conduct](#code-of-conduct)
- [Getting Started](#getting-started)
- [Development Environment Setup](#development-environment-setup)
- [Project Structure](#project-structure)
- [Development Workflow](#development-workflow)
- [Code Quality Standards](#code-quality-standards)
- [Testing Guidelines](#testing-guidelines)
- [Documentation](#documentation)
- [Submitting Changes](#submitting-changes)
- [Issue Guidelines](#issue-guidelines)
- [Pull Request Guidelines](#pull-request-guidelines)
- [Release Process](#release-process)
- [Community Guidelines](#community-guidelines)

## Code of Conduct

This project adheres to a code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.

Please read our [Code of Conduct](.github/code_of_conduct.md) for details on our commitment to providing a welcoming and inclusive environment for all contributors.

## Getting Started

### Prerequisites

Before contributing, ensure you have the following installed:

- **Java 21+** (for backend services)
- **Maven 3.8+** (for Java project management)
- **Node.js 18+** (for frontend development)
- **Python 3.9+** (for core services)
- **Go 1.21+** (for tenant service)
- **Docker & Docker Compose** (for containerized services)
- **Git** (for version control)

### Fork and Clone

1. Fork the repository on GitHub
2. Clone your fork locally:
   ```bash
   git clone https://github.com/your-username/astron-agent.git
   cd astron-agent
   ```
3. Add the upstream repository:
   ```bash
   git remote add upstream https://github.com/iflytek/astron-agent.git
   ```

## Development Environment Setup

### One-time Setup

Run the automated setup script to install all required tools and configure your environment:

```bash
make dev-setup
```

This command will:
- Install language-specific development tools
- Configure Git hooks for code quality
- Set up branch naming conventions
- Install dependencies for all modules

### Manual Setup

If you prefer manual setup or need to install specific components:

```bash
# Install development tools
make install-tools

# Check tool installation status
make check-tools

# Install Git hooks
make hooks-install
```

### Pre-commit Setup (Recommended)

We use [pre-commit](https://pre-commit.com/) for automated code quality checks and secret scanning. This is the **recommended way** to ensure code quality before committing.

```bash
# Install pre-commit (if not already installed)
pip install pre-commit

# Install pre-commit hooks
pre-commit install
pre-commit install --hook-type commit-msg
```

Pre-commit will automatically run on every commit to:
- Check code formatting (Black, Prettier, gofmt, Spotless)
- Run linters (flake8, ESLint, golangci-lint, Checkstyle)
- Perform type checking (mypy, TypeScript)
- Scan for secrets (gitleaks)
- Validate commit message format

For detailed usage instructions, see the [Pre-commit Usage Guide](docs/PRE-COMMIT.md).

## Project Structure

Astron Agent is a microservices-based platform with the following structure:

```
astron-agent/
├── console/                    # Console subsystem
│   ├── backend/               # Java Spring Boot services
│   │   ├── auth/              # Authentication service
│   │   ├── commons/           # Shared utilities
│   │   ├── hub/               # Main business logic
│   │   ├── toolkit/           # Toolkit services
│   │   └── config/            # Quality configuration
│   └── frontend/              # React TypeScript SPA
├── core/                      # Core platform services
│   ├── agent/                 # Agent execution engine (Python)
│   ├── common/                # Shared Python libraries
│   ├── knowledge/             # Knowledge base service (Python)
│   ├── memory/                # Memory management
│   ├── plugin/                # Plugin system
│   ├── tenant/                # Multi-tenant service (Go)
│   └── workflow/              # Workflow orchestration (Python)
├── docs/                      # Documentation
├── makefiles/                 # Build system components
└── .github/                   # GitHub configuration
    └── quality-requirements/  # Code quality standards
```

## Development Workflow

### Branch Management

Follow our branch naming conventions:

| Branch Type | Format | Example | Purpose |
|-------------|--------|---------|---------|
| Feature | `feature/feature-name` | `feature/user-auth` | New features |
| Bugfix | `bugfix/issue-name` | `bugfix/login-error` | Bug fixes |
| Hotfix | `hotfix/patch-name` | `hotfix/security-patch` | Emergency fixes |
| Documentation | `doc/doc-name` | `doc/api-guide` | Documentation updates |

### Creating Branches

Use the Makefile commands for consistent branch creation:

```bash
# Create feature branch
make new-feature name=user-authentication

# Create bugfix branch
make new-bugfix name=login-timeout

# Create hotfix branch
make new-hotfix name=security-vulnerability
```

### Daily Development Commands

```bash
# Format all code
make format

# Run code quality checks with pre-commit (recommended)
pre-commit run --all-files

# Run tests
make test

# Build all projects
make build
```

## Code Quality Standards

### Multi-language Support

Astron Agent supports multiple programming languages with unified quality standards:

| Language | Formatting | Quality Tools | Standards |
|----------|------------|---------------|-----------|
| **Go** | gofmt + goimports + gofumpt | golangci-lint + staticcheck | Go standard format, complexity ≤10 |
| **Java** | Spotless (Google Java Format) | Checkstyle + PMD + SpotBugs | Google Java Style, complexity ≤10 |
| **Python** | black + isort | flake8 + mypy + pylint | PEP 8, complexity ≤10 |
| **TypeScript** | prettier | eslint + tsc | ESLint rules, strict typing |

### Code Quality Requirements

All code must pass the following checks:

- **Formatting**: Automatic code formatting applied
- **Linting**: No linting errors or warnings
- **Type Checking**: Strict type checking (TypeScript/Python)
- **Complexity**: Cyclomatic complexity ≤10
- **Testing**: Adequate test coverage
- **Documentation**: Clear code comments and documentation

### Code Quality Checks with Pre-commit

We use pre-commit as the unified code quality checking tool. It automatically runs on staged files during commit, or you can run it manually:

```bash
# Check only staged files (automatically runs on git commit)
pre-commit run

# Check all files in the repository
pre-commit run --all-files

# Run a specific hook
pre-commit run black --all-files
pre-commit run eslint-check --all-files
pre-commit run golangci-lint --all-files
```

For more details, see the [Pre-commit Usage Guide](docs/PRE-COMMIT.md).

## Testing Guidelines

### Test Structure

- **Unit Tests**: Test individual components in isolation
- **Integration Tests**: Test component interactions
- **End-to-End Tests**: Test complete user workflows

### Running Tests

```bash
# Run all tests
make test

# Run specific language tests
make test-go
make test-java
make test-python
make test-typescript

# Run with coverage
make test-coverage
```

### Test Requirements

- All new features must include tests
- Bug fixes must include regression tests
- Test coverage should not decrease
- Tests must be deterministic and fast

## Documentation

### Code Documentation

- Use clear, concise comments
- Document public APIs and interfaces
- Include usage examples where appropriate
- Follow language-specific documentation standards

### Project Documentation

- Update README files for significant changes
- Document new features and APIs
- Maintain up-to-date installation and setup guides
- Include troubleshooting information

## Submitting Changes

### Commit Message Format

Follow the Conventional Commits specification:

```
<type>(<scope>): <description>

[optional body]

[optional footer(s)]
```

**Types:**
- `feat`: New features
- `fix`: Bug fixes
- `docs`: Documentation updates
- `style`: Code formatting
- `refactor`: Code refactoring
- `test`: Test-related changes
- `chore`: Build tools, dependency updates

**Examples:**
```bash
feat(auth): add OAuth2 authentication support
fix(api): resolve user info query endpoint
docs(guide): improve quick start guide
```

### Pre-commit Checklist

Before committing, ensure:

- [ ] Pre-commit hooks are installed (`pre-commit install && pre-commit install --hook-type commit-msg`)
- [ ] Code quality checks pass (`pre-commit run --all-files`)
- [ ] Tests pass (`make test`)
- [ ] Branch naming follows conventions
- [ ] Commit message follows [Conventional Commits](https://www.conventionalcommits.org/) format
- [ ] Documentation is updated if needed

> **Note**: If pre-commit hooks are installed, code quality and commit message format will be automatically checked on each commit.

## Issue Guidelines

### Reporting Bugs

When reporting bugs, include:

1. **Clear description** of the issue
2. **Steps to reproduce** the problem
3. **Expected behavior** vs actual behavior
4. **Environment details** (OS, versions, etc.)
5. **Relevant logs** or error messages
6. **Screenshots** if applicable

### Feature Requests

For feature requests, include:

1. **Clear description** of the feature
2. **Use case** and motivation
3. **Proposed solution** or approach
4. **Alternative solutions** considered
5. **Additional context** or references

## Pull Request Guidelines

### Before Submitting

- [ ] Fork the repository and create a feature branch
- [ ] Make your changes following the coding standards
- [ ] Add tests for new functionality
- [ ] Update documentation as needed
- [ ] Ensure all checks pass locally
- [ ] Rebase on the latest main branch

### PR Description Template

```markdown
## Description
Brief description of changes

## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update

## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing completed

## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No breaking changes (or documented)
```

### Review Process

1. **Automated Checks**: All PRs must pass automated quality checks
2. **Code Review**: At least one maintainer must approve
3. **Testing**: All tests must pass
4. **Documentation**: Documentation must be updated if needed

## Release Process

### Versioning

We follow [Semantic Versioning](https://semver.org/):

- **MAJOR**: Breaking changes
- **MINOR**: New features (backward compatible)
- **PATCH**: Bug fixes (backward compatible)

### Release Workflow

1. Create release branch from main
2. Update version numbers and changelog
3. Run full test suite
4. Create release PR for review
5. Merge and tag release
6. Deploy to production

## Community Guidelines

### Communication

- Be respectful and inclusive
- Use clear, constructive language
- Provide helpful feedback
- Ask questions when needed

### Getting Help

- Check existing documentation first
- Search existing issues and discussions
- Ask questions in discussions or issues
- Join community channels if available

### Recognition

Contributors will be recognized in:
- Release notes
- Contributors list
- Community highlights

## Additional Resources

- [Pre-commit Usage Guide](docs/PRE-COMMIT.md)
- [Branch and Commit Standards](.github/quality-requirements/branch-commit-standards.md)
- [Code Quality Requirements](.github/quality-requirements/code-requirements.md)
- [Makefile Usage Guide](docs/Makefile-readme.md)
- [Project README](README.md)

## Questions?

If you have questions about contributing, please:

1. Check the documentation in the `docs/` directory
2. Review existing issues and discussions
3. Create a new issue with the "question" label
4. Contact the maintainers

Thank you for contributing to Astron Agent! 🚀


================================================
FILE: FAQ.md
================================================
# Astron Agent 常见问题

本 FAQ 汇总自 Issue、PR 评审和讨论的高频问题,每个子页保持短答与操作步骤,便于快速落地。

- [安装与启动](faq/setup.md)
- [配置与认证](faq/config.md)
- [功能与使用](faq/features.md)
- [故障排查](faq/troubleshooting.md)
- [模型与AI功能](faq/models.md)




================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2025 iFlytek Co., Ltd.

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: Makefile
================================================
# =============================================================================
# Multi-language CI/CD Toolchain - Optimized Main Makefile (Only 15 Core Commands)
# Streamlined from 95 commands to 15 core commands, providing intelligent project detection and automated workflows
# =============================================================================

# Include core modules
include makefiles/core/detection.mk
include makefiles/core/workflows.mk

# Include original language modules (for internal calls)
include makefiles/go.mk
include makefiles/typescript.mk
include makefiles/java.mk
include makefiles/python.mk
include makefiles/git.mk
include makefiles/common.mk
include makefiles/comment-check.mk

# =============================================================================
# Core command declarations
# =============================================================================
.PHONY: help setup check test build push clean status info lint ci hooks

# =============================================================================
# Tier 1: Daily Core Commands (7) - These are all you need to remember!
# =============================================================================

# Default target - Intelligent help
.DEFAULT_GOAL := help
help: ## 📚 Show help information and project status
	@echo "$(BLUE)🚀 Multi-language CI/CD Toolchain - Intelligent Version$(RESET)"
	@echo "$(YELLOW)Active Projects:$(RESET) $(GREEN)$(ACTIVE_PROJECTS)$(RESET) | $(YELLOW)Current Context:$(RESET) $(GREEN)$(CURRENT_CONTEXT)$(RESET)"
	@echo ""
	@echo "$(BLUE)📋 Core Commands (Daily Development):$(RESET)"
	@echo "  $(GREEN)make setup$(RESET)     🛠️  One-time environment setup (tools+hooks+branch strategy)"
	@echo "  $(GREEN)make check$(RESET)     🔍  Quality check including format (intelligent detection: $(ACTIVE_PROJECTS))"
	@echo "  $(GREEN)make test$(RESET)      🧪  Run tests (intelligent detection: $(ACTIVE_PROJECTS))"
	@echo "  $(GREEN)make build$(RESET)     📦  Build projects (intelligent detection: $(ACTIVE_PROJECTS))"
	@echo "  $(GREEN)make push$(RESET)      📤  Safe push to remote (with pre-checks)"
	@echo "  $(GREEN)make clean$(RESET)     🧹  Clean build artifacts"
	@echo ""
	@echo "$(BLUE)🔧 Professional Commands:$(RESET)"
	@echo "  $(GREEN)make status$(RESET)    📊  Show detailed project status"
	@echo "  $(GREEN)make info$(RESET)      ℹ️   Show tools and dependency information"
	@echo "  $(GREEN)make lint$(RESET)      🔧  Run code linting (alias for check)"
	@echo "  $(GREEN)make ci$(RESET)        🤖  Complete CI pipeline (check+test+build)"
	@echo "  $(GREEN)make hooks$(RESET)     ⚙️  Git hooks management menu"
	@echo ""
	@echo "$(YELLOW)⚠️  CI Philosophy: Check-only, no auto-fix$(RESET)"
	@echo "    CI systems detect issues, developers fix them manually"
	@echo ""
	@if [ "$(IS_MULTI_PROJECT)" = "true" ]; then \
		echo "$(YELLOW)💡 Multi-project environment detected, all commands will intelligently handle multiple projects$(RESET)"; \
	else \
		echo "$(YELLOW)💡 Single project environment, please run common commands in corresponding subdirectories (setup/check/test/build)$(RESET)"; \
	fi

# Core workflow commands - Direct calls to intelligent implementations
setup: smart_setup ## 🛠️ One-time environment setup (tools+hooks+branch strategy)

check: smart_check ## 🔍 Intelligent code quality check (detect active projects)

test: smart_test ## 🧪 Intelligent test execution (detect active projects)

build: smart_build ## 📦 Intelligent project build (detect active projects)

push: smart_push ## 📤 Intelligent safe push (branch check + quality check)

clean: smart_clean ## 🧹 Intelligent cleanup of build artifacts

# =============================================================================
# Tier 2: Professional Commands (5)
# =============================================================================

status: smart_status ## 📊 Show detailed project status

info: smart_info ## ℹ️ Show tools and dependency information

lint: smart_check ## 🔧 Run code linting (alias for check)

ci: smart_ci ## 🤖 Complete CI pipeline (check + test + build)

hooks: ## ⚙️ Git hooks management menu
	@echo "$(BLUE)⚙️ Git Hooks Management$(RESET)"
	@echo ""
	@echo "$(GREEN)Install Hooks:$(RESET)"
	@echo "  make hooks-install       📌 Install all hooks (recommended)"
	@echo "  make hooks-commit-msg    💬 Commit message hooks only"
	@echo "  make hooks-pre-push      🚀 Pre-push hooks only"
	@echo ""
	@echo "$(RED)Uninstall Hooks:$(RESET)"
	@echo "  make hooks-uninstall     ❌ Uninstall all hooks"
	@echo ""
	@echo "$(YELLOW)⚠️  Note: Hooks only check code, no auto-formatting$(RESET)"
	@echo ""
	@echo "$(YELLOW)Current Hook Status:$(RESET)"
	@ls -la .git/hooks/ | grep -E "(pre-commit|commit-msg|pre-push)" | head -3

# =============================================================================
# Hidden utility commands (for debugging and testing)
# =============================================================================
_debug: ## 🔍 [Debug] Test project detection and Makefile status
	@echo "$(YELLOW)Project Detection Test:$(RESET)"
	@echo "ACTIVE_PROJECTS: '$(ACTIVE_PROJECTS)'"
	@echo "CURRENT_CONTEXT: '$(CURRENT_CONTEXT)'"
	@echo "PROJECT_COUNT: $(PROJECT_COUNT)"
	@echo "IS_MULTI_PROJECT: $(IS_MULTI_PROJECT)"
	$(call show_project_status)
	@echo ""
	@echo "$(BLUE)Current Makefile Status:$(RESET)"
	@echo "Included modules: detection.mk workflows.mk + original language modules"


================================================
FILE: NOTICE
================================================
OpenStellar
Copyright 2025 iFlytek Co., Ltd.

This product includes software developed at
iFlytek Co., Ltd. (https://github.com/iflytek/openstellar).

This software contains code derived from other open source projects.
See individual source files for more details.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


================================================
FILE: PR.md
================================================
## Summary
Introduce a new OpenAPI response visibility feature based on `x-display`, including schema-aware filtering with `$ref` support and validation guardrails for required-field checks on hidden paths.

## Type of Change
- [ ] Bug fix
- [x] New feature
- [ ] Breaking change
- [ ] Documentation update
- [x] Refactoring

## Related Issue
N/A

## Changes

### 1) Refactor `x-display` response filtering
- Updated: `core/plugin/link/utils/open_api_schema/response_filter.py`
- Added schema-driven `x-display` response filtering capability for OpenAPI JSON responses.
- Implemented recursive traversal with local `$ref` resolution (`#/components/...`) for nested/array schemas.
- Kept behavior contract explicit:
  - Remove fields marked with `x-display: false` (supports boolean `false` and string `"false"`).
  - If all children under an object/array container are hidden, keep structural type and return empty `{}` / `[]`.
- Added/kept compatibility helpers:
  - Hidden path collection (`get_need_be_poped_list`).
  - Validation error ignore decision for hidden required fields (`should_ignore_validation_error_by_x_display`).

### 2) Adjust HTTP execution flow: validate first, then filter
- Updated: `core/plugin/link/service/community/tools/http/execution_server.py`
- Added end-to-end response processing flow for the new feature: validate first, then apply visibility filtering.
- Applied filtering after validation in both request handling and tool debug paths.
- Integrated missing-visible-field detection and hidden-field-aware ignore logic into validation flow.
- Preserved existing exception handling and telemetry behavior.

### 3) Add focused unit tests
- Added: `core/plugin/link/tests/unit/test_response_filter.py`
- Covered scenarios:
  - Hidden field removal and parent-hidden precedence for object fields.
  - Array container behavior: hide all elements when item schema is `x-display: false`.
  - Keep empty object items in arrays when child fields are hidden.
  - `$ref`-based schema resolution in filtering and missing-visible-path checks.
  - Required-field validation ignore checks for hidden fields.

## Testing
- [x] New tests added (unit)
- [ ] Existing full test suite executed
- [ ] Manual testing completed

Test scope added in this PR:
- `test_filter_parent_hidden_takes_precedence`
- `test_filter_keeps_empty_object_elements_in_array`
- `test_filter_hides_array_elements_when_items_closed`
- `test_filter_ref_items_closed_hides_all_elements`
- `test_missing_visible_declared_paths_with_ref`

## Compatibility / Risk
- No API contract change in request shape.
- Response payload visibility now supports declarative control via schema `x-display`.
- Potential behavior change: previously returned hidden fields may now be removed or collapsed to `{}` / `[]` per schema.
- Risk is controllable and covered by focused unit tests around nested arrays, refs, and required-field validation edge cases.

## Rollback Plan
If regressions are found:
1. Revert `response_filter.py` implementation to the previous filtering logic.
2. Revert execution order changes in `execution_server.py`.

## Checklist
- [x] Code follows project coding standards
- [x] Self-review completed
- [x] Documentation/comments updated where needed
- [x] No breaking changes introduced



================================================
FILE: README.md
================================================
[![Astron_Readme](./docs/imgs/Astron_Readme.png)](https://agent.xfyun.cn)

<div align="center">

[![License](https://img.shields.io/badge/license-apache2.0-blue.svg)](LICENSE)
[![GitHub Stars](https://img.shields.io/github/stars/iflytek/astron-agent?style=social)](https://github.com/iflytek/astron-agent/stargazers)
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/iflytek/astron-agent)

English | [简体中文](docs/README-zh.md)

</div>

## 🔭 What is Astron Agent
Astron Agent is an **enterprise-grade, commercial-friendly** Agentic Workflow development platform that integrates AI workflow orchestration, model management, AI and MCP tool integration, RPA automation, and team collaboration features.
The platform supports **high-availability** deployment, enabling organizations to rapidly build **scalable, production-ready** intelligent agent applications and establish their AI foundation for the future.

### Why Choose Astron Agent?
- **Stable and Reliable**: Built on the same core technology as the iFLYTEK Astron Agent Platform, providing enterprise-grade reliability with a fully available high-availability version open source.
- **Cross-System Integration**: Natively integrates intelligent RPA, efficiently connecting internal and external enterprise systems, enabling seamless interaction between Agents and enterprise systems.
- **Enterprise-Grade Open Ecosystem**: Deeply compatible with various industry models and tools, supporting custom extensions and flexibly adapting to diverse enterprise scenarios.
- **Business-Friendly**: Released under the Apache 2.0 License, with no commercial restrictions, allowing free commercial use.

### Key Features
- **Enterprise-Grade High Availability:** Full-stack capabilities for development, building, optimization, and management. Supports one-click deployment with strong reliability.  
- **Intelligent RPA Integration:** Enables cross-system process automation, empowering Agents with controllable execution to achieve a complete loop “from decision to action.”  
- **Ready-to-Use Tool Ecosystem:** Integrates massive AI capabilities and tools from the [iFLYTEK Open Platform](https://www.xfyun.cn), validated by millions of developers, supporting plug-and-play integration without extra development.  
- **Flexible Large Model Support:** Offers diverse access methods, from rapid API-based model access and validation to one-click deployment of enterprise-level MaaS (Model as a Service) on-premises clusters, meeting needs of all scales.  

## 📰 News

### 🔄 Ongoing

- **[Astron Industrial Intelligence Hackathon](https://awesome-astron-workflow.dev/activities/astron-industrial-intelligence-hackathon)**  🎤 <a href="https://github.com/lyj715824"><img src="https://github.com/lyj715824.png" width="20" align="center" /> @lyj715824</a> <a href="https://github.com/horizon220222"><img src="https://github.com/horizon220222.png" width="20" align="center" /> @horizon220222</a>
- **[Astron Agent & RPA · Hefei Meetup](https://mp.weixin.qq.com/s/tDJaoOLUrjBlgMLDurvHCw)**  🎤 <a href="https://github.com/lyj715824"><img src="https://github.com/lyj715824.png" width="20" align="center" /> @lyj715824</a> <a href="https://github.com/doctorbruce"><img src="https://github.com/doctorbruce.png" width="20" align="center" /> @doctorbruce</a>

### 📅 Past

- **[Astron Hackathon @ 2025 iFLYTEK Global 1024 Developer Festival](https://luma.com/9zmbc6xb)**  🎤 <a href="https://github.com/mklong"><img src="https://github.com/mklong.png" width="20" align="center" /> @mklong</a>
- **[Astron Agent Zhengzhou Meetup](https://github.com/iflytek/astron-agent/discussions/672)**  🎤 <a href="https://github.com/lyj715824"><img src="https://github.com/lyj715824.png" width="20" align="center" /> @lyj715824</a> <a href="https://github.com/wowo-zZ"><img src="https://github.com/wowo-zZ.png" width="20" align="center" /> @wowo-zZ</a>
- **[Astron on Campus @ Zhejiang University of Finance and Economics](https://mp.weixin.qq.com/s/oim_Z0ckgpFwf5jOskoJuA)**  🎤 <a href="https://github.com/lyj715824"><img src="https://github.com/lyj715824.png" width="20" align="center" /> @lyj715824</a>
- **[Astron Agent & RPA · Qingdao Meetup Brings Agentic AI!](https://github.com/iflytek/astron-agent/discussions/740)**  🎤 <a href="https://github.com/vsxd"><img src="https://github.com/vsxd.png" width="20" align="center" /> @vsxd</a> <a href="https://github.com/doctorbruce"><img src="https://github.com/doctorbruce.png" width="20" align="center" /> @doctorbruce</a> <a href="https://github.com/MaxwellJean"><img src="https://github.com/MaxwellJean.png" width="20" align="center" /> @MaxwellJean</a>
- **[Astron Training Camp · Cohort #1](https://www.aidaxue.com/astronCamp)**  🎤 <a href="https://github.com/lyj715824"><img src="https://github.com/lyj715824.png" width="20" align="center" /> @lyj715824</a> <a href="https://github.com/Thomas1024-Astron"><img src="https://github.com/Thomas1024-Astron.png" width="20" align="center" /> @Thomas1024-Astron</a> <a href="https://github.com/abelzha"><img src="https://github.com/abelzha.png" width="20" align="center" /> @abelzha</a>
- **[Astron Talk @ Chongqing Mini Tech Fest](https://mp.weixin.qq.com/s/HROf1zZpkPVDSsCQrv2jRg)**  🎤 <a href="https://github.com/lyj715824"><img src="https://github.com/lyj715824.png" width="20" align="center" /> @lyj715824</a>
- **[Astron Agent @ MWC Barcelona 2026](https://www.iflytek.com/en/news-events/mwc2026.html)**

## 🚀 Quick Start

We offer two deployment methods to meet different scenarios:

### Option 1: Docker Compose (Recommended for Quick Start)

```bash
# Clone the repository
git clone https://github.com/iflytek/astron-agent.git

# Navigate to the Docker deployment directory
cd docker/astronAgent

# Copy environment configuration
cp .env.example .env

# Configure environment variables
vim .env
```

For environment variable configuration, please refer to the documentation:[DEPLOYMENT_GUIDE_WITH_AUTH.md](https://github.com/iflytek/astron-agent/blob/main/docs/DEPLOYMENT_GUIDE_WITH_AUTH.md#step-2-configure-astronagent-environment-variables)

```bash
# Start all services (including Casdoor)
docker compose -f docker-compose-with-auth.yaml up -d
```

#### 📊 Service Access Addresses

After startup, you can access the services at the following addresses:

**Authentication Service**
- **Casdoor Admin Interface**: http://localhost:8000

**AstronAgent**
- **Application Frontend (nginx proxy)**: http://localhost/

**Note**
- Default Casdoor login credentials: username: `admin`, password: `123`

### Option 2: Helm (For Kubernetes Environments)

> 🚧 **Note**: Helm charts are currently under development. Stay tuned for updates!

```bash
# Coming soon
# helm repo add astron-agent https://iflytek.github.io/astron-agent
# helm install astron-agent astron-agent/astron-agent
```

---

> 📖 For complete deployment instructions and configuration details, see [Deployment Guide](docs/DEPLOYMENT_GUIDE_WITH_AUTH.md)

## 📖 Using Astron Cloud

**Try Astron**:Astron Cloud provides a ready-to-use environment for creating and managing Agents. Get quick access at [https://agent.xfyun.cn](https://agent.xfyun.cn).

**Using Guide**:For detailed usage instructions, please refer to [Quick Start Guide](https://www.xfyun.cn/doc/spark/Agent03-%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.html).

## 📚 Documentation

- [🚀 Deployment Guide](docs/DEPLOYMENT_GUIDE.md)
- [🔧 Configuration](docs/CONFIGURATION.md)
- [🚀 Quick Start](https://www.xfyun.cn/doc/spark/Agent02-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B.html)
- [📘 Development Guide](https://www.xfyun.cn/doc/spark/Agent03-%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.html#_1-%E6%8C%87%E4%BB%A4%E5%9E%8B%E6%99%BA%E8%83%BD%E4%BD%93%E5%BC%80%E5%8F%91)
- [💡 Best Practices](https://www.xfyun.cn/doc/spark/AgentNew-%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5%E6%A1%88%E4%BE%8B.html)
- [📱 Use Cases](https://www.xfyun.cn/doc/spark/Agent05-%E5%BA%94%E7%94%A8%E6%A1%88%E4%BE%8B.html)
- [❓ FAQ](https://www.xfyun.cn/doc/spark/Agent06-FAQ.html)

## 🤝 Contributing

We welcome contributions of all kinds! Please see our [Contributing Guide](CONTRIBUTING.md)

## 🌟 Star History

<div align="center">
  <img src="https://api.star-history.com/svg?repos=iflytek/astron-agent&type=Date" alt="Star History Chart" width="600">
</div>

## 📞 Support

- 💬 Community Discussion: [GitHub Discussions](https://github.com/iflytek/astron-agent/discussions)
- 🐛 Bug Reports: [Issues](https://github.com/iflytek/astron-agent/issues)
- 👥 WeChat Work Group:

<div align="center">
  <img src="./docs/imgs/WeCom_Group.png" alt="WeChat Work Group" width="300">
</div>

## 📄 Open Source License

This project is licensed under the [Apache 2.0 License](LICENSE), allowing free use, modification, distribution, and commercial use without any restrictions.


================================================
FILE: console/.claude/DOC_VALIDATION_LOOP.md
================================================
# 文档校验闭环设计

## 问题背景

在引入 `/doc-module` 后,虽然解决了"代码 → 文档"的生成问题,但缺少**后置校验**,导致:

1. ✅ 前置校验:`/context-check` 检查旧文档是否可信
2. ✅ 文档生成:`/doc-module` 更新文档
3. ❌ 后置校验:缺少验证机制,无法确保文档更新的准确性

这会导致"文档再次漂移"的风险:
- 文档生成时可能遗漏某些 API 或字段
- 文档记录的信息可能与代码不一致
- 没有机制验证文档更新的质量

## 解决方案

引入 `/drift-check` skill,构建完整的**文档校验闭环**:

```
┌─────────────────────────────────────────────────────────┐
│                    文档校验闭环                          │
└─────────────────────────────────────────────────────────┘

开发前(输入风险控制)
    ↓
/context-check
    ├─ 检查旧文档是否与代码一致
    ├─ 发现文档漂移
    └─ 决定是否需要更新文档
    ↓
开发中
    ├─ 实现代码
    └─ 修改业务逻辑
    ↓
开发后(输出质量保证)
    ↓
/doc-module
    ├─ 从代码逆向生成文档
    ├─ 更新 module.md
    └─ 记录 API、Entity、Service
    ↓
/drift-check
    ├─ 验证文档与代码的一致性
    ├─ 检查是否有遗漏或错误
    ├─ 生成验证报告
    └─ 决定是否需要重新生成文档
    ↓
提交代码和文档
```

## 三个 Skill 的职责对比

| 维度 | `/context-check` | `/doc-module` | `/drift-check` |
|------|-----------------|---------------|---------------|
| **执行时机** | 开发前(前置校验) | 开发后(文档生成) | 文档生成后(后置校验) |
| **校验对象** | 旧文档 vs 代码 | - | 新文档 vs 代码 |
| **主要目的** | 检查旧文档是否可信 | 从代码生成文档 | 验证新文档是否准确 |
| **重点关注** | 发现文档漂移 | 提取代码信息 | 发现文档遗漏或错误 |
| **输出文件** | `context-check-report.md` | `module.md` | `drift-check-report.md` |
| **后续动作** | 决定是否需要更新文档 | - | 决定是否需要重新生成文档 |

## 工作流集成

### 大功能开发(完整链路)

```bash
# 0. 前置校验
/context-check
# 检查旧文档是否可信

# 1-6. 需求分析 → 设计 → 实现
/requirement → /stories → /spec → /tasks → /backend-design → 实现代码

# 7. 文档生成
/doc-module
# 从代码逆向生成文档

# 8. 后置校验(新增)
/drift-check
# 验证文档与代码的一致性

# 9. 提交
git commit
```

### 小功能开发(快速链路)

```bash
# 0. 前置校验
/context-check

# 1-4. 需求分析 → 实现
/requirement → /spec → /tasks → 实现代码

# 5. 文档生成
/doc-module

# 6. 后置校验(新增)
/drift-check

# 7. 提交
git commit
```

## 实现细节

### `/drift-check` Skill

**文件位置**: `console/.claude/skills/drift-check.md`

**核心功能**:
1. 读取刚更新的 `module.md`
2. 从实际代码中重新抽取关键信息
3. 对比文档与代码,标记不一致项
4. 生成验证报告

**输出模板**:
```markdown
---
module: {模块名}
checked: {YYYY-MM-DD HH:mm:ss}
status: {pass/warning/fail}
---

# {模块名} 文档漂移校验报告

## 校验结果
- pass: 文档与代码完全一致
- warning: 发现少量不一致,建议修复
- fail: 发现严重不一致,必须重新执行 `/doc-module`

## 后端 API 校验
### ✅ 文档中正确记录的 API
### ❌ 文档中遗漏的 API
### ⚠️ 文档中记录错误的 API

## 数据模型校验
### ✅ 文档中正确记录的 Entity
### ❌ 文档中遗漏的 Entity
### ⚠️ 文档中字段不完整的 Entity

## 前端 Service 校验
### ✅ 文档中正确记录的 Service 函数
### ❌ 文档中遗漏的 Service 函数
### ⚠️ 文档中记录错误的 Service 函数

## 修复建议
### 高优先级(必须修复)
### 低优先级(建议修复)

## 下一步行动
- [ ] 如果状态为 fail,重新执行 `/doc-module`
- [ ] 如果状态为 warning,手动修正文档
- [ ] 如果状态为 pass,提交代码和文档
```

## 收益

### 1. 输入风险控制(前置校验)
- `/context-check` 确保开发前使用的文档是可信的
- 避免基于错误的文档进行开发

### 2. 输出质量保证(后置校验)
- `/drift-check` 确保文档更新后与代码一致
- 避免文档再次漂移

### 3. 完整闭环
```
输入 → 前置校验 → 开发 → 文档生成 → 后置校验 → 输出
  ↑                                              ↓
  └──────────────── 反馈循环 ────────────────────┘
```

### 4. 质量保证
- 文档准确性:确保文档与代码一致
- 文档完整性:检查是否有遗漏
- 文档可信度:提供验证报告

## 最佳实践

### 1. 始终执行完整闭环

❌ 不要跳过校验步骤:
```bash
/doc-module → 提交  # 缺少后置校验
```

✅ 执行完整闭环:
```bash
/context-check → 开发 → /doc-module → /drift-check → 提交
```

### 2. 根据校验结果采取行动

- **pass**: 文档准确,可以提交
- **warning**: 手动修正文档中的错误
- **fail**: 重新执行 `/doc-module`

### 3. 保留校验报告(可选)

校验报告是临时文件,验证通过后可以删除:
```bash
# 验证通过后清理
rm console/.claude/docs/{module}/context-check-report.md
rm console/.claude/docs/{module}/drift-check-report.md
```

## 文件结构

```
console/
├── .claude/
│   ├── DOC_VALIDATION_LOOP.md    # 本文件
│   ├── QUICK_REFERENCE.md        # 已更新,包含 /drift-check
│   ├── skills/
│   │   ├── context-check.md      # 前置校验
│   │   ├── doc-module.md         # 文档生成
│   │   └── drift-check.md        # 后置校验(新增)
│   └── docs/
│       └── {module}/
│           ├── module.md                    # 模块文档
│           ├── context-check-report.md      # 前置校验报告(临时)
│           └── drift-check-report.md        # 后置校验报告(临时)
```

## 总结

通过引入 `/drift-check`,我们构建了完整的**文档校验闭环**:

1. **前置校验**(`/context-check`):确保输入可信
2. **文档生成**(`/doc-module`):从代码生成文档
3. **后置校验**(`/drift-check`):确保输出准确

这个闭环解决了"文档再次漂移"的风险,确保文档始终与代码保持一致。

---

**创建时间**: 2026-03-03
**相关文档**:
- [QUICK_REFERENCE.md](QUICK_REFERENCE.md)
- [skills/context-check.md](skills/context-check.md)
- [skills/doc-module.md](skills/doc-module.md)
- [skills/drift-check.md](skills/drift-check.md)


================================================
FILE: console/.claude/QUICK_REFERENCE.md
================================================
# Skills 快速参考

## 🎯 流程选择指南

### 大功能(完整链路)

**适用场景**:新增数据表、新增前端页面、跨模块改动、多角色交互

```mermaid
graph LR
    A[收到需求] --> B[/context-check]
    B --> C[/requirement]
    C --> D[/stories]
    D --> E[/spec]
    E --> F[/tasks]
    F --> G[/backend-design<br/>/frontend-design]
    G --> H[实现代码]
    H --> I[/doc-module]
    I --> J[/drift-check]
```

### 小功能(快速链路)

**适用场景**:单模块改动、明确需求、简单 CRUD、单角色场景

```mermaid
graph LR
    A[收到需求] --> B[/context-check]
    B --> C[/requirement]
    C --> D[/spec]
    D --> E[/tasks]
    E --> F[实现代码]
    F --> G[/doc-module]
    G --> H[/drift-check]
```

### Bug 修复

```
简单 Bug (单文件) → 直接修复 → 验证 → /doc-module(如需)
复杂 Bug (多文件/重构) → 走完整链路或快速链路(根据复杂度选择)
```

### 文档生成

```
已有代码 → /doc-module → 生成 module.md
```

---

## 📋 Skills 清单

| # | Skill | 命令 | 输入 | 输出 | 耗时 |
|---|-------|------|------|------|------|
| 0 | 上下文校验 | `/context-check` | 模块名称 | `context-check-report.md` | 5-10min |
| 1 | 需求文档 | `/requirement` | 用户需求描述 | `requirement.md` | 5-10min |
| 2 | 用户故事 | `/stories` | `requirement.md` | `stories.md` | 5-10min |
| 3 | 技术规格 | `/spec` | `requirement.md` (+ `stories.md`) | `spec.md` | 10-15min |
| 4 | 任务规划 | `/tasks` | `spec.md` | `tasks.md` | 5-10min |
| 5 | 后端设计 | `/backend-design` | `spec.md` + `tasks.md` | `backend-design.md` | 10-20min |
| 6 | 前端设计 | `/frontend-design` | `spec.md` + `tasks.md` | `frontend-design.md` | 10-20min |
| 7 | 模块文档 | `/doc-module` | 现有代码 | `module.md` | 10-15min |
| 8 | 文档漂移校验 | `/drift-check` | `module.md` | `drift-check-report.md` | 5-10min |
| 9 | Bug 修复 | `/bugfix` | Issue 编号 | `bugfix.md` | 10-15min |

**说明**:
- `/stories`、`/backend-design`、`/frontend-design` 为按需执行,不是所有流程都需要
- `/context-check` 建议在开始新功能前执行,确保模块文档可信
- `/drift-check` 建议在 `/doc-module` 后执行,确保文档更新准确

**文档校验闭环**:
```
开发前: /context-check → 检查旧文档是否可信
开发中: 实现代码
开发后: /doc-module → 更新文档 → /drift-check → 验证新文档准确性
```

---

## 🚀 快速开始

### 场景 1: 大功能开发(完整链路)

```bash
# 0. 上下文校验(推荐)
/context-check
# 输入: 模块名称(如 bot-management)
# 输出: console/.claude/docs/{module}/context-check-report.md

# 1. 需求分析
/requirement
# 输入: 描述功能需求
# 输出: console/.claude/docs/{feature-name}/requirement.md

# 2. 用户故事
/stories
# 输出: console/.claude/docs/{feature-name}/stories.md

# 3. 技术规格
/spec
# 输出: console/.claude/docs/{feature-name}/spec.md

# 4. 任务拆解
/tasks
# 输出: console/.claude/docs/{feature-name}/tasks.md

# 5. 技术设计
/backend-design
/frontend-design
# 输出: backend-design.md + frontend-design.md

# 6. 实现代码
# 按 tasks.md 顺序实现

# 7. 更新文档
/doc-module
# 输出: 更新 module.md

# 8. 验证文档
/drift-check
# 输出: drift-check-report.md
```

### 场景 2: 小功能开发(快速链路)

```bash
# 0. 上下文校验(推荐)
/context-check

# 1. 需求分析
/requirement

# 2. 技术规格(跳过 /stories)
/spec

# 3. 任务拆解
/tasks

# 4. 实现代码(按需执行设计)
# 如需设计文档:/backend-design 或 /frontend-design

# 5. 更新文档
/doc-module

# 6. 验证文档
/drift-check
```

### 场景 3: 简单 Bug 修复

```bash
# 1. 分析 Issue
读取 GitHub Issue

# 2. 定位代码
使用 Explore agent

# 3. 修复代码
直接修改

# 4. 验证
make check && make test

# 5. 提交
git commit -m "fix(module): resolve issue #123"
```

### 场景 4: 复杂 Bug 修复

```bash
# 根据复杂度选择:
# - 简单 Bug:直接修复 → 验证 → /doc-module(如需)
# - 复杂 Bug:走完整链路或快速链路

# 1. 生成 Bug 修复文档
/bugfix
# 输入: Issue 编号
# 输出: console/.claude/docs/bugfix-{number}/bugfix.md

# 2. 按文档实现修复

# 3. 更新模块文档
/doc-module
```

### 场景 5: 为已有代码生成文档

```bash
# 直接生成模块文档
/doc-module
# 输入: 模块名称
# 输出: console/.claude/docs/{module}/module.md
```

---

## 🎨 Skills 链路图

### 完整链路 (新功能)

```
用户需求
    ↓
/context-check → context-check-report.md (推荐)
    ↓
/requirement → requirement.md
    ↓
/stories → stories.md
    ↓
/spec → spec.md
    ↓
/tasks → tasks.md
    ↓
/backend-design + /frontend-design
    ↓
backend-design.md + frontend-design.md
    ↓
代码实现
    ↓
/doc-module → module.md (更新)
    ↓
/drift-check → drift-check-report.md
```

### 快速链路 (简单功能)

```
用户需求
    ↓
/context-check → context-check-report.md (推荐)
    ↓
/requirement → requirement.md
    ↓
/spec → spec.md
    ↓
/tasks → tasks.md
    ↓
代码实现
    ↓
/doc-module → module.md (更新)
    ↓
/drift-check → drift-check-report.md
```

### 逆向链路 (已有代码)

```
现有代码
    ↓
/doc-module → module.md
```

---

## ✅ 检查清单

### 新功能开发

**大功能(完整链路)**:
- [ ] `/context-check` - 上下文校验(推荐)
- [ ] `/requirement` - 需求文档
- [ ] `/stories` - 用户故事
- [ ] `/spec` - 技术规格
- [ ] `/tasks` - 任务规划
- [ ] `/backend-design` + `/frontend-design` - 技术设计
- [ ] 实现代码
- [ ] `make check` - 代码检查
- [ ] `make test` - 运行测试
- [ ] `/doc-module` - 更新模块文档
- [ ] `/drift-check` - 验证文档准确性
- [ ] 提交代码和文档

**小功能(快速链路)**:
- [ ] `/context-check` - 上下文校验(推荐)
- [ ] `/requirement` - 需求文档
- [ ] `/spec` - 技术规格(跳过 /stories)
- [ ] `/tasks` - 任务规划
- [ ] 实现代码(按需执行设计)
- [ ] `make check && make test`
- [ ] `/doc-module` - 更新模块文档
- [ ] `/drift-check` - 验证文档准确性
- [ ] 提交代码和文档

### Bug 修复

**简单 Bug**:
- [ ] 分析 Issue
- [ ] 定位代码
- [ ] 修复代码
- [ ] `make check && make test`
- [ ] 提交代码

**复杂 Bug**:
- [ ] `/bugfix` - 生成修复文档
- [ ] 实现修复
- [ ] `make check && make test`
- 
Download .txt
Showing preview only (218K chars total). Download the full file or copy to clipboard to get everything.
gitextract_l4du0bg5/

├── .gemini/
│   └── config.yaml
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── feature_request.yml
│   │   └── general_issue.yml
│   ├── code_of_conduct.md
│   ├── code_owners
│   ├── pull_request_template.md
│   ├── quality-requirements/
│   │   ├── branch-commit-standards-zh.md
│   │   ├── branch-commit-standards.md
│   │   ├── code-requirements-zh.md
│   │   ├── code-requirements.md
│   │   └── langs/
│   │       ├── go-zh.md
│   │       ├── go.md
│   │       ├── java-zh.md
│   │       ├── java.md
│   │       ├── python-zh.md
│   │       ├── python.md
│   │       ├── typescript-zh.md
│   │       └── typescript.md
│   └── workflows/
│       ├── build-push.yml
│       ├── ci.yml
│       ├── claude-review.yml
│       ├── claude.yml
│       ├── codeql-security-analysis.yml
│       └── release.yml
├── .gitignore
├── .pre-commit-config.yaml
├── AGENTS.md
├── CLAUDE.md
├── CONTRIBUTING.md
├── FAQ.md
├── LICENSE
├── Makefile
├── NOTICE
├── PR.md
├── README.md
├── console/
│   ├── .claude/
│   │   ├── DOC_VALIDATION_LOOP.md
│   │   ├── QUICK_REFERENCE.md
│   │   ├── WORKFLOW.md
│   │   ├── docs/
│   │   │   ├── ai-tools/
│   │   │   │   └── module.md
│   │   │   ├── bot-management/
│   │   │   │   └── module.md
│   │   │   ├── chat/
│   │   │   │   └── module.md
│   │   │   ├── enterprise-management/
│   │   │   │   └── module.md
│   │   │   ├── knowledge/
│   │   │   │   └── module.md
│   │   │   ├── model-management/
│   │   │   │   └── module.md
│   │   │   ├── overview.md
│   │   │   ├── publish/
│   │   │   │   └── module.md
│   │   │   ├── space-management/
│   │   │   │   └── module.md
│   │   │   ├── user-management/
│   │   │   │   └── module.md
│   │   │   └── workflow/
│   │   │       └── module.md
│   │   └── skills/
│   │       ├── backend-design.md
│   │       ├── bugfix.md
│   │       ├── context-check.md
│   │       ├── doc-module.md
│   │       ├── drift-check.md
│   │       ├── frontend-design.md
│   │       ├── requirement.md
│   │       ├── spec.md
│   │       ├── stories.md
│   │       └── tasks.md
│   ├── .gitignore
│   ├── README.md
│   ├── backend/
│   │   ├── commons/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── iflytek/
│   │   │       │   │           └── astron/
│   │   │       │   │               └── console/
│   │   │       │   │                   └── commons/
│   │   │       │   │                       ├── annotation/
│   │   │       │   │                       │   ├── RateLimit.java
│   │   │       │   │                       │   └── space/
│   │   │       │   │                       │       ├── EnterprisePreAuth.java
│   │   │       │   │                       │       └── SpacePreAuth.java
│   │   │       │   │                       ├── aspect/
│   │   │       │   │                       │   ├── RateLimitAspect.java
│   │   │       │   │                       │   └── space/
│   │   │       │   │                       │       ├── EnterpriseAuthAspect.java
│   │   │       │   │                       │       ├── PermissionValidator.java
│   │   │       │   │                       │       └── SpaceAuthAspect.java
│   │   │       │   │                       ├── config/
│   │   │       │   │                       │   └── JwtClaimsFilter.java
│   │   │       │   │                       ├── constant/
│   │   │       │   │                       │   ├── RedisKeyConstant.java
│   │   │       │   │                       │   └── ResponseEnum.java
│   │   │       │   │                       ├── data/
│   │   │       │   │                       │   ├── UserInfoDataService.java
│   │   │       │   │                       │   └── impl/
│   │   │       │   │                       │       └── UserInfoDataServiceImpl.java
│   │   │       │   │                       ├── dto/
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── AdvancedConfig.java
│   │   │       │   │                       │   │   ├── BotCloneWorkflowDto.java
│   │   │       │   │                       │   │   ├── BotCreateForm.java
│   │   │       │   │                       │   │   ├── BotDetail.java
│   │   │       │   │                       │   │   ├── BotFavoriteItemDto.java
│   │   │       │   │                       │   │   ├── BotFavoritePageDto.java
│   │   │       │   │                       │   │   ├── BotFavoriteQueryDto.java
│   │   │       │   │                       │   │   ├── BotInfoDto.java
│   │   │       │   │                       │   │   ├── BotListRequestDto.java
│   │   │       │   │                       │   │   ├── BotMarketForm.java
│   │   │       │   │                       │   │   ├── BotModelDto.java
│   │   │       │   │                       │   │   ├── BotPublishQueryResult.java
│   │   │       │   │                       │   │   ├── BotQueryCondition.java
│   │   │       │   │                       │   │   ├── BotTag.java
│   │   │       │   │                       │   │   ├── ChatBotApi.java
│   │   │       │   │                       │   │   ├── ChatBotMarketPage.java
│   │   │       │   │                       │   │   ├── ChatBotReqDto.java
│   │   │       │   │                       │   │   ├── DebugChatBotReqDto.java
│   │   │       │   │                       │   │   ├── PersonalityConfigDto.java
│   │   │       │   │                       │   │   ├── PromptBotDetail.java
│   │   │       │   │                       │   │   ├── TalkAgentConfigDto.java
│   │   │       │   │                       │   │   ├── TalkAgentCreateDto.java
│   │   │       │   │                       │   │   ├── TalkAgentHistoryDto.java
│   │   │       │   │                       │   │   ├── TalkAgentSceneDto.java
│   │   │       │   │                       │   │   └── TalkAgentUpgradeDto.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── ChatBotListDto.java
│   │   │       │   │                       │   │   ├── ChatContentMeta.java
│   │   │       │   │                       │   │   ├── ChatFileReq.java
│   │   │       │   │                       │   │   ├── ChatListCreateRequest.java
│   │   │       │   │                       │   │   ├── ChatListCreateResponse.java
│   │   │       │   │                       │   │   ├── ChatListDelRequest.java
│   │   │       │   │                       │   │   ├── ChatListResponseDto.java
│   │   │       │   │                       │   │   ├── ChatModelMeta.java
│   │   │       │   │                       │   │   ├── ChatReqModelDto.java
│   │   │       │   │                       │   │   ├── ChatRequestDto.java
│   │   │       │   │                       │   │   ├── ChatRequestDtoList.java
│   │   │       │   │                       │   │   └── ChatRespModelDto.java
│   │   │       │   │                       │   ├── dataset/
│   │   │       │   │                       │   │   └── DatasetStats.java
│   │   │       │   │                       │   ├── llm/
│   │   │       │   │                       │   │   ├── ChatCompletionRequest.java
│   │   │       │   │                       │   │   ├── ChatCompletionResponse.java
│   │   │       │   │                       │   │   ├── ChatMessage.java
│   │   │       │   │                       │   │   └── SparkChatRequest.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordParam.java
│   │   │       │   │                       │   │   ├── ApplyRecordVO.java
│   │   │       │   │                       │   │   ├── BatchChatUserVO.java
│   │   │       │   │                       │   │   ├── ChatUserVO.java
│   │   │       │   │                       │   │   ├── EnterpriseAddDTO.java
│   │   │       │   │                       │   │   ├── EnterpriseSpaceCountVO.java
│   │   │       │   │                       │   │   ├── EnterpriseUserParam.java
│   │   │       │   │                       │   │   ├── EnterpriseUserVO.java
│   │   │       │   │                       │   │   ├── EnterpriseVO.java
│   │   │       │   │                       │   │   ├── InviteRecordAddDTO.java
│   │   │       │   │                       │   │   ├── InviteRecordParam.java
│   │   │       │   │                       │   │   ├── InviteRecordVO.java
│   │   │       │   │                       │   │   ├── PageParam.java
│   │   │       │   │                       │   │   ├── SpaceAddDTO.java
│   │   │       │   │                       │   │   ├── SpaceUpdateDTO.java
│   │   │       │   │                       │   │   ├── SpaceUserParam.java
│   │   │       │   │                       │   │   ├── SpaceUserVO.java
│   │   │       │   │                       │   │   ├── SpaceVO.java
│   │   │       │   │                       │   │   └── UserLimitVO.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── BotDataParam.java
│   │   │       │   │                       │   │   └── JwtInfoDto.java
│   │   │       │   │                       │   ├── vcn/
│   │   │       │   │                       │   │   └── CustomV2VCNDTO.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── CloneSynchronize.java
│   │   │       │   │                       │       ├── MaasApi.java
│   │   │       │   │                       │       ├── WorkflowApiRequest.java
│   │   │       │   │                       │       ├── WorkflowChatRequest.java
│   │   │       │   │                       │       ├── WorkflowEventData.java
│   │   │       │   │                       │       ├── WorkflowInfoDto.java
│   │   │       │   │                       │       ├── WorkflowInputTypeDto.java
│   │   │       │   │                       │       ├── WorkflowInputsResponseDto.java
│   │   │       │   │                       │       ├── WorkflowResumeReq.java
│   │   │       │   │                       │       └── WorkflowResumeRequest.java
│   │   │       │   │                       ├── entity/
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotChatFileParam.java
│   │   │       │   │                       │   │   ├── BotDataset.java
│   │   │       │   │                       │   │   ├── BotFavorite.java
│   │   │       │   │                       │   │   ├── BotTemplate.java
│   │   │       │   │                       │   │   ├── BotTypeList.java
│   │   │       │   │                       │   │   ├── ChatBotBase.java
│   │   │       │   │                       │   │   ├── ChatBotList.java
│   │   │       │   │                       │   │   ├── ChatBotMarket.java
│   │   │       │   │                       │   │   ├── ChatBotPromptStruct.java
│   │   │       │   │                       │   │   ├── ChatBotTag.java
│   │   │       │   │                       │   │   ├── DatasetFile.java
│   │   │       │   │                       │   │   ├── DatasetInfo.java
│   │   │       │   │                       │   │   ├── TakeoffList.java
│   │   │       │   │                       │   │   ├── UserLangChainInfo.java
│   │   │       │   │                       │   │   └── UserLangChainLog.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── ChatFileUser.java
│   │   │       │   │                       │   │   ├── ChatList.java
│   │   │       │   │                       │   │   ├── ChatReanwserRecords.java
│   │   │       │   │                       │   │   ├── ChatReasonRecords.java
│   │   │       │   │                       │   │   ├── ChatReqModel.java
│   │   │       │   │                       │   │   ├── ChatReqRecords.java
│   │   │       │   │                       │   │   ├── ChatRespAlltoolData.java
│   │   │       │   │                       │   │   ├── ChatRespModel.java
│   │   │       │   │                       │   │   ├── ChatRespRecords.java
│   │   │       │   │                       │   │   ├── ChatTokenRecords.java
│   │   │       │   │                       │   │   ├── ChatTraceSource.java
│   │   │       │   │                       │   │   └── ChatTreeIndex.java
│   │   │       │   │                       │   ├── dataset/
│   │   │       │   │                       │   │   └── BotDatasetMaas.java
│   │   │       │   │                       │   ├── model/
│   │   │       │   │                       │   │   └── McpData.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── AgentShareRecord.java
│   │   │       │   │                       │   │   ├── ApplyRecord.java
│   │   │       │   │                       │   │   ├── Enterprise.java
│   │   │       │   │                       │   │   ├── EnterprisePermission.java
│   │   │       │   │                       │   │   ├── EnterpriseUser.java
│   │   │       │   │                       │   │   ├── InviteRecord.java
│   │   │       │   │                       │   │   ├── Space.java
│   │   │       │   │                       │   │   ├── SpacePermission.java
│   │   │       │   │                       │   │   └── SpaceUser.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── AppMst.java
│   │   │       │   │                       │   │   └── UserInfo.java
│   │   │       │   │                       │   ├── wechat/
│   │   │       │   │                       │   │   └── BotOffiaccount.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       └── Workflow.java
│   │   │       │   │                       ├── enums/
│   │   │       │   │                       │   ├── BotOffiaccountStatusEnum.java
│   │   │       │   │                       │   ├── PublishChannelEnum.java
│   │   │       │   │                       │   ├── ShelfStatusEnum.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotStatusEnum.java
│   │   │       │   │                       │   │   ├── BotTypeEnum.java
│   │   │       │   │                       │   │   ├── BotUploadEnum.java
│   │   │       │   │                       │   │   ├── BotVersionEnum.java
│   │   │       │   │                       │   │   ├── DefaultBotModelEnum.java
│   │   │       │   │                       │   │   └── ReleaseTypeEnum.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── EnterpriseRoleEnum.java
│   │   │       │   │                       │   │   ├── EnterpriseServiceTypeEnum.java
│   │   │       │   │                       │   │   ├── InviteRecordRoleEnum.java
│   │   │       │   │                       │   │   ├── InviteRecordStatusEnum.java
│   │   │       │   │                       │   │   ├── InviteRecordTypeEnum.java
│   │   │       │   │                       │   │   ├── SpaceRoleEnum.java
│   │   │       │   │                       │   │   └── SpaceTypeEnum.java
│   │   │       │   │                       │   └── user/
│   │   │       │   │                       │       └── WordsTypeEnum.java
│   │   │       │   │                       ├── event/
│   │   │       │   │                       │   └── UserNicknameUpdatedEvent.java
│   │   │       │   │                       ├── exception/
│   │   │       │   │                       │   └── BusinessException.java
│   │   │       │   │                       ├── listener/
│   │   │       │   │                       │   └── UserNicknameUpdateEventListener.java
│   │   │       │   │                       ├── mapper/
│   │   │       │   │                       │   ├── AgentShareRecordMapper.java
│   │   │       │   │                       │   ├── UserLangChainInfoMapper.java
│   │   │       │   │                       │   ├── UserLangChainLogMapper.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotDatasetMapper.java
│   │   │       │   │                       │   │   ├── BotFavoriteMapper.java
│   │   │       │   │                       │   │   ├── BotTemplateMapper.java
│   │   │       │   │                       │   │   ├── BotTypeListMapper.java
│   │   │       │   │                       │   │   ├── ChatBotApiMapper.java
│   │   │       │   │                       │   │   ├── ChatBotBaseMapper.java
│   │   │       │   │                       │   │   ├── ChatBotListMapper.java
│   │   │       │   │                       │   │   ├── ChatBotMarketMapper.java
│   │   │       │   │                       │   │   ├── ChatBotPromptStructMapper.java
│   │   │       │   │                       │   │   ├── ChatBotTagMapper.java
│   │   │       │   │                       │   │   ├── DatasetFileMapper.java
│   │   │       │   │                       │   │   └── DatasetInfoMapper.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── ChatListMapper.java
│   │   │       │   │                       │   │   └── ChatTreeIndexMapper.java
│   │   │       │   │                       │   ├── dataset/
│   │   │       │   │                       │   │   └── BotDatasetMaasMapper.java
│   │   │       │   │                       │   ├── model/
│   │   │       │   │                       │   │   └── McpDataMapper.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordMapper.java
│   │   │       │   │                       │   │   ├── EnterpriseMapper.java
│   │   │       │   │                       │   │   ├── EnterprisePermissionMapper.java
│   │   │       │   │                       │   │   ├── EnterpriseUserMapper.java
│   │   │       │   │                       │   │   ├── InviteRecordMapper.java
│   │   │       │   │                       │   │   ├── SpaceMapper.java
│   │   │       │   │                       │   │   ├── SpacePermissionMapper.java
│   │   │       │   │                       │   │   └── SpaceUserMapper.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── AppMstMapper.java
│   │   │       │   │                       │   │   └── UserInfoMapper.java
│   │   │       │   │                       │   ├── vcn/
│   │   │       │   │                       │   │   └── CustomVCNMapper.java
│   │   │       │   │                       │   └── wechat/
│   │   │       │   │                       │       └── BotOffiaccountMapper.java
│   │   │       │   │                       ├── request/
│   │   │       │   │                       │   └── .gitkeep
│   │   │       │   │                       ├── response/
│   │   │       │   │                       │   └── ApiResult.java
│   │   │       │   │                       ├── service/
│   │   │       │   │                       │   ├── ChatRecordModelService.java
│   │   │       │   │                       │   ├── WssListenerService.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotDatasetService.java
│   │   │       │   │                       │   │   ├── BotFavoriteService.java
│   │   │       │   │                       │   │   ├── BotMarketDataService.java
│   │   │       │   │                       │   │   ├── BotService.java
│   │   │       │   │                       │   │   ├── BotTypeListService.java
│   │   │       │   │                       │   │   ├── ChatBotDataService.java
│   │   │       │   │                       │   │   ├── ChatBotMarketService.java
│   │   │       │   │                       │   │   ├── ChatBotTagService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotDatasetServiceImpl.java
│   │   │       │   │                       │   │       ├── BotFavoriteServiceImpl.java
│   │   │       │   │                       │   │       ├── BotMarketDataServiceImpl.java
│   │   │       │   │                       │   │       ├── BotServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatBotDataServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatBotMarketServiceImpl.java
│   │   │       │   │                       │   │       └── ChatBotTagServiceImpl.java
│   │   │       │   │                       │   ├── data/
│   │   │       │   │                       │   │   ├── ChatDataService.java
│   │   │       │   │                       │   │   ├── ChatHistoryService.java
│   │   │       │   │                       │   │   ├── ChatListDataService.java
│   │   │       │   │                       │   │   ├── DatasetDataService.java
│   │   │       │   │                       │   │   ├── IDatasetFileService.java
│   │   │       │   │                       │   │   ├── IDatasetInfoService.java
│   │   │       │   │                       │   │   ├── UserLangChainDataService.java
│   │   │       │   │                       │   │   ├── UserLangChainLogService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotTypeListServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatListDataServiceImpl.java
│   │   │       │   │                       │   │       ├── DatasetDataServiceImpl.java
│   │   │       │   │                       │   │       ├── DatasetFileServiceImpl.java
│   │   │       │   │                       │   │       ├── DatasetInfoServiceImpl.java
│   │   │       │   │                       │   │       ├── UserLangChainInfoDataServiceImpl.java
│   │   │       │   │                       │   │       └── UserLangChainLogServiceImpl.java
│   │   │       │   │                       │   ├── mcp/
│   │   │       │   │                       │   │   ├── McpDataService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── McpDataServiceImpl.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordService.java
│   │   │       │   │                       │   │   ├── EnterprisePermissionService.java
│   │   │       │   │                       │   │   ├── EnterpriseService.java
│   │   │       │   │                       │   │   ├── EnterpriseSpaceService.java
│   │   │       │   │                       │   │   ├── EnterpriseUserService.java
│   │   │       │   │                       │   │   ├── InviteRecordService.java
│   │   │       │   │                       │   │   ├── SpacePermissionService.java
│   │   │       │   │                       │   │   ├── SpaceService.java
│   │   │       │   │                       │   │   ├── SpaceUserService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── ApplyRecordServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterprisePermissionServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseSpaceServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseUserServiceImpl.java
│   │   │       │   │                       │   │       ├── InviteRecordServiceImpl.java
│   │   │       │   │                       │   │       ├── SpacePermissionServiceImpl.java
│   │   │       │   │                       │   │       ├── SpaceServiceImpl.java
│   │   │       │   │                       │   │       └── SpaceUserServiceImpl.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── AppMstService.java
│   │   │       │   │                       │   │   ├── Impl/
│   │   │       │   │                       │   │   │   └── AppMstServiceImpl.java
│   │   │       │   │                       │   │   └── MessageCodeService.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── WorkflowBotChatService.java
│   │   │       │   │                       │       ├── WorkflowBotParamService.java
│   │   │       │   │                       │       ├── WorkflowBotService.java
│   │   │       │   │                       │       └── impl/
│   │   │       │   │                       │           ├── WorkflowBotChatServiceImpl.java
│   │   │       │   │                       │           ├── WorkflowBotParamServiceImpl.java
│   │   │       │   │                       │           └── WorkflowServiceImpl.java
│   │   │       │   │                       ├── util/
│   │   │       │   │                       │   ├── AudioValidator.java
│   │   │       │   │                       │   ├── AuthStringUtil.java
│   │   │       │   │                       │   ├── BotFileParamUtil.java
│   │   │       │   │                       │   ├── BotUtil.java
│   │   │       │   │                       │   ├── ChatFileHttpClient.java
│   │   │       │   │                       │   ├── I18nUtil.java
│   │   │       │   │                       │   ├── MaasUtil.java
│   │   │       │   │                       │   ├── RequestContextUtil.java
│   │   │       │   │                       │   ├── S3ClientUtil.java
│   │   │       │   │                       │   ├── SpringContextHolder.java
│   │   │       │   │                       │   ├── SseEmitterUtil.java
│   │   │       │   │                       │   └── space/
│   │   │       │   │                       │       ├── EnterpriseInfoUtil.java
│   │   │       │   │                       │       ├── OrderInfoUtil.java
│   │   │       │   │                       │       └── SpaceInfoUtil.java
│   │   │       │   │                       └── workflow/
│   │   │       │   │                           ├── WorkflowClient.java
│   │   │       │   │                           └── WorkflowListener.java
│   │   │       │   └── resources/
│   │   │       │       ├── mapper/
│   │   │       │       │   ├── ApplyRecordMapper.xml
│   │   │       │       │   ├── BotDatasetMaasMapper.xml
│   │   │       │       │   ├── BotDatasetMapper.xml
│   │   │       │       │   ├── BotFavoriteMapper.xml
│   │   │       │       │   ├── ChatBotApiMapper.xml
│   │   │       │       │   ├── ChatBotBaseMapper.xml
│   │   │       │       │   ├── ChatBotListMapper.xml
│   │   │       │       │   ├── ChatBotMarketMapper.xml
│   │   │       │       │   ├── ChatTreeIndexMapper.xml
│   │   │       │       │   ├── CustomVCNMapper.xml
│   │   │       │       │   ├── EnterpriseMapper.xml
│   │   │       │       │   ├── EnterpriseUserMapper.xml
│   │   │       │       │   ├── InviteRecordMapper.xml
│   │   │       │       │   ├── McpDataMapper.xml
│   │   │       │       │   ├── SpaceMapper.xml
│   │   │       │       │   └── SpaceUserMapper.xml
│   │   │       │       ├── messages_en.properties
│   │   │       │       ├── messages_zh.properties
│   │   │       │       ├── speaker_en.properties
│   │   │       │       └── speaker_zh.properties
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── iflytek/
│   │   │                       └── astron/
│   │   │                           └── console/
│   │   │                               └── commons/
│   │   │                                   ├── CommonsModuleTests.java
│   │   │                                   ├── data/
│   │   │                                   │   └── impl/
│   │   │                                   │       └── UserInfoDataServiceImplUnitTest.java
│   │   │                                   ├── event/
│   │   │                                   │   └── UserNicknameEventSimpleTest.java
│   │   │                                   ├── service/
│   │   │                                   │   ├── bot/
│   │   │                                   │   │   └── impl/
│   │   │                                   │   │       └── ChatBotDataServiceImplTest.java
│   │   │                                   │   ├── data/
│   │   │                                   │   │   └── impl/
│   │   │                                   │   │       ├── ChatListDataServiceImplTest.java
│   │   │                                   │   │       └── UserLangChainInfoDataServiceImplTest.java
│   │   │                                   │   ├── space/
│   │   │                                   │   │   └── impl/
│   │   │                                   │   │       ├── ApplyRecordServiceImplTest.java
│   │   │                                   │   │       ├── EnterprisePermissionServiceImplTest.java
│   │   │                                   │   │       ├── EnterpriseServiceImplTest.java
│   │   │                                   │   │       ├── EnterpriseSpaceServiceImplTest.java
│   │   │                                   │   │       ├── EnterpriseUserServiceImplTest.java
│   │   │                                   │   │       ├── InviteRecordServiceImplTest.java
│   │   │                                   │   │       ├── SpacePermissionServiceImplTest.java
│   │   │                                   │   │       ├── SpaceServiceImplTest.java
│   │   │                                   │   │       └── SpaceUserServiceImplTest.java
│   │   │                                   │   └── workflow/
│   │   │                                   │       └── impl/
│   │   │                                   │           ├── WorkflowBotChatServiceImplTest.java
│   │   │                                   │           └── WorkflowBotParamServiceImplTest.java
│   │   │                                   └── util/
│   │   │                                       ├── BotFileParamUtilTest.java
│   │   │                                       ├── MaasUtilTest.java
│   │   │                                       ├── S3ClientUtilTest.java
│   │   │                                       └── SseEmitterUtilTest.java
│   │   ├── config/
│   │   │   ├── checkstyle.xml
│   │   │   ├── eclipse-formatter.xml
│   │   │   ├── pmd-ruleset.xml
│   │   │   └── spotbugs-exclude.xml
│   │   ├── hub/
│   │   │   ├── Dockerfile
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       ├── main/
│   │   │       │   ├── java/
│   │   │       │   │   └── com/
│   │   │       │   │       └── iflytek/
│   │   │       │   │           └── astron/
│   │   │       │   │               └── console/
│   │   │       │   │                   └── hub/
│   │   │       │   │                       ├── HubApplication.java
│   │   │       │   │                       ├── annotation/
│   │   │       │   │                       │   └── DistributedLock.java
│   │   │       │   │                       ├── aspect/
│   │   │       │   │                       │   └── DistributedLockAspect.java
│   │   │       │   │                       ├── config/
│   │   │       │   │                       │   ├── DeepSeekConfig.java
│   │   │       │   │                       │   ├── DistributedLockConfig.java
│   │   │       │   │                       │   ├── GlobalExceptionHandler.java
│   │   │       │   │                       │   ├── InternationalConfig.java
│   │   │       │   │                       │   ├── JacksonConfig.java
│   │   │       │   │                       │   ├── MyBatisPlusConfig.java
│   │   │       │   │                       │   ├── RedisCacheConfig.java
│   │   │       │   │                       │   ├── SecurityConfig.java
│   │   │       │   │                       │   ├── SpringDocConfig.java
│   │   │       │   │                       │   ├── VoiceTrainConfig.java
│   │   │       │   │                       │   ├── WebMvcConfig.java
│   │   │       │   │                       │   ├── WorkflowConfig.java
│   │   │       │   │                       │   ├── security/
│   │   │       │   │                       │   │   ├── RestfulAccessDeniedHandler.java
│   │   │       │   │                       │   │   └── RestfulAuthenticationEntryPoint.java
│   │   │       │   │                       │   └── space/
│   │   │       │   │                       │       └── EnterpriseSpaceConfig.java
│   │   │       │   │                       ├── controller/
│   │   │       │   │                       │   ├── HealthController.java
│   │   │       │   │                       │   ├── S3Controller.java
│   │   │       │   │                       │   ├── SparkChatController.java
│   │   │       │   │                       │   ├── WorkflowChatController.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotController.java
│   │   │       │   │                       │   │   ├── BotCreateController.java
│   │   │       │   │                       │   │   ├── BotFavoriteController.java
│   │   │       │   │                       │   │   ├── PersonalityController.java
│   │   │       │   │                       │   │   ├── SpeakerTrainController.java
│   │   │       │   │                       │   │   ├── TalkAgentController.java
│   │   │       │   │                       │   │   └── VoiceApiController.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── ChatEnhanceController.java
│   │   │       │   │                       │   │   ├── ChatHistoryController.java
│   │   │       │   │                       │   │   ├── ChatListController.java
│   │   │       │   │                       │   │   ├── ChatMessageController.java
│   │   │       │   │                       │   │   └── ChatRestartController.java
│   │   │       │   │                       │   ├── extra/
│   │   │       │   │                       │   │   └── RtasrController.java
│   │   │       │   │                       │   ├── homepage/
│   │   │       │   │                       │   │   └── AgentSquareController.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   └── NotificationController.java
│   │   │       │   │                       │   ├── publish/
│   │   │       │   │                       │   │   ├── BotPublishController.java
│   │   │       │   │                       │   │   └── PublishApiController.java
│   │   │       │   │                       │   ├── share/
│   │   │       │   │                       │   │   └── ShareController.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordController.java
│   │   │       │   │                       │   │   ├── EnterpriseController.java
│   │   │       │   │                       │   │   ├── EnterprisePermissionController.java
│   │   │       │   │                       │   │   ├── EnterpriseUserController.java
│   │   │       │   │                       │   │   ├── InviteRecordController.java
│   │   │       │   │                       │   │   ├── SpaceController.java
│   │   │       │   │                       │   │   ├── SpacePermissionController.java
│   │   │       │   │                       │   │   └── SpaceUserController.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── MyBotController.java
│   │   │       │   │                       │   │   └── UserInfoController.java
│   │   │       │   │                       │   ├── wechat/
│   │   │       │   │                       │   │   └── WechatCallbackController.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── ChatWorkflowController.java
│   │   │       │   │                       │       └── WorkflowBotController.java
│   │   │       │   │                       ├── converter/
│   │   │       │   │                       │   ├── BotPublishConverter.java
│   │   │       │   │                       │   ├── McpDataConverter.java
│   │   │       │   │                       │   └── WorkflowVersionConverter.java
│   │   │       │   │                       ├── data/
│   │   │       │   │                       │   ├── NotificationDataService.java
│   │   │       │   │                       │   ├── ReqKnowledgeRecordsDataService.java
│   │   │       │   │                       │   ├── ShareDataService.java
│   │   │       │   │                       │   └── impl/
│   │   │       │   │                       │       ├── ChatDataServiceImpl.java
│   │   │       │   │                       │       ├── NotificationDataServiceImpl.java
│   │   │       │   │                       │       ├── ReqKnowledgeRecordsDataServiceImpl.java
│   │   │       │   │                       │       └── ShareDataServiceImpl.java
│   │   │       │   │                       ├── dto/
│   │   │       │   │                       │   ├── DeepSeekChatRequest.java
│   │   │       │   │                       │   ├── DeepSeekChatResponse.java
│   │   │       │   │                       │   ├── PageResponse.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotGenerationDTO.java
│   │   │       │   │                       │   │   ├── ChatBotMarketPage.java
│   │   │       │   │                       │   │   ├── MaasDuplicate.java
│   │   │       │   │                       │   │   └── PromptStructDTO.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── BotDebugRequest.java
│   │   │       │   │                       │   │   ├── ChatEnhanceChatHistoryListFileVo.java
│   │   │       │   │                       │   │   ├── ChatEnhanceSaveFileVo.java
│   │   │       │   │                       │   │   ├── ChatHistoryResponseDto.java
│   │   │       │   │                       │   │   ├── LongFileDto.java
│   │   │       │   │                       │   │   └── StopStreamResponse.java
│   │   │       │   │                       │   ├── homepage/
│   │   │       │   │                       │   │   ├── BotInfoDto.java
│   │   │       │   │                       │   │   ├── BotListPageDto.java
│   │   │       │   │                       │   │   ├── BotTypeDto.java
│   │   │       │   │                       │   │   └── GetBotListPageRequestDto.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   ├── MarkReadRequest.java
│   │   │       │   │                       │   │   ├── NotificationDto.java
│   │   │       │   │                       │   │   ├── NotificationPageResponse.java
│   │   │       │   │                       │   │   ├── NotificationQueryRequest.java
│   │   │       │   │                       │   │   └── SendNotificationRequest.java
│   │   │       │   │                       │   ├── publish/
│   │   │       │   │                       │   │   ├── AppListDTO.java
│   │   │       │   │                       │   │   ├── BotApiInfoDTO.java
│   │   │       │   │                       │   │   ├── BotApiRealTimeUsageDTO.java
│   │   │       │   │                       │   │   ├── BotDetailResponseDto.java
│   │   │       │   │                       │   │   ├── BotPublishInfoDto.java
│   │   │       │   │                       │   │   ├── BotSummaryStatsVO.java
│   │   │       │   │                       │   │   ├── BotTimeSeriesResponseDto.java
│   │   │       │   │                       │   │   ├── BotTimeSeriesStatsVO.java
│   │   │       │   │                       │   │   ├── BotTraceRequestDto.java
│   │   │       │   │                       │   │   ├── BotVersionVO.java
│   │   │       │   │                       │   │   ├── CreateAppVo.java
│   │   │       │   │                       │   │   ├── CreateBotApiVo.java
│   │   │       │   │                       │   │   ├── PublishStatusUpdateDto.java
│   │   │       │   │                       │   │   ├── ReleaseBotReqDto.java
│   │   │       │   │                       │   │   ├── ReleaseBotRespDto.java
│   │   │       │   │                       │   │   ├── UnifiedPrepareDto.java
│   │   │       │   │                       │   │   ├── UnifiedPublishRequestDto.java
│   │   │       │   │                       │   │   ├── WechatAuthUrlRequestDto.java
│   │   │       │   │                       │   │   ├── WechatAuthUrlResponseDto.java
│   │   │       │   │                       │   │   ├── cbm/
│   │   │       │   │                       │   │   │   ├── AssistantInfo.java
│   │   │       │   │                       │   │   │   ├── CbmBody.java
│   │   │       │   │                       │   │   │   ├── CbmForm.java
│   │   │       │   │                       │   │   │   ├── CbmResponse.java
│   │   │       │   │                       │   │   │   └── Options.java
│   │   │       │   │                       │   │   ├── mcp/
│   │   │       │   │                       │   │   │   ├── McpContentResponseDto.java
│   │   │       │   │                       │   │   │   └── McpPublishRequestDto.java
│   │   │       │   │                       │   │   └── prepare/
│   │   │       │   │                       │   │       ├── ApiPrepareDto.java
│   │   │       │   │                       │   │       ├── BasePrepareDto.java
│   │   │       │   │                       │   │       ├── FeishuPrepareDto.java
│   │   │       │   │                       │   │       ├── MarketPrepareDto.java
│   │   │       │   │                       │   │       ├── McpPrepareDto.java
│   │   │       │   │                       │   │       └── WechatPrepareDto.java
│   │   │       │   │                       │   ├── share/
│   │   │       │   │                       │   │   ├── CardAddBody.java
│   │   │       │   │                       │   │   └── ShareKey.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── MyBotPageDTO.java
│   │   │       │   │                       │   │   ├── MyBotParamDTO.java
│   │   │       │   │                       │   │   ├── MyBotResponseDTO.java
│   │   │       │   │                       │   │   ├── TenantAuth.java
│   │   │       │   │                       │   │   ├── UpdateUserBasicInfoRequest.java
│   │   │       │   │                       │   │   ├── UserInfoExcelDTO.java
│   │   │       │   │                       │   │   └── UserInfoResultExcelDTO.java
│   │   │       │   │                       │   ├── wechat/
│   │   │       │   │                       │   │   └── WechatAuthCallbackDto.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── WorkflowReleaseRequestDto.java
│   │   │       │   │                       │       └── WorkflowReleaseResponseDto.java
│   │   │       │   │                       ├── entity/
│   │   │       │   │                       │   ├── AiPromptTemplate.java
│   │   │       │   │                       │   ├── ApplicationForm.java
│   │   │       │   │                       │   ├── BotConversationStats.java
│   │   │       │   │                       │   ├── BotOffiaccountChat.java
│   │   │       │   │                       │   ├── BotOffiaccountRecord.java
│   │   │       │   │                       │   ├── ChatBotRemove.java
│   │   │       │   │                       │   ├── CustomSpeaker.java
│   │   │       │   │                       │   ├── PronunciationPersonConfig.java
│   │   │       │   │                       │   ├── ReqKnowledgeRecords.java
│   │   │       │   │                       │   ├── ShareChat.java
│   │   │       │   │                       │   ├── ShareQa.java
│   │   │       │   │                       │   ├── WorkflowTemplateGroup.java
│   │   │       │   │                       │   ├── XingchenOfficialPrompt.java
│   │   │       │   │                       │   ├── XingchenPromptManage.java
│   │   │       │   │                       │   ├── XingchenPromptVersion.java
│   │   │       │   │                       │   ├── maas/
│   │   │       │   │                       │   │   ├── MaasDuplicate.java
│   │   │       │   │                       │   │   ├── MaasTemplate.java
│   │   │       │   │                       │   │   └── WorkflowTemplateQueryDto.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   ├── Notification.java
│   │   │       │   │                       │   │   ├── UserBroadcastRead.java
│   │   │       │   │                       │   │   └── UserNotification.java
│   │   │       │   │                       │   └── personality/
│   │   │       │   │                       │       ├── PersonalityCategory.java
│   │   │       │   │                       │       ├── PersonalityConfig.java
│   │   │       │   │                       │       └── PersonalityRole.java
│   │   │       │   │                       ├── enums/
│   │   │       │   │                       │   ├── ChatFileLimitEnum.java
│   │   │       │   │                       │   ├── ConfigTypeEnum.java
│   │   │       │   │                       │   ├── LongContextStatusEnum.java
│   │   │       │   │                       │   ├── NotificationType.java
│   │   │       │   │                       │   ├── PersonalitySceneTypeEnum.java
│   │   │       │   │                       │   ├── TalkAgentSceneEnum.java
│   │   │       │   │                       │   ├── TtsTypeEnum.java
│   │   │       │   │                       │   ├── UserInfoResultEnum.java
│   │   │       │   │                       │   └── WordsTypeEnum.java
│   │   │       │   │                       ├── event/
│   │   │       │   │                       │   ├── BotPublishStatusChangedEvent.java
│   │   │       │   │                       │   └── PublishChannelUpdateEvent.java
│   │   │       │   │                       ├── exception/
│   │   │       │   │                       │   └── DistributedLockException.java
│   │   │       │   │                       ├── listener/
│   │   │       │   │                       │   └── WorkflowBotPublishListener.java
│   │   │       │   │                       ├── mapper/
│   │   │       │   │                       │   ├── AiPromptTemplateMapper.java
│   │   │       │   │                       │   ├── ApplicationFormMapper.java
│   │   │       │   │                       │   ├── BotChatFileParamMapper.java
│   │   │       │   │                       │   ├── BotConversationStatsMapper.java
│   │   │       │   │                       │   ├── BotOffiaccountChatMapper.java
│   │   │       │   │                       │   ├── BotOffiaccountRecordMapper.java
│   │   │       │   │                       │   ├── ChatBotRemoveMapper.java
│   │   │       │   │                       │   ├── ChatFileReqMapper.java
│   │   │       │   │                       │   ├── ChatFileUserMapper.java
│   │   │       │   │                       │   ├── ChatReanwserRecordsMapper.java
│   │   │       │   │                       │   ├── ChatReasonRecordsMapper.java
│   │   │       │   │                       │   ├── ChatReqModelMapper.java
│   │   │       │   │                       │   ├── ChatReqRecordsMapper.java
│   │   │       │   │                       │   ├── ChatRespAlltoolDataMapper.java
│   │   │       │   │                       │   ├── ChatRespModelMapper.java
│   │   │       │   │                       │   ├── ChatRespRecordsMapper.java
│   │   │       │   │                       │   ├── ChatTokenRecordsMapper.java
│   │   │       │   │                       │   ├── ChatTraceSourceMapper.java
│   │   │       │   │                       │   ├── CustomSpeakerMapper.java
│   │   │       │   │                       │   ├── MaasTemplateMapper.java
│   │   │       │   │                       │   ├── PronunciationPersonConfigMapper.java
│   │   │       │   │                       │   ├── ReqKnowledgeRecordsMapper.java
│   │   │       │   │                       │   ├── ShareChatMapper.java
│   │   │       │   │                       │   ├── ShareQaMapper.java
│   │   │       │   │                       │   ├── WorkflowTemplateGroupMapper.java
│   │   │       │   │                       │   ├── XingchenOfficialPromptMapper.java
│   │   │       │   │                       │   ├── XingchenPromptManageMapper.java
│   │   │       │   │                       │   ├── XingchenPromptVersionMapper.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   ├── NotificationMapper.java
│   │   │       │   │                       │   │   ├── UserBroadcastReadMapper.java
│   │   │       │   │                       │   │   └── UserNotificationMapper.java
│   │   │       │   │                       │   └── personality/
│   │   │       │   │                       │       ├── PersonalityCategoryMapper.java
│   │   │       │   │                       │       ├── PersonalityConfigMapper.java
│   │   │       │   │                       │       └── PersonalityRoleMapper.java
│   │   │       │   │                       ├── properties/
│   │   │       │   │                       │   ├── InviteMessageTempProperties.java
│   │   │       │   │                       │   └── SpaceLimitProperties.java
│   │   │       │   │                       ├── service/
│   │   │       │   │                       │   ├── ManagedWebSearchService.java
│   │   │       │   │                       │   ├── PromptChatService.java
│   │   │       │   │                       │   ├── SparkChatService.java
│   │   │       │   │                       │   ├── WorkflowChatService.java
│   │   │       │   │                       │   ├── bot/
│   │   │       │   │                       │   │   ├── BotAIService.java
│   │   │       │   │                       │   │   ├── BotTransactionalService.java
│   │   │       │   │                       │   │   ├── CustomSpeakerService.java
│   │   │       │   │                       │   │   ├── PersonalityConfigService.java
│   │   │       │   │                       │   │   ├── SpeakerTrainService.java
│   │   │       │   │                       │   │   ├── TalkAgentService.java
│   │   │       │   │                       │   │   ├── VoiceService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotAIServiceImpl.java
│   │   │       │   │                       │   │       ├── BotTransactionalServiceImpl.java
│   │   │       │   │                       │   │       ├── CustomSpeakerServiceImpl.java
│   │   │       │   │                       │   │       ├── PersonalityConfigServiceImpl.java
│   │   │       │   │                       │   │       ├── SpeakerTrainServiceImpl.java
│   │   │       │   │                       │   │       ├── TalkAgentServiceImpl.java
│   │   │       │   │                       │   │       └── VoiceServiceImpl.java
│   │   │       │   │                       │   ├── chat/
│   │   │       │   │                       │   │   ├── BotChatService.java
│   │   │       │   │                       │   │   ├── ChatBotApiService.java
│   │   │       │   │                       │   │   ├── ChatEnhanceService.java
│   │   │       │   │                       │   │   ├── ChatHistoryMultiModalService.java
│   │   │       │   │                       │   │   ├── ChatListService.java
│   │   │       │   │                       │   │   ├── ChatReasonRecordsService.java
│   │   │       │   │                       │   │   ├── ChatReqRespService.java
│   │   │       │   │                       │   │   ├── ChatRestartService.java
│   │   │       │   │                       │   │   ├── TraceToSourceService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotChatServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatBotApiServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatEnhanceServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatHistoryMultiModalServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatHistoryServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatListServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatReasonRecordsServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatRecordModelServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatReqRespServiceImpl.java
│   │   │       │   │                       │   │       ├── ChatRestartServiceImpl.java
│   │   │       │   │                       │   │       ├── ProviderToolOrchestrator.java
│   │   │       │   │                       │   │       └── TraceToSourceServiceImpl.java
│   │   │       │   │                       │   ├── homepage/
│   │   │       │   │                       │   │   ├── AgentSquareService.java
│   │   │       │   │                       │   │   └── Impl/
│   │   │       │   │                       │   │       └── AgentSquareServiceImpl.java
│   │   │       │   │                       │   ├── knowledge/
│   │   │       │   │                       │   │   ├── KnowledgeService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── KnowledgeServiceImpl.java
│   │   │       │   │                       │   ├── notification/
│   │   │       │   │                       │   │   ├── NotificationService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── NotificationServiceImpl.java
│   │   │       │   │                       │   ├── publish/
│   │   │       │   │                       │   │   ├── BotPublishService.java
│   │   │       │   │                       │   │   ├── McpService.java
│   │   │       │   │                       │   │   ├── PublishApiService.java
│   │   │       │   │                       │   │   ├── PublishChannelService.java
│   │   │       │   │                       │   │   ├── ReleaseManageClientService.java
│   │   │       │   │                       │   │   ├── TenantService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotPublishServiceImpl.java
│   │   │       │   │                       │   │       ├── McpServiceImpl.java
│   │   │       │   │                       │   │       ├── PublishApiServiceImpl.java
│   │   │       │   │                       │   │       ├── PublishChannelServiceImpl.java
│   │   │       │   │                       │   │       ├── ReleaseManageClientServiceImpl.java
│   │   │       │   │                       │   │       └── TenantServiceImpl.java
│   │   │       │   │                       │   ├── share/
│   │   │       │   │                       │   │   ├── ShareService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── ShareServiceImpl.java
│   │   │       │   │                       │   ├── space/
│   │   │       │   │                       │   │   ├── ApplyRecordBizService.java
│   │   │       │   │                       │   │   ├── EnterpriseBizService.java
│   │   │       │   │                       │   │   ├── EnterpriseUserBizService.java
│   │   │       │   │                       │   │   ├── InviteRecordBizService.java
│   │   │       │   │                       │   │   ├── SpaceBizService.java
│   │   │       │   │                       │   │   ├── SpaceUserBizService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── ApplyRecordBizServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseBizServiceImpl.java
│   │   │       │   │                       │   │       ├── EnterpriseUserBizServiceImpl.java
│   │   │       │   │                       │   │       ├── InviteRecordBizServiceImpl.java
│   │   │       │   │                       │   │       ├── SpaceBizServiceImpl.java
│   │   │       │   │                       │   │       └── SpaceUserBizServiceImpl.java
│   │   │       │   │                       │   ├── user/
│   │   │       │   │                       │   │   ├── UserBotService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       └── UserBotServiceImpl.java
│   │   │       │   │                       │   ├── wechat/
│   │   │       │   │                       │   │   ├── BotOffiaccountService.java
│   │   │       │   │                       │   │   ├── WechatThirdpartyService.java
│   │   │       │   │                       │   │   └── impl/
│   │   │       │   │                       │   │       ├── BotOffiaccountServiceImpl.java
│   │   │       │   │                       │   │       └── WechatThirdpartyServiceImpl.java
│   │   │       │   │                       │   └── workflow/
│   │   │       │   │                       │       ├── BotChainService.java
│   │   │       │   │                       │       ├── BotMaasService.java
│   │   │       │   │                       │       ├── WorkflowReleaseService.java
│   │   │       │   │                       │       ├── WorkflowTemplateGroupService.java
│   │   │       │   │                       │       └── impl/
│   │   │       │   │                       │           ├── BotChainServiceImpl.java
│   │   │       │   │                       │           ├── BotMaasServiceImpl.java
│   │   │       │   │                       │           ├── WorkflowReleaseServiceImpl.java
│   │   │       │   │                       │           └── WorkflowTemplateGroupServiceImpl.java
│   │   │       │   │                       ├── strategy/
│   │   │       │   │                       │   └── publish/
│   │   │       │   │                       │       ├── PublishStrategy.java
│   │   │       │   │                       │       ├── PublishStrategyFactory.java
│   │   │       │   │                       │       └── impl/
│   │   │       │   │                       │           ├── ApiPublishStrategy.java
│   │   │       │   │                       │           ├── FeishuPublishStrategy.java
│   │   │       │   │                       │           ├── MarketPublishStrategy.java
│   │   │       │   │                       │           ├── McpPublishStrategy.java
│   │   │       │   │                       │           └── WechatPublishStrategy.java
│   │   │       │   │                       └── util/
│   │   │       │   │                           ├── AESUtil.java
│   │   │       │   │                           ├── BotAIServiceClient.java
│   │   │       │   │                           ├── BotPermissionUtil.java
│   │   │       │   │                           ├── CommonUtil.java
│   │   │       │   │                           ├── DistributedLockExample.java
│   │   │       │   │                           ├── HttpServiceClient.java
│   │   │       │   │                           ├── ImageUtil.java
│   │   │       │   │                           ├── Md5Util.java
│   │   │       │   │                           ├── NameUtil.java
│   │   │       │   │                           └── wechat/
│   │   │       │   │                               ├── AesException.java
│   │   │       │   │                               ├── WXBizMsgCrypt.java
│   │   │       │   │                               ├── WXBizMsgParse.java
│   │   │       │   │                               ├── WechatMessageCrypto.java
│   │   │       │   │                               ├── WechatMessageParser.java
│   │   │       │   │                               └── XMLParse.java
│   │   │       │   └── resources/
│   │   │       │       ├── application.yml
│   │   │       │       ├── db/
│   │   │       │       │   └── migration/
│   │   │       │       │       ├── README.md
│   │   │       │       │       ├── V1.10__insert_permission_data.sql
│   │   │       │       │       ├── V1.11__insert_template_data.sql
│   │   │       │       │       ├── V1.12__insert_other_data.sql
│   │   │       │       │       ├── V1.13__insert_config_data.sql
│   │   │       │       │       ├── V1.14__insert_config_data2.sql
│   │   │       │       │       ├── V1.15__fix_missing_alter.sql
│   │   │       │       │       ├── V1.16__insert_workflow_data.sql
│   │   │       │       │       ├── V1.17__insert_workflow_node_config.sql
│   │   │       │       │       ├── V1.18__update_ai_code_prompts.sql
│   │   │       │       │       ├── V1.19__update_sensitive_sql_info.sql
│   │   │       │       │       ├── V1.1__init_core.sql
│   │   │       │       │       ├── V1.20__add_model_provider.sql
│   │   │       │       │       ├── V1.21__add_official_deepseek_models.sql
│   │   │       │       │       ├── V1.22__add_is_think_to_model_table.sql
│   │   │       │       │       ├── V1.23__add_variable_aggregation_node_template.sql
│   │   │       │       │       ├── V1.2__init_enterprise.sql
│   │   │       │       │       ├── V1.3__init_space.sql
│   │   │       │       │       ├── V1.4__init_bot.sql
│   │   │       │       │       ├── V1.5__init_workflow.sql
│   │   │       │       │       ├── V1.6__init_model.sql
│   │   │       │       │       ├── V1.7__init_knowledge.sql
│   │   │       │       │       └── V1.9__init_toolbox.sql
│   │   │       │       ├── logback-spring.xml
│   │   │       │       ├── mapper/
│   │   │       │       │   ├── BotConversationStatsMapper.xml
│   │   │       │       │   ├── ChatReasonRecordsMapper.xml
│   │   │       │       │   ├── CustomSpeakerMapper.xml
│   │   │       │       │   ├── notification/
│   │   │       │       │   │   ├── NotificationMapper.xml
│   │   │       │       │   │   ├── UserBroadcastReadMapper.xml
│   │   │       │       │   │   └── UserNotificationMapper.xml
│   │   │       │       │   └── personality/
│   │   │       │       │       ├── PersonalityConfigMapper.xml
│   │   │       │       │       └── PersonalityRoleMapper.xml
│   │   │       │       └── sql/
│   │   │       │           └── req_knowledge_records.sql
│   │   │       └── test/
│   │   │           └── java/
│   │   │               └── com/
│   │   │                   └── iflytek/
│   │   │                       └── astron/
│   │   │                           └── console/
│   │   │                               └── hub/
│   │   │                                   ├── data/
│   │   │                                   │   ├── UserInfoDataServiceFinalTest.java
│   │   │                                   │   └── impl/
│   │   │                                   │       ├── ChatDataServiceImplTest.java
│   │   │                                   │       ├── ReqKnowledgeRecordsDataServiceImplTest.java
│   │   │                                   │       └── ShareDataServiceImplTest.java
│   │   │                                   ├── dto/
│   │   │                                   │   └── notification/
│   │   │                                   │       ├── NotificationDtoTest.java
│   │   │                                   │       ├── NotificationGroupingTest.java
│   │   │                                   │       └── NotificationPageResponseTest.java
│   │   │                                   ├── enums/
│   │   │                                   │   └── NotificationTypeTest.java
│   │   │                                   ├── mapper/
│   │   │                                   │   └── notification/
│   │   │                                   │       └── NotificationEnumMappingTest.java
│   │   │                                   └── service/
│   │   │                                       ├── PromptChatServiceTest.java
│   │   │                                       ├── SparkChatServiceTest.java
│   │   │                                       ├── bot/
│   │   │                                       │   └── impl/
│   │   │                                       │       └── BotTransactionalServiceImplTest.java
│   │   │                                       ├── chat/
│   │   │                                       │   └── impl/
│   │   │                                       │       ├── BotChatServiceImplUnitTest.java
│   │   │                                       │       ├── ChatEnhanceServiceImplTest.java
│   │   │                                       │       ├── ChatHistoryMultiModalServiceImplTest.java
│   │   │                                       │       ├── ChatHistoryServiceImplTest.java
│   │   │                                       │       ├── ChatListServiceImplTest.java
│   │   │                                       │       ├── ChatReasonRecordsServiceImplTest.java
│   │   │                                       │       ├── ChatRecordModelServiceImplTest.java
│   │   │                                       │       ├── ChatReqRespServiceImplTest.java
│   │   │                                       │       ├── ChatRestartServiceImplTest.java
│   │   │                                       │       └── TraceToSourceServiceImplTest.java
│   │   │                                       ├── knowledge/
│   │   │                                       │   └── impl/
│   │   │                                       │       └── KnowledgeServiceImplTest.java
│   │   │                                       ├── notification/
│   │   │                                       │   └── impl/
│   │   │                                       │       └── NotificationServiceImplTest.java
│   │   │                                       ├── share/
│   │   │                                       │   └── impl/
│   │   │                                       │       └── ShareServiceImplTest.java
│   │   │                                       ├── space/
│   │   │                                       │   └── impl/
│   │   │                                       │       ├── ApplyRecordBizServiceImplTest.java
│   │   │                                       │       ├── EnterpriseBizServiceImplTest.java
│   │   │                                       │       ├── EnterpriseUserBizServiceImplTest.java
│   │   │                                       │       ├── InviteRecordBizServiceImplTest.java
│   │   │                                       │       └── SpaceUserBizServiceImplTest.java
│   │   │                                       └── workflow/
│   │   │                                           └── impl/
│   │   │                                               └── BotChainServiceImplTest.java
│   │   ├── pom.xml
│   │   └── toolkit/
│   │       ├── pom.xml
│   │       └── src/
│   │           ├── main/
│   │           │   ├── java/
│   │           │   │   └── com/
│   │           │   │       └── iflytek/
│   │           │   │           └── astron/
│   │           │   │               └── console/
│   │           │   │                   └── toolkit/
│   │           │   │                       ├── common/
│   │           │   │                       │   ├── CustomExceptionCode.java
│   │           │   │                       │   ├── Result.java
│   │           │   │                       │   ├── ResultStatus.java
│   │           │   │                       │   ├── ResultStatusEN.java
│   │           │   │                       │   ├── anno/
│   │           │   │                       │   │   ├── ExcelHeader.java
│   │           │   │                       │   │   └── ResponseResultBody.java
│   │           │   │                       │   └── constant/
│   │           │   │                       │       ├── ChatConstant.java
│   │           │   │                       │       ├── CommonConst.java
│   │           │   │                       │       ├── EffectEvalConst.java
│   │           │   │                       │       ├── EsConst.java
│   │           │   │                       │       ├── LLMConstant.java
│   │           │   │                       │       ├── OpenApiConst.java
│   │           │   │                       │       ├── ProjectContent.java
│   │           │   │                       │       ├── ToolConst.java
│   │           │   │                       │       ├── WorkflowConst.java
│   │           │   │                       │       ├── core/
│   │           │   │                       │       │   └── ToolErrorStatus.java
│   │           │   │                       │       └── http/
│   │           │   │                       │           └── CustomHeader.java
│   │           │   │                       ├── config/
│   │           │   │                       │   ├── aop/
│   │           │   │                       │   │   └── ResponseResultBodyAdvice.java
│   │           │   │                       │   ├── exception/
│   │           │   │                       │   │   ├── CustomException.java
│   │           │   │                       │   │   ├── OpenApiException.java
│   │           │   │                       │   │   └── handler/
│   │           │   │                       │   │       └── GlobalExceptionHandler.java
│   │           │   │                       │   ├── jooq/
│   │           │   │                       │   │   ├── JooqBatchExecutor.java
│   │           │   │                       │   │   ├── JooqConfig.java
│   │           │   │                       │   │   ├── JooqRetry.java
│   │           │   │                       │   │   └── SqlSender.java
│   │           │   │                       │   ├── mybatis/
│   │           │   │                       │   │   ├── MyBatisConfig.java
│   │           │   │                       │   │   └── MybatisPlusConfig.java
│   │           │   │                       │   ├── properties/
│   │           │   │                       │   │   ├── ApiUrl.java
│   │           │   │                       │   │   ├── AsyncExecutorProperties.java
│   │           │   │                       │   │   ├── BizConfig.java
│   │           │   │                       │   │   ├── CommonConfig.java
│   │           │   │                       │   │   ├── RepoAuthorizedConfig.java
│   │           │   │                       │   │   └── SchedulingPoolProperties.java
│   │           │   │                       │   ├── rest/
│   │           │   │                       │   │   └── RestConfig.java
│   │           │   │                       │   ├── spring/
│   │           │   │                       │   │   └── ExecuteShutdown.java
│   │           │   │                       │   ├── task/
│   │           │   │                       │   │   └── SchedulingConfig.java
│   │           │   │                       │   ├── thread/
│   │           │   │                       │   │   ├── AppSchedulingConfig.java
│   │           │   │                       │   │   └── AsyncExecutorConfig.java
│   │           │   │                       │   └── web/
│   │           │   │                       │       └── CorsConfig.java
│   │           │   │                       ├── controller/
│   │           │   │                       │   ├── bot/
│   │           │   │                       │   │   └── PromptController.java
│   │           │   │                       │   ├── common/
│   │           │   │                       │   │   ├── ConfigInfoController.java
│   │           │   │                       │   │   ├── ImageController.java
│   │           │   │                       │   │   └── LLMController.java
│   │           │   │                       │   ├── database/
│   │           │   │                       │   │   └── DataBaseController.java
│   │           │   │                       │   ├── knowledge/
│   │           │   │                       │   │   ├── FileController.java
│   │           │   │                       │   │   ├── KnowledgeController.java
│   │           │   │                       │   │   └── RepoController.java
│   │           │   │                       │   ├── model/
│   │           │   │                       │   │   └── ModelController.java
│   │           │   │                       │   ├── node/
│   │           │   │                       │   │   └── TextNodeConfigController.java
│   │           │   │                       │   ├── open/
│   │           │   │                       │   │   └── OpenApiController.java
│   │           │   │                       │   ├── tool/
│   │           │   │                       │   │   ├── RpaController.java
│   │           │   │                       │   │   └── ToolBoxController.java
│   │           │   │                       │   └── workflow/
│   │           │   │                       │       ├── VersionController.java
│   │           │   │                       │       └── WorkflowController.java
│   │           │   │                       ├── entity/
│   │           │   │                       │   ├── UserInfo.java
│   │           │   │                       │   ├── biz/
│   │           │   │                       │   │   ├── AiCode.java
│   │           │   │                       │   │   ├── AiGenerate.java
│   │           │   │                       │   │   ├── BizChatRequest.java
│   │           │   │                       │   │   ├── ChatSampleDto.java
│   │           │   │                       │   │   ├── FeedbackRequest.java
│   │           │   │                       │   │   ├── QaData.java
│   │           │   │                       │   │   ├── apply/
│   │           │   │                       │   │   │   └── AuthApplyInfo.java
│   │           │   │                       │   │   ├── external/
│   │           │   │                       │   │   │   ├── app/
│   │           │   │                       │   │   │   │   ├── AkSk.java
│   │           │   │                       │   │   │   │   ├── App3Ele.java
│   │           │   │                       │   │   │   │   ├── PlatformApp.java
│   │           │   │                       │   │   │   │   └── PlatformAppDetail.java
│   │           │   │                       │   │   │   └── shelf/
│   │           │   │                       │   │   │       ├── LLMExpeDto.java
│   │           │   │                       │   │   │       └── LLMServerInfo.java
│   │           │   │                       │   │   ├── modelconfig/
│   │           │   │                       │   │   │   ├── CompletionParams.java
│   │           │   │                       │   │   │   ├── Config.java
│   │           │   │                       │   │   │   ├── ConversationStarter.java
│   │           │   │                       │   │   │   ├── Enabled.java
│   │           │   │                       │   │   │   ├── Flow.java
│   │           │   │                       │   │   │   ├── LocalModelDto.java
│   │           │   │                       │   │   │   ├── Model.java
│   │           │   │                       │   │   │   ├── ModelConfigProtocolDto.java
│   │           │   │                       │   │   │   ├── ModelDto.java
│   │           │   │                       │   │   │   ├── ModelValidationRequest.java
│   │           │   │                       │   │   │   ├── Models.java
│   │           │   │                       │   │   │   ├── PresetQuestion.java
│   │           │   │                       │   │   │   ├── RepoConfigs.java
│   │           │   │                       │   │   │   ├── TextToSpeech.java
│   │           │   │                       │   │   │   └── Tool.java
│   │           │   │                       │   │   ├── openplatform/
│   │           │   │                       │   │   │   └── XfYunRepo.java
│   │           │   │                       │   │   └── workflow/
│   │           │   │                       │   │       ├── AgentStrategy.java
│   │           │   │                       │   │       ├── BizChatInput.java
│   │           │   │                       │   │       ├── BizWorkflowData.java
│   │           │   │                       │   │       ├── BizWorkflowEdge.java
│   │           │   │                       │   │       ├── BizWorkflowNode.java
│   │           │   │                       │   │       ├── ChatBizReq.java
│   │           │   │                       │   │       ├── ChatInputHistory.java
│   │           │   │                       │   │       ├── ChatResumeReq.java
│   │           │   │                       │   │       ├── FlowReleaseReq.java
│   │           │   │                       │   │       ├── WorkflowDebugDto.java
│   │           │   │                       │   │       ├── channel/
│   │           │   │                       │   │       │   └── AiuiAgentInfo.java
│   │           │   │                       │   │       └── node/
│   │           │   │                       │   │           ├── BizInputOutput.java
│   │           │   │                       │   │           ├── BizNodeData.java
│   │           │   │                       │   │           ├── BizProperty.java
│   │           │   │                       │   │           ├── BizSchema.java
│   │           │   │                       │   │           ├── BizValue.java
│   │           │   │                       │   │           └── IntentChain.java
│   │           │   │                       │   ├── botConfigProtocol/
│   │           │   │                       │   │   ├── BotConfig.java
│   │           │   │                       │   │   ├── BotConfigOld.java
│   │           │   │                       │   │   ├── KnowledgeConfig.java
│   │           │   │                       │   │   ├── Match.java
│   │           │   │                       │   │   ├── ModelConfig.java
│   │           │   │                       │   │   ├── ModelParameter.java
│   │           │   │                       │   │   ├── ModelProperty.java
│   │           │   │                       │   │   ├── Rag.java
│   │           │   │                       │   │   └── RegularConfig.java
│   │           │   │                       │   ├── common/
│   │           │   │                       │   │   ├── FlagResponseEntity.java
│   │           │   │                       │   │   ├── PageData.java
│   │           │   │                       │   │   ├── PagedList.java
│   │           │   │                       │   │   ├── Pagination.java
│   │           │   │                       │   │   └── ValueLabelTree.java
│   │           │   │                       │   ├── core/
│   │           │   │                       │   │   ├── knowledge/
│   │           │   │                       │   │   │   ├── CbgKnowledgeData.java
│   │           │   │                       │   │   │   ├── ChunkInfo.java
│   │           │   │                       │   │   │   ├── KnowledgeRequest.java
│   │           │   │                       │   │   │   ├── KnowledgeResponse.java
│   │           │   │                       │   │   │   ├── QueryMatchObj.java
│   │           │   │                       │   │   │   ├── QueryRequest.java
│   │           │   │                       │   │   │   ├── QueryRespData.java
│   │           │   │                       │   │   │   └── SplitRequest.java
│   │           │   │                       │   │   ├── openapi/
│   │           │   │                       │   │   │   ├── Components.java
│   │           │   │                       │   │   │   ├── Info.java
│   │           │   │                       │   │   │   ├── MediaType.java
│   │           │   │                       │   │   │   ├── OpenApiSchema.java
│   │           │   │                       │   │   │   ├── Operation.java
│   │           │   │                       │   │   │   ├── Parameter.java
│   │           │   │                       │   │   │   ├── Property.java
│   │           │   │                       │   │   │   ├── RequestBody.java
│   │           │   │                       │   │   │   ├── Response.java
│   │           │   │                       │   │   │   ├── Schema.java
│   │           │   │                       │   │   │   ├── SecurityScheme.java
│   │           │   │                       │   │   │   └── Server.java
│   │           │   │                       │   │   └── workflow/
│   │           │   │                       │   │       ├── Edge.java
│   │           │   │                       │   │       ├── FlowProtocol.java
│   │           │   │                       │   │       ├── FlowProtocolData.java
│   │           │   │                       │   │       ├── Node.java
│   │           │   │                       │   │       ├── NodeDebugResponse.java
│   │           │   │                       │   │       ├── node/
│   │           │   │                       │   │       │   ├── FunctionTextItem.java
│   │           │   │                       │   │       │   ├── InputOutput.java
│   │           │   │                       │   │       │   ├── NodeData.java
│   │           │   │                       │   │       │   ├── Property.java
│   │           │   │                       │   │       │   ├── Schema.java
│   │           │   │                       │   │       │   └── Value.java
│   │           │   │                       │   │       ├── sse/
│   │           │   │                       │   │       │   ├── ChatResponse.java
│   │           │   │                       │   │       │   ├── ChatSysReq.java
│   │           │   │                       │   │       │   ├── Choice.java
│   │           │   │                       │   │       │   ├── Delta.java
│   │           │   │                       │   │       │   ├── EventData.java
│   │           │   │                       │   │       │   ├── Node.java
│   │           │   │                       │   │       │   ├── PromptChatResponse.java
│   │           │   │                       │   │       │   ├── PromptChatX1Response.java
│   │           │   │                       │   │       │   ├── Usage.java
│   │           │   │                       │   │       │   ├── V3Request.java
│   │           │   │                       │   │       │   ├── V3Response.java
│   │           │   │                       │   │       │   ├── Value.java
│   │           │   │                       │   │       │   └── WorkflowStep.java
│   │           │   │                       │   │       └── ws/
│   │           │   │                       │   │           ├── ChatInput.java
│   │           │   │                       │   │           ├── SparkFlowResponse.java
│   │           │   │                       │   │           ├── SparkFlowResponseHeader.java
│   │           │   │                       │   │           ├── SparkFlowResponsePayloadContent.java
│   │           │   │                       │   │           └── Step.java
│   │           │   │                       │   ├── dto/
│   │           │   │                       │   │   ├── BotSquareDto.java
│   │           │   │                       │   │   ├── CloneFlowReq.java
│   │           │   │                       │   │   ├── ConsultDto.java
│   │           │   │                       │   │   ├── FeedbackDto.java
│   │           │   │                       │   │   ├── FileDirectoryTreeDto.java
│   │           │   │                       │   │   ├── FileInfoV2Dto.java
│   │           │   │                       │   │   ├── KnowledgeDto.java
│   │           │   │                       │   │   ├── McpPushDto.java
│   │           │   │                       │   │   ├── McpToolReq.java
│   │           │   │                       │   │   ├── PreviewKnowledgeDto.java
│   │           │   │                       │   │   ├── RelatedDocDto.java
│   │           │   │                       │   │   ├── RepoDto.java
│   │           │   │                       │   │   ├── ResourceParameter.java
│   │           │   │                       │   │   ├── SparkBotVO.java
│   │           │   │                       │   │   ├── TagDto.java
│   │           │   │                       │   │   ├── ToolBoxDto.java
│   │           │   │                       │   │   ├── ToolBoxFeedbackReq.java
│   │           │   │                       │   │   ├── ToolBoxVo.java
│   │           │   │                       │   │   ├── ToolFavoriteToolDto.java
│   │           │   │                       │   │   ├── ToolSquareDto.java
│   │           │   │                       │   │   ├── ToolUseDto.java
│   │           │   │                       │   │   ├── UploadDocTaskDto.java
│   │           │   │                       │   │   ├── WorkflowComparisonReq.java
│   │           │   │                       │   │   ├── WorkflowDsl.java
│   │           │   │                       │   │   ├── WorkflowFeedbackReq.java
│   │           │   │                       │   │   ├── WorkflowModelErrorReq.java
│   │           │   │                       │   │   ├── WorkflowModelReq.java
│   │           │   │                       │   │   ├── WorkflowReq.java
│   │           │   │                       │   │   ├── database/
│   │           │   │                       │   │   │   ├── DatabaseDto.java
│   │           │   │                       │   │   │   ├── DatabaseExportDto.java
│   │           │   │                       │   │   │   ├── DbTableCountDto.java
│   │           │   │                       │   │   │   ├── DbTableDataDto.java
│   │           │   │                       │   │   │   ├── DbTableDto.java
│   │           │   │                       │   │   │   ├── DbTableFieldDto.java
│   │           │   │                       │   │   │   ├── DbTableOperateDto.java
│   │           │   │                       │   │   │   ├── DbTableSelectDataDto.java
│   │           │   │                       │   │   │   └── FlowDbRelCountDto.java
│   │           │   │                       │   │   ├── eval/
│   │           │   │                       │   │   │   ├── NodeDataDto.java
│   │           │   │                       │   │   │   ├── NodeSimpleDto.java
│   │           │   │                       │   │   │   └── WorkflowComparisonSaveReq.java
│   │           │   │                       │   │   ├── external/
│   │           │   │                       │   │   │   └── AppInfoResponse.java
│   │           │   │                       │   │   ├── openapi/
│   │           │   │                       │   │   │   └── WorkflowIoTransRequest.java
│   │           │   │                       │   │   ├── rpa/
│   │           │   │                       │   │   │   └── StartReq.java
│   │           │   │                       │   │   └── talkagent/
│   │           │   │                       │   │       └── TalkAgentConfigDto.java
│   │           │   │                       │   ├── enumVo/
│   │           │   │                       │   │   ├── DBOperateEnum.java
│   │           │   │                       │   │   ├── DBTableEnvEnum.java
│   │           │   │                       │   │   ├── DebugStatus.java
│   │           │   │                       │   │   ├── DomainNameEnum.java
│   │           │   │                       │   │   ├── ModelStatusEnum.java
│   │           │   │                       │   │   ├── ScoreEnum.java
│   │           │   │                       │   │   ├── TagsEnum.java
│   │           │   │                       │   │   ├── ToolboxStatusEnum.java
│   │           │   │                       │   │   └── VarType.java
│   │           │   │                       │   ├── es/
│   │           │   │                       │   │   ├── ChatHistory.java
│   │           │   │                       │   │   ├── DialogueHistory.java
│   │           │   │                       │   │   └── agentBuilder/
│   │           │   │                       │   │       ├── FlowDataLog.java
│   │           │   │                       │   │       ├── FlowTraceLog.java
│   │           │   │                       │   │       ├── SparkAgentBuilder.java
│   │           │   │                       │   │       ├── Status.java
│   │           │   │                       │   │       ├── Trace.java
│   │           │   │                       │   │       ├── TraceData.java
│   │           │   │                       │   │       └── TraceDataConfig.java
│   │           │   │                       │   ├── finetune/
│   │           │   │                       │   │   ├── AlpacaTrainLine.java
│   │           │   │                       │   │   ├── Conversation.java
│   │           │   │                       │   │   └── ShareGptTrainLine.java
│   │           │   │                       │   ├── knowledge/
│   │           │   │                       │   │   ├── ChunkInfo.java
│   │           │   │                       │   │   ├── KnowledgeRequest.java
│   │           │   │                       │   │   ├── KnowledgeResponse.java
│   │           │   │                       │   │   ├── QueryMatchObj.java
│   │           │   │                       │   │   ├── QueryRequest.java
│   │           │   │                       │   │   ├── QueryRespData.java
│   │           │   │                       │   │   └── SplitRequest.java
│   │           │   │                       │   ├── metrological/
│   │           │   │                       │   │   ├── MetrologicalAppLicenseDto.java
│   │           │   │                       │   │   ├── MetrologicalAuthorizationResponse.java
│   │           │   │                       │   │   └── MetrologicalV2AuthDto.java
│   │           │   │                       │   ├── mongo/
│   │           │   │                       │   │   ├── Knowledge.java
│   │           │   │                       │   │   └── PreviewKnowledge.java
│   │           │   │                       │   ├── pojo/
│   │           │   │                       │   │   ├── ChunkResult.java
│   │           │   │                       │   │   ├── DealFileResult.java
│   │           │   │                       │   │   ├── DeleteKnowledgeFileExecuteResult.java
│   │           │   │                       │   │   ├── DeleteKnowledgeFileFailedResult.java
│   │           │   │                       │   │   ├── DeleteKnowledgeFileResult.java
│   │           │   │                       │   │   ├── FileSummary.java
│   │           │   │                       │   │   ├── KnowledgeFileResult.java
│   │           │   │                       │   │   ├── KnowledgeResult.java
│   │           │   │                       │   │   ├── KnowledgeTaskResult.java
│   │           │   │                       │   │   └── SliceConfig.java
│   │           │   │                       │   ├── spark/
│   │           │   │                       │   │   ├── Header.java
│   │           │   │                       │   │   ├── Parameter.java
│   │           │   │                       │   │   ├── Payload.java
│   │           │   │                       │   │   ├── SparkApiProtocol.java
│   │           │   │                       │   │   ├── Text.java
│   │           │   │                       │   │   ├── chat/
│   │           │   │                       │   │   │   ├── ChatRecord.java
│   │           │   │                       │   │   │   ├── ChatRequest.java
│   │           │   │                       │   │   │   ├── ChatResponse.java
│   │           │   │                       │   │   │   ├── ExtraInfo.java
│   │           │   │                       │   │   │   ├── Header.java
│   │           │   │                       │   │   │   ├── KnowledgeKwargs.java
│   │           │   │                       │   │   │   ├── LlmModelConfig.java
│   │           │   │                       │   │   │   ├── Message.java
│   │           │   │                       │   │   │   ├── ModelCallParameter.java
│   │           │   │                       │   │   │   ├── Payload.java
│   │           │   │                       │   │   │   └── ToolUpstreamKwargs.java
│   │           │   │                       │   │   ├── request/
│   │           │   │                       │   │   │   ├── Chat.java
│   │           │   │                       │   │   │   ├── FcFunction.java
│   │           │   │                       │   │   │   └── Message.java
│   │           │   │                       │   │   └── response/
│   │           │   │                       │   │       ├── Choices.java
│   │           │   │                       │   │       ├── Usage.java
│   │           │   │                       │   │       └── UsageText.java
│   │           │   │                       │   ├── table/
│   │           │   │                       │   │   ├── BaseModelMap.java
│   │           │   │                       │   │   ├── CallLog.java
│   │           │   │                       │   │   ├── ConfigInfo.java
│   │           │   │                       │   │   ├── FineTuneTask.java
│   │           │   │                       │   │   ├── VcnInfo.java
│   │           │   │                       │   │   ├── auth/
│   │           │   │                       │   │   │   └── AuthApplyRecord.java
│   │           │   │                       │   │   ├── bot/
│   │           │   │                       │   │   │   ├── BotModelBind.java
│   │           │   │                       │   │   │   ├── BotModelConfig.java
│   │           │   │                       │   │   │   ├── BotRepoSubscript.java
│   │           │   │                       │   │   │   ├── CreateBotContext.java
│   │           │   │                       │   │   │   ├── SparkBot.java
│   │           │   │                       │   │   │   └── UserFavoriteBot.java
│   │           │   │                       │   │   ├── database/
│   │           │   │                       │   │   │   ├── DbInfo.java
│   │           │   │                       │   │   │   ├── DbTable.java
│   │           │   │                       │   │   │   └── DbTableField.java
│   │           │   │                       │   │   ├── eval/
│   │           │   │                       │   │   │   ├── EffectEvalSetVerExcelDataValue.java
│   │           │   │                       │   │   │   ├── EffectEvalSetVerExcelHeader.java
│   │           │   │                       │   │   │   ├── EffectEvalTaskOnlineLog.java
│   │           │   │                       │   │   │   ├── EvalDimension.java
│   │           │   │                       │   │   │   ├── EvalDimensionTemplate.java
│   │           │   │                       │   │   │   ├── EvalScene.java
│   │           │   │                       │   │   │   ├── EvalSet.java
│   │           │   │                       │   │   │   ├── EvalSetVer.java
│   │           │   │                       │   │   │   ├── EvalSetVerData.java
│   │           │   │                       │   │   │   ├── EvalTask.java
│   │           │   │                       │   │   │   ├── EvalTaskData.java
│   │           │   │                       │   │   │   ├── EvalTaskOnlineData.java
│   │           │   │                       │   │   │   ├── EvalTaskReport.java
│   │           │   │                       │   │   │   ├── EvalTaskUnfinished.java
│   │           │   │                       │   │   │   ├── ModelListConfig.java
│   │           │   │                       │   │   │   ├── ModelOptimizeTask.java
│   │           │   │                       │   │   │   ├── NodeMarkData.java
│   │           │   │                       │   │   │   ├── NodeScoreData.java
│   │           │   │                       │   │   │   ├── TrainSet.java
│   │           │   │                       │   │   │   ├── TrainSetVer.java
│   │           │   │                       │   │   │   ├── TrainSetVerData.java
│   │           │   │                       │   │   │   └── UserThreadPoolConfig.java
│   │           │   │                       │   │   ├── group/
│   │           │   │                       │   │   │   ├── GroupTag.java
│   │           │   │                       │   │   │   ├── GroupUser.java
│   │           │   │                       │   │   │   └── GroupVisibility.java
│   │           │   │                       │   │   ├── knowledge/
│   │           │   │                       │   │   │   ├── MysqlKnowledge.java
│   │           │   │                       │   │   │   └── MysqlPreviewKnowledge.java
│   │           │   │                       │   │   ├── model/
│   │           │   │                       │   │   │   ├── Model.java
│   │           │   │                       │   │   │   ├── ModelCategory.java
│   │           │   │                       │   │   │   ├── ModelCommon.java
│   │           │   │                       │   │   │   └── ModelCustomCategory.java
│   │           │   │                       │   │   ├── node/
│   │           │   │                       │   │   │   └── TextNodeConfig.java
│   │           │   │                       │   │   ├── relation/
│   │           │   │                       │   │   │   ├── BotFlowRel.java
│   │           │   │                       │   │   │   ├── BotRepoRel.java
│   │           │   │                       │   │   │   ├── BotToolRel.java
│   │           │   │                       │   │   │   ├── FlowDbRel.java
│   │           │   │                       │   │   │   ├── FlowRepoRel.java
│   │           │   │                       │   │   │   └── FlowToolRel.java
│   │           │   │                       │   │   ├── repo/
│   │           │   │                       │   │   │   ├── ExtractKnowledgeTask.java
│   │           │   │                       │   │   │   ├── FileDirectoryTree.java
│   │           │   │                       │   │   │   ├── FileInfo.java
│   │           │   │                       │   │   │   ├── FileInfoV2.java
│   │           │   │                       │   │   │   ├── HitTestHistory.java
│   │           │   │                       │   │   │   ├── Repo.java
│   │           │   │                       │   │   │   ├── TagInfoV2.java
│   │           │   │                       │   │   │   └── UploadDocTask.java
│   │           │   │                       │   │   ├── tool/
│   │           │   │                       │   │   │   ├── RpaInfo.java
│   │           │   │                       │   │   │   ├── RpaUserAssistant.java
│   │           │   │                       │   │   │   ├── RpaUserAssistantField.java
│   │           │   │                       │   │   │   ├── ToolBox.java
│   │           │   │                       │   │   │   ├── ToolBoxFeedback.java
│   │           │   │                       │   │   │   ├── ToolBoxOperateHistory.java
│   │           │   │                       │   │   │   └── UserFavoriteTool.java
│   │           │   │                       │   │   ├── trace/
│   │           │   │                       │   │   │   ├── ChatInfo.java
│   │           │   │                       │   │   │   ├── FeedbackInfo.java
│   │           │   │                       │   │   │   └── NodeInfo.java
│   │           │   │                       │   │   ├── users/
│   │           │   │                       │   │   │   └── SystemUser.java
│   │           │   │                       │   │   └── workflow/
│   │           │   │                       │   │       ├── FlowProtocolTemp.java
│   │           │   │                       │   │       ├── FlowReleaseAiuiInfo.java
│   │           │   │                       │   │       ├── FlowReleaseChannel.java
│   │           │   │                       │   │       ├── McpToolConfig.java
│   │           │   │                       │   │       ├── PromptTemplate.java
│   │           │   │                       │   │       ├── WorkflowComparison.java
│   │           │   │                       │   │       ├── WorkflowConfig.java
│   │           │   │                       │   │       ├── WorkflowDialog.java
│   │           │   │                       │   │       ├── WorkflowFeedback.java
│   │           │   │                       │   │       ├── WorkflowNodeHistory.java
│   │           │   │                       │   │       ├── WorkflowVersion.java
│   │           │   │                       │   │       └── node/
│   │           │   │                       │   │           ├── BizNodeData.java
│   │           │   │                       │   │           ├── BizProperty.java
│   │           │   │                       │   │           ├── BizSchema.java
│   │           │   │                       │   │           ├── BizValue.java
│   │           │   │                       │   │           └── IntentChain.java
│   │           │   │                       │   ├── tool/
│   │           │   │                       │   │   ├── CreateRpaAssistantReq.java
│   │           │   │                       │   │   ├── McpServerTool.java
│   │           │   │                       │   │   ├── Message.java
│   │           │   │                       │   │   ├── PlatformFieldSpec.java
│   │           │   │                       │   │   ├── RpaAssistantResp.java
│   │           │   │                       │   │   ├── ServiceAuthInfo.java
│   │           │   │                       │   │   ├── Text.java
│   │           │   │                       │   │   ├── Tool.java
│   │           │   │                       │   │   ├── ToolDebugRequest.java
│   │           │   │                       │   │   ├── ToolHeader.java
│   │           │   │                       │   │   ├── ToolParameter.java
│   │           │   │                       │   │   ├── ToolPayload.java
│   │           │   │                       │   │   ├── ToolProtocolDto.java
│   │           │   │                       │   │   ├── ToolResp.java
│   │           │   │                       │   │   ├── UpdateRpaAssistantReq.java
│   │           │   │                       │   │   ├── WebSchema.java
│   │           │   │                       │   │   └── WebSchemaItem.java
│   │           │   │                       │   └── vo/
│   │           │   │                       │       ├── ApplicationVo.java
│   │           │   │                       │       ├── BotUsedToolVo.java
│   │           │   │                       │       ├── CategoryTreeVO.java
│   │           │   │                       │       ├── DocStatusVO.java
│   │           │   │                       │       ├── HtmlFileVO.java
│   │           │   │                       │       ├── LLMInfoVo.java
│   │           │   │                       │       ├── McpServerToolDetailVO.java
│   │           │   │                       │       ├── ModelCategoryReq.java
│   │           │   │                       │       ├── OpenResult.java
│   │           │   │                       │       ├── ToolBoxExportVo.java
│   │           │   │                       │       ├── WorkflowErrorModelVo.java
│   │           │   │                       │       ├── WorkflowErrorVo.java
│   │           │   │                       │       ├── WorkflowListVo.java
│   │           │   │                       │       ├── WorkflowModelVo.java
│   │           │   │                       │       ├── WorkflowUserFeedbackErrorVo.java
│   │           │   │                       │       ├── WorkflowVo.java
│   │           │   │                       │       ├── bot/
│   │           │   │                       │       │   ├── SparkBotDto.java
│   │           │   │                       │       │   └── SparkBotSquaerVo.java
│   │           │   │                       │       ├── database/
│   │           │   │                       │       │   ├── DataBaseSearchVo.java
│   │           │   │                       │       │   ├── DatabaseVo.java
│   │           │   │                       │       │   ├── DbTableInfoVo.java
│   │           │   │                       │       │   └── DbTableVo.java
│   │           │   │                       │       ├── eval/
│   │           │   │                       │       │   └── EvalSetVerDataVo.java
│   │           │   │                       │       ├── group/
│   │           │   │                       │       │   ├── DeleteGroupUserVO.java
│   │           │   │                       │       │   ├── GroupTagVO.java
│   │           │   │                       │       │   ├── GroupUserTagVO.java
│   │           │   │                       │       │   └── GroupUserVO.java
│   │           │   │                       │       ├── knowledge/
│   │           │   │                       │       │   ├── RepoVO.java
│   │           │   │                       │       │   └── SparkUploadVo.java
│   │           │   │                       │       ├── model/
│   │           │   │                       │       │   ├── ModelDeployVo.java
│   │           │   │                       │       │   └── ModelFileVo.java
│   │           │   │                       │       ├── openapi/
│   │           │   │                       │       │   └── WorkflowIoTransVo.java
│   │           │   │                       │       ├── repo/
│   │           │   │                       │       │   ├── CreateChunkVO.java
│   │           │   │                       │       │   ├── CreateFolderVO.java
│   │           │   │                       │       │   ├── CreateRepoVO.java
│   │           │   │                       │       │   ├── DealFileVO.java
│   │           │   │                       │       │   ├── DeleteRepoVO.java
│   │           │   │                       │       │   ├── FileStatusVO.java
│   │           │   │                       │       │   ├── KnowledgeQueryVO.java
│   │           │   │                       │       │   ├── KnowledgeVO.java
│   │           │   │                       │       │   └── SparkFileVo.java
│   │           │   │                       │       └── rpa/
│   │           │   │                       │           └── DebugSession.java
│   │           │   │                       ├── handler/
│   │           │   │                       │   ├── KnowledgeV2ServiceCallHandler.java
│   │           │   │                       │   ├── LocalModelHandler.java
│   │           │   │                       │   ├── McpServerHandler.java
│   │           │   │                       │   ├── MySqlJsonHandler.java
│   │           │   │                       │   ├── RpaHandler.java
│   │           │   │                       │   ├── SidManagerHandler.java
│   │           │   │                       │   ├── SparkKnowledgeCallHandler.java
│   │           │   │                       │   ├── ToolServiceCallHandler.java
│   │           │   │                       │   ├── UserInfoManagerHandler.java
│   │           │   │                       │   └── language/
│   │           │   │                       │       └── LanguageContext.java
│   │           │   │                       ├── mapper/
│   │           │   │                       │   ├── BaseModelMapMapper.java
│   │           │   │                       │   ├── CallLogMapper.java
│   │           │   │                       │   ├── ConfigInfoMapper.java
│   │           │   │                       │   ├── bot/
│   │           │   │                       │   │   ├── BotRepoSubscriptMapper.java
│   │           │   │                       │   │   ├── SparkBotMapper.java
│   │           │   │                       │   │   └── UserFavoriteBotMapper.java
│   │           │   │                       │   ├── database/
│   │           │   │                       │   │   ├── DbInfoMapper.java
│   │           │   │                       │   │   ├── DbTableFieldMapper.java
│   │           │   │                       │   │   └── DbTableMapper.java
│   │           │   │                       │   ├── eval/
│   │           │   │                       │   │   ├── EvalSetMapper.java
│   │           │   │                       │   │   ├── EvalSetVerDataMapper.java
│   │           │   │                       │   │   └── EvalSetVerMapper.java
│   │           │   │                       │   ├── group/
│   │           │   │                       │   │   ├── GroupTagMapper.java
│   │           │   │                       │   │   ├── GroupUserMapper.java
│   │           │   │                       │   │   └── GroupVisibilityMapper.java
│   │           │   │                       │   ├── knowledge/
│   │           │   │                       │   │   ├── KnowledgeMapper.java
│   │           │   │                       │   │   └── PreviewKnowledgeMapper.java
│   │           │   │                       │   ├── model/
│   │           │   │                       │   │   ├── ModelCategoryMapper.java
│   │           │   │                       │   │   ├── ModelCommonMapper.java
│   │           │   │                       │   │   ├── ModelCustomCategoryMapper.java
│   │           │   │                       │   │   └── ModelMapper.java
│   │           │   │                       │   ├── node/
│   │           │   │                       │   │   └── TextNodeConfigMapper.java
│   │           │   │                       │   ├── relation/
│   │           │   │                       │   │   ├── BotFlowRelMapper.java
│   │           │   │                       │   │   ├── BotRepoRelMapper.java
│   │           │   │                       │   │   ├── BotToolRelMapper.java
│   │           │   │                       │   │   ├── FlowDbRelMapper.java
│   │           │   │                       │   │   ├── FlowRepoRelMapper.java
│   │           │   │                       │   │   └── FlowToolRelMapper.java
│   │           │   │                       │   ├── repo/
│   │           │   │                       │   │   ├── ExtractKnowledgeTaskMapper.java
│   │           │   │                       │   │   ├── FileDirectoryTreeMapper.java
│   │           │   │                       │   │   ├── FileInfoMapper.java
│   │           │   │                       │   │   ├── FileInfoV2Mapper.java
│   │           │   │                       │   │   ├── HitTestHistoryMapper.java
│   │           │   │                       │   │   ├── RepoMapper.java
│   │           │   │                       │   │   ├── TagInfoV2Mapper.java
│   │           │   │                       │   │   └── UploadDocTaskMapper.java
│   │           │   │                       │   ├── tool/
│   │           │   │                       │   │   ├── RpaInfoMapper.java
│   │           │   │                       │   │   ├── RpaUserAssistantFieldMapper.java
│   │           │   │                       │   │   ├── RpaUserAssistantMapper.java
│   │           │   │                       │   │   ├── ToolBoxFeedbackMapper.java
│   │           │   │                       │   │   ├── ToolBoxMapper.java
│   │           │   │                       │   │   ├── ToolBoxOperateHistoryMapper.java
│   │           │   │                       │   │   └── UserFavoriteToolMapper.java
│   │           │   │                       │   ├── trace/
│   │           │   │                       │   │   ├── ChatInfoMapper.java
│   │           │   │                       │   │   ├── FeedbackInfoMapper.java
│   │           │   │                       │   │   └── NodeInfoMapper.java
│   │           │   │                       │   ├── users/
│   │           │   │                       │   │   └── SystemUserMapper.java
│   │           │   │                       │   └── workflow/
│   │           │   │                       │       ├── FlowProtocolTempMapper.java
│   │           │   │                       │       ├── FlowReleaseAiuiInfoMapper.java
│   │           │   │                       │       ├── FlowReleaseChannelMapper.java
│   │           │   │                       │       ├── McpToolConfigMapper.java
│   │           │   │                       │       ├── PromptTemplateMapper.java
│   │           │   │                       │       ├── WorkflowComparisonMapper.java
│   │           │   │                       │       ├── WorkflowConfigMapper.java
│   │           │   │                       │       ├── WorkflowDialogMapper.java
│   │           │   │                       │       ├── WorkflowFeedbackMapper.java
│   │           │   │                       │       ├── WorkflowMapper.java
│   │           │   │                       │       ├── WorkflowNodeHistoryMapper.java
│   │           │   │                       │       └── WorkflowVersionMapper.java
│   │           │   │                       ├── service/
│   │           │   │                       │   ├── bot/
│   │           │   │                       │   │   ├── BotRepoRelService.java
│   │           │   │                       │   │   ├── BotRepoSubscriptService.java
│   │           │   │                       │   │   ├── BotToolRelService.java
│   │           │   │                       │   │   ├── OpenAiModelProcessService.java
│   │           │   │                       │   │   └── PromptService.java
│   │           │   │                       │   ├── common/
│   │           │   │                       │   │   ├── ConfigInfoService.java
│   │           │   │                       │   │   └── ImageService.java
│   │           │   │                       │   ├── database/
│   │           │   │                       │   │   ├── DBExcelReadListener.java
│   │           │   │                       │   │   ├── DBTableExcelReadListener.java
│   │           │   │                       │   │   └── DatabaseService.java
│   │           │   │                       │   ├── external/
│   │           │   │                       │   │   └── ExternalApiService.java
│   │           │   │                       │   ├── extra/
│   │           │   │                       │   │   ├── AppService.java
│   │           │   │                       │   │   ├── CoreSystemService.java
│   │           │   │                       │   │   └── OpenPlatformService.java
│   │           │   │                       │   ├── group/
│   │           │   │                       │   │   └── GroupVisibilityService.java
│   │           │   │                       │   ├── model/
│   │           │   │                       │   │   ├── LLMService.java
│   │           │   │                       │   │   ├── ModelCategoryService.java
│   │           │   │                       │   │   ├── ModelCommonService.java
│   │           │   │                       │   │   ├── ModelService.java
│   │           │   │                       │   │   └── ShelfModelService.java
│   │           │   │                       │   ├── node/
│   │           │   │                       │   │   └── TextNodeConfigService.java
│   │           │   │                       │   ├── openapi/
│   │           │   │                       │   │   ├── OpenApiService.java
│   │           │   │                       │   │   └── impl/
│   │           │   │                       │   │       └── OpenApiServiceImpl.java
│   │           │   │                       │   ├── repo/
│   │           │   │                       │   │   ├── FileDirectoryTreeService.java
│   │           │   │                       │   │   ├── FileInfoV2Service.java
│   │           │   │                       │   │   ├── HitTestHistoryService.java
│   │           │   │                       │   │   ├── KnowledgeService.java
│   │           │   │                       │   │   ├── MassDatasetInfoService.java
│   │           │   │                       │   │   └── RepoService.java
│   │           │   │                       │   ├── task/
│   │           │   │                       │   │   ├── ExtractKnowledgeTaskService.java
│   │           │   │                       │   │   └── UploadDocTaskService.java
│   │           │   │                       │   ├── tool/
│   │           │   │                       │   │   ├── RpaAssistantService.java
│   │           │   │                       │   │   ├── RpaInfoService.java
│   │           │   │                       │   │   └── ToolBoxService.java
│   │           │   │                       │   └── workflow/
│   │           │   │                       │       ├── TalkAgentService.java
│   │           │   │                       │       ├── VersionService.java
│   │           │   │                       │       ├── WorkflowExportService.java
│   │           │   │                       │       └── WorkflowService.java
│   │           │   │                       ├── sse/
│   │           │   │                       │   ├── WorkflowInnerEventSourceListener.java
│   │           │   │                       │   └── WorkflowSseEventSourceListener.java
│   │           │   │                       ├── task/
│   │           │   │                       │   ├── EmbeddingFileTask.java
│   │           │   │                       │   ├── SliceFileTask.java
│   │           │   │                       │   └── scheduler/
│   │           │   │                       │       └── ModelStatusScheduler.java
│   │           │   │                       ├── tool/
│   │           │   │                       │   ├── CommonTool.java
│   │           │   │                       │   ├── DataPermissionCheckTool.java
│   │           │   │                       │   ├── FileUploadTool.java
│   │           │   │                       │   ├── JsonConverter.java
│   │           │   │                       │   ├── MyThreadTool.java
│   │           │   │                       │   ├── OpenPlatformTool.java
│   │           │   │                       │   ├── UrlCheckTool.java
│   │           │   │                       │   ├── http/
│   │           │   │                       │   │   ├── AssembleParam.java
│   │           │   │                       │   │   ├── HeaderAuthHttpTool.java
│   │           │   │                       │   │   └── HttpAuthTool.java
│   │           │   │                       │   └── spark/
│   │           │   │                       │       ├── MessageBuilder.java
│   │           │   │                       │       └── SparkApiTool.java
│   │           │   │                       ├── util/
│   │           │   │                       │   ├── CsvExportUtil.java
│   │           │   │                       │   ├── JacksonUtil.java
│   │           │   │                       │   ├── ObjectIsNull.java
│   │           │   │                       │   ├── OkHttpUtil.java
│   │           │   │                       │   ├── RedisUtil.java
│   │           │   │                       │   ├── S3Util.java
│   │           │   │                       │   ├── SpringUtils.java
│   │           │   │                       │   ├── URIUtils.java
│   │           │   │                       │   ├── XssSanitizer.java
│   │           │   │                       │   ├── database/
│   │           │   │                       │   │   ├── NamePolicy.java
│   │           │   │                       │   │   └── SqlRenderer.java
│   │           │   │                       │   ├── idata/
│   │           │   │                       │   │   └── RSAUtil.java
│   │           │   │                       │   ├── sid/
│   │           │   │                       │   │   └── SidGenerator2.java
│   │           │   │                       │   └── ssrf/
│   │           │   │                       │       ├── SsrfParamGuard.java
│   │           │   │                       │       ├── SsrfProperties.java
│   │           │   │                       │       └── SsrfValidators.java
│   │           │   │                       └── websocket/
│   │           │   │                           ├── FlowCanvasHoldWebSocketHandler.java
│   │           │   │                           └── WebSocketConfig.java
│   │           │   └── resources/
│   │           │       ├── application-toolkit.yml
│   │           │       ├── mcp-server/
│   │           │       │   ├── iat.json
│   │           │       │   ├── ost.json
│   │           │       │   └── translate.json
│   │           │       └── mybatis/
│   │           │           └── mapper/
│   │           │               └── mysql/
│   │           │                   ├── BotRepoRelMapper.xml
│   │           │                   ├── BotToolRelMapper.xml
│   │           │                   ├── ChatInfoMapper.xml
│   │           │                   ├── ConfigInfoMapper.xml
│   │           │                   ├── DbTableFieldMapper.xml
│   │           │                   ├── DbTableMapper.xml
│   │           │                   ├── FileDirectoryTreeMapper.xml
│   │           │                   ├── FileInfoV2Mapper.xml
│   │           │                   ├── FlowDbRelMapper.xml
│   │           │                   ├── FlowToolRelMapper.xml
│   │           │                   ├── GroupTagMapper.xml
│   │           │                   ├── GroupUserMapper.xml
│   │           │                   ├── GroupVisibilityMapper.xml
│   │           │                   ├── HitTestHistoryMapper.xml
│   │           │                   ├── KnowledgeMapper.xml
│   │           │                   ├── ModelCategoryMapper.xml
│   │           │                   ├── NodeInfoMapper.xml
│   │           │                   ├── PreviewKnowledgeMapper.xml
│   │           │                   ├── RepoMapper.xml
│   │           │                   ├── SparkBotMapper.xml
│   │           │                   ├── SystemUserMapper.xml
│   │           │                   ├── TagInfoV2Mapper.xml
│   │           │                   ├── ToolBoxMapper.xml
│   │           │                   ├── UserFavoriteBotMapper.xml
│   │           │                   ├── UserFavoriteToolMapper.xml
│   │           │                   ├── UserLangChainDataService.xml
│   │           │                   └── WorkflowVersionMapper.xml
│   │           └── test/
│   │               ├── java/
│   │               │   └── com/
│   │               │       └── iflytek/
│   │               │           └── astron/
│   │               │               └── console/
│   │               │                   └── toolkit/
│   │               │                       ├── controller/
│   │               │                       │   ├── bot/
│   │               │                       │   │   └── PromptControllerTest.java
│   │               │                       │   ├── common/
│   │               │                       │   │   ├── ConfigInfoControllerTest.java
│   │               │                       │   │   ├── ImageControllerTest.java
│   │               │                       │   │   └── LLMControllerTest.java
│   │               │                       │   ├── knowledge/
│   │               │                       │   │   ├── FileControllerTest.java
│   │               │                       │   │   ├── KnowledgeControllerTest.java
│   │               │                       │   │   └── RepoControllerTest.java
│   │               │                       │   ├── model/
│   │               │                       │   │   └── ModelControllerTest.java
│   │               │                       │   ├── node/
│   │               │                       │   │   └── TextNodeConfigControllerTest.java
│   │               │                       │   └── workflow/
│   │               │                       │       ├── VersionControllerTest.java
│   │               │                       │       └── WorkflowControllerTest.java
│   │               │                       └── service/
│   │               │                           ├── bot/
│   │               │                           │   └── PromptServiceTest.java
│   │               │                           ├── common/
│   │               │                           │   ├── ConfigInfoServiceTest.java
│   │               │                           │   └── ImageServiceTest.java
│   │               │                           ├── extra/
│   │               │                           │   ├── AppServiceTest.java
│   │               │                           │   └── OpenPlatformServiceTest.java
│   │               │                           ├── group/
│   │               │                           │   └── GroupVisibilityServiceTest.java
│   │               │                           ├── knowledge/
│   │               │                           │   ├── FileInfoV2ServiceTest.java
│   │               │                           │   ├── KnowledgeServiceTest.java
│   │               │                           │   └── RepoServiceTest.java
│   │               │                           └── model/
│   │               │                               └── ModelServiceTest.java
│   │               └── resources/
│   │                   ├── application-test.yml
│   │                   └── mcp-servers/
│   │                       └── test-server-1.json
│   └── frontend/
│       ├── .env.development
│       ├── .env.production
│       ├── .env.test
│       ├── .prettierignore
│       ├── .prettierrc
│       ├── CLAUDE.md
│       ├── Dockerfile
│       ├── Dockerfile.dev
│       ├── I18N.md
│       ├── _tests_/
│       │   ├── utils.test.ts
│       │   └── workflow.test.tsx
│       ├── deployment.yml
│       ├── docker-entrypoint.sh
│       ├── eslint.config.js
│       ├── index.html
│       ├── nginx.conf
│       ├── nginx.conf.template
│       ├── package.json
│       ├── postcss.config.js
│       ├── public/
│       │   ├── fonts/
│       │   │   ├── D-DIN-PRO-500-Medium.otf
│       │   │   └── PingFang.ttc
│       │   └── runtime-config.js
│       ├── src/
│       │   ├── app.tsx
│       │   ├── assets/
│       │   │   └── fonts/
│       │   │       ├── Barlow-SemiBoldItalic.otf
│       │   │       └── barlow-emibold-italic.otf
│       │   ├── components/
│       │   │   ├── agent-creation/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── bot-center/
│       │   │   │   └── edit-bot/
│       │   │   │       └── placeholder.ts
│       │   │   ├── button-group/
│       │   │   │   ├── README.md
│       │   │   │   ├── button-group.module.scss
│       │   │   │   ├── button-group.tsx
│       │   │   │   ├── index.ts
│       │   │   │   ├── space-button.module.scss
│       │   │   │   ├── space-button.tsx
│       │   │   │   └── types.ts
│       │   │   ├── combo-modal/
│       │   │   │   ├── combo-config.ts
│       │   │   │   ├── combo-contrast-modal.module.scss
│       │   │   │   ├── combo-contrast-modal.tsx
│       │   │   │   ├── combo-modal.module.scss
│       │   │   │   ├── combo-modal.tsx
│       │   │   │   ├── index.ts
│       │   │   │   └── table-body.tsx
│       │   │   ├── config-page-component/
│       │   │   │   ├── bot-analysis/
│       │   │   │   │   ├── config.ts
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── config-base/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── CapabilityDevelopment.module.scss
│       │   │   │   │   │   ├── CapabilityDevelopment.tsx
│       │   │   │   │   │   └── personality-component/
│       │   │   │   │   │       ├── index.module.scss
│       │   │   │   │   │       ├── index.tsx
│       │   │   │   │   │       ├── personality-detail-modal.tsx
│       │   │   │   │   │       └── personality-library-modal.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   └── types.ts
│       │   │   │   ├── config-header/
│       │   │   │   │   ├── ConfigHeader.module.scss
│       │   │   │   │   └── ConfigHeader.tsx
│       │   │   │   └── config-overview/
│       │   │   │       ├── index.module.scss
│       │   │   │       └── index.tsx
│       │   │   ├── crash-error-component/
│       │   │   │   └── index.tsx
│       │   │   ├── create-application-modal/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── create-key-modal/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── drawer/
│       │   │   │   └── plugin/
│       │   │   │       └── version-management/
│       │   │   │           ├── index.css
│       │   │   │           └── index.tsx
│       │   │   ├── global-markdown/
│       │   │   │   └── index.tsx
│       │   │   ├── header/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── language-switcher/
│       │   │   │   └── index.tsx
│       │   │   ├── loading/
│       │   │   │   └── index.tsx
│       │   │   ├── login-pop/
│       │   │   │   ├── index.tsx
│       │   │   │   └── style.module.scss
│       │   │   ├── make-creation/
│       │   │   │   ├── components/
│       │   │   │   │   └── WorkflowImportModal.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── markdown-render/
│       │   │   │   ├── custom-footnote-plugin.ts
│       │   │   │   └── index.tsx
│       │   │   ├── modal/
│       │   │   │   ├── json-modal/
│       │   │   │   │   ├── index.css
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── more-icons/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-more-icons.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── plugin/
│       │   │   │   │   ├── array-default.tsx
│       │   │   │   │   ├── feedback/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-create-tool.tsx
│       │   │   │   │   │   └── use-tool-debugger.ts
│       │   │   │   │   ├── import/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   └── workflow/
│       │   │   │       └── array-default/
│       │   │   │           ├── hooks/
│       │   │   │           │   ├── use-array-default.tsx
│       │   │   │           │   └── use-columns.tsx
│       │   │   │           └── index.tsx
│       │   │   ├── monaco-editor/
│       │   │   │   ├── JsonMonacoEditor.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   └── json-monaco-editor/
│       │   │   │       └── index.tsx
│       │   │   ├── more-icons/
│       │   │   │   └── index.tsx
│       │   │   ├── plugin/
│       │   │   │   └── PluginContext.tsx
│       │   │   ├── plugin-store/
│       │   │   │   ├── debugger-table.tsx
│       │   │   │   ├── tool-input-parameters-detail.tsx
│       │   │   │   └── tool-output-parameters-detail.tsx
│       │   │   ├── prompt-try/
│       │   │   │   ├── index.tsx
│       │   │   │   ├── input-box.tsx
│       │   │   │   └── message-list.tsx
│       │   │   ├── sidebar/
│       │   │   │   ├── bottom-login/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── control-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── create-button.tsx
│       │   │   │   ├── icon-entry/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   ├── menu-list/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── notice-modal/
│       │   │   │   │   ├── bot-card/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── order-type-display/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── personal-center/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── sidebar-logo/
│       │   │   │       └── index.tsx
│       │   │   ├── sider-container/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── space/
│       │   │   │   ├── add-member-modal/
│       │   │   │   │   ├── config.ts
│       │   │   │   │   ├── cus-check-box/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   ├── selected-user-item/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── user-item/
│       │   │   │   │       ├── index.module.scss
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── delete-space-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── empty/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── leave-space-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── person-space/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── share-space-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-card/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── action-list/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── join-status/
│       │   │   │   │   │       ├── index.module.scss
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-list/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-modal/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   └── upload-avatar/
│       │   │   │   │       ├── index.module.scss
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── space-search/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-tab/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-table/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-tag/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── transfer-ownership-modal/
│       │   │   │       ├── index.module.scss
│       │   │   │       └── index.tsx
│       │   │   ├── speaker-modal/
│       │   │   │   ├── index.tsx
│       │   │   │   └── voice-training.tsx
│       │   │   ├── svg-icons/
│       │   │   │   ├── index.tsx
│       │   │   │   ├── model.tsx
│       │   │   │   └── space.tsx
│       │   │   ├── table/
│       │   │   │   ├── debugger-table/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-columns.tsx
│       │   │   │   │   │   ├── use-debugger-table.tsx
│       │   │   │   │   │   └── use-render-input.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── tool-input-parameters/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-columns.tsx
│       │   │   │   │   │   └── use-tool-input-parameters.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── tool-input-parameters-detail/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── tool-output-parameters/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-columns.tsx
│       │   │   │   │   │   └── use-table-logic.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   └── tool-output-parameters-detail/
│       │   │   │       └── index.tsx
│       │   │   ├── tailwind-important-examples.tsx
│       │   │   ├── tts-module/
│       │   │   │   └── index.tsx
│       │   │   ├── ui/
│       │   │   │   ├── back/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── btns/
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   ├── primary-btn/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── second-btn/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── empty-state/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── global/
│       │   │   │   │   └── retract-table-input/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   └── table/
│       │   │   │       └── index.tsx
│       │   │   ├── upload-avatar/
│       │   │   │   ├── crop-modal.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   ├── index.tsx
│       │   │   │   └── upload-display.tsx
│       │   │   ├── upload-background/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── virtual-config-modal/
│       │   │   │   ├── component/
│       │   │   │   │   └── iconModal.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── vms-interaction-cmp/
│       │   │   │   └── index.tsx
│       │   │   ├── voice-broadcast/
│       │   │   │   └── index.jsx
│       │   │   ├── workflow/
│       │   │   │   ├── constant/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── drawer/
│       │   │   │   │   ├── advanced-config/
│       │   │   │   │   │   ├── index.tsx
│       │   │   │   │   │   └── opening-remarks.tsx
│       │   │   │   │   ├── chat-debugger/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── chat-content.tsx
│       │   │   │   │   │   │   └── chat-input.tsx
│       │   │   │   │   │   ├── index.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── chat-result/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── code-idea/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── debugger-check/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── node-detail/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── single-node-debugging/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── version-management/
│       │   │   │   │       ├── index.tsx
│       │   │   │   │       └── version-management.css
│       │   │   │   ├── edges/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── hooks/
│       │   │   │   │   ├── use-flow-common.ts
│       │   │   │   │   ├── use-flow-type-render.tsx
│       │   │   │   │   ├── use-if-else-node-compare-operator.tsx
│       │   │   │   │   ├── use-node-common.tsx
│       │   │   │   │   ├── use-one-click-update.tsx
│       │   │   │   │   └── use-variable-memory-handlers.ts
│       │   │   │   ├── icons/
│       │   │   │   │   └── index.ts
│       │   │   │   ├── modal/
│       │   │   │   │   ├── add-flow/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── add-knowledge/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── add-mcp/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── add-plugin/
│       │   │   │   │   │   ├── delete-plugin.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── add-rpa/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── clear-flow-canvas/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── delete-chat-history/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── feedback-dialog/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── flow-edit/
│       │   │   │   │   │   ├── index.tsx
│       │   │   │   │   │   └── more-icons/
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── iterative-amplification/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge-detail/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge-parameter/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge-pro-parameter/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── modal-detail/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── modal-rpa-run/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── node-detail/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── prompt-optimize/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── select-agent-prompt/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── set-default-value/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── nodes/
│       │   │   │   │   ├── agent/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── add-tool/
│       │   │   │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   │   │   ├── knowledge-list.tsx
│       │   │   │   │   │   │   │   │   └── mcp-detail.tsx
│       │   │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   │   └── model-select/
│       │   │   │   │   │   │       └── index.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── code/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── chat-history/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── connection-line/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── exception-handling/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── fixed-inputs/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── fixed-outputs/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── handle/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── inputs/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── model-params/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── model-select/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── node-debugger/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── node-operation/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── outputs/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── remark/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── single-input/
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── database/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── AddDataInputs.tsx
│       │   │   │   │   │   │   ├── CasesInputs.tsx
│       │   │   │   │   │   │   ├── OutputDatabase.tsx
│       │   │   │   │   │   │   ├── QueryField.tsx
│       │   │   │   │   │   │   └── QueryLimit.tsx
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── decision-making/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── end/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── extractor-parameterNode/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   └── OutputParams.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── flow/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── if-else/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   ├── iterator/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   └── flow-container/
│       │   │   │   │   │   │       └── index.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── knowledge-pro/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── llm/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── mcp/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── message/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── node-common/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── plugin/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── question-answer/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── answer-settings.tsx
│       │   │   │   │   │   │   ├── fixed-options.tsx
│       │   │   │   │   │   │   └── output-params.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── rpa/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── start/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── text-handle/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── variable-aggregation/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── variable-memory/
│       │   │   │   │       ├── components/
│       │   │   │   │       │   └── inputs.tsx
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── panel/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── store/
│       │   │   │   │   ├── flow-chat-function.ts
│       │   │   │   │   ├── flow-function.ts
│       │   │   │   │   ├── flow-manager-function.ts
│       │   │   │   │   ├── use-chat-store.ts
│       │   │   │   │   ├── use-flow-store.ts
│       │   │   │   │   ├── use-flows-manager.ts
│       │   │   │   │   └── use-iterator-flow-store.ts
│       │   │   │   ├── tips/
│       │   │   │   │   └── select-node/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── types/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── drawer/
│       │   │   │   │   │   ├── advanced-config.ts
│       │   │   │   │   │   ├── chat-debugger.ts
│       │   │   │   │   │   ├── code-idea.ts
│       │   │   │   │   │   ├── index.ts
│       │   │   │   │   │   └── single-node-debugging.ts
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── index.ts
│       │   │   │   │   ├── index.ts
│       │   │   │   │   ├── modal/
│       │   │   │   │   │   ├── add-flow.ts
│       │   │   │   │   │   ├── add-knowledge.ts
│       │   │   │   │   │   ├── add-mcp.ts
│       │   │   │   │   │   ├── add-plugin.ts
│       │   │   │   │   │   ├── index.ts
│       │   │   │   │   │   ├── iterative-amplification.ts
│       │   │   │   │   │   ├── knowledge-detail.tsx
│       │   │   │   │   │   ├── knowledge-parameter.ts
│       │   │   │   │   │   ├── knowledge-pro-parameter.ts
│       │   │   │   │   │   ├── node-detail.ts
│       │   │   │   │   │   ├── prompt-optimize.ts
│       │   │   │   │   │   ├── select-agent-prompt.ts
│       │   │   │   │   │   └── select-llm-prompt.ts
│       │   │   │   │   ├── nodes/
│       │   │   │   │   │   ├── agent.ts
│       │   │   │   │   │   ├── code.ts
│       │   │   │   │   │   ├── components.ts
│       │   │   │   │   │   ├── database.ts
│       │   │   │   │   │   └── index.ts
│       │   │   │   │   └── zustand/
│       │   │   │   │       ├── chat/
│       │   │   │   │       │   └── index.ts
│       │   │   │   │       ├── flow/
│       │   │   │   │       │   └── index.ts
│       │   │   │   │       └── flowsManager/
│       │   │   │   │           └── index.ts
│       │   │   │   ├── ui/
│       │   │   │   │   ├── flow-cascader.tsx
│       │   │   │   │   ├── flow-collapse.tsx
│       │   │   │   │   ├── flow-input-number.tsx
│       │   │   │   │   ├── flow-input.tsx
│       │   │   │   │   ├── flow-node-input.tsx
│       │   │   │   │   ├── flow-node-textarea.tsx
│       │   │   │   │   ├── flow-select.tsx
│       │   │   │   │   ├── flow-template-editor.tsx
│       │   │   │   │   ├── flow-textarea.tsx
│       │   │   │   │   ├── flow-tree.tsx
│       │   │   │   │   ├── flow-type-cascader.tsx
│       │   │   │   │   ├── flow-upload.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   └── utils/
│       │   │   │       ├── index.ts
│       │   │   │       ├── reactflowUtils.ts
│       │   │   │       └── variable-aggregation.ts
│       │   │   └── wx-modal/
│       │   │       ├── index.module.scss
│       │   │       └── index.tsx
│       │   ├── config/
│       │   │   ├── casdoor.ts
│       │   │   ├── file-icon-config.ts
│       │   │   ├── index.ts
│       │   │   └── monaco-config.ts
│       │   ├── constants/
│       │   │   ├── config.ts
│       │   │   ├── index.ts
│       │   │   └── lottie-react/
│       │   │       ├── chat-loading.json
│       │   │       ├── chatSpeaking.json
│       │   │       ├── jiexi.json
│       │   │       ├── loading.json
│       │   │       ├── mingzhong.json
│       │   │       └── voice.json
│       │   ├── hooks/
│       │   │   ├── index.ts
│       │   │   ├── search-event-bind.ts
│       │   │   ├── use-ant-modal.tsx
│       │   │   ├── use-chat-file-upload.ts
│       │   │   ├── use-chat.ts
│       │   │   ├── use-enterprise.ts
│       │   │   ├── use-image-crop-upload-core.ts
│       │   │   ├── use-image-crop-upload-helpers.ts
│       │   │   ├── use-image-crop-upload.ts
│       │   │   ├── use-login.ts
│       │   │   ├── use-order-data.ts
│       │   │   ├── use-permissions.ts
│       │   │   ├── use-prompt.ts
│       │   │   ├── use-screen-width.ts
│       │   │   ├── use-scrollbar.ts
│       │   │   ├── use-space-type.ts
│       │   │   ├── use-toggle.ts
│       │   │   └── use-user-store.ts
│       │   ├── i18n/
│       │   │   └── index.ts
│       │   ├── layouts/
│       │   │   └── index.tsx
│       │   ├── locales/
│       │   │   ├── README.md
│       │   │   ├── en-En/
│       │   │   │   ├── common.ts
│       │   │   │   ├── database.ts
│       │   │   │   ├── effectEvaluation.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── knowledge.ts
│       │   │   │   ├── mcp.ts
│       │   │   │   ├── model.ts
│       │   │   │   ├── openPlatform-En/
│       │   │   │   │   ├── agentPage.ts
│       │   │   │   │   ├── appManage.ts
│       │   │   │   │   ├── botApi.ts
│       │   │   │   │   ├── chatPage.ts
│       │   │   │   │   ├── comboContrastModal.ts
│       │   │   │   │   ├── commonModal.ts
│       │   │   │   │   ├── configBase.ts
│       │   │   │   │   ├── createAgent.ts
│       │   │   │   │   ├── feedback.ts
│       │   │   │   │   ├── global.ts
│       │   │   │   │   ├── home.ts
│       │   │   │   │   ├── loginModal.ts
│       │   │   │   │   ├── orderManagement.ts
│       │   │   │   │   ├── prompt.ts
│       │   │   │   │   ├── promption.ts
│       │   │   │   │   ├── releaseManagement.ts
│       │   │   │   │   ├── shareModal.ts
│       │   │   │   │   ├── space.ts
│       │   │   │   │   ├── systemMessage.ts
│       │   │   │   │   ├── virtualConfig.ts
│       │   │   │   │   └── vmsInteractionCmp.ts
│       │   │   │   ├── openPlatformEnModule.ts
│       │   │   │   ├── plugin.ts
│       │   │   │   ├── rpa.ts
│       │   │   │   └── workflow.ts
│       │   │   ├── en.js
│       │   │   ├── i18n/
│       │   │   │   └── index.ts
│       │   │   ├── index.ts
│       │   │   ├── localeConfig.ts
│       │   │   ├── zh-ZH/
│       │   │   │   ├── common.ts
│       │   │   │   ├── database.ts
│       │   │   │   ├── effectEvaluation.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── knowledge.ts
│       │   │   │   ├── mcp.ts
│       │   │   │   ├── model.ts
│       │   │   │   ├── openPlatform-ZH/
│       │   │   │   │   ├── agentPage.ts
│       │   │   │   │   ├── appManage.ts
│       │   │   │   │   ├── botApi.ts
│       │   │   │   │   ├── chatPage.ts
│       │   │   │   │   ├── comboContrastModal.ts
│       │   │   │   │   ├── commonModal.ts
│       │   │   │   │   ├── configBase.ts
│       │   │   │   │   ├── createAgent.ts
│       │   │   │   │   ├── feedback.ts
│       │   │   │   │   ├── global.ts
│       │   │   │   │   ├── home.ts
│       │   │   │   │   ├── loginModal.ts
│       │   │   │   │   ├── orderManagement.ts
│       │   │   │   │   ├── prompt.ts
│       │   │   │   │   ├── promption.ts
│       │   │   │   │   ├── releaseManagement.ts
│       │   │   │   │   ├── shareModal.ts
│       │   │   │   │   ├── space.ts
│       │   │   │   │   ├── systemMessage.ts
│       │   │   │   │   ├── virtualConfig.ts
│       │   │   │   │   └── vmsInteractionCmp.ts
│       │   │   │   ├── openPlatformZHModule.ts
│       │   │   │   ├── plugin.ts
│       │   │   │   ├── rpa.ts
│       │   │   │   └── workflow.ts
│       │   │   └── zh.js
│       │   ├── main.tsx
│       │   ├── pages/
│       │   │   ├── bot-api/
│       │   │   │   ├── api.module.scss
│       │   │   │   ├── api.tsx
│       │   │   │   ├── app-list.module.scss
│       │   │   │   └── app-list.tsx
│       │   │   ├── callback/
│       │   │   │   └── index.tsx
│       │   │   ├── chat-page/
│       │   │   │   ├── components/
│       │   │   │   │   ├── audio-animate.tsx
│       │   │   │   │   ├── chat-header.tsx
│       │   │   │   │   ├── chat-input.tsx
│       │   │   │   │   ├── chat-side.tsx
│       │   │   │   │   ├── deep-think-progress.tsx
│       │   │   │   │   ├── delete-modal.tsx
│       │   │   │   │   ├── file-grid-display.tsx
│       │   │   │   │   ├── file-preview.tsx
│       │   │   │   │   ├── message-list.tsx
│       │   │   │   │   ├── multi-upload-buttons.tsx
│       │   │   │   │   ├── recorder-com.tsx
│       │   │   │   │   ├── resq-bottom-buttons.tsx
│       │   │   │   │   ├── source-info-box.tsx
│       │   │   │   │   ├── use-tools-info.tsx
│       │   │   │   │   └── workflow-node-options.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── config-page/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── home-page/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── model-management/
│       │   │   │   ├── components/
│       │   │   │   │   ├── category-aside.tsx
│       │   │   │   │   ├── integer-step.tsx
│       │   │   │   │   ├── modal-component.tsx
│       │   │   │   │   ├── model-card-list.tsx
│       │   │   │   │   ├── model-card.module.scss
│       │   │   │   │   ├── model-card.tsx
│       │   │   │   │   ├── model-management-header.tsx
│       │   │   │   │   ├── model-modal-components.tsx
│       │   │   │   │   ├── model-params-table.tsx
│       │   │   │   │   └── status-tag/
│       │   │   │   │       ├── index.module.scss
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── context/
│       │   │   │   │   └── model-context.tsx
│       │   │   │   ├── hooks/
│       │   │   │   │   ├── use-model-filters.ts
│       │   │   │   │   ├── use-model-initializer.ts
│       │   │   │   │   └── use-model-operations.ts
│       │   │   │   ├── index.tsx
│       │   │   │   ├── model-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── model-config-section.tsx
│       │   │   │   │   │   ├── model-detail-header.tsx
│       │   │   │   │   │   └── model-info-display.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── official-model/
│       │   │   │   │   └── official-model-home.tsx
│       │   │   │   ├── personal-model/
│       │   │   │   │   └── personal-model-home.tsx
│       │   │   │   └── utils/
│       │   │   │       └── provider.ts
│       │   │   ├── plugin-store/
│       │   │   │   ├── components/
│       │   │   │   │   ├── banner/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── category-tabs/
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── tool-card/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── toolbar/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── detail/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   └── style.css
│       │   │   ├── release-management/
│       │   │   │   ├── agent-list/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── detail-list-page/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── detail-overview/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── index.module.scss
│       │   │   │   ├── index.tsx
│       │   │   │   ├── released-page/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── trace-logs/
│       │   │   │       ├── CheckModal/
│       │   │   │       │   ├── ContentDisplay/
│       │   │   │       │   │   ├── index.module.scss
│       │   │   │       │   │   └── index.tsx
│       │   │   │       │   ├── TreeNode/
│       │   │   │       │   │   ├── index.module.scss
│       │   │   │       │   │   └── index.tsx
│       │   │   │       │   ├── index.module.scss
│       │   │   │       │   └── index.tsx
│       │   │   │       ├── ExportBtn/
│       │   │   │       │   ├── index.module.scss
│       │   │   │       │   └── index.tsx
│       │   │   │       ├── common/
│       │   │   │       │   └── CopyButton/
│       │   │   │       │       ├── index.module.scss
│       │   │   │       │       └── index.tsx
│       │   │   │       ├── config/
│       │   │   │       │   ├── README.md
│       │   │   │       │   ├── index.ts
│       │   │   │       │   ├── type.d.ts
│       │   │   │       │   └── utils.ts
│       │   │   │       ├── index.module.scss
│       │   │   │       └── index.tsx
│       │   │   ├── resource-management/
│       │   │   │   ├── card-button-group/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── database/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── card-item/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── create-database.tsx
│       │   │   │   │   │   ├── database-grid.tsx
│       │   │   │   │   │   ├── delete-database.tsx
│       │   │   │   │   │   └── import-data-modal.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-database-list.ts
│       │   │   │   │   │   └── use-infinite-scroll.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── database-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── action-buttons.tsx
│       │   │   │   │   │   ├── add-tablerow-modal.tsx
│       │   │   │   │   │   ├── database-sidebar.tsx
│       │   │   │   │   │   ├── main-content.module.scss
│       │   │   │   │   │   ├── main-content.tsx
│       │   │   │   │   │   ├── modal-components.tsx
│       │   │   │   │   │   ├── test-table.module.scss
│       │   │   │   │   │   └── test-table.tsx
│       │   │   │   │   ├── context/
│       │   │   │   │   │   └── database-context.tsx
│       │   │   │   │   ├── database-table-add/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── action-buttons.tsx
│       │   │   │   │   │   │   ├── back-button.tsx
│       │   │   │   │   │   │   ├── database-table.tsx
│       │   │   │   │   │   │   ├── field-actions.tsx
│       │   │   │   │   │   │   └── table-form.tsx
│       │   │   │   │   │   ├── context/
│       │   │   │   │   │   │   └── table-add-context.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   ├── use-table-actions.ts
│       │   │   │   │   │   │   ├── use-table-datasource.ts
│       │   │   │   │   │   │   ├── use-table-field-validation.ts
│       │   │   │   │   │   │   ├── use-table-import-ops.ts
│       │   │   │   │   │   │   ├── use-table-initializer.ts
│       │   │   │   │   │   │   └── use-table-save.ts
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   ├── use-data-event-handlers.ts
│       │   │   │   │   │   ├── use-data-ops.ts
│       │   │   │   │   │   ├── use-database-actions.ts
│       │   │   │   │   │   ├── use-database-initializer.ts
│       │   │   │   │   │   ├── use-database-ops.ts
│       │   │   │   │   │   ├── use-modal-ops.ts
│       │   │   │   │   │   └── use-table-ops.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── index.tsx
│       │   │   │   ├── knowledge-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── knowledge-header.tsx
│       │   │   │   │   │   └── knowledge-info.tsx
│       │   │   │   │   ├── document-page/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   └── modal-components.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   ├── use-columns.tsx
│       │   │   │   │   │   │   └── use-document-page.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── file-page/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   └── modal-components.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   └── use-file-page.tsx
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── hit-page/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── history-content.tsx
│       │   │   │   │   │   │   └── modal-components.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   └── use-hit-page.ts
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   ├── segmentation-page/
│       │   │   │   │   │   ├── components/
│       │   │   │   │   │   │   ├── data-clean.tsx
│       │   │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   │   └── use-data-clean.tsx
│       │   │   │   │   │   │   └── processing-completion.tsx
│       │   │   │   │   │   ├── hooks/
│       │   │   │   │   │   │   └── use-processing-completion.ts
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   └── setting-page/
│       │   │   │   │       ├── hooks/
│       │   │   │   │       │   └── use-setting-page.ts
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── knowledge-page/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── card-item/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── knowledge-content.tsx
│       │   │   │   │   │   └── modal-component.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-knowledge-page.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── plugin-create/
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── plugin-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   └── tool-header.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-tool-header.ts
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   └── setting-page/
│       │   │   │   │       └── index.tsx
│       │   │   │   ├── plugin-page/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── card-item/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── modal-component.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-plugin-page.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── resource-empty/
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── rpa-detail/
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-rpa-detail.ts
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── rpa-page/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── card-item/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── modal-form/
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── hooks/
│       │   │   │   │   │   └── use-rpa-page.tsx
│       │   │   │   │   └── index.tsx
│       │   │   │   └── upload-page/
│       │   │   │       ├── components/
│       │   │   │       │   ├── data-clean.tsx
│       │   │   │       │   ├── hooks/
│       │   │   │       │   │   ├── use-config-management.ts
│       │   │   │       │   │   ├── use-data-clean.ts
│       │   │   │       │   │   ├── use-data-operations.ts
│       │   │   │       │   │   ├── use-file-display.ts
│       │   │   │       │   │   ├── use-knowledge-select.ts
│       │   │   │       │   │   ├── use-pagination.ts
│       │   │   │       │   │   └── use-slice-operations.ts
│       │   │   │       │   ├── import-data.tsx
│       │   │   │       │   ├── import-upload.tsx
│       │   │   │       │   ├── processing-completion-info.tsx
│       │   │   │       │   ├── processing-completion.tsx
│       │   │   │       │   ├── upload-header.tsx
│       │   │   │       │   └── utils/
│       │   │   │       │       └── data-clean-utils.ts
│       │   │   │       ├── hooks/
│       │   │   │       │   ├── use-import-data.ts
│       │   │   │       │   └── use-upload-page.ts
│       │   │   │       ├── index.tsx
│       │   │   │       └── utils/
│       │   │   │           └── index.ts
│       │   │   ├── share-page/
│       │   │   │   ├── index.module.scss
│       │   │   │   └── index.tsx
│       │   │   ├── space/
│       │   │   │   ├── config.ts
│       │   │   │   ├── enterprise/
│       │   │   │   │   ├── base-layout/
│       │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   └── index.tsx
│       │   │   │   │   ├── config.ts
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   ├── index.tsx
│       │   │   │   │   └── page-components/
│       │   │   │   │       ├── member-manage/
│       │   │   │   │       │   ├── components/
│       │   │   │   │       │   │   ├── batch-import/
│       │   │   │   │       │   │   │   ├── config.ts
│       │   │   │   │       │   │   │   ├── index.module.scss
│       │   │   │   │       │   │   │   ├── index.tsx
│       │   │   │   │       │   │   │   └── utils.ts
│       │   │   │   │       │   │   ├── invitation-list/
│       │   │   │   │       │   │   │   └── index.tsx
│       │   │   │   │       │   │   └── member-list/
│       │   │   │   │       │   │       └── index.tsx
│       │   │   │   │       │   ├── index.module.scss
│       │   │   │   │       │   └── index.tsx
│       │   │   │   │       ├── space-manage/
│       │   │   │   │       │   ├── index.module.scss
│       │   │   │   │       │   └── index.tsx
│       │   │   │   │       └── team-settings/
│       │   │   │   │           ├── components/
│       │   │   │   │           │   ├── enterprise-certification-card/
│       │   │   │   │           │   │   ├── index.module.scss
│       │   │   │   │           │   │   └── index.tsx
│       │   │   │   │           │   ├── info-header/
│       │   │   │   │           │   │   ├── index.module.scss
│       │   │   │   │           │   │   └── index.tsx
│       │   │   │   │           │   ├── leave-team-modal/
│       │   │   │   │           │   │   ├── index.module.scss
│       │   │   │   │           │   │   └── index.tsx
│       │   │   │   │           │   ├── team-info/
│       │   │   │   │           │   │   ├── index.module.scss
│       │   │   │   │           │   │   └── index.tsx
│       │   │   │   │           │   └── upload-image/
│       │   │   │   │           │       └── index.tsx
│       │   │   │   │           ├── index.module.scss
│       │   │   │   │           └── index.tsx
│       │   │   │   ├── hooks/
│       │   │   │   │   └── use-space-i18n.ts
│       │   │   │   ├── personal/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   └── personal-space-card/
│       │   │   │   │   │       ├── index.module.scss
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   ├── space-detail/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── apply-management/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── detail-header/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── invitation-management/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   ├── member-management/
│       │   │   │   │   │   │   ├── index.module.scss
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── space-settings/
│       │   │   │   │   │       ├── index.module.scss
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── team-create/
│       │   │   │       ├── index.module.scss
│       │   │   │       └── index.tsx
│       │   │   ├── space-page/
│       │   │   │   ├── agent-page/
│       │   │   │   │   ├── components/
│       │   │   │   │   │   ├── create-bot/
│       │   │   │   │   │   │   └── index.tsx
│       │   │   │   │   │   └── delete-bot/
│       │   │   │   │   │       └── index.tsx
│       │   │   │   │   ├── index.module.scss
│       │   │   │   │   └── index.tsx
│       │   │   │   └── index.tsx
│       │   │   └── workflow/
│       │   │       ├── components/
│       │   │       │   ├── btn-groups/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── community-qr-code/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── flow-container/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── flow-drawer/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── flow-header/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── flow-modal/
│       │   │       │   │   └── index.tsx
│       │   │       │   ├── multiple-canvases-tip/
│       │   │       │   │   └── index.tsx
│       │   │       │   └── node-list/
│       │   │       │       └── index.tsx
│       │   │       ├── index.tsx
│       │   │       └── workflow-analysis/
│       │   │           └── index.tsx
│       │   ├── permissions/
│       │   │   ├── config/
│       │   │   │   ├── enterprise-permissions.ts
│       │   │   │   ├── index.ts
│       │   │   │   ├── route-permissions.ts
│       │   │   │   └── share-permissions.ts
│       │   │   └── utils.ts
│       │   ├── router/
│       │   │   └── index.tsx
│       │   ├── services/
│       │   │   ├── agent-personality.ts
│       │   │   ├── agent-square.ts
│       │   │   ├── agent.ts
│       │   │   ├── api-key.ts
│       │   │   ├── chat.ts
│       │   │   ├── common.ts
│       │   │   ├── database.ts
│       │   │   ├── enterprise-auth-api.ts
│       │   │   ├── enterprise.ts
│       │   │   ├── flow.ts
│       │   │   ├── knowledge.ts
│       │   │   ├── login.ts
│       │   │   ├── model.ts
│       │   │   ├── notification.ts
│       │   │   ├── order.ts
│       │   │   ├── plugin.ts
│       │   │   ├── prompt.ts
│       │   │   ├── release-management.ts
│       │   │   ├── rpa.ts
│       │   │   ├── space.ts
│       │   │   ├── spark-common.ts
│       │   │   ├── square.ts
│       │   │   ├── tool.ts
│       │   │   └── trace.ts
│       │   ├── store/
│       │   │   ├── agent-directive-create.ts
│       │   │   ├── bot-info-store.ts
│       │   │   ├── chat-store.ts
│       │   │   ├── database-store.ts
│       │   │   ├── enterprise-store.ts
│       │   │   ├── global-store.ts
│       │   │   ├── home-store.ts
│       │   │   ├── index.ts
│       │   │   ├── login-store.ts
│       │   │   ├── space-store.ts
│       │   │   ├── spark-store/
│       │   │   │   ├── bot-state.ts
│       │   │   │   ├── locale-store.ts
│       │   │   │   ├── multi-modle-store.ts
│       │   │   │   ├── order-store.ts
│       │   │   │   └── spark-common.ts
│       │   │   ├── user-store.tsx
│       │   │   └── voice-play-store.tsx
│       │   ├── styles/
│       │   │   ├── antd.scss
│       │   │   ├── applies.scss
│       │   │   ├── classes.scss
│       │   │   ├── flow.scss
│       │   │   ├── global.scss
│       │   │   └── ui.scss
│       │   ├── types/
│       │   │   ├── agent-create.ts
│       │   │   ├── agent-square.ts
│       │   │   ├── chat.ts
│       │   │   ├── common.ts
│       │   │   ├── database.ts
│       │   │   ├── global.d.ts
│       │   │   ├── jquery.d.ts
│       │   │   ├── model-extensions.d.ts
│       │   │   ├── model.ts
│       │   │   ├── permission.ts
│       │   │   ├── plugin-store.ts
│       │   │   ├── resource.ts
│       │   │   ├── rpa.ts
│       │   │   ├── space.ts
│       │   │   ├── types-services/
│       │   │   │   └── index.ts
│       │   │   └── typesServices.ts
│       │   └── utils/
│       │       ├── agent-create-utils.ts
│       │       ├── auth.ts
│       │       ├── avatar-sdk-web_3.1.2.1002/
│       │       │   ├── index-OS7Lza_r.js
│       │       │   ├── index.d.ts
│       │       │   ├── index.js
│       │       │   ├── webrtc-player--YuOiwFd.js
│       │       │   └── xrtc-player-BJTnVhG9.js
│       │       ├── chat.ts
│       │       ├── event-bus.ts
│       │       ├── http.ts
│       │       ├── index.ts
│       │       ├── lang.ts
│       │       ├── pattern.ts
│       │       ├── reactflow-utils.ts
│       │       ├── record/
│       │       │   ├── media.js
│       │       │   ├── pcm.js
│       │       │   ├── record.js
│       │       │   ├── recorder-core.js
│       │       │   ├── sampleRate.js
│       │       │   ├── wav.js
│       │       │   └── ws.js
│       │       ├── rpa.ts
│       │       ├── sanitizer.ts
│       │       ├── spark-utils.ts
│       │       ├── tts.ts
│       │       └── utils.ts
│       ├── tailwind.config.js
│       ├── tsconfig.json
│       ├── tsconfig.node.json
│       ├── vite-env.d.ts
│       └── vite.config.js
├── core/
│   ├── agent/
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── router.py
│   │   │   ├── schemas/
│   │   │   │   ├── agent_response.py
│   │   │   │   ├── base_inputs.py
│   │   │   │   ├── completion_chunk.py
│   │   │   │   ├── llm_message.py
│   │   │   │   ├── node_trace_patch.py
│   │   │   │   └── workflow_agent_inputs.py
│   │   │   └── v1/
│   │   │       ├── base_api.py
│   │   │       └── workflow_agent.py
│   │   ├── config.env
│   │   ├── domain/
│   │   │   ├── __init__.py
│   │   │   └── models/
│   │   │       └── base.py
│   │   ├── engine/
│   │   │   ├── __init__.py
│   │   │   └── nodes/
│   │   │       ├── __init__.py
│   │   │       ├── base.py
│   │   │       ├── chat/
│   │   │       │   ├── chat_prompt.py
│   │   │       │   └── chat_runner.py
│   │   │       ├── cot/
│   │   │       │   ├── cot_prompt.py
│   │   │       │   └── cot_runner.py
│   │   │       └── cot_process/
│   │   │           ├── cot_process_prompt.py
│   │   │           └── cot_process_runner.py
│   │   ├── exceptions/
│   │   │   ├── __init__.py
│   │   │   ├── agent_exc.py
│   │   │   ├── base.py
│   │   │   ├── codes.py
│   │   │   ├── cot_exc.py
│   │   │   ├── llm_codes.py
│   │   │   ├── middleware_exc.py
│   │   │   └── plugin_exc.py
│   │   ├── infra/
│   │   │   ├── __init__.py
│   │   │   └── app_auth.py
│   │   ├── main.py
│   │   ├── pyproject.toml
│   │   ├── service/
│   │   │   ├── __init__.py
│   │   │   ├── builder/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_builder.py
│   │   │   │   └── workflow_agent_builder.py
│   │   │   ├── plugin/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── knowledge.py
│   │   │   │   ├── link.py
│   │   │   │   ├── mcp.py
│   │   │   │   └── workflow.py
│   │   │   └── runner/
│   │   │       ├── __init__.py
│   │   │       └── workflow_agent_runner.py
│   │   └── tests/
│   │       ├── __init__.py
│   │       ├── test_app_auth.py
│   │       ├── test_base_api.py
│   │       ├── test_base_builder.py
│   │       ├── test_base_inputs.py
│   │       ├── test_base_llm_model.py
│   │       ├── test_knowledge_plugin.py
│   │       ├── test_plugin_base_link_mcp_workflow.py
│   │       ├── test_router_and_schemas.py
│   │       ├── test_runner_base_and_chat_cot.py
│   │       ├── test_workflow_agent.py
│   │       ├── test_workflow_agent_builder.py
│   │       ├── test_workflow_agent_inputs_and_plugin_inputs.py
│   │       └── test_workflow_agent_runner.py
│   ├── common/
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── audit_system/
│   │   │   ├── __init__.py
│   │   │   ├── audit_api/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   └── iflytek/
│   │   │   │       ├── __init__.py
│   │   │   │       └── ifly_audit_api.py
│   │   │   ├── base.py
│   │   │   ├── enums.py
│   │   │   ├── orchestrator.py
│   │   │   ├── strategy/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_strategy.py
│   │   │   │   └── text_strategy.py
│   │   │   └── utils.py
│   │   ├── exceptions/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── codes.py
│   │   │   └── errs.py
│   │   ├── initialize/
│   │   │   └── initialize.py
│   │   ├── ma-sdk.toml
│   │   ├── metrology_auth/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── calc.py
│   │   │   ├── conc.py
│   │   │   ├── config_client.toml.findercache
│   │   │   ├── errors.py
│   │   │   ├── include/
│   │   │   │   └── ma_sdk.h
│   │   │   ├── licc.py
│   │   │   ├── ma-sdk-cfg/
│   │   │   │   ├── config_ma-sdk.toml.findercache
│   │   │   │   └── service_janus_1.0.0.findercache
│   │   │   ├── ma-sdk-default.toml
│   │   │   ├── ma-sdk.cfg.toml
│   │   │   ├── ma-sdk.toml
│   │   │   ├── ma_sdk_linux_x64.h
│   │   │   ├── ma_sdk_macos_arm64.h
│   │   │   ├── ma_sdk_windows.h
│   │   │   └── rep.py
│   │   ├── otlp/
│   │   │   ├── __init__.py
│   │   │   ├── args/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── metric.py
│   │   │   │   ├── node_log.py
│   │   │   │   ├── sid.py
│   │   │   │   └── trace.py
│   │   │   ├── ip.py
│   │   │   ├── log_trace/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py
│   │   │   │   ├── node_log.py
│   │   │   │   ├── node_trace_log.py
│   │   │   │   └── workflow_log.py
│   │   │   ├── metrics/
│   │   │   │   ├── consts.py
│   │   │   │   ├── meter.py
│   │   │   │   └── metric.py
│   │   │   ├── sid.py
│   │   │   └── trace/
│   │   │       ├── span.py
│   │   │       ├── span_instance.py
│   │   │       └── trace.py
│   │   ├── pyproject.toml
│   │   ├── pytest.ini
│   │   ├── run_basic_tests.sh
│   │   ├── run_simple_tests.sh
│   │   ├── run_tests.sh
│   │   ├── service/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── cache/
│   │   │   │   ├── base_cache.py
│   │   │   │   ├── factory.py
│   │   │   │   └── redis_cache.py
│   │   │   ├── db/
│   │   │   │   ├── db_service.py
│   │   │   │   └── factory.py
│   │   │   ├── kafka/
│   │   │   │   ├── factory.py
│   │   │   │   └── kafka_service.py
│   │   │   ├── log/
│   │   │   │   ├── factory.py
│   │   │   │   └── logger_service.py
│   │   │   ├── ma/
│   │   │   │   ├── factory.py
│   │   │   │   └── metrology_auth_service.py
│   │   │   ├── oss/
│   │   │   │   ├── base_oss.py
│   │   │   │   ├── factory.py
│   │   │   │   ├── ifly_storage_gateway_service.py
│   │   │   │   └── s3_service.py
│   │   │   ├── otlp/
│   │   │   │   ├── metric/
│   │   │   │   │   ├── base_metric.py
│   │   │   │   │   ├── factory.py
│   │   │   │   │   └── metric_service.py
│   │   │   │   ├── node_log/
│   │   │   │   │   ├── base_node_log.py
│   │   │   │   │   ├── factory.py
│   │   │   │   │   └── node_log_service.py
│   │   │   │   ├── sid/
│   │   │   │   │   ├── factory.py
│   │   │   │   │   └── sid_service.py
│   │   │   │   └── span/
│   │   │   │       ├── factory.py
│   │   │   │       └── span_service.py
│   │   │   ├── settings/
│   │   │   │   ├── base_settings.py
│   │   │   │   ├── factory.py
│   │   │   │   └── settings_service.py
│   │   │   └── utils.py
│   │   ├── settings/
│   │   │   ├── polaris.py
│   │   │   └── settings.py
│   │   ├── tests/
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── conftest.py
│   │   │   ├── test_audit_system.py
│   │   │   ├── test_exceptions.py
│   │   │   ├── test_json_schema_cn.py
│   │   │   ├── test_json_schema_validator.py
│   │   │   ├── test_main.py
│   │   │   ├── test_metrology_auth.py
│   │   │   ├── test_otlp_args.py
│   │   │   ├── test_otlp_log_trace.py
│   │   │   ├── test_otlp_utils.py
│   │   │   ├── test_service_base.py
│   │   │   ├── test_service_utils.py
│   │   │   ├── test_snowfake.py
│   │   │   └── test_utils.py
│   │   └── utils/
│   │       ├── __init__.py
│   │       ├── hmac_auth.py
│   │       ├── json_schema/
│   │       │   ├── __init__.py
│   │       │   ├── json_schema_cn.py
│   │       │   └── json_schema_validator.py
│   │       └── snowfake.py
│   ├── knowledge/
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   └── v1/
│   │   │       ├── __init__.py
│   │   │       └── api.py
│   │   ├── config.env
│   │   ├── consts/
│   │   │   ├── __init__.py
│   │   │   ├── constants.py
│   │   │   └── error_code.py
│   │   ├── domain/
│   │   │   ├── __init__.py
│   │   │   ├── entity/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── chunk_dto.py
│   │   │   │   └── rag_do.py
│   │   │   └── response.py
│   │   ├── exceptions/
│   │   │   ├── __init__.py
│   │   │   └── exception.py
│   │   ├── infra/
│   │   │   ├── __init__.py
│   │   │   ├── aiui/
│   │   │   │   ├── __init__.py
│   │   │   │   └── aiui.py
│   │   │   ├── desk/
│   │   │   │   ├── __init__.py
│   │   │   │   └── sparkdesk.py
│   │   │   ├── ragflow/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── ragflow_client.py
│   │   │   │   └── ragflow_utils.py
│   │   │   └── xinghuo/
│   │   │       ├── __init__.py
│   │   │       └── xinghuo.py
│   │   ├── llm/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   └── openai_llm.py
│   │   ├── main.py
│   │   ├── pyproject.toml
│   │   ├── service/
│   │   │   ├── __init__.py
│   │   │   ├── impl/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── aiui_strategy.py
│   │   │   │   ├── cbg_strategy.py
│   │   │   │   ├── ragflow_strategy.py
│   │   │   │   └── sparkdesk_strategy.py
│   │   │   ├── rag_strategy.py
│   │   │   ├── rag_strategy_factory.py
│   │   │   └── rq/
│   │   │       ├── __init__.py
│   │   │       └── rewrite_query.py
│   │   ├── tests/
│   │   │   ├── __init__.py
│   │   │   ├── domain/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── entity/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── chunk_dto_test.py
│   │   │   │   │   └── rag_do_test.py
│   │   │   │   └── response_test.py
│   │   │   ├── exceptions/
│   │   │   │   ├── __init__.py
│   │   │   │   └── exception_test.py
│   │   │   ├── infra/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── aiui/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── aiui_test.py
│   │   │   │   ├── desk/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── sparkdesk_test.py
│   │   │   │   ├── ragflow/
│   │   │   │   │   └── __init__.py
│   │   │   │   └── xinghuo/
│   │   │   │       ├── __init__.py
│   │   │   │       └── xinghuo_test.py
│   │   │   └── service/
│   │   │       ├── __init__.py
│   │   │       └── impl/
│   │   │           ├── __init__.py
│   │   │           ├── aiui_strategy_test.py
│   │   │           ├── cbg_strategy_test.py
│   │   │           ├── ragflow_strategy_test.py
│   │   │           └── sparkdesk_strategy_test.py
│   │   └── utils/
│   │       ├── __init__.py
│   │       ├── file_utils.py
│   │       ├── spark_signature.py
│   │       └── verification.py
│   ├── memory/
│   │   ├── __init__.py
│   │   └── database/
│   │       ├── .gitignore
│   │       ├── Dockerfile
│   │       ├── README.md
│   │       ├── __init__.py
│   │       ├── alembic/
│   │       │   ├── README.md
│   │       │   ├── alembic.ini
│   │       │   ├── env.py
│   │       │   ├── script.py.mako
│   │       │   └── versions/
│   │       │       └── 2026_02_11_1801-f2a4ce6e3198_init.py
│   │       ├── api/
│   │       │   ├── __init__.py
│   │       │   ├── router.py
│   │       │   ├── schemas/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── clone_db_types.py
│   │       │   │   ├── common_types.py
│   │       │   │   ├── create_db_types.py
│   │       │   │   ├── drop_db_types.py
│   │       │   │   ├── exec_ddl_types.py
│   │       │   │   ├── exec_dml_types.py
│   │       │   │   ├── export_data_types.py
│   │       │   │   ├── modify_db_desc_types.py
│   │       │   │   └── upload_data_types.py
│   │       │   └── v1/
│   │       │       ├── __init__.py
│   │       │       ├── common.py
│   │       │       ├── db_operator.py
│   │       │       ├── exec_ddl.py
│   │       │       ├── exec_dml.py
│   │       │       ├── export_data.py
│   │       │       └── upload_data.py
│   │       ├── config.env
│   │       ├── consts/
│   │       │   └── consts.py
│   │       ├── domain/
│   │       │   ├── __init__.py
│   │       │   ├── entity/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── database_meta.py
│   │       │   │   ├── general.py
│   │       │   │   ├── schema.py
│   │       │   │   ├── schema_meta.py
│   │       │   │   └── views/
│   │       │   │       ├── __init__.py
│   │       │   │       └── http_resp.py
│   │       │   └── models/
│   │       │       ├── __init__.py
│   │       │       ├── base.py
│   │       │       ├── database_meta.py
│   │       │       └── schema_meta.py
│   │       ├── exceptions/
│   │       │   ├── e.py
│   │       │   └── error_code.py
│   │       ├── main.py
│   │       ├── pyproject.toml
│   │       ├── repository/
│   │       │   ├── __init__.py
│   │       │   └── middleware/
│   │       │       ├── __init__.py
│   │       │       ├── base.py
│   │       │       ├── database/
│   │       │       │   ├── __init__.py
│   │       │       │   ├── database_migration.py
│   │       │       │   ├── db_factory.py
│   │       │       │   └── db_manager.py
│   │       │       ├── factory.py
│   │       │       ├── getters.py
│   │       │       ├── initialize.py
│   │       │       ├── manager.py
│   │       │       └── mid_utils.py
│   │       ├── tests/
│   │       │   ├── __init__.py
│   │       │   ├── common_test.py
│   │       │   ├── db_operator_test.py
│   │       │   ├── exec_ddl_test.py
│   │       │   ├── exec_dml_test.py
│   │       │   ├── export_data_test.py
│   │       │   └── upload_data_test.py
│   │       └── utils/
│   │           ├── __init__.py
│   │           ├── exception_util.py
│   │           └── retry.py
│   ├── plugin/
│   │   ├── __init__.py
│   │   ├── aitools/
│   │   │   ├── .gitignore
│   │   │   ├── Dockerfile
│   │   │   ├── __init__.py
│   │   │   ├── api/
│   │   │   │   ├── decorators/
│   │   │   │   │   ├── api_meta.py
│   │   │   │   │   └── api_service.py
│   │   │   │   ├── middlewares/
│   │   │   │   │   └── otlp_middleware.py
│   │   │   │   ├── routes/
│   │   │   │   │   ├── endpoint_factory.py
│   │   │   │   │   ├── register.py
│   │   │   │   │   └── service_scanner.py
│   │   │   │   └── schemas/
│   │   │   │       └── types.py
│   │   │   ├── app/
│   │   │   │   └── start_server.py
│   │   │   ├── common/
│   │   │   │   ├── clients/
│   │   │   │   │   ├── adapters.py
│   │   │   │   │   ├── aiohttp_client.py
│   │   │   │   │   ├── hooks.py
│   │   │   │   │   ├── task_factory.py
│   │   │   │   │   └── websockets_client.py
│   │   │   │   ├── exceptions/
│   │   │   │   │   ├── error/
│   │   │   │   │   │   └── code_enums.py
│   │   │   │   │   └── exceptions.py
│   │   │   │   └── log/
│   │   │   │       └── logger.py
│   │   │   ├── config.env
│   │   │   ├── conftest.py
│   │   │   ├── const/
│   │   │   │   └── const.py
│   │   │   ├── main.py
│   │   │   ├── pyproject.toml
│   │   │   ├── pytest.ini
│   │   │   ├── service/
│   │   │   │   ├── ase_image_generator/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── req_ase_ability_image_generate_service.py
│   │   │   │   ├── dial_test/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── dial_test.py
│   │   │   │   │   └── dial_test_client.py
│   │   │   │   ├── image_understanding/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── image_understanding_service.py
│   │   │   │   ├── ise/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── ise_client.py
│   │   │   │   │   └── ise_evaluate_service.py
│   │   │   │   ├── ocr_llm/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── req_ase_ability_ocr_service.py
│   │   │   │   ├── smart_tts/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── smart_tts_service.py
│   │   │   │   └── translation/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── translation_client.py
│   │   │   │       └── translation_service.py
│   │   │   ├── tests/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── api/
│   │   │   │   │   ├── decorators/
│   │   │   │   │   │   ├── test_api_meta.py
│   │   │   │   │   │   └── test_api_service.py
│   │   │   │   │   ├── routes/
│   │   │   │   │   │   ├── test_endpoint_factory.py
│   │   │   │   │   │   └── test_service_scanner.py
│   │   │   │   │   ├── schemas/
│   │   │   │   │   │   └── test_types.py
│   │   │   │   │   └── test_api.py
│   │   │   │   ├── app/
│   │   │   │   │   ├── test_main.py
│   │   │   │   │   └── test_start_server.py
│   │   │   │   ├── common/
│   │   │   │   │   ├── clients/
│   │   │   │   │   │   ├── test_adapters.py
│   │   │   │   │   │   ├── test_hooks.py
│   │   │   │   │   │   ├── test_http_client.py
│   │   │   │   │   │   ├── test_task_factory.py
│   │   │   │   │   │   └── test_websocket_client.py
│   │   │   │   │   ├── exceptions/
│   │   │   │   │   │   ├── test_code_enums.py
│   │   │   │   │   │   └── test_exceptions.py
│   │   │   │   │   └── log/
│   │   │   │   │       └── test_logger.py
│   │   │   │   ├── const/
│   │   │   │   │   └── test_const.py
│   │   │   │   └── utils/
│   │   │   │       ├── test_aiokafka_factory.py
│   │   │   │       ├── test_aiokafka_service.py
│   │   │   │       ├── test_aitools_service_manager.py
│   │   │   │       ├── test_config_utils.py
│   │   │   │       ├── test_env_utils.py
│   │   │   │       └── test_otlp_utils.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── aiokafka_factory.py
│   │   │       ├── aiokafka_service.py
│   │   │       ├── config_utils.py
│   │   │       ├── env_utils.py
│   │   │       ├── initialize.py
│   │   │       ├── oss_utils.py
│   │   │       └── otlp_utils.py
│   │   ├── link/
│   │   │   ├── .gitignore
│   │   │   ├── Dockerfile
│   │   │   ├── __init__.py
│   │   │   ├── alembic/
│   │   │   │   ├── README
│   │   │   │   ├── env.py
│   │   │   │   ├── script.py.mako
│   │   │   │   └── versions/
│   │   │   │       └── 2026_03_06_0257-5c4f1b5ab83d_init.py
│   │   │   ├── alembic.ini
│   │   │   ├── api/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── router.py
│   │   │   │   ├── schemas/
│   │   │   │   │   ├── community/
│   │   │   │   │   │   ├── deprecated/
│   │   │   │   │   │   │   └── management_schema.py
│   │   │   │   │   │   └── tools/
│   │   │   │   │   │       ├── http/
│   │   │   │   │   │       │   ├── execution_schema.py
│   │   │   │   │   │       │   └── management_schema.py
│   │   │   │   │   │       └── mcp/
│   │   │   │   │   │           └── mcp_tools_schema.py
│   │   │   │   │   └── enterprise/
│   │   │   │   │       └── extension_schema.py
│   │   │   │   └── v1/
│   │   │   │       ├── community/
│   │   │   │       │   ├── deprecated/
│   │   │   │       │   │   └── management.py
│   │   │   │       │   └── tools/
│   │   │   │       │       ├── http/
│   │   │   │       │       │   ├── execution.py
│   │   │   │       │       │   └── management.py
│   │   │   │       │       └── mcp/
│   │   │   │       │           └── mcp_tools.py
│   │   │   │       └── enterprise/
│   │   │   │           └── extension.py
│   │   │   ├── app/
│   │   │   │   ├── __init__.py
│   │   │   │   └── start_server.py
│   │   │   ├── config.env
│   │   │   ├── consts/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── const.py
│   │   │   │   └── keys/
│   │   │   │       ├── common_keys.py
│   │   │   │       ├── mysql_keys.py
│   │   │   │       ├── redis_keys.py
│   │   │   │       ├── spark_keys.py
│   │   │   │       ├── uvicorn_keys.py
│   │   │   │       └── xc_utils_keys.py
│   │   │   ├── domain/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── entity/
│   │   │   │   │   └── tool_schema.py
│   │   │   │   └── models/
│   │   │   │       ├── manager.py
│   │   │   │       └── utils.py
│   │   │   ├── exceptions/
│   │   │   │   ├── __init__.py
│   │   │   │   └── sparklink_exceptions.py
│   │   │   ├── extensions/
│   │   │   │   ├── __init__.py
│   │   │   │   └── database_migration.py
│   │   │   ├── infra/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── kafka_telemetry.py
│   │   │   │   ├── tool_crud/
│   │   │   │   │   └── process.py
│   │   │   │   └── tool_exector/
│   │   │   │       ├── http_auth.py
│   │   │   │       └── process.py
│   │   │   ├── main.py
│   │   │   ├── pyproject.toml
│   │   │   ├── pytest.ini
│   │   │   ├── service/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── community/
│   │   │   │   │   ├── deprecated/
│   │   │   │   │   │   └── management_server.py
│   │   │   │   │   └── tools/
│   │   │   │   │       ├── http/
│   │   │   │   │       │   ├── execution_server.py
│   │   │   │   │       │   └── management_server.py
│   │   │   │   │       └── mcp/
│   │   │   │   │           └── mcp_server.py
│   │   │   │   └── enterprise/
│   │   │   │       └── extension.py
│   │   │   ├── tests/
│   │   │   │   ├── FINAL_STATUS.md
│   │   │   │   ├── IMPLEMENTATION_STATUS.md
│   │   │   │   ├── README.md
│   │   │   │   ├── SUMMARY.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── conftest.py
│   │   │   │   ├── integration/
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── test_runner.py
│   │   │   │   └── unit/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── test_alembic_migration.py
│   │   │   │       ├── test_domain_models.py
│   │   │   │       ├── test_infra.py
│   │   │   │       ├── test_infra_fixed.py
│   │   │   │       ├── test_main.py
│   │   │   │       ├── test_response_filter.py
│   │   │   │       ├── test_schemas.py
│   │   │   │       ├── test_schemas_fixed.py
│   │   │   │       ├── test_services.py
│   │   │   │       └── test_utils.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── errors/
│   │   │       │   └── code.py
│   │   │       ├── json_schemas/
│   │   │       │   ├── read_json_schemas.py
│   │   │       │   ├── schema_files/
│   │   │       │   │   ├── action_run_schema.json
│   │   │       │   │   ├── create_tools_schema.json
│   │   │       │   │   ├── http_run_schema.json
│   │   │       │   │   ├── mcp_register_schema.json
│   │   │       │   │   ├── tool_debug_schema.json
│   │   │       │   │   └── update_tools_schema.json
│   │   │       │   └── schema_validate.py
│   │   │       ├── log/
│   │   │       │   └── logger.py
│   │   │       ├── open_api_schema/
│   │   │       │   ├── common_schema.py
│   │   │       │   ├── response_filter.py
│   │   │       │   ├── schema_parser.py
│   │   │       │   ├── schema_validate.py
│   │   │       │   └── types/
│   │   │       │       └── schema_parser_types.py
│   │   │       ├── security/
│   │   │       │   └── access_interceptor.py
│   │   │       ├── sid/
│   │   │       │   └── sid_generator2.py
│   │   │       ├── snowflake/
│   │   │       │   └── gen_snowflake.py
│   │   │       └── uid/
│   │   │           └── generate_uid.py
│   │   └── rpa/
│   │       ├── .flake8
│   │       ├── .gitignore
│   │       ├── Dockerfile
│   │       ├── __init__.py
│   │       ├── api/
│   │       │   ├── __init__.py
│   │       │   ├── app.py
│   │       │   ├── router.py
│   │       │   ├── schemas/
│   │       │   │   └── execution_schema.py
│   │       │   └── v1/
│   │       │       ├── execution.py
│   │       │       └── health_check.py
│   │       ├── config.env
│   │       ├── consts/
│   │       │   ├── __init__.py
│   │       │   ├── app/
│   │       │   │   └── app_keys.py
│   │       │   ├── const.py
│   │       │   ├── log/
│   │       │   │   └── log_keys.py
│   │       │   ├── otlp/
│   │       │   │   └── otlp_keys.py
│   │       │   └── rpa/
│   │       │       └── rpa_keys.py
│   │       ├── doc/
│   │       │   ├── API_EXAMPLES.md
│   │       │   ├── DEPLOYMENT.md
│   │       │   └── TEST_SUMMARY.md
│   │       ├── errors/
│   │       │   ├── __init__.py
│   │       │   └── error_code.py
│   │       ├── exceptions/
│   │       │   ├── __init__.py
│   │       │   └── config_exceptions.py
│   │       ├── infra/
│   │       │   ├── __init__.py
│   │       │   └── xiaowu/
│   │       │       └── tasks.py
│   │       ├── main.py
│   │       ├── pyproject.toml
│   │       ├── run_tests.py
│   │       ├── service/
│   │       │   ├── __init__.py
│   │       │   └── xiaowu/
│   │       │       └── process.py
│   │       ├── tests/
│   │       │   ├── README.md
│   │       │   ├── __init__.py
│   │       │   ├── conftest.py
│   │       │   ├── integration/
│   │       │   │   ├── __init__.py
│   │       │   │   └── test_api_integration.py
│   │       │   ├── test_runner.py
│   │       │   └── unit/
│   │       │       ├── __init__.py
│   │       │       ├── api/
│   │       │       │   ├── schemas/
│   │       │       │   │   └── test_execution_schema.py
│   │       │       │   ├── test_app.py
│   │       │       │   ├── test_router.py
│   │       │       │   └── v1/
│   │       │       │       ├── test_execution.py
│   │       │       │       └── test_health_check.py
│   │       │       ├── consts/
│   │       │       │   └── test_const.py
│   │       │       ├── errors/
│   │       │       │   └── test_error_code.py
│   │       │       ├── exceptions/
│   │       │       │   └── test_config_exceptions.py
│   │       │       ├── infra/
│   │       │       │   └── xiaowu/
│   │       │       │       └── test_tasks.py
│   │       │       ├── service/
│   │       │       │   └── xiaowu/
│   │       │       │       └── test_process.py
│   │       │       ├── test_main.py
│   │       │       └── utils/
│   │       │           ├── log/
│   │       │           │   └── test_logger.py
│   │       │           └── urls/
│   │       │               └── test_url_util.py
│   │       └── utils/
│   │           ├── __init__.py
│   │           ├── log/
│   │           │   └── logger.py
│   │           └── urls/
│   │               └── url_util.py
│   ├── tenant/
│   │   ├── .gitkeep
│   │   ├── Dockerfile
│   │   ├── app/
│   │   │   └── server.go
│   │   ├── config/
│   │   │   ├── config.go
│   │   │   ├── config_test.go
│   │   │   ├── env_loader.go
│   │   │   ├── env_loader_test.go
│   │   │   ├── loader.go
│   │   │   ├── loader_test.go
│   │   │   ├── local_loader.go
│   │   │   └── local_loader_test.go
│   │   ├── config.toml
│   │   ├── go.mod
│   │   ├── go.sum
│   │   ├── internal/
│   │   │   ├── dao/
│   │   │   │   ├── app_dao.go
│   │   │   │   ├── app_dao_test.go
│   │   │   │   ├── auth_dao.go
│   │   │   │   ├── auth_dao_test.go
│   │   │   │   ├── base.go
│   │   │   │   └── base_test.go
│   │   │   ├── handler/
│   │   │   │   ├── app_handler.go
│   │   │   │   ├── app_handler_test.go
│   │   │   │   ├── auth_handler.go
│   │   │   │   ├── auth_handler_test.go
│   │   │   │   ├── errors.go
│   │   │   │   ├── errors_test.go
│   │   │   │   ├── req.go
│   │   │   │   ├── req_test.go
│   │   │   │   ├── resp.go
│   │   │   │   ├── resp_test.go
│   │   │   │   ├── router.go
│   │   │   │   └── router_test.go
│   │   │   ├── models/
│   │   │   │   ├── app.go
│   │   │   │   └── auth.go
│   │   │   └── service/
│   │   │       ├── app_service.
Download .txt
Showing preview only (1,348K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (14501 symbols across 2208 files)

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/aspect/RateLimitAspect.java
  class RateLimitAspect (line 29) | @Aspect
    method checkRateLimit (line 44) | @Before("@annotation(com.iflytek.astron.console.commons.annotation.Rat...
    method getRateLimitConfig (line 67) | private RateLimitConfig getRateLimitConfig(RateLimit rateLimit) {
    method checkAndApplyRateLimit (line 75) | private void checkAndApplyRateLimit(String key, RateLimitConfig config) {
    class RateLimitConfig (line 87) | private static class RateLimitConfig {
      method RateLimitConfig (line 91) | RateLimitConfig(int window, int limit) {
    method buildRateLimitKey (line 100) | private String buildRateLimitKey(JoinPoint joinPoint, HttpServletReque...
    method getKeyPart (line 124) | private String getKeyPart(JoinPoint joinPoint, RateLimit rateLimit) {
    method getClientIpAddress (line 139) | private String getClientIpAddress(HttpServletRequest request) {
    method getClientIdentifier (line 156) | private String getClientIdentifier(HttpServletRequest request) {
    method getUserIdFromContext (line 176) | private String getUserIdFromContext() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/aspect/space/EnterpriseAuthAspect.java
  class EnterpriseAuthAspect (line 21) | @Aspect
    method annotatedMethod (line 30) | @Pointcut("@annotation(com.iflytek.astron.console.commons.annotation.s...
    method interceptAnnotatedMethod (line 33) | @Around("annotatedMethod()")
    method checkAuth (line 69) | private boolean checkAuth(EnterpriseRoleEnum roleEnum, EnterprisePermi...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/aspect/space/PermissionValidator.java
  class PermissionValidator (line 25) | @Component
    method onApplicationEvent (line 38) | @Override
    method validateSpacePermission (line 44) | private void validateSpacePermission() {
    method validateSpacePermissionKeys (line 50) | private void validateSpacePermissionKeys(List<Method> methodList) {
    method processSpacePermissions (line 65) | private void processSpacePermissions(List<Method> methodList) {
    method handleMissingSpacePermissions (line 77) | private void handleMissingSpacePermissions(Set<String> keys, List<Stri...
    method insertMissingSpacePermissions (line 85) | private void insertMissingSpacePermissions(Set<String> keys, List<Stri...
    method throwSpacePermissionError (line 107) | private void throwSpacePermissionError(Set<String> keys, List<String> ...
    method validateEnterprisePermission (line 117) | private void validateEnterprisePermission() {
    method validateEnterprisePermissionKeys (line 123) | private void validateEnterprisePermissionKeys(List<Method> methodList) {
    method processEnterprisePermissions (line 138) | private void processEnterprisePermissions(List<Method> methodList) {
    method handleMissingEnterprisePermissions (line 150) | private void handleMissingEnterprisePermissions(Set<String> keys, List...
    method insertMissingEnterprisePermissions (line 158) | private void insertMissingEnterprisePermissions(Set<String> keys, List...
    method throwEnterprisePermissionError (line 179) | private void throwEnterprisePermissionError(Set<String> keys, List<Str...
    method getMethodsWithAnnotation (line 189) | public List<Method> getMethodsWithAnnotation(Class<? extends Annotatio...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/aspect/space/SpaceAuthAspect.java
  class SpaceAuthAspect (line 22) | @Aspect
    method annotatedMethod (line 30) | @Pointcut("@annotation(com.iflytek.astron.console.commons.annotation.s...
    method interceptAnnotatedMethod (line 33) | @Around("annotatedMethod()")
    method response (line 70) | private Object response(ResponseEnum responseEnum, MethodSignature sig...
    method checkAuth (line 78) | private boolean checkAuth(SpaceRoleEnum roleEnum, SpacePermission perm...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/config/JwtClaimsFilter.java
  class JwtClaimsFilter (line 21) | @Component
    method doFilterInternal (line 35) | @Override
    method createOrGetUserFromJwt (line 69) | private UserInfo createOrGetUserFromJwt(JwtInfoDto jwtInfoDto) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/constant/RedisKeyConstant.java
  class RedisKeyConstant (line 6) | public class RedisKeyConstant {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/constant/ResponseEnum.java
  type ResponseEnum (line 8) | public enum ResponseEnum {
    method ResponseEnum (line 433) | ResponseEnum(int code, String messageKey) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/data/UserInfoDataService.java
  type UserInfoDataService (line 11) | public interface UserInfoDataService {
    method findByUid (line 14) | Optional<UserInfo> findByUid(String uid);
    method findByUsername (line 17) | Optional<UserInfo> findByUsername(String username);
    method findUsersByMobile (line 20) | List<UserInfo> findUsersByMobile(String mobile);
    method findUsersByUsername (line 23) | List<UserInfo> findUsersByUsername(String username);
    method findUsersByMobiles (line 26) | List<UserInfo> findUsersByMobiles(Collection<String> mobile);
    method findUsersByUsernames (line 29) | List<UserInfo> findUsersByUsernames(Collection<String> usernames);
    method findByNicknameLike (line 32) | List<UserInfo> findByNicknameLike(String nickname);
    method findByAccountStatus (line 35) | List<UserInfo> findByAccountStatus(Integer accountStatus);
    method findActiveUsers (line 38) | List<UserInfo> findActiveUsers();
    method createOrGetUser (line 47) | UserInfo createOrGetUser(UserInfo userInfo);
    method deleteUser (line 50) | boolean deleteUser(Long id);
    method updateAccountStatus (line 53) | boolean updateAccountStatus(String uid, int accountStatus);
    method updateUserAgreement (line 56) | boolean updateUserAgreement(String uid, int userAgreement);
    method findByUids (line 59) | List<UserInfo> findByUids(Collection<String> uids);
    method existsByUsername (line 62) | boolean existsByUsername(String username);
    method existsByMobile (line 65) | boolean existsByMobile(String mobile);
    method existsByUid (line 68) | boolean existsByUid(String uid);
    method countUsers (line 71) | long countUsers();
    method countByAccountStatus (line 74) | long countByAccountStatus(Integer accountStatus);
    method findUsersByPage (line 77) | List<UserInfo> findUsersByPage(int page, int size);
    method findUsersByCondition (line 80) | List<UserInfo> findUsersByCondition(String username, String mobile, In...
    method getCurrentUserInfo (line 83) | UserInfo getCurrentUserInfo();
    method updateUserBasicInfo (line 86) | UserInfo updateUserBasicInfo(String uid, String username, String nickn...
    method updateCurrentUserBasicInfo (line 89) | UserInfo updateCurrentUserBasicInfo(String nickname, String avatar);
    method agreeUserAgreement (line 92) | boolean agreeUserAgreement();
    method updateUserEnterpriseServiceType (line 95) | boolean updateUserEnterpriseServiceType(String uid, EnterpriseServiceT...
    method activateUser (line 98) | boolean activateUser(String uid);
    method freezeUser (line 101) | boolean freezeUser(String uid);
    method findUsersByTimeRange (line 104) | List<UserInfo> findUsersByTimeRange(java.time.LocalDateTime startTime,...
    method findRecentUsers (line 107) | List<UserInfo> findRecentUsers(int limit);
    method findNickNameByUid (line 109) | Optional<String> findNickNameByUid(String uid);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/data/impl/UserInfoDataServiceImpl.java
  class UserInfoDataServiceImpl (line 28) | @Service
    method findByUid (line 61) | @Override
    method findByUsername (line 73) | @Override
    method findUsersByMobile (line 85) | @Override
    method findUsersByUsername (line 95) | @Override
    method findUsersByMobiles (line 106) | @Override
    method findUsersByUsernames (line 116) | @Override
    method findByNicknameLike (line 126) | @Override
    method findByAccountStatus (line 136) | @Override
    method findActiveUsers (line 146) | @Override
    method createOrGetUser (line 153) | @Override
    method generateRandomNickname (line 220) | private String generateRandomNickname() {
    method deleteUser (line 236) | @Override
    method updateAccountStatus (line 245) | @Override
    method updateUserAgreement (line 256) | @Override
    method findByUids (line 267) | @Override
    method existsByUsername (line 277) | @Override
    method existsByMobile (line 287) | @Override
    method existsByUid (line 297) | @Override
    method countUsers (line 307) | @Override
    method countByAccountStatus (line 312) | @Override
    method findUsersByPage (line 322) | @Override
    method findUsersByCondition (line 335) | @Override
    method getCurrentUserInfo (line 362) | @Override
    method updateUserBasicInfo (line 368) | @Override
    method updateCurrentUserBasicInfo (line 407) | @Override
    method agreeUserAgreement (line 438) | @Override
    method updateUserEnterpriseServiceType (line 444) | @Override
    method activateUser (line 455) | @Override
    method freezeUser (line 460) | @Override
    method findUsersByTimeRange (line 465) | @Override
    method findRecentUsers (line 477) | @Override
    method findNickNameByUid (line 489) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/AdvancedConfig.java
  class AdvancedConfig (line 9) | @Data
    class TextToSpeech (line 20) | @Data
    class Prologue (line 30) | @Data
    method AdvancedConfig (line 42) | public AdvancedConfig(String prologueText, List<String> inputExample, ...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotCloneWorkflowDto.java
  class BotCloneWorkflowDto (line 5) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotCreateForm.java
  class BotCreateForm (line 10) | @Data
    class PromptStruct (line 157) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotDetail.java
  class BotDetail (line 13) | @Data
    method parseInputExampleList (line 59) | public void parseInputExampleList() {
    method parseInputExamples (line 66) | private List<String> parseInputExamples(String inputExample) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotFavoriteItemDto.java
  class BotFavoriteItemDto (line 9) | @Data
    method BotFavoriteItemDto (line 33) | public BotFavoriteItemDto() {}
    method BotFavoriteItemDto (line 35) | public BotFavoriteItemDto(Integer addStatus, String creator, ChatBotMa...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotFavoritePageDto.java
  class BotFavoritePageDto (line 11) | @Data
    method BotFavoritePageDto (line 23) | public BotFavoritePageDto() {}
    method BotFavoritePageDto (line 25) | public BotFavoritePageDto(Long total, List<BotFavoriteItemDto> pageLis...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotFavoriteQueryDto.java
  class BotFavoriteQueryDto (line 9) | @Data
    method BotFavoriteQueryDto (line 25) | public BotFavoriteQueryDto() {}
    method BotFavoriteQueryDto (line 27) | public BotFavoriteQueryDto(String uid, Integer offset, Integer pageSiz...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotInfoDto.java
  class BotInfoDto (line 9) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotListRequestDto.java
  class BotListRequestDto (line 23) | @Data
    method getPublishStatusList (line 144) | @JsonIgnore

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotMarketForm.java
  class BotMarketForm (line 8) | @Data
    method getBotTypeMulti (line 55) | public String getBotTypeMulti() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotModelDto.java
  class BotModelDto (line 8) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotPublishQueryResult.java
  class BotPublishQueryResult (line 16) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotQueryCondition.java
  class BotQueryCondition (line 24) | @Data
    method getSafeSortField (line 83) | public String getSafeSortField() {
    method getSafeSortDirection (line 107) | public String getSafeSortDirection() {
    method hasKeyword (line 117) | public boolean hasKeyword() {
    method hasPublishStatus (line 124) | public boolean hasPublishStatus() {
    method getPublishStatus (line 131) | public List<Integer> getPublishStatus() {
    method validate (line 138) | public void validate() {
    method toQueryParams (line 150) | public Map<String, Object> toQueryParams() {
    method from (line 197) | public static BotQueryCondition from(BotListRequestDto requestDto, Str...
    method normalizeKeyword (line 212) | private static String normalizeKeyword(String keyword) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotTag.java
  class BotTag (line 9) | @AllArgsConstructor
    method equals (line 15) | @Override
    method hashCode (line 26) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/ChatBotApi.java
  class ChatBotApi (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/ChatBotMarketPage.java
  class ChatBotMarketPage (line 13) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/ChatBotReqDto.java
  class ChatBotReqDto (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/DebugChatBotReqDto.java
  class DebugChatBotReqDto (line 14) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/PersonalityConfigDto.java
  class PersonalityConfigDto (line 9) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/PromptBotDetail.java
  class PromptBotDetail (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentConfigDto.java
  class TalkAgentConfigDto (line 5) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentCreateDto.java
  class TalkAgentCreateDto (line 6) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentHistoryDto.java
  class TalkAgentHistoryDto (line 6) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentSceneDto.java
  class TalkAgentSceneDto (line 9) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentUpgradeDto.java
  class TalkAgentUpgradeDto (line 6) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatBotListDto.java
  class ChatBotListDto (line 21) | @Data
    method getClientHide (line 107) | public String getClientHide() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatContentMeta.java
  class ChatContentMeta (line 11) | @Data
    method ChatContentMeta (line 24) | public ChatContentMeta(String ocr, String desc, boolean url) {
    method ChatContentMeta (line 30) | public ChatContentMeta(String ocr, String desc, boolean url, String da...
    method ChatContentMeta (line 37) | public ChatContentMeta(String ocr, String desc, boolean url, String da...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatFileReq.java
  class ChatFileReq (line 15) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatListCreateRequest.java
  class ChatListCreateRequest (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatListCreateResponse.java
  class ChatListCreateResponse (line 14) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatListDelRequest.java
  class ChatListDelRequest (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatListResponseDto.java
  class ChatListResponseDto (line 16) | @Getter
    method getClientHide (line 128) | public String getClientHide() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatModelMeta.java
  class ChatModelMeta (line 9) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatReqModelDto.java
  class ChatReqModelDto (line 11) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatRequestDto.java
  class ChatRequestDto (line 17) | @Data
    method ChatRequestDto (line 35) | public ChatRequestDto(String role, T content) {
    method ChatRequestDto (line 42) | public ChatRequestDto(String role, ChatContentMeta contentMeta) {
    method ChatRequestDto (line 47) | public ChatRequestDto(String role, T content, ChatContentMeta contentM...
    method ChatRequestDto (line 53) | public ChatRequestDto(String role, T content, String image) {
    method ChatRequestDto (line 59) | public ChatRequestDto(String role, T content, String image, ChatConten...
    method ChatRequestDto (line 66) | public ChatRequestDto(String role, T content, List<Object> plugins) {
    method gotContentString (line 77) | public String gotContentString() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatRequestDtoList.java
  class ChatRequestDtoList (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatRespModelDto.java
  class ChatRespModelDto (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/dataset/DatasetStats.java
  class DatasetStats (line 5) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/llm/ChatCompletionRequest.java
  class ChatCompletionRequest (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/llm/ChatCompletionResponse.java
  class ChatCompletionResponse (line 10) | @Data
    class Choice (line 34) | @Data
    class Usage (line 51) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/llm/ChatMessage.java
  class ChatMessage (line 9) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/llm/SparkChatRequest.java
  class SparkChatRequest (line 10) | @Data
    class MessageDto (line 36) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/ApplyRecordParam.java
  class ApplyRecordParam (line 7) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/ApplyRecordVO.java
  class ApplyRecordVO (line 13) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/BatchChatUserVO.java
  class BatchChatUserVO (line 8) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/ChatUserVO.java
  class ChatUserVO (line 6) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseAddDTO.java
  class EnterpriseAddDTO (line 8) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseSpaceCountVO.java
  class EnterpriseSpaceCountVO (line 6) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseUserParam.java
  class EnterpriseUserParam (line 7) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseUserVO.java
  class EnterpriseUserVO (line 13) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseVO.java
  class EnterpriseVO (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/InviteRecordAddDTO.java
  class InviteRecordAddDTO (line 8) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/InviteRecordParam.java
  class InviteRecordParam (line 7) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/InviteRecordVO.java
  class InviteRecordVO (line 13) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/PageParam.java
  class PageParam (line 8) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceAddDTO.java
  class SpaceAddDTO (line 8) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceUpdateDTO.java
  class SpaceUpdateDTO (line 9) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceUserParam.java
  class SpaceUserParam (line 7) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceUserVO.java
  class SpaceUserVO (line 13) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceVO.java
  class SpaceVO (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/UserLimitVO.java
  class UserLimitVO (line 6) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/user/BotDataParam.java
  class BotDataParam (line 8) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/vcn/CustomV2VCNDTO.java
  class CustomV2VCNDTO (line 5) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/CloneSynchronize.java
  class CloneSynchronize (line 5) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/MaasApi.java
  class MaasApi (line 8) | @Data
    method MaasApi (line 29) | public MaasApi(String flow_id, String app_id) {
    method MaasApi (line 36) | public MaasApi(String flow_id, String app_id, String version) {
    method MaasApi (line 44) | public MaasApi(String flow_id, String app_id, String version, JSONObje...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowApiRequest.java
  class WorkflowApiRequest (line 9) | @Data
    method WorkflowApiRequest (line 24) | public WorkflowApiRequest(String flowId, String uid, JSONObject input,...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowChatRequest.java
  class WorkflowChatRequest (line 15) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowEventData.java
  class WorkflowEventData (line 13) | @Data
    class EventValue (line 42) | @Data
      method withType (line 65) | public EventValue withType(String type) {
      method withMessage (line 77) | public EventValue withMessage(String message) {
      method withContent (line 89) | public EventValue withContent(String content) {
      class ValueOption (line 101) | @Data
    type WorkflowValueType (line 113) | @Getter
      method getTag (line 135) | public static String getTag(String type) {
    type WorkflowOperation (line 148) | @Getter
      method getDisplayOperation (line 180) | public static Map<String, String> getDisplayOperation(boolean needRe...
      method resumeDial (line 198) | public static boolean resumeDial(String workflowOperation) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowInfoDto.java
  class WorkflowInfoDto (line 13) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowInputTypeDto.java
  class WorkflowInputTypeDto (line 14) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowInputsResponseDto.java
  class WorkflowInputsResponseDto (line 15) | @Data
    class InputParameter (line 25) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowResumeReq.java
  class WorkflowResumeReq (line 11) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowResumeRequest.java
  class WorkflowResumeRequest (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotChatFileParam.java
  class BotChatFileParam (line 20) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotDataset.java
  class BotDataset (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotFavorite.java
  class BotFavorite (line 15) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotTemplate.java
  class BotTemplate (line 19) | @Data
    method getInputExampleList (line 63) | public List<String> getInputExampleList() {
    method getPromptStructList (line 77) | public List<PromptStruct> getPromptStructList() {
    class PromptStruct (line 91) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotTypeList.java
  class BotTypeList (line 12) | @Data
    method getParentTypeKey (line 47) | public static Integer getParentTypeKey(Integer botType) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotBase.java
  class ChatBotBase (line 15) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotList.java
  class ChatBotList (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotMarket.java
  class ChatBotMarket (line 11) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotPromptStruct.java
  class ChatBotPromptStruct (line 13) | @NoArgsConstructor
    method ChatBotPromptStruct (line 41) | public ChatBotPromptStruct(String promptKey, String promptValue) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotTag.java
  class ChatBotTag (line 16) | @TableName("chat_bot_tag")

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/DatasetFile.java
  class DatasetFile (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/DatasetInfo.java
  class DatasetInfo (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/TakeoffList.java
  class TakeoffList (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/UserLangChainInfo.java
  class UserLangChainInfo (line 18) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/UserLangChainLog.java
  class UserLangChainLog (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatFileUser.java
  class ChatFileUser (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatList.java
  class ChatList (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatReanwserRecords.java
  class ChatReanwserRecords (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatReasonRecords.java
  class ChatReasonRecords (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatReqModel.java
  class ChatReqModel (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatReqRecords.java
  class ChatReqRecords (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatRespAlltoolData.java
  class ChatRespAlltoolData (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatRespModel.java
  class ChatRespModel (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatRespRecords.java
  class ChatRespRecords (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatTokenRecords.java
  class ChatTokenRecords (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatTraceSource.java
  class ChatTraceSource (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatTreeIndex.java
  class ChatTreeIndex (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/dataset/BotDatasetMaas.java
  class BotDatasetMaas (line 11) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/model/McpData.java
  class McpData (line 20) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/AgentShareRecord.java
  class AgentShareRecord (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/ApplyRecord.java
  class ApplyRecord (line 10) | @Data
    type Status (line 48) | public enum Status {
      method Status (line 59) | Status(Integer code, String desc) {
      method getCode (line 64) | public Integer getCode() {
      method getDesc (line 68) | public String getDesc() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/Enterprise.java
  class Enterprise (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/EnterprisePermission.java
  class EnterprisePermission (line 16) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/EnterpriseUser.java
  class EnterpriseUser (line 16) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/InviteRecord.java
  class InviteRecord (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/Space.java
  class Space (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/SpacePermission.java
  class SpacePermission (line 16) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/SpaceUser.java
  class SpaceUser (line 12) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/user/AppMst.java
  class AppMst (line 17) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/user/UserInfo.java
  class UserInfo (line 13) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/wechat/BotOffiaccount.java
  class BotOffiaccount (line 19) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/workflow/Workflow.java
  class Workflow (line 10) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/BotOffiaccountStatusEnum.java
  type BotOffiaccountStatusEnum (line 10) | @Getter
    method BotOffiaccountStatusEnum (line 33) | BotOffiaccountStatusEnum(Integer status, String desc) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/PublishChannelEnum.java
  type PublishChannelEnum (line 10) | @Getter
    method PublishChannelEnum (line 43) | PublishChannelEnum(String code, String description) {
    method fromCode (line 54) | public static PublishChannelEnum fromCode(String code) {
    method isValidCode (line 72) | public static boolean isValidCode(String code) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/ShelfStatusEnum.java
  type ShelfStatusEnum (line 9) | @Getter
    method getByCode (line 32) | public static ShelfStatusEnum getByCode(Integer code) {
    method isOnShelf (line 50) | public static boolean isOnShelf(Integer code) {
    method isOffShelf (line 60) | public static boolean isOffShelf(Integer code) {
    method isPublishAction (line 70) | public static boolean isPublishAction(String action) {
    method isOfflineAction (line 80) | public static boolean isOfflineAction(String action) {
    method getTargetStatusByAction (line 90) | public static ShelfStatusEnum getTargetStatusByAction(String action) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/BotStatusEnum.java
  type BotStatusEnum (line 6) | public enum BotStatusEnum {
    method BotStatusEnum (line 15) | BotStatusEnum(int code) {
    method getCode (line 19) | public int getCode() {
    method shelves (line 23) | public static List<Integer> shelves() {
    method getByCode (line 28) | public static BotStatusEnum getByCode(Integer status) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/BotTypeEnum.java
  type BotTypeEnum (line 6) | public enum BotTypeEnum {
    method BotTypeEnum (line 16) | BotTypeEnum(Integer type, String desc) {
    method getType (line 21) | public Integer getType() {
    method getDesc (line 25) | public String getDesc() {
    method getByType (line 32) | public static BotTypeEnum getByType(Integer type) {
    method isWorkflowBot (line 47) | public static boolean isWorkflowBot(Integer type) {
    method isTalkBot (line 54) | public static boolean isTalkBot(Integer type) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/BotUploadEnum.java
  type BotUploadEnum (line 5) | public enum BotUploadEnum {
    method BotUploadEnum (line 33) | BotUploadEnum(String icon, String tip, String accept, int value, int b...
    method getValue (line 42) | public int getValue() {
    method getAccept (line 46) | public String getAccept() {
    method getByValue (line 51) | public static BotUploadEnum getByValue(int value) {
    method toJSONObject (line 61) | public JSONObject toJSONObject() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/BotVersionEnum.java
  type BotVersionEnum (line 9) | @Getter
    method BotVersionEnum (line 18) | BotVersionEnum(Integer version, String desc) {
    method isBaseBot (line 23) | public static boolean isBaseBot(Integer version) {
    method isWorkflow (line 32) | public static boolean isWorkflow(Integer version) {
    method isTalkAgent (line 40) | public static boolean isTalkAgent(Integer version) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/DefaultBotModelEnum.java
  type DefaultBotModelEnum (line 8) | public enum DefaultBotModelEnum {
    method DefaultBotModelEnum (line 16) | DefaultBotModelEnum(String nameKey, String domain, String icon) {
    method getName (line 22) | public String getName() {
    method getDomain (line 26) | public String getDomain() {
    method getIcon (line 30) | public String getIcon() {
    method getByDomain (line 40) | public static DefaultBotModelEnum getByDomain(String domain) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/ReleaseTypeEnum.java
  type ReleaseTypeEnum (line 3) | public enum ReleaseTypeEnum {
    method getCode (line 20) | public Integer getCode() {
    method getDesc (line 24) | public String getDesc() {
    method getByName (line 31) | public static ReleaseTypeEnum getByName(String name) {
    method ReleaseTypeEnum (line 43) | ReleaseTypeEnum(Integer code, String desc) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/space/EnterpriseRoleEnum.java
  type EnterpriseRoleEnum (line 3) | public enum EnterpriseRoleEnum {
    method EnterpriseRoleEnum (line 13) | EnterpriseRoleEnum(Integer code, String desc) {
    method getByCode (line 18) | public static EnterpriseRoleEnum getByCode(Integer code) {
    method getCode (line 27) | public Integer getCode() {
    method getDesc (line 31) | public String getDesc() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/space/EnterpriseServiceTypeEnum.java
  type EnterpriseServiceTypeEnum (line 5) | public enum EnterpriseServiceTypeEnum {
    method EnterpriseServiceTypeEnum (line 15) | EnterpriseServiceTypeEnum(Integer code, String desc) {
    method getCode (line 20) | public Integer getCode() {
    method getDesc (line 24) | public String getDesc() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/space/InviteRecordRoleEnum.java
  type InviteRecordRoleEnum (line 3) | public enum InviteRecordRoleEnum {
    method InviteRecordRoleEnum (line 12) | InviteRecordRoleEnum(Integer code, String desc) {
    method getByCode (line 17) | public static InviteRecordRoleEnum getByCode(Integer code) {
    method getCode (line 26) | public Integer getCode() {
    method getDesc (line 30) | public String getDesc() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/space/InviteRecordStatusEnum.java
  type InviteRecordStatusEnum (line 3) | public enum InviteRecordStatusEnum {
    method InviteRecordStatusEnum (line 16) | InviteRecordStatusEnum(Integer code, String desc) {
    method getCode (line 21) | public Integer getCode() {
    method getDesc (line 25) | public String getDesc() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/space/InviteRecordTypeEnum.java
  type InviteRecordTypeEnum (line 4) | public enum InviteRecordTypeEnum {
    method InviteRecordTypeEnum (line 14) | InviteRecordTypeEnum(Integer code, String desc) {
    method getCode (line 19) | public Integer getCode() {
    method getDesc (line 23) | public String getDesc() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/space/SpaceRoleEnum.java
  type SpaceRoleEnum (line 3) | public enum SpaceRoleEnum {
    method getByCode (line 11) | public static SpaceRoleEnum getByCode(Integer code) {
    method SpaceRoleEnum (line 20) | SpaceRoleEnum(Integer code, String desc) {
    method getCode (line 25) | public Integer getCode() {
    method getDesc (line 29) | public String getDesc() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/space/SpaceTypeEnum.java
  type SpaceTypeEnum (line 5) | public enum SpaceTypeEnum {
    method SpaceTypeEnum (line 14) | SpaceTypeEnum(Integer code, String desc) {
    method getByCode (line 19) | public static SpaceTypeEnum getByCode(Integer code) {
    method isTeam (line 32) | public boolean isTeam() {
    method getCode (line 37) | public Integer getCode() {
    method getDesc (line 41) | public String getDesc() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/user/WordsTypeEnum.java
  type WordsTypeEnum (line 5) | public enum WordsTypeEnum {
    method WordsTypeEnum (line 13) | WordsTypeEnum(int code, String description) {
    method getCode (line 23) | public int getCode() {
    method getDescription (line 32) | public String getDescription() {
    method getByCode (line 42) | public static WordsTypeEnum getByCode(int code) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/event/UserNicknameUpdatedEvent.java
  class UserNicknameUpdatedEvent (line 6) | @Getter
    method UserNicknameUpdatedEvent (line 15) | public UserNicknameUpdatedEvent(Object source, String uid, String oldN...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/exception/BusinessException.java
  class BusinessException (line 8) | @Getter
    method BusinessException (line 16) | public BusinessException(ResponseEnum responseEnum) {
    method BusinessException (line 24) | public BusinessException(ResponseEnum responseEnum, String... args) {
    method BusinessException (line 32) | public BusinessException(ResponseEnum responseEnum, Throwable cause, S...
    method formatMessage (line 40) | private static String formatMessage(String template, String... args) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/listener/UserNicknameUpdateEventListener.java
  class UserNicknameUpdateEventListener (line 18) | @Component
    method handleUserNicknameUpdated (line 28) | @EventListener
    method updateEnterpriseUserNickname (line 56) | private void updateEnterpriseUserNickname(String uid, String newNickna...
    method updateSpaceUserNickname (line 71) | private void updateSpaceUserNickname(String uid, String newNickname) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/AgentShareRecordMapper.java
  type AgentShareRecordMapper (line 7) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/UserLangChainInfoMapper.java
  type UserLangChainInfoMapper (line 10) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/UserLangChainLogMapper.java
  type UserLangChainLogMapper (line 7) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/BotDatasetMapper.java
  type BotDatasetMapper (line 11) | @Mapper
    method selectDatasetListByBotId (line 13) | List<DatasetInfo> selectDatasetListByBotId(@Param("botId") Integer bot...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/BotFavoriteMapper.java
  type BotFavoriteMapper (line 10) | public interface BotFavoriteMapper extends BaseMapper<BotFavorite> {
    method selectBotPage (line 12) | LinkedList<ChatBotMarketPage> selectBotPage(BotFavoriteQueryDto queryD...
    method countBotPage (line 14) | Long countBotPage(BotFavoriteQueryDto queryDto);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/BotTemplateMapper.java
  type BotTemplateMapper (line 13) | @Mapper
    method selectListByLanguage (line 19) | @Select("SELECT * FROM bot_template WHERE language = #{language} ORDER...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/BotTypeListMapper.java
  type BotTypeListMapper (line 10) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/ChatBotApiMapper.java
  type ChatBotApiMapper (line 10) | @Mapper
    method selectListWithVersion (line 13) | List<ChatBotApi> selectListWithVersion(@Param(value = "uid") String uid);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/ChatBotBaseMapper.java
  type ChatBotBaseMapper (line 11) | @Mapper
    method botDetail (line 13) | BotDetail botDetail(Integer botId);
    method selectByBotIds (line 15) | List<ChatBotBase> selectByBotIds(@Param("botIds") List<Long> botIds);
    method checkBotPermission (line 25) | int checkBotPermission(@Param("botId") Integer botId,
    method checkBotPermission (line 37) | default int checkBotPermission(Long botId, String uid, Long spaceId) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/ChatBotListMapper.java
  type ChatBotListMapper (line 11) | @Mapper
    method countCheckBotList (line 14) | Long countCheckBotList(Map<String, Object> map);
    method getCheckBotList (line 16) | LinkedList<Map<String, Object>> getCheckBotList(Map<String, Object> map);
    method baseBotInsert (line 18) | void baseBotInsert(ChatBotBase botBase);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/ChatBotMarketMapper.java
  type ChatBotMarketMapper (line 16) | @Mapper
    method selectByBotIds (line 19) | List<ChatBotMarket> selectByBotIds(@Param("botIds") List<Long> botIds);
    method selectBotListByConditions (line 29) | Page<BotPublishQueryResult> selectBotListByConditions(
    method selectBotDetail (line 41) | BotPublishQueryResult selectBotDetail(
    method updatePublishStatus (line 56) | int updatePublishStatus(

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/ChatBotPromptStructMapper.java
  type ChatBotPromptStructMapper (line 6) | public interface ChatBotPromptStructMapper extends BaseMapper<ChatBotPro...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/ChatBotTagMapper.java
  type ChatBotTagMapper (line 6) | public interface ChatBotTagMapper extends BaseMapper<ChatBotTag> {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/DatasetFileMapper.java
  type DatasetFileMapper (line 7) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/bot/DatasetInfoMapper.java
  type DatasetInfoMapper (line 7) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/chat/ChatListMapper.java
  type ChatListMapper (line 12) | @Mapper
    method getBotChatList (line 15) | @Select("""

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/chat/ChatTreeIndexMapper.java
  type ChatTreeIndexMapper (line 11) | @Mapper
    method getAllListByChildChatId (line 21) | @Select("""

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/dataset/BotDatasetMaasMapper.java
  type BotDatasetMaasMapper (line 10) | public interface BotDatasetMaasMapper extends BaseMapper<BotDatasetMaas> {
    method selectBotStatsMaps (line 12) | List<DatasetStats> selectBotStatsMaps(@Param("datasetIds") List<Long> ...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/model/McpDataMapper.java
  type McpDataMapper (line 13) | @Mapper
    method selectLatestByBotId (line 22) | McpData selectLatestByBotId(@Param("botId") Integer botId);
    method selectByUid (line 30) | List<McpData> selectByUid(@Param("uid") String uid);
    method checkMcpExists (line 39) | int checkMcpExists(@Param("botId") Integer botId, @Param("versionName"...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/space/ApplyRecordMapper.java
  type ApplyRecordMapper (line 10) | @Mapper
    method selectVOPageByParam (line 12) | Page<ApplyRecordVO> selectVOPageByParam(Page<ApplyRecord> page,

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/space/EnterpriseMapper.java
  type EnterpriseMapper (line 10) | @Mapper
    method selectByJoinUid (line 12) | List<EnterpriseVO> selectByJoinUid(String joinUid);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/space/EnterprisePermissionMapper.java
  type EnterprisePermissionMapper (line 7) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/space/EnterpriseUserMapper.java
  type EnterpriseUserMapper (line 10) | @Mapper
    method selectByUidAndEnterpriseId (line 13) | EnterpriseUser selectByUidAndEnterpriseId(String uid, Long enterpriseId);
    method selectVOPageByParam (line 15) | Page<EnterpriseUserVO> selectVOPageByParam(Page<EnterpriseUser> page,

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/space/InviteRecordMapper.java
  type InviteRecordMapper (line 10) | @Mapper
    method selectVOById (line 13) | InviteRecordVO selectVOById(Long id);
    method selectVOPageByParam (line 15) | Page<InviteRecordVO> selectVOPageByParam(Page<InviteRecord> page,
    method countJoiningByEnterpriseId (line 22) | Long countJoiningByEnterpriseId(@Param("enterpriseId") Long enterprise...
    method countJoiningBySpaceId (line 24) | Long countJoiningBySpaceId(@Param("spaceId") Long spaceId);
    method countJoiningByUid (line 26) | Long countJoiningByUid(@Param("uid") String uid, @Param("spaceType") I...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/space/SpaceMapper.java
  type SpaceMapper (line 12) | @Mapper
    method recentVisitList (line 15) | List<SpaceVO> recentVisitList(@Param("uid") String uid, @Param("enterp...
    method joinList (line 17) | List<SpaceVO> joinList(@Param("uid") String uid, @Param("enterpriseId"...
    method selfList (line 20) | List<SpaceVO> selfList(@Param("uid") String uid, @Param("role") Intege...
    method corporateList (line 23) | List<SpaceVO> corporateList(@Param("uid") String uid, @Param("enterpri...
    method getByUidAndId (line 26) | SpaceVO getByUidAndId(@Param("uid") String uid, @Param("spaceId") Long...
    method corporateCount (line 28) | EnterpriseSpaceCountVO corporateCount(@Param("uid") String uid, @Param...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/space/SpacePermissionMapper.java
  type SpacePermissionMapper (line 7) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/space/SpaceUserMapper.java
  type SpaceUserMapper (line 10) | @Mapper
    method countPersonalSpaceUser (line 13) | Long countPersonalSpaceUser(@Param("uid") String uid, @Param("role") I...
    method getByUidAndSpaceId (line 15) | SpaceUser getByUidAndSpaceId(@Param("uid") String uid, @Param("spaceId...
    method selectVOPageByParam (line 17) | Page<SpaceUserVO> selectVOPageByParam(Page<SpaceUser> page,

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/user/AppMstMapper.java
  type AppMstMapper (line 10) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/user/UserInfoMapper.java
  type UserInfoMapper (line 7) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/vcn/CustomVCNMapper.java
  type CustomVCNMapper (line 6) | public interface CustomVCNMapper {
    method getVcnByCode (line 8) | CustomV2VCNDTO getVcnByCode(@Param("vcnCode") String vcnCode);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/mapper/wechat/BotOffiaccountMapper.java
  type BotOffiaccountMapper (line 12) | @Mapper

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/response/ApiResult.java
  method of (line 10) | public static <T> ApiResult<T> of(ResponseEnum responseEnum, T data) {
  method success (line 19) | public static <T> ApiResult<T> success(T data) {
  method success (line 24) | public static <T> ApiResult<T> success() {
  method error (line 29) | public static <T> ApiResult<T> error(ResponseEnum responseEnum) {
  method error (line 37) | public static <T> ApiResult<T> error(ResponseEnum responseEnum, String.....
  method error (line 45) | public static <T> ApiResult<T> error(BusinessException e) {
  method error (line 54) | public static <T> ApiResult<T> error(int code, String messageKey) {
  method error (line 58) | public static <T> ApiResult<T> error(int code, String messageKey, String...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/ChatRecordModelService.java
  type ChatRecordModelService (line 5) | public interface ChatRecordModelService {
    method saveThinkingResult (line 7) | void saveThinkingResult(ChatReqRecords chatReqRecords, StringBuffer th...
    method saveChatResponse (line 9) | void saveChatResponse(ChatReqRecords chatReqRecords, StringBuffer fina...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/WssListenerService.java
  class WssListenerService (line 8) | @Service
    method getChatRecordModelService (line 18) | public ChatRecordModelService getChatRecordModelService() {
    method getRedissonClient (line 22) | public RedissonClient getRedissonClient() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/BotDatasetService.java
  type BotDatasetService (line 8) | public interface BotDatasetService {
    method deleteByBotId (line 9) | void deleteByBotId(Integer botId);
    method botAssociateDataset (line 11) | void botAssociateDataset(String uid, Integer botId, List<Long> dataset...
    method updateDatasetByBot (line 13) | void updateDatasetByBot(String uid, Integer botId, List<Long> datasetL...
    method checkDatasetBelong (line 15) | boolean checkDatasetBelong(String uid, Long spaceId, List<Long> datase...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/BotFavoriteService.java
  type BotFavoriteService (line 9) | public interface BotFavoriteService {
    method selectPage (line 11) | BotFavoritePageDto selectPage(BotMarketForm botMarketForm, String uid,...
    method create (line 13) | void create(String uid, Integer botId);
    method delete (line 15) | void delete(String uid, Integer botId);
    method getFavoriteNumByBotId (line 17) | int getFavoriteNumByBotId(Integer botId);
    method list (line 19) | List<Integer> list(String uid);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/BotMarketDataService.java
  type BotMarketDataService (line 9) | public interface BotMarketDataService {
    method removeBotForDeleteSpace (line 18) | void removeBotForDeleteSpace(String uid, Long spaceId, List<Integer> s...
    method botsOnMarket (line 20) | boolean botsOnMarket(List<Long> bots);
    method getBotListCheckNextPage (line 22) | Map<String, Object> getBotListCheckNextPage(HttpServletRequest request...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/BotService.java
  type BotService (line 17) | public interface BotService {
    method getBotInfo (line 19) | BotInfoDto getBotInfo(HttpServletRequest request, Integer botId, Long ...
    method deleteBot (line 21) | Boolean deleteBot(Integer botId);
    method getBotTypeList (line 23) | List<BotTypeList> getBotTypeList();
    method insertWorkflowBot (line 25) | BotInfoDto insertWorkflowBot(String uid, BotCreateForm bot, Long space...
    method insertBotBasicInfo (line 27) | BotInfoDto insertBotBasicInfo(String uid, BotCreateForm bot, Long spac...
    method copyBot (line 29) | ChatBotBase copyBot(String uid, Integer botId, Long spaceId);
    method upgradeCopyBot (line 31) | ChatBotBase upgradeCopyBot(String uid, Integer sourceId, Long spaceId,...
    method updateWorkflowBot (line 33) | Boolean updateWorkflowBot(String uid, BotCreateForm bot, HttpServletRe...
    method updateBotBasicInfo (line 35) | Boolean updateBotBasicInfo(String uid, BotCreateForm bot, Long spaceId);
    method addMaasInfo (line 37) | void addMaasInfo(String uid, JSONObject maas, Integer botId, Long spac...
    method addV2Bot (line 39) | void addV2Bot(String uid, Integer botId);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/BotTypeListService.java
  type BotTypeListService (line 10) | public interface BotTypeListService {
    method getBotTypeList (line 11) | List<BotTypeList> getBotTypeList();

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/ChatBotDataService.java
  type ChatBotDataService (line 12) | public interface ChatBotDataService {
    method findById (line 17) | Optional<ChatBotBase> findById(Integer botId);
    method findByIdAndSpaceId (line 22) | Optional<ChatBotBase> findByIdAndSpaceId(Integer botId, Long spaceId);
    method findByUid (line 27) | List<ChatBotBase> findByUid(String uid);
    method findByUidAndSpaceId (line 32) | List<ChatBotBase> findByUidAndSpaceId(String uid, Long spaceId);
    method findBySpaceId (line 37) | List<ChatBotBase> findBySpaceId(Long spaceId);
    method findByBotType (line 42) | List<ChatBotBase> findByBotType(Integer botType);
    method findByBotTypeAndSpaceId (line 47) | List<ChatBotBase> findByBotTypeAndSpaceId(Integer botType, Long spaceId);
    method findActiveBotsBy (line 52) | List<ChatBotBase> findActiveBotsBy(String uid);
    method findActiveBotsBy (line 57) | List<ChatBotBase> findActiveBotsBy(String uid, Long spaceId);
    method createBot (line 62) | ChatBotBase createBot(ChatBotBase chatBotBase);
    method updateBot (line 67) | ChatBotBase updateBot(ChatBotBase chatBotBase);
    method deleteBot (line 72) | boolean deleteBot(Integer botId);
    method deleteBot (line 77) | boolean deleteBot(Integer botId, String uid);
    method deleteBot (line 82) | boolean deleteBot(Integer botId, Long spaceId);
    method deleteBotsByIds (line 87) | boolean deleteBotsByIds(List<Integer> botIds);
    method deleteBotsByIds (line 92) | boolean deleteBotsByIds(List<Integer> botIds, Long spaceId);
    method countBotsByUid (line 97) | long countBotsByUid(String uid);
    method countBotsByUid (line 102) | long countBotsByUid(String uid, Long spaceId);
    method findUserBotList (line 107) | List<ChatBotList> findUserBotList(String uid);
    method addBotToUserList (line 112) | ChatBotList addBotToUserList(ChatBotList chatBotList);
    method removeBotFromUserList (line 117) | boolean removeBotFromUserList(String uid, Integer marketBotId);
    method findMarketBots (line 122) | List<ChatBotMarket> findMarketBots(Integer botStatus, int page, int si...
    method findMarketBotsByHot (line 127) | List<ChatBotMarket> findMarketBotsByHot(int limit);
    method searchMarketBots (line 132) | List<ChatBotMarket> searchMarketBots(String keyword, Integer botType);
    method botIsDeleted (line 137) | boolean botIsDeleted(Long botId);
    method findMarketBotByBotId (line 145) | ChatBotMarket findMarketBotByBotId(Integer botId);
    method checkRepeatBotName (line 156) | Boolean checkRepeatBotName(String uid, Integer botId, String botName, ...
    method deleteBotForDeleteSpace (line 161) | void deleteBotForDeleteSpace(String uid, Long spaceId, HttpServletRequ...
    method findByUidAndBotId (line 163) | ChatBotList findByUidAndBotId(String uid, Integer botId);
    method createUserBotList (line 165) | ChatBotList createUserBotList(ChatBotList chatBotList);
    method copyBot (line 167) | ChatBotBase copyBot(String uid, Integer botId, Long spaceId);
    method takeoffBot (line 169) | Boolean takeoffBot(String uid, Long spaceId, TakeoffList takeoffList);
    method updateBotBasicInfo (line 174) | boolean updateBotBasicInfo(Integer botId, String botDesc, String prolo...
    method getBotDetail (line 176) | BotDetail getBotDetail(Long botId);
    method getPromptBotDetail (line 178) | PromptBotDetail getPromptBotDetail(Integer botId, String uid);
    method getVcnDetail (line 180) | Map<String, Object> getVcnDetail(String vcnCode);
    method getReleaseChannel (line 182) | List<Integer> getReleaseChannel(String uid, Integer botId);
    method findOne (line 184) | ChatBotBase findOne(String uid, Long botId);
    method updateChatBotMarket (line 186) | void updateChatBotMarket(ChatBotBase chatBotBase);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/ChatBotMarketService.java
  type ChatBotMarketService (line 11) | public interface ChatBotMarketService {
    method getBotPage (line 12) | Page<ChatBotMarket> getBotPage(Integer type, String search, Integer pa...
    method updateBotMarketStatus (line 15) | @Transactional(propagation = Propagation.REQUIRED)

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/ChatBotTagService.java
  type ChatBotTagService (line 8) | public interface ChatBotTagService extends IService<ChatBotTag> {
    method getBotTagList (line 16) | List<String> getBotTagList(Long botId);
    method updateTags (line 21) | void updateTags(Long botId);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/impl/BotDatasetServiceImpl.java
  class BotDatasetServiceImpl (line 26) | @Service
    method deleteByBotId (line 40) | @Override
    method checkDatasetBelong (line 48) | @Override
    method botAssociateDataset (line 81) | @Override
    method updateDatasetByBot (line 114) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/impl/BotFavoriteServiceImpl.java
  class BotFavoriteServiceImpl (line 30) | @Service
    method selectPage (line 45) | @Override
    method createQueryDto (line 62) | private BotFavoriteQueryDto createQueryDto(BotMarketForm botMarketForm...
    method queryBotPages (line 71) | private LinkedList<ChatBotMarketPage> queryBotPages(BotFavoriteQueryDt...
    method buildUserMap (line 85) | private Map<String, UserInfo> buildUserMap(LinkedList<ChatBotMarketPag...
    method extractUidSet (line 96) | private Set<String> extractUidSet(LinkedList<ChatBotMarketPage> botLis...
    method buildResultList (line 104) | private List<BotFavoriteItemDto> buildResultList(LinkedList<ChatBotMar...
    method buildBotFavoriteItem (line 120) | private BotFavoriteItemDto buildBotFavoriteItem(ChatBotMarketPage market,
    method processHotNum (line 143) | private void processHotNum(ChatBotMarketPage market, String langCode) {
    method setCreatorInfo (line 149) | private void setCreatorInfo(BotFavoriteItemDto item, ChatBotMarketPage...
    method getCreatorDisplayName (line 166) | private String getCreatorDisplayName(UserInfo creator) {
    method setAddStatus (line 179) | private void setAddStatus(BotFavoriteItemDto item, ChatBotMarketPage m...
    method processBotInfo (line 187) | private void processBotInfo(ChatBotMarketPage market, String uid, Stri...
    method create (line 199) | @Override
    method delete (line 225) | @Override
    method getFavoriteNumByBotId (line 236) | @Override
    method list (line 242) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/impl/BotMarketDataServiceImpl.java
  class BotMarketDataServiceImpl (line 30) | @Service
    method removeBotForDeleteSpace (line 48) | @Override
    method botsOnMarket (line 73) | @Override
    method getBotListCheckNextPage (line 96) | @Override
    method getBotCheckParam (line 188) | private static Map<String, Object> getBotCheckParam(BotMarketForm botM...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/impl/BotServiceImpl.java
  class BotServiceImpl (line 59) | @Service
    method getBotTypeList (line 121) | @Override
    method addV2Bot (line 140) | @Override
    method getBotInfo (line 155) | @Override
    method insertWorkflowBot (line 178) | @Override
    method insertBotBasicInfo (line 188) | @Override
    method copyBot (line 199) | @Override
    method upgradeCopyBot (line 218) | @Override
    method updateWorkflowBot (line 242) | @Override
    method updateBotBasicInfo (line 252) | @Override
    method addMaasInfo (line 263) | @Override
    method executeWithLock (line 290) | private <T> T executeWithLock(String lockKey, java.util.function.Suppl...
    method validateBotCreation (line 311) | private void validateBotCreation(String uid, String botName, Long spac...
    method validateBotNameForUpdate (line 323) | private void validateBotNameForUpdate(String uid, String botName, Long...
    method validateBotNameForUpdate (line 329) | private void validateBotNameForUpdate(String uid, String botName, Inte...
    method createWorkflowBotBase (line 335) | private ChatBotBase createWorkflowBotBase(String uid, BotCreateForm bo...
    method createBasicBotBase (line 363) | private ChatBotBase createBasicBotBase(String uid, BotCreateForm bot, ...
    method setInputExamples (line 407) | private void setInputExamples(ChatBotBase botBase, List<String> inputE...
    method saveBotAndAddToList (line 416) | private void saveBotAndAddToList(ChatBotBase botBase) {
    method createBotInfoDto (line 426) | private BotInfoDto createBotInfoDto(Integer botId) {
    method updateWorkflowBotInternal (line 432) | private void updateWorkflowBotInternal(String uid, BotCreateForm bot, ...
    method synchronizeWorkflowIfNeeded (line 470) | private void synchronizeWorkflowIfNeeded(Integer botId, BotCreateForm ...
    method updateBasicBotInternal (line 477) | private void updateBasicBotInternal(String uid, BotCreateForm bot) {
    method createUpdateBotBase (line 491) | private ChatBotBase createUpdateBotBase(String uid, BotCreateForm bot) {
    method setEnglishInputExamplesIfPresent (line 534) | private void setEnglishInputExamplesIfPresent(ChatBotBase botBase, Lis...
    method createBasicBotInfo (line 540) | private BotInfoDto createBasicBotInfo(ChatBotBase chatBotBase) {
    method setupFileUploadConfig (line 555) | private void setupFileUploadConfig(BotInfoDto botInfo, Integer botId) {
    method processFileUploadConfig (line 574) | private void processFileUploadConfig(BotInfoDto botInfo, UserLangChain...
    method setupMarketInfo (line 592) | private void setupMarketInfo(BotInfoDto botInfo, ChatBotBase chatBotBa...
    method setupInputExamples (line 603) | private void setupInputExamples(BotInfoDto botInfo, ChatBotBase chatBo...
    method parseInputExamples (line 612) | private List<String> parseInputExamples(String inputExample) {
    method setupCreatorInfo (line 619) | private void setupCreatorInfo(BotInfoDto botInfo, ChatBotBase chatBotB...
    method setDefaultCreatorInfo (line 633) | private void setDefaultCreatorInfo(BotInfoDto botInfo, String langCode...
    method setCreatorInfoFromUser (line 642) | private void setCreatorInfoFromUser(BotInfoDto botInfo, UserInfo creat...
    method setupUserRelatedInfo (line 654) | private void setupUserRelatedInfo(BotInfoDto botInfo, Integer botId, S...
    method setupChatInfo (line 671) | private void setupChatInfo(BotInfoDto botInfo, Integer botId, String u...
    method setupDatasetInfo (line 676) | private void setupDatasetInfo(BotInfoDto botInfo, Integer botId) {
    method setupLanguageSpecificContent (line 684) | private void setupLanguageSpecificContent(BotInfoDto botInfo, ChatBotB...
    method setupWorkflowInfo (line 697) | private void setupWorkflowInfo(BotInfoDto botInfo, ChatBotBase chatBot...
    method updateWorkflowStatus (line 714) | private void updateWorkflowStatus(BotInfoDto botInfo, Integer botId, S...
    method deleteBot (line 734) | @Override
    method getFlowAdvancedConfig (line 743) | public String getFlowAdvancedConfig(Integer botId, String authorizatio...
    method getWorkflowApiResponse (line 782) | private JSONObject getWorkflowApiResponse(String url) {
    method processPromptStruct (line 811) | public void processPromptStruct(Integer botId, BotCreateForm bot) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/impl/ChatBotDataServiceImpl.java
  class ChatBotDataServiceImpl (line 42) | @Slf4j
    method findById (line 84) | @Override
    method findByIdAndSpaceId (line 90) | @Override
    method findByUid (line 100) | @Override
    method findByUidAndSpaceId (line 107) | @Override
    method findBySpaceId (line 116) | @Override
    method findByBotType (line 124) | @Override
    method findByBotTypeAndSpaceId (line 132) | @Override
    method findActiveBotsBy (line 141) | @Override
    method findActiveBotsBy (line 150) | @Override
    method createBot (line 160) | @Override
    method updateBot (line 166) | @Override
    method deleteBot (line 182) | @Override
    method deleteBot (line 190) | @Override
    method deleteChatBotBase (line 198) | private boolean deleteChatBotBase(Integer botId, String uid) {
    method deleteChatBotList (line 206) | private boolean deleteChatBotList(Integer botId, String uid) {
    method deleteChatList (line 214) | private boolean deleteChatList(Integer botId, String uid) {
    method deleteChatBotMarket (line 222) | private boolean deleteChatBotMarket(Integer botId, String uid) {
    method deleteBot (line 231) | @Override
    method deleteBotsByIds (line 242) | @Override
    method deleteBotsByIds (line 257) | @Override
    method countBotsByUid (line 273) | @Override
    method countBotsByUid (line 281) | @Override
    method findUserBotList (line 290) | @Override
    method addBotToUserList (line 299) | @Override
    method removeBotFromUserList (line 305) | @Override
    method findMarketBots (line 317) | @Override
    method findMarketBotsByHot (line 331) | @Override
    method searchMarketBots (line 341) | @Override
    method botIsDeleted (line 364) | @Override
    method findMarketBotByBotId (line 379) | @Override
    method checkRepeatBotName (line 392) | @Override
    method deleteBotForDeleteSpace (line 414) | @Override
    method removeBotForDeleteSpace (line 450) | private void removeBotForDeleteSpace(String uid, Long spaceId, List<In...
    method findByUidAndBotId (line 468) | @Override
    method createUserBotList (line 477) | @Override
    method copyBot (line 483) | @Override
    method takeoffBot (line 501) | @Override
    method updateBotBasicInfo (line 516) | @Override
    method getBotDetail (line 526) | @Override
    method getPromptBotDetail (line 531) | @Override
    method getVcnDetail (line 583) | @Override
    method getReleaseChannel (line 604) | @Override
    method findOne (line 629) | @Override
    method updateChatBotMarket (line 642) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/impl/ChatBotMarketServiceImpl.java
  class ChatBotMarketServiceImpl (line 23) | @Service
    method getBotPage (line 30) | @Override
    method updateBotMarketStatus (line 46) | @Transactional(propagation = Propagation.REQUIRED)

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/bot/impl/ChatBotTagServiceImpl.java
  class ChatBotTagServiceImpl (line 17) | @Service
    method getBotTagList (line 20) | @Override
    method updateTags (line 38) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/ChatDataService.java
  type ChatDataService (line 12) | public interface ChatDataService {
    method findRequestsByChatIdAndUid (line 16) | List<ChatReqRecords> findRequestsByChatIdAndUid(Long chatId, String uid);
    method findRequestsByChatIdAndTimeRange (line 19) | List<ChatReqRecords> findRequestsByChatIdAndTimeRange(Long chatId, Loc...
    method createRequest (line 22) | ChatReqRecords createRequest(ChatReqRecords chatReqRecords);
    method findResponsesByReqId (line 25) | List<ChatRespRecords> findResponsesByReqId(Long reqId);
    method findResponsesByChatId (line 28) | List<ChatRespRecords> findResponsesByChatId(Long chatId);
    method createResponse (line 31) | ChatRespRecords createResponse(ChatRespRecords chatRespRecords);
    method countChatsByUid (line 34) | long countChatsByUid(String uid);
    method countMessagesByChatId (line 37) | long countMessagesByChatId(Long chatId);
    method findRecentChatsByUid (line 40) | List<ChatList> findRecentChatsByUid(String uid, int limit);
    method getReqModelBotHistoryByChatId (line 49) | List<ChatReqModelDto> getReqModelBotHistoryByChatId(String uid, Long c...
    method getChatRespModelBotHistoryByChatId (line 58) | List<ChatRespModelDto> getChatRespModelBotHistoryByChatId(String uid, ...
    method createReasonRecord (line 64) | ChatReasonRecords createReasonRecord(ChatReasonRecords chatReasonRecor...
    method createTraceSource (line 69) | ChatTraceSource createTraceSource(ChatTraceSource chatTraceSource);
    method findRequestById (line 74) | ChatReqRecords findRequestById(Long reqId);
    method updateByUidAndChatIdAndReqId (line 79) | Integer updateByUidAndChatIdAndReqId(ChatRespRecords chatRespRecords);
    method findResponseByUidAndChatIdAndReqId (line 84) | ChatRespRecords findResponseByUidAndChatIdAndReqId(String uid, Long ch...
    method findReasonByUidAndChatIdAndReqId (line 89) | ChatReasonRecords findReasonByUidAndChatIdAndReqId(String uid, Long ch...
    method updateReasonByUidAndChatIdAndReqId (line 94) | Integer updateReasonByUidAndChatIdAndReqId(ChatReasonRecords chatReaso...
    method findTraceSourceByUidAndChatIdAndReqId (line 99) | ChatTraceSource findTraceSourceByUidAndChatIdAndReqId(String uid, Long...
    method updateTraceSourceByUidAndChatIdAndReqId (line 104) | Integer updateTraceSourceByUidAndChatIdAndReqId(ChatTraceSource chatTr...
    method updateNewContextByUidAndChatId (line 109) | Integer updateNewContextByUidAndChatId(String uid, Long chatId);
    method findTraceSourcesByChatId (line 111) | List<ChatTraceSource> findTraceSourcesByChatId(Long chatId);
    method getReasonRecordsByChatId (line 113) | List<ChatReasonRecords> getReasonRecordsByChatId(Long chatId);
    method getFileList (line 115) | List<ChatFileReq> getFileList(String uid, Long chatId);
    method getByFileIdAll (line 117) | ChatFileUser getByFileIdAll(String fileId, String uid);
    method getByFileId (line 119) | ChatFileUser getByFileId(String fileId, String uid);
    method getReqModelWithImgByChatId (line 121) | List<ChatReqModelDto> getReqModelWithImgByChatId(String uid, Long chat...
    method createChatReqModel (line 123) | ChatReqModel createChatReqModel(ChatReqModel chatReqModel);
    method findBotChatFileParamsByChatIdAndIsDelete (line 128) | List<BotChatFileParam> findBotChatFileParamsByChatIdAndIsDelete(Long c...
    method updateFileReqId (line 130) | void updateFileReqId(Long chatId, String uid, List<String> fileIds, Lo...
    method createChatFileUser (line 132) | ChatFileUser createChatFileUser(ChatFileUser chatFileUser);
    method getFileUserCount (line 134) | Integer getFileUserCount(String uid);
    method setFileId (line 136) | ChatFileUser setFileId(Long chatFileUserId, String fileId);
    method createChatFileReq (line 138) | ChatFileReq createChatFileReq(ChatFileReq chatFileReq);
    method setProcessed (line 140) | void setProcessed(Long chatFileUserId);
    method findAllBotChatFileParamByChatIdAndNameAndIsDelete (line 142) | List<BotChatFileParam> findAllBotChatFileParamByChatIdAndNameAndIsDele...
    method createBotChatFileParam (line 144) | BotChatFileParam createBotChatFileParam(BotChatFileParam botChatFilePa...
    method updateBotChatFileParam (line 146) | BotChatFileParam updateBotChatFileParam(BotChatFileParam botChatFilePa...
    method findChatFileUserByIdAndUid (line 151) | ChatFileUser findChatFileUserByIdAndUid(Long linkId, String uid);
    method deleteChatFileReq (line 156) | void deleteChatFileReq(String fileId, Long chatId, String uid);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/ChatHistoryService.java
  type ChatHistoryService (line 13) | public interface ChatHistoryService {
    method getSystemBotHistory (line 22) | List<SparkChatRequest.MessageDto> getSystemBotHistory(String uid, Long...
    method getHistory (line 32) | ChatRequestDtoList getHistory(String uid, Long chatId, List<ChatReqMod...
    method urlToArray (line 41) | List<ChatModelMeta> urlToArray(String url, String ask);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/ChatListDataService.java
  type ChatListDataService (line 10) | public interface ChatListDataService {
    method findByUidAndChatId (line 19) | ChatList findByUidAndChatId(String uid, Long chatId);
    method findChatTreeIndexByChatIdOrderById (line 21) | List<ChatTreeIndex> findChatTreeIndexByChatIdOrderById(Long rootChatId);
    method createChat (line 23) | ChatList createChat(ChatList chatList);
    method createChatTreeIndex (line 25) | ChatTreeIndex createChatTreeIndex(ChatTreeIndex chatTreeIndex);
    method getListByRootChatId (line 27) | List<ChatTreeIndex> getListByRootChatId(Long rootChatId, String uid);
    method getBotChatList (line 29) | List<ChatBotListDto> getBotChatList(String uid);
    method findLatestEnabledChatByUserAndBot (line 38) | ChatList findLatestEnabledChatByUserAndBot(String uid, Integer botId);
    method reactivateChat (line 46) | int reactivateChat(Long id);
    method reactivateChatBatch (line 54) | int reactivateChatBatch(List<Long> chatIdList);
    method addRootTree (line 56) | long addRootTree(Long curChatId, String uid);
    method deactivateChatBotList (line 65) | int deactivateChatBotList(String uid, Integer botId);
    method getAllListByChildChatId (line 74) | List<ChatTreeIndex> getAllListByChildChatId(Long childChatId, String u...
    method deleteById (line 82) | int deleteById(Long id);
    method deleteBatchIds (line 90) | int deleteBatchIds(List<Long> idList);
    method getBotChat (line 92) | ChatList getBotChat(String uid, Long botId);
    method insertChatBotList (line 94) | ChatBotBase insertChatBotList(ChatBotBase chatBotBase);
    method updateChatBotList (line 96) | ChatBotBase updateChatBotList(ChatBotBase chatBotBase);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/DatasetDataService.java
  type DatasetDataService (line 11) | public interface DatasetDataService {
    method findById (line 14) | Optional<DatasetInfo> findById(Long datasetId);
    method findByUid (line 17) | List<DatasetInfo> findByUid(String uid);
    method findByStatus (line 20) | List<DatasetInfo> findByStatus(Integer status);
    method searchByName (line 23) | List<DatasetInfo> searchByName(String uid, String name);
    method createDataset (line 26) | DatasetInfo createDataset(DatasetInfo datasetInfo);
    method updateDataset (line 29) | DatasetInfo updateDataset(DatasetInfo datasetInfo);
    method deleteDataset (line 32) | boolean deleteDataset(Long datasetId);
    method updateDatasetStatus (line 35) | boolean updateDatasetStatus(Long datasetId, Integer status);
    method findFilesByDatasetId (line 38) | List<DatasetFile> findFilesByDatasetId(Long datasetId);
    method findFilesByStatus (line 41) | List<DatasetFile> findFilesByStatus(Long datasetId, Integer status);
    method addFileToDataset (line 44) | DatasetFile addFileToDataset(DatasetFile datasetFile);
    method deleteDatasetFile (line 47) | boolean deleteDatasetFile(Long fileId);
    method updateFileStatus (line 50) | boolean updateFileStatus(Long fileId, Integer status);
    method batchUpdateFileStatus (line 53) | boolean batchUpdateFileStatus(List<Long> fileIds, Integer status);
    method findDatasetsByBotId (line 56) | List<BotDataset> findDatasetsByBotId(Long botId);
    method findActiveBotDatasets (line 59) | List<BotDataset> findActiveBotDatasets(Long botId);
    method associateBotWithDataset (line 62) | BotDataset associateBotWithDataset(BotDataset botDataset);
    method disassociateBotFromDataset (line 65) | boolean disassociateBotFromDataset(Long botId, Long datasetId);
    method updateBotDatasetStatus (line 68) | boolean updateBotDatasetStatus(Long botId, Long datasetId, Integer isA...
    method countDatasetsByUid (line 71) | long countDatasetsByUid(String uid);
    method countFilesByDatasetId (line 74) | long countFilesByDatasetId(Long datasetId);
    method countProcessingFiles (line 77) | long countProcessingFiles(Long datasetId);
    method selectDatasetListByBotId (line 85) | List<DatasetInfo> selectDatasetListByBotId(Integer botId);
    method findMaasDatasetsByBotIdAndIsAct (line 87) | List<BotDatasetMaas> findMaasDatasetsByBotIdAndIsAct(Integer botId, In...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/IDatasetFileService.java
  type IDatasetFileService (line 7) | public interface IDatasetFileService {
    method getMaasDataset (line 9) | List<DatasetStats> getMaasDataset(Long datasetId);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/IDatasetInfoService.java
  type IDatasetInfoService (line 8) | public interface IDatasetInfoService {
    method getDatasetByBot (line 17) | List<DatasetInfo> getDatasetByBot(String uid, Integer botId);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/UserLangChainDataService.java
  type UserLangChainDataService (line 13) | public interface UserLangChainDataService {
    method findByBotIdSet (line 15) | List<UserLangChainInfo> findByBotIdSet(Set<Integer> idSet);
    method insertUserLangChainInfo (line 17) | UserLangChainInfo insertUserLangChainInfo(UserLangChainInfo userLangCh...
    method findOneByBotId (line 25) | UserLangChainInfo findOneByBotId(Integer botId);
    method findListByBotId (line 27) | List<UserLangChainInfo> findListByBotId(Integer botId);
    method findFlowIdByBotId (line 29) | String findFlowIdByBotId(Integer botId);
    method selectByFlowId (line 31) | UserLangChainInfo selectByFlowId(String flowId);
    method selectByMaasId (line 33) | UserLangChainInfo selectByMaasId(Long maasId);
    method findByMaasId (line 35) | List<UserLangChainInfo> findByMaasId(Long maasId);
    method updateByBotId (line 44) | UserLangChainInfo updateByBotId(Integer botId, UserLangChainInfo userL...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/UserLangChainLogService.java
  type UserLangChainLogService (line 5) | public interface UserLangChainLogService {
    method insertUserLangChainLog (line 6) | UserLangChainLog insertUserLangChainLog(UserLangChainLog userLangChain...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/impl/BotTypeListServiceImpl.java
  class BotTypeListServiceImpl (line 15) | @Service
    method getBotTypeList (line 21) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/impl/ChatListDataServiceImpl.java
  class ChatListDataServiceImpl (line 24) | @Slf4j
    method findByUidAndChatId (line 45) | @Override
    method findChatTreeIndexByChatIdOrderById (line 69) | @Override
    method createChat (line 77) | @Override
    method createChatTreeIndex (line 83) | @Override
    method getListByRootChatId (line 89) | @Override
    method getBotChatList (line 97) | @Override
    method findLatestEnabledChatByUserAndBot (line 102) | @Override
    method reactivateChat (line 122) | @Override
    method reactivateChatBatch (line 139) | @Override
    method addRootTree (line 159) | @Override
    method deactivateChatBotList (line 182) | @Override
    method getAllListByChildChatId (line 202) | @Override
    method deleteById (line 222) | @Override
    method deleteBatchIds (line 240) | @Override
    method getBotChat (line 260) | @Override
    method insertChatBotList (line 272) | @Override
    method updateChatBotList (line 278) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/impl/DatasetDataServiceImpl.java
  class DatasetDataServiceImpl (line 20) | @Service
    method findById (line 35) | @Override
    method findByUid (line 41) | @Override
    method findByStatus (line 50) | @Override
    method searchByName (line 58) | @Override
    method createDataset (line 72) | @Override
    method updateDataset (line 78) | @Override
    method deleteDataset (line 84) | @Override
    method updateDatasetStatus (line 92) | @Override
    method findFilesByDatasetId (line 100) | @Override
    method findFilesByStatus (line 109) | @Override
    method addFileToDataset (line 118) | @Override
    method deleteDatasetFile (line 124) | @Override
    method updateFileStatus (line 132) | @Override
    method batchUpdateFileStatus (line 140) | @Override
    method findDatasetsByBotId (line 155) | @Override
    method findActiveBotDatasets (line 163) | @Override
    method associateBotWithDataset (line 172) | @Override
    method disassociateBotFromDataset (line 178) | @Override
    method updateBotDatasetStatus (line 186) | @Override
    method countDatasetsByUid (line 198) | @Override
    method countFilesByDatasetId (line 206) | @Override
    method countProcessingFiles (line 214) | @Override
    method selectDatasetListByBotId (line 223) | @Override
    method findMaasDatasetsByBotIdAndIsAct (line 228) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/impl/DatasetFileServiceImpl.java
  class DatasetFileServiceImpl (line 12) | @Service
    method getMaasDataset (line 25) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/impl/DatasetInfoServiceImpl.java
  class DatasetInfoServiceImpl (line 19) | @Service
    method getDatasetByBot (line 29) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/impl/UserLangChainInfoDataServiceImpl.java
  class UserLangChainInfoDataServiceImpl (line 21) | @Service
    method findByBotIdSet (line 27) | @Override
    method insertUserLangChainInfo (line 40) | @Override
    method findOneByBotId (line 46) | @Override
    method findListByBotId (line 58) | @Override
    method findFlowIdByBotId (line 69) | @Override
    method selectByFlowId (line 79) | @Override
    method selectByMaasId (line 91) | @Override
    method findByMaasId (line 103) | @Override
    method updateByBotId (line 114) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/data/impl/UserLangChainLogServiceImpl.java
  class UserLangChainLogServiceImpl (line 15) | @Slf4j
    method insertUserLangChainLog (line 24) | @Override
    method updateOldRecord (line 43) | private void updateOldRecord(UserLangChainLog userLangChainLog, LocalD...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/mcp/McpDataService.java
  type McpDataService (line 12) | public interface McpDataService {
    method getMcpByUid (line 14) | List<McpData> getMcpByUid(String uid);
    method insert (line 16) | McpData insert(McpData mcpData);
    method getMcp (line 18) | McpData getMcp(Long botId);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/mcp/impl/McpDataServiceImpl.java
  class McpDataServiceImpl (line 19) | @Service
    method getMcpByUid (line 25) | @Override
    method insert (line 32) | @Override
    method getMcp (line 38) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/ApplyRecordService.java
  type ApplyRecordService (line 11) | public interface ApplyRecordService {
    method page (line 14) | Page<ApplyRecordVO> page(ApplyRecordParam param);
    method getByUidAndSpaceId (line 16) | ApplyRecord getByUidAndSpaceId(String uid, Long spaceId);
    method updateById (line 18) | boolean updateById(ApplyRecord applyRecord);
    method save (line 20) | boolean save(ApplyRecord applyRecord);
    method getById (line 22) | ApplyRecord getById(Long id);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/EnterprisePermissionService.java
  type EnterprisePermissionService (line 11) | public interface EnterprisePermissionService {
    method getEnterprisePermissionByKey (line 13) | EnterprisePermission getEnterprisePermissionByKey(String key);
    method listByKeys (line 15) | List<String> listByKeys(Collection<String> keys);
    method insertBatch (line 17) | void insertBatch(List<EnterprisePermission> enterprisePermissions);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/EnterpriseService.java
  type EnterpriseService (line 12) | public interface EnterpriseService {
    method setLastVisitEnterpriseId (line 14) | boolean setLastVisitEnterpriseId(Long enterpriseId);
    method getLastVisitEnterpriseId (line 16) | Long getLastVisitEnterpriseId();
    method checkNeedCreateTeam (line 18) | Integer checkNeedCreateTeam();
    method orderChangeNotify (line 20) | void orderChangeNotify(String uid, LocalDateTime endTime);
    method checkCertification (line 22) | boolean checkCertification();
    method detail (line 24) | EnterpriseVO detail();
    method joinList (line 26) | List<EnterpriseVO> joinList();
    method checkExistByName (line 28) | boolean checkExistByName(String name, Long id);
    method checkExistByUid (line 30) | boolean checkExistByUid(String uid);
    method getEnterpriseById (line 32) | Enterprise getEnterpriseById(Long id);
    method getEnterpriseByUid (line 34) | Enterprise getEnterpriseByUid(String uid);
    method getUidByEnterpriseId (line 36) | String getUidByEnterpriseId(Long enterpriseId);
    method updateExpireTime (line 38) | int updateExpireTime(Enterprise enterprise);
    method save (line 40) | boolean save(Enterprise enterprise);
    method updateById (line 42) | boolean updateById(Enterprise enterprise);
    method getById (line 44) | Enterprise getById(Long id);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/EnterpriseSpaceService.java
  type EnterpriseSpaceService (line 8) | public interface EnterpriseSpaceService {
    method getUidByCurrentSpaceId (line 10) | String getUidByCurrentSpaceId(Long spaceId);
    method checkUserBelongSpace (line 12) | SpaceUser checkUserBelongSpace(Long spaceId, String uid);
    method clearSpaceUserCache (line 14) | void clearSpaceUserCache(Long spaceId, String uid);
    method checkUserBelongEnterprise (line 16) | EnterpriseUser checkUserBelongEnterprise(Long enterpriseId, String uid);
    method clearEnterpriseUserCache (line 18) | void clearEnterpriseUserCache(Long enterpriseId, String uid);
    method getEnterprisePermissionByKey (line 20) | EnterprisePermission getEnterprisePermissionByKey(String key);
    method getSpacePermissionByKey (line 22) | SpacePermission getSpacePermissionByKey(String key);
    method checkEnterpriseExpired (line 24) | boolean checkEnterpriseExpired(Long enterpriseId);
    method checkSpaceExpired (line 26) | boolean checkSpaceExpired(Long spaceId);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/EnterpriseUserService.java
  type EnterpriseUserService (line 14) | public interface EnterpriseUserService {
    method getEnterpriseUserByUid (line 17) | EnterpriseUser getEnterpriseUserByUid(Long enterpriseId, String uid);
    method countByEnterpriseIdAndUids (line 19) | Long countByEnterpriseIdAndUids(Long enterpriseId, List<String> uids);
    method listByEnterpriseId (line 21) | List<EnterpriseUser> listByEnterpriseId(Long enterpriseId);
    method addEnterpriseUser (line 23) | boolean addEnterpriseUser(Long enterpriseId, String uid, EnterpriseRol...
    method listByRole (line 25) | List<EnterpriseUser> listByRole(Long enterpriseId, EnterpriseRoleEnum ...
    method countByEnterpriseId (line 27) | Long countByEnterpriseId(Long enterpriseId);
    method page (line 29) | Page<EnterpriseUserVO> page(EnterpriseUserParam param);
    method removeById (line 31) | boolean removeById(EnterpriseUser enterpriseUser);
    method updateById (line 33) | boolean updateById(EnterpriseUser enterpriseUser);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/InviteRecordService.java
  type InviteRecordService (line 17) | public interface InviteRecordService {
    method inviteList (line 19) | Page<InviteRecordVO> inviteList(InviteRecordParam param, InviteRecordT...
    method countBySpaceIdAndUids (line 21) | Long countBySpaceIdAndUids(Long spaceId, List<String> uids);
    method countByEnterpriseIdAndUids (line 23) | Long countByEnterpriseIdAndUids(Long enterpriseId, List<String> uids);
    method countJoiningByEnterpriseId (line 25) | Long countJoiningByEnterpriseId(Long enterpriseId);
    method countJoiningBySpaceId (line 27) | Long countJoiningBySpaceId(Long spaceId);
    method countJoiningByUid (line 29) | Long countJoiningByUid(String uid, SpaceTypeEnum spaceTypeEnum);
    method saveBatch (line 31) | boolean saveBatch(Collection<InviteRecord> entityList);
    method getById (line 33) | InviteRecord getById(Long id);
    method getInvitingUids (line 35) | Set<String> getInvitingUids(InviteRecordTypeEnum type);
    method updateById (line 37) | boolean updateById(InviteRecord entity);
    method selectVOById (line 39) | InviteRecordVO selectVOById(Long id);
    method updateExpireRecord (line 41) | int updateExpireRecord();

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/SpacePermissionService.java
  type SpacePermissionService (line 11) | public interface SpacePermissionService {
    method getSpacePermissionByKey (line 13) | SpacePermission getSpacePermissionByKey(String key);
    method listByKeys (line 15) | List<String> listByKeys(Collection<String> keys);
    method insertBatch (line 17) | void insertBatch(List<SpacePermission> spacePermissions);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/SpaceService.java
  type SpaceService (line 14) | public interface SpaceService {
    method recentVisitList (line 16) | List<SpaceVO> recentVisitList();
    method personalList (line 18) | List<SpaceVO> personalList(String name);
    method personalSelfList (line 20) | List<SpaceVO> personalSelfList(String name);
    method corporateJoinList (line 22) | List<SpaceVO> corporateJoinList(String name);
    method corporateList (line 24) | List<SpaceVO> corporateList(String name);
    method corporateCount (line 26) | EnterpriseSpaceCountVO corporateCount();
    method getSpaceVO (line 28) | SpaceVO getSpaceVO();
    method setLastVisitPersonalSpaceTime (line 30) | void setLastVisitPersonalSpaceTime();
    method getLastVisitSpace (line 32) | SpaceVO getLastVisitSpace();
    method countByEnterpriseId (line 34) | Long countByEnterpriseId(Long enterpriseId);
    method countByUid (line 36) | Long countByUid(String uid);
    method getSpaceById (line 38) | Space getSpaceById(Long id);
    method listByEnterpriseIdAndUid (line 40) | List<SpaceVO> listByEnterpriseIdAndUid(Long enterpriseId, String uid);
    method checkExistByName (line 42) | boolean checkExistByName(String name, Long id);
    method getSpaceType (line 44) | SpaceTypeEnum getSpaceType(Long spaceId);
    method save (line 46) | boolean save(Space space);
    method getById (line 48) | Space getById(Long id);
    method removeById (line 50) | boolean removeById(Long id);
    method updateById (line 52) | boolean updateById(Space space);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/SpaceUserService.java
  type SpaceUserService (line 15) | public interface SpaceUserService {
    method addSpaceUser (line 17) | boolean addSpaceUser(Long spaceId, String uid, SpaceRoleEnum roleEnum);
    method listSpaceMember (line 19) | List<SpaceUser> listSpaceMember();
    method getSpaceUserByUid (line 21) | SpaceUser getSpaceUserByUid(Long spaceId, String uid);
    method countSpaceUserByUids (line 23) | Long countSpaceUserByUids(Long spaceId, List<String> uids);
    method countBySpaceId (line 25) | Long countBySpaceId(Long spaceId);
    method updateVisitTime (line 27) | boolean updateVisitTime(Long spaceId, String uid);
    method removeByUid (line 29) | boolean removeByUid(Collection<Long> spaceIds, String uid);
    method getAllSpaceUsers (line 31) | List<SpaceUser> getAllSpaceUsers(Long spaceId);
    method getAllSpaceUsers (line 33) | List<SpaceUser> getAllSpaceUsers(List<Long> spaceIds);
    method countFreeSpaceUser (line 35) | Long countFreeSpaceUser(String uid);
    method countProSpaceUser (line 37) | Long countProSpaceUser(String uid);
    method getSpaceOwner (line 39) | SpaceUser getSpaceOwner(Long spaceId);
    method page (line 41) | Page<SpaceUserVO> page(SpaceUserParam param);
    method save (line 43) | boolean save(SpaceUser spaceUser);
    method updateById (line 45) | boolean updateById(SpaceUser spaceUser);
    method updateBatchById (line 47) | boolean updateBatchById(Collection<SpaceUser> entityList);
    method removeById (line 49) | boolean removeById(SpaceUser spaceUser);
    method getRole (line 51) | SpaceRoleEnum getRole(Long spaceId, String uid);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/ApplyRecordServiceImpl.java
  class ApplyRecordServiceImpl (line 17) | @Service
    method page (line 21) | @Override
    method getByUidAndSpaceId (line 33) | @Override
    method getById (line 41) | @Override
    method updateById (line 46) | @Override
    method save (line 51) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/EnterprisePermissionServiceImpl.java
  class EnterprisePermissionServiceImpl (line 17) | @Service
    method getEnterprisePermissionByKey (line 19) | @Override
    method listByKeys (line 25) | @Override
    method insertBatch (line 32) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/EnterpriseServiceImpl.java
  class EnterpriseServiceImpl (line 28) | @Service
    method setLastVisitEnterpriseId (line 38) | @Override
    method getLastVisitEnterpriseId (line 50) | @Override
    method checkNeedCreateTeam (line 65) | @Override
    method orderChangeNotify (line 81) | @Override
    method checkCertification (line 97) | @Override
    method detail (line 103) | @Override
    method joinList (line 123) | @Override
    method checkExistByName (line 129) | @Override
    method checkExistByUid (line 141) | @Override
    method getEnterpriseById (line 147) | @Override
    method getEnterpriseByUid (line 152) | @Override
    method getUidByEnterpriseId (line 158) | @Override
    method updateExpireTime (line 163) | @Override
    method save (line 170) | @Override
    method updateById (line 175) | @Override
    method getById (line 180) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/EnterpriseSpaceServiceImpl.java
  class EnterpriseSpaceServiceImpl (line 16) | @Service
    method getUidByCurrentSpaceId (line 31) | @Override
    method checkUserBelongSpace (line 50) | @Override
    method clearSpaceUserCache (line 56) | @Override
    method checkUserBelongEnterprise (line 62) | @Override
    method clearEnterpriseUserCache (line 68) | @Override
    method getSpacePermissionByKey (line 74) | @Override
    method getEnterprisePermissionByKey (line 80) | @Override
    method checkEnterpriseExpired (line 86) | @Override
    method checkSpaceExpired (line 98) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/EnterpriseUserServiceImpl.java
  class EnterpriseUserServiceImpl (line 24) | @Service
    method getEnterpriseUserByUid (line 29) | @Override
    method countByEnterpriseIdAndUids (line 34) | @Override
    method listByEnterpriseId (line 41) | @Override
    method addEnterpriseUser (line 47) | @Override
    method listByRole (line 63) | @Override
    method countByEnterpriseId (line 70) | @Override
    method page (line 76) | @Override
    method removeById (line 94) | @Override
    method updateById (line 99) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/InviteRecordServiceImpl.java
  class InviteRecordServiceImpl (line 30) | @Service
    method inviteList (line 34) | @Override
    method countBySpaceIdAndUids (line 57) | @Override
    method countByEnterpriseIdAndUids (line 67) | @Override
    method countJoiningByEnterpriseId (line 77) | @Override
    method countJoiningBySpaceId (line 82) | @Override
    method countJoiningByUid (line 87) | @Override
    method saveBatch (line 92) | @Override
    method getById (line 97) | @Override
    method updateById (line 102) | @Override
    method selectVOById (line 107) | @Override
    method updateExpireRecord (line 112) | @Override
    method getInvitingUids (line 124) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/SpacePermissionServiceImpl.java
  class SpacePermissionServiceImpl (line 16) | @Service
    method getSpacePermissionByKey (line 18) | @Override
    method listByKeys (line 24) | @Override
    method insertBatch (line 31) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/SpaceServiceImpl.java
  class SpaceServiceImpl (line 38) | @Service
    method recentVisitList (line 51) | @Override
    method personalList (line 59) | @Override
    method setSpaceVOExtraInfo (line 69) | private void setSpaceVOExtraInfo(List<SpaceVO> spaceVOS) {
    method personalSelfList (line 90) | @Override
    method corporateJoinList (line 100) | @Override
    method corporateList (line 110) | @Override
    method corporateCount (line 119) | @Override
    method getSpaceVO (line 126) | @Override
    method setLastVisitPersonalSpaceTime (line 145) | @Override
    method getLastVisitSpace (line 151) | @Override
    method countByEnterpriseId (line 184) | @Override
    method countByUid (line 190) | @Override
    method getSpaceById (line 197) | @Override
    method listByEnterpriseIdAndUid (line 202) | @Override
    method checkExistByName (line 207) | @Override
    method getSpaceType (line 227) | @Override
    method save (line 240) | @Override
    method getById (line 245) | @Override
    method removeById (line 250) | @Override
    method updateById (line 255) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/space/impl/SpaceUserServiceImpl.java
  class SpaceUserServiceImpl (line 27) | @Service
    method addSpaceUser (line 33) | @Override
    method listSpaceMember (line 54) | @Override
    method getSpaceUserByUid (line 63) | @Override
    method countSpaceUserByUids (line 68) | @Override
    method countBySpaceId (line 75) | @Override
    method updateVisitTime (line 81) | @Override
    method removeByUid (line 89) | @Override
    method getAllSpaceUsers (line 96) | @Override
    method getAllSpaceUsers (line 102) | @Override
    method countFreeSpaceUser (line 109) | @Override
    method countProSpaceUser (line 114) | @Override
    method getSpaceOwner (line 119) | @Override
    method page (line 126) | @Override
    method save (line 138) | @Override
    method updateById (line 143) | @Override
    method updateBatchById (line 148) | @Override
    method removeById (line 153) | @Override
    method getRole (line 165) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/user/AppMstService.java
  type AppMstService (line 10) | public interface AppMstService {
    method exist (line 11) | boolean exist(String appName);
    method insert (line 13) | void insert(String uid, String appId, String appName, String appDescri...
    method getAppListByUid (line 15) | List<AppMst> getAppListByUid(String uid);
    method getByAppId (line 17) | AppMst getByAppId(String uid, String appId);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/user/Impl/AppMstServiceImpl.java
  class AppMstServiceImpl (line 17) | @Service
    method exist (line 25) | @Override
    method insert (line 32) | @Override
    method getAppListByUid (line 48) | @Override
    method getByAppId (line 56) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/user/MessageCodeService.java
  type MessageCodeService (line 10) | public interface MessageCodeService {
    method sendLoginMessageCode (line 15) | ApiResult<Void> sendLoginMessageCode(String mobile);
    method checkLoginMessageCode (line 17) | void checkLoginMessageCode(String mobile, String verifyCode);
    method sendVerifyCodeCommon (line 19) | void sendVerifyCodeCommon(String mobile, String prefix);
    method checkVerifyCodeCommon (line 21) | void checkVerifyCodeCommon(String mobile, String verifyCode, String pr...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/workflow/WorkflowBotChatService.java
  type WorkflowBotChatService (line 6) | public interface WorkflowBotChatService {
    method chatWorkflowBot (line 8) | void chatWorkflowBot(ChatBotReqDto chatBotReqDto, SseEmitter sseEmitte...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/workflow/WorkflowBotParamService.java
  type WorkflowBotParamService (line 7) | public interface WorkflowBotParamService {
    method handleSingleParam (line 8) | void handleSingleParam(String uid, Long chatId, String sseId, Long lef...
    method handleMultiFileParam (line 11) | boolean handleMultiFileParam(String uid, Long chatId, Long leftId, Lis...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/workflow/WorkflowBotService.java
  type WorkflowBotService (line 5) | public interface WorkflowBotService {
    method maasCopySynchronize (line 6) | Integer maasCopySynchronize(CloneSynchronize synchronize);

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/workflow/impl/WorkflowBotChatServiceImpl.java
  class WorkflowBotChatServiceImpl (line 46) | @Service
    method chatWorkflowBot (line 98) | @Override
    method filterContent (line 189) | private void filterContent(ChatRequestDtoList requestDtoList) {
    method shouldRemove (line 230) | private boolean shouldRemove(Object content) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/workflow/impl/WorkflowBotParamServiceImpl.java
  class WorkflowBotParamServiceImpl (line 28) | @Service
    method handleSingleParam (line 48) | @Override
    method handleMultiFileParam (line 115) | @Override
    method handleMultiFileReqInput (line 158) | private void handleMultiFileReqInput(List<ChatFileReq> chatFileReqList...
    method handleFileReqInput (line 180) | private void handleFileReqInput(ChatFileReq fileReq, String uid, Long ...
    method isFileArray (line 198) | public static boolean isFileArray(JSONObject param) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/service/workflow/impl/WorkflowServiceImpl.java
  class WorkflowServiceImpl (line 21) | @Slf4j
    method maasCopySynchronize (line 34) | @Override

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/AudioValidator.java
  class AudioValidator (line 22) | @Slf4j
    method validateAudioFile (line 46) | public static void validateAudioFile(MultipartFile file) throws Busine...
    method validateFileFormat (line 64) | private static void validateFileFormat(MultipartFile file) throws Busi...
    method validateFileSize (line 79) | private static void validateFileSize(MultipartFile file) throws Busine...
    method validateAudioProperties (line 88) | private static void validateAudioProperties(MultipartFile file) throws...
    method validateWavPcmProperties (line 115) | private static void validateWavPcmProperties(MultipartFile file) throw...
    method getAudioFormat (line 131) | @NotNull
    method validateMp3M4aBasic (line 155) | private static void validateMp3M4aBasic(MultipartFile file) throws Bus...
    method validateBasicAudioProperties (line 174) | private static void validateBasicAudioProperties(MultipartFile file) t...
    method getFileExtension (line 189) | private static String getFileExtension(String filename) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/AuthStringUtil.java
  class AuthStringUtil (line 18) | public class AuthStringUtil {
    method assembleAuthURL (line 22) | public static String assembleAuthURL(String uri, String method, String...
    method assembleRequestUrl (line 89) | public static String assembleRequestUrl(String requestUrl, String meth...
    method authMap (line 117) | public static Map<String, String> authMap(String httpRequestUrl, Strin...
    method getSignature (line 159) | public static String getSignature(String appId, String secret, long ts) {
    method hmacSHA1Encrypt (line 175) | private static String hmacSHA1Encrypt(String encryptText, String encry...
    method md5 (line 192) | private static String md5(String cipherText) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/BotFileParamUtil.java
  class BotFileParamUtil (line 15) | @Slf4j
    method isMultiFileParam (line 25) | public static boolean isMultiFileParam(Integer botId, List<JSONObject>...
    method getOldExtraInputsConfig (line 48) | public static List<JSONObject> getOldExtraInputsConfig(UserLangChainIn...
    method mergeSupportUploadFields (line 84) | public static List<JSONObject> mergeSupportUploadFields(
    method getExtraInputsConfig (line 115) | public static List<JSONObject> getExtraInputsConfig(UserLangChainInfo ...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/BotUtil.java
  class BotUtil (line 17) | @Component
    method BotUtil (line 28) | public BotUtil(ChatBotDataService chatBotDataService) {}
    method convertNumToStr (line 30) | public static String convertNumToStr(int number, String langCode) {
    method syncToSparkDatabase (line 45) | public Integer syncToSparkDatabase(Workflow workflow, String uid, Long...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/ChatFileHttpClient.java
  class ChatFileHttpClient (line 9) | @Slf4j
    method getSignForXinghuoDs (line 25) | public HashMap<String, String> getSignForXinghuoDs() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/I18nUtil.java
  class I18nUtil (line 21) | public class I18nUtil {
    method I18nUtil (line 24) | private I18nUtil() {}
    method getMessage (line 33) | public static String getMessage(String msgKey) {
    method getMessage (line 46) | public static String getMessage(String msgKey, String[] args) {
    method getLanguage (line 67) | public static String getLanguage() {
    method getRequestLocale (line 77) | private static Locale getRequestLocale() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/MaasUtil.java
  class MaasUtil (line 41) | @Slf4j
    method deleteSynchronize (line 108) | public JSONObject deleteSynchronize(Integer botId, Long spaceId, HttpS...
    method synchronizeWorkFlow (line 169) | public JSONObject synchronizeWorkFlow(UserLangChainInfo userLangChainI...
    method resolveWorkflowDomain (line 251) | private String resolveWorkflowDomain(BotCreateForm botCreateForm) {
    method getRequestCookies (line 258) | @Deprecated(since = "1.0.0", forRemoval = true)
    method getAuthorizationHeader (line 269) | public static String getAuthorizationHeader(HttpServletRequest request) {
    method getFileType (line 285) | public static int getFileType(String type, JSONObject param) {
    method generatePrefix (line 309) | public static String generatePrefix(String uid, Integer botId) {
    method setBotTag (line 316) | @Transactional
    method createApi (line 383) | public JSONObject createApi(String flowId, String appid) {
    method createApi (line 387) | public void createApi(String flowId, String appid, String version) {
    method createApi (line 400) | public JSONObject createApi(String flowId, String appid, String versio...
    method createApiInternal (line 413) | private JSONObject createApiInternal(String flowId, String appid, Stri...
    method executeRequest (line 436) | private String executeRequest(String url, MaasApi bodyData) {
    method validateResponse (line 470) | private void validateResponse(String responseStr, String action, Strin...
    method copyWorkFlow (line 480) | public JSONObject copyWorkFlow(Long maasId, HttpServletRequest request...
    method getInputsType (line 530) | @Transactional
    method keepOldValue (line 624) | public static JSONObject keepOldValue(List<JSONObject> extraInputs) {
    method isFileArray (line 645) | public static boolean isFileArray(JSONObject param) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/RequestContextUtil.java
  class RequestContextUtil (line 13) | public final class RequestContextUtil {
    method RequestContextUtil (line 15) | private RequestContextUtil() {}
    method getUID (line 17) | public static String getUID() {
    method getUserInfo (line 29) | public static UserInfo getUserInfo() {
    method getCurrentRequest (line 42) | public static HttpServletRequest getCurrentRequest() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/S3ClientUtil.java
  class S3ClientUtil (line 36) | @Slf4j
    method init (line 65) | @PostConstruct
    method validateConfiguration (line 118) | private void validateConfiguration() {
    method buildPublicReadPolicy (line 152) | private String buildPublicReadPolicy(String bucketName) {
    method uploadObject (line 182) | public String uploadObject(String bucketName, String objectKey, String...
    method buildObjectUrl (line 229) | private String buildObjectUrl(String bucketName, String objectKey) {
    method uploadObject (line 248) | public String uploadObject(String objectKey, String contentType, Input...
    method uploadObject (line 262) | public String uploadObject(String bucketName, String objectKey, String...
    method uploadObject (line 286) | public String uploadObject(String objectKey, String contentType, byte[...
    method uploadObject (line 299) | public String uploadObject(String bucketName, String objectKey, String...
    method uploadObject (line 313) | public String uploadObject(String objectKey, String contentType, Input...
    method generatePresignedPutUrl (line 325) | public String generatePresignedPutUrl(String bucketName, String object...
    method generatePresignedPutUrl (line 362) | public String generatePresignedPutUrl(String objectKey) {
    method generatePresignedGetUrl (line 374) | public String generatePresignedGetUrl(String bucketName, String object...
    method generatePresignedGetUrl (line 412) | public String generatePresignedGetUrl(String objectKey) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/SpringContextHolder.java
  class SpringContextHolder (line 7) | @Component
    method setApplicationContext (line 12) | @Override
    method getApplicationContext (line 17) | public static ApplicationContext getApplicationContext() {
    method getBean (line 21) | public static <T> T getBean(Class<T> clazz) {
    method getBean (line 25) | public static <T> T getBean(String name, Class<T> clazz) {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/SseEmitterUtil.java
  class SseEmitterUtil (line 28) | @Slf4j
    method get (line 45) | public static SseEmitter get(String sseId) {
    method exist (line 49) | public static boolean exist(String sseId) {
    method sendMsgLikeTypeWriter (line 56) | public static void sendMsgLikeTypeWriter(String content, String sseId,...
    method create (line 87) | public static SseEmitter create(String sseId) {
    method create (line 104) | public static SseEmitter create(String sseId, long timeout) {
    method sendMessage (line 117) | public static void sendMessage(String sseId, Object message) {
    method close (line 136) | public static void close(String sseId) {
    method error (line 155) | public static void error(String sseId, Throwable t) {
    method completionCallBack (line 174) | private static Runnable completionCallBack(String sseId) {
    method timeoutCallBack (line 194) | private static Runnable timeoutCallBack(String sseId) {
    method errorCallBack (line 207) | private static Consumer<Throwable> errorCallBack(String sseId) {
    method newSseAndSendMessageClose (line 220) | public static SseEmitter newSseAndSendMessageClose(Object message) {
    method sendAndCompleteWithError (line 234) | public static void sendAndCompleteWithError(String sseId, Object error...
    method createSseEmitter (line 259) | public static SseEmitter createSseEmitter() {
    method createSseEmitter (line 269) | public static SseEmitter createSseEmitter(long timeoutMs) {
    method stopStream (line 282) | public static void stopStream(String streamId) {
    method asyncSendStreamAndClose (line 299) | public static <T> void asyncSendStreamAndClose(
    method sendStream (line 329) | public static <T> void sendStream(
    method sendBufferedStream (line 381) | public static void sendBufferedStream(
    method sendWithCallback (line 431) | public static void sendWithCallback(
    method sendData (line 464) | public static void sendData(SseEmitter emitter, Object data) {
    method sendError (line 496) | public static void sendError(SseEmitter emitter, String errorMessage) {
    method sendComplete (line 519) | public static void sendComplete(SseEmitter emitter) {
    method sendComplete (line 529) | public static void sendComplete(SseEmitter emitter, Map<String, Object...
    method sendEndAndComplete (line 552) | public static void sendEndAndComplete(SseEmitter emitter) {
    method completeWithError (line 580) | public static void completeWithError(SseEmitter emitter, String errorM...
    method isStreamStopped (line 600) | public static boolean isStreamStopped(String streamId) {
    method flushBuffer (line 620) | private static void flushBuffer(SseEmitter emitter, StringBuilder buff...
    class StreamProcessor (line 631) | public static class StreamProcessor<T> {
      method StreamProcessor (line 641) | public StreamProcessor(SseEmitter emitter, String streamId) {
      method withDataMapper (line 653) | public StreamProcessor<T> withDataMapper(Function<T, Object> dataMap...
      method withErrorHandler (line 664) | public StreamProcessor<T> withErrorHandler(Consumer<Exception> error...
      method withBeforeProcess (line 675) | public StreamProcessor<T> withBeforeProcess(Consumer<T> beforeProces...
      method withAfterProcess (line 686) | public StreamProcessor<T> withAfterProcess(Consumer<Object> afterPro...
      method withBuffer (line 697) | public StreamProcessor<T> withBuffer(int bufferSize) {
      method processStream (line 708) | public void processStream(Stream<T> dataStream) {
      method asyncSendStreamAndCloseWithBuffer (line 749) | private void asyncSendStreamAndCloseWithBuffer(SseEmitter emitter, S...

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/space/EnterpriseInfoUtil.java
  class EnterpriseInfoUtil (line 8) | public class EnterpriseInfoUtil {
    method init (line 12) | public static void init(String key) {
    method getEnterpriseId (line 21) | public static Long getEnterpriseId() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/space/OrderInfoUtil.java
  class OrderInfoUtil (line 14) | public class OrderInfoUtil {
    method existValidEnterpriseOrder (line 15) | public static boolean existValidEnterpriseOrder(String uid) {
    method getEnterpriseResult (line 20) | public static EnterpriseResult getEnterpriseResult(String uid) {
    method existValidProOrder (line 25) | public static boolean existValidProOrder(String uid) {
    class EnterpriseResult (line 30) | @Data

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/util/space/SpaceInfoUtil.java
  class SpaceInfoUtil (line 11) | @Slf4j
    method init (line 19) | public static void init(EnterpriseSpaceService service, String key) {
    method getUidByCurrentSpaceId (line 36) | public static String getUidByCurrentSpaceId() {
    method getUidBySpaceId (line 51) | public static String getUidBySpaceId(Long spaceId) {
    method getSpaceId (line 64) | public static Long getSpaceId() {
    method checkUserBelongSpace (line 80) | public static boolean checkUserBelongSpace() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/workflow/WorkflowClient.java
  class WorkflowClient (line 17) | @Slf4j
    method WorkflowClient (line 42) | public WorkflowClient(String chatUrl, String appId, String appKey, Str...
    method createWebSocketConnect (line 55) | public void createWebSocketConnect(EventSourceListener sseListener) {
    method newSSE (line 72) | private void newSSE(EventSourceListener listener) {
    method closeSse (line 80) | public void closeSse() {
    method genAuthorization (line 92) | public String genAuthorization() {

FILE: console/backend/commons/src/main/java/com/iflytek/astron/console/commons/workflow/WorkflowListener.java
  class WorkflowListener (line 30) | @Slf4j
    method WorkflowListener (line 43) | public WorkflowListener(WorkflowClient chainClient, ChatReqRecords rec...
    method onEvent (line 62) | @Override
    method tryServeSSEData (line 150) | private boolean tryServeSSEData(SseEmitter emitter, JSONObject dataObj...
    method processWorkFlowInterrupt (line 181) | private String processWorkFlowInterrupt(JSONObject jsonObject, String ...
    method onFailure (line 201) | @Override
    method trySendCompleteAndEnd (line 218) | private void trySendCompleteAndEnd(SseEmitter emitter, JSONObject comp...
    method processDeBugWorkFlow (line 254) | private void processDeBugWorkFlow(JSONObject jsonObject) {
    method buildCompleteData (line 299) | private JSONObject buildCompleteData(StringBuffer finalResult, StringB...
    method getFallbackMessage (line 319) | private String getFallbackMessage(Integer code) {
    method createErrorResponse (line 343) | private JSONObject createErrorResponse(Exception e) {
    method getThinkingResult (line 350) | public StringBuffer getThinkingResult() {
    method getFinalResult (line 354) | public StringBuffer getFinalResult() {

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/CommonsModuleTests.java
  class CommonsModuleTests (line 3) | class CommonsModuleTests {

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/data/impl/UserInfoDataServiceImplUnitTest.java
  class UserInfoDataServiceImplUnitTest (line 38) | @ExtendWith(MockitoExtension.class)
    method setUp (line 63) | @BeforeEach
    method createTestUser (line 68) | private UserInfo createTestUser() {
    class QueryMethodTests (line 83) | @Nested
      method findByUid_Success (line 87) | @Test
      method findByUid_NullUid (line 102) | @Test
      method findByUid_UserNotFound (line 113) | @Test
      method findByUsername_Success (line 126) | @Test
      method findByUsername_BlankUsername (line 140) | @Test
      method findUsersByMobile_Success (line 155) | @Test
      method findUsersByMobile_BlankMobile (line 170) | @Test
      method findByUids (line 181) | @Test
      method findByUids_NullOrEmpty (line 196) | @Test
      method findNickNameByUid (line 208) | @Test
      method findNickNameByUid_NullUid (line 222) | @Test
    class CreateUserMethodTests (line 233) | @Nested
      method createOrGetUser_UserExists (line 237) | @Test
      method createOrGetUser_NullUserInfo (line 251) | @Test
      method createOrGetUser_NullUid (line 260) | @Test
      method createOrGetUser_CreateNewUser (line 272) | @Test
      method createOrGetUser_UserExistsInLock (line 308) | @Test
      method createOrGetUser_LockTimeout (line 331) | @Test
      method createOrGetUser_InterruptedException (line 348) | @Test
    class UpdateMethodTests (line 367) | @Nested
      method updateUserBasicInfo_WithNicknameChange (line 371) | @Test
      method updateUserBasicInfo_UserNotFound (line 399) | @Test
      method updateCurrentUserBasicInfo (line 411) | @Test
    class DeleteAndExistenceMethodTests (line 431) | @Nested
      method deleteUser_Success (line 435) | @Test
      method deleteUser_NullId (line 448) | @Test
      method existsByUsername_Exists (line 459) | @Test
      method existsByUsername_NotExists (line 472) | @Test
      method existsByUsername_BlankUsername (line 485) | @Test
    class PaginationAndCountMethodTests (line 497) | @Nested
      method countUsers (line 501) | @Test
      method countByAccountStatus (line 514) | @Test
      method countByAccountStatus_NullStatus (line 527) | @Test
      method getCurrentUserInfo (line 537) | @Test
      method getCurrentUserInfo_UserNotFound (line 554) | @Test
    class PrivateMethodTests (line 570) | @Nested
      method generateRandomNickname_Chinese (line 574) | @Test
      method generateRandomNickname_English (line 590) | @Test
      method invokePrivateMethod (line 606) | private String invokePrivateMethod(String methodName) throws Excepti...
    class ImportantNotes (line 613) | @Nested
      method updateMethodsRequireIntegrationTests (line 617) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/event/UserNicknameEventSimpleTest.java
  class UserNicknameEventSimpleTest (line 11) | public class UserNicknameEventSimpleTest {
    method testUserNicknameUpdatedEventCreation (line 13) | @Test
    method testUserNicknameUpdatedEventWithNullValues (line 32) | @Test
    method testUserNicknameUpdatedEventWithEmptyStrings (line 51) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/bot/impl/ChatBotDataServiceImplTest.java
  class ChatBotDataServiceImplTest (line 41) | @ExtendWith(MockitoExtension.class)
    method initMybatisPlus (line 88) | @BeforeAll
    method setUp (line 101) | @BeforeEach
    method testFindById_Success (line 116) | @Test
    method testFindById_NotFound (line 127) | @Test
    method testFindByIdAndSpaceId_Success (line 137) | @Test
    method testFindByUid_Success (line 148) | @Test
    method testFindByUidAndSpaceId_Success (line 161) | @Test
    method testFindBySpaceId_Success (line 173) | @Test
    method testFindByBotType_Success (line 185) | @Test
    method testFindByBotTypeAndSpaceId_Success (line 198) | @Test
    method testFindActiveBotsBy_WithUid (line 211) | @Test
    method testFindActiveBotsBy_WithUidAndSpaceId (line 223) | @Test
    method testCreateBot_Success (line 237) | @Test
    method testUpdateBot_Success (line 248) | @Test
    method testUpdateBotBasicInfo_Success (line 258) | @Test
    method testUpdateBotBasicInfo_Failure (line 272) | @Test
    method testDeleteBot_WithBotId_Success (line 283) | @Test
    method testDeleteBot_WithBotIdAndUid_Success (line 295) | @Test
    method testDeleteBot_WithBotIdAndSpaceId_Success (line 311) | @Test
    method testDeleteBotsByIds_Success (line 321) | @Test
    method testDeleteBotsByIds_EmptyList (line 332) | @Test
    method testDeleteBotsByIds_WithSpaceId_Success (line 342) | @Test
    method testCountBotsByUid_Success (line 355) | @Test
    method testCountBotsByUid_WithSpaceId_Success (line 365) | @Test
    method testFindUserBotList_Success (line 377) | @Test
    method testAddBotToUserList_Success (line 393) | @Test
    method testRemoveBotFromUserList_Success (line 405) | @Test
    method testFindByUidAndBotId_Success (line 416) | @Test
    method testCreateUserBotList_Success (line 427) | @Test
    method testFindMarketBots_Success (line 440) | @Test
    method testFindMarketBotsByHot_Success (line 457) | @Test
    method testSearchMarketBots_WithKeyword (line 470) | @Test
    method testSearchMarketBots_WithoutKeyword (line 483) | @Test
    method testFindMarketBotByBotId_Success (line 496) | @Test
    method testFindMarketBotByBotId_Null (line 507) | @Test
    method testBotIsDeleted_BotDeleted (line 517) | @Test
    method testBotIsDeleted_BotNotDeleted (line 527) | @Test
    method testBotIsDeleted_NullBotId (line 537) | @Test
    method testCheckRepeatBotName_Duplicate (line 545) | @Test
    method testCheckRepeatBotName_NotDuplicate (line 555) | @Test
    method testCheckRepeatBotName_NullSpaceId (line 565) | @Test
    method testTakeoffBot_NotExist (line 575) | @Test
    method testTakeoffBot_Success (line 589) | @Test
    method testGetBotDetail_Success (line 605) | @Test
    method testGetVcnDetail_Success (line 620) | @Test
    method testGetVcnDetail_NotFound (line 642) | @Test
    method testGetReleaseChannel_AllChannels (line 653) | @Test
    method testGetReleaseChannel_NoChannels (line 671) | @Test
    method testDeleteBotForDeleteSpace_Success (line 683) | @Test
    method testDeleteBotForDeleteSpace_NullSpaceId (line 702) | @Test
    method testDeleteBotForDeleteSpace_EmptyBotList (line 711) | @Test
    method testCopyBot_Success (line 725) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/data/impl/ChatListDataServiceImplTest.java
  class ChatListDataServiceImplTest (line 28) | @ExtendWith(MockitoExtension.class)
    method setUp (line 50) | @BeforeEach
    method testFindByUidAndChatId_Success (line 81) | @Test
    method testFindByUidAndChatId_UidNull (line 96) | @Test
    method testFindByUidAndChatId_ChatIdNull (line 106) | @Test
    method testFindChatTreeIndexByChatIdOrderById_Success (line 116) | @Test
    method testCreateChat_Success (line 132) | @Test
    method testCreateChatTreeIndex_Success (line 146) | @Test
    method testGetListByRootChatId_Success (line 160) | @Test
    method testGetBotChatList_Success (line 175) | @Test
    method testFindLatestEnabledChatByUserAndBot_Success (line 190) | @Test
    method testFindLatestEnabledChatByUserAndBot_UidNull (line 204) | @Test
    method testFindLatestEnabledChatByUserAndBot_BotIdNull (line 214) | @Test
    method testReactivateChat_Success (line 224) | @Test
    method testReactivateChat_IdNull (line 243) | @Test
    method testReactivateChatBatch_Success (line 253) | @Test
    method testReactivateChatBatch_EmptyList (line 267) | @Test
    method testReactivateChatBatch_NullList (line 277) | @Test
    method testAddRootTree_ExistingChild (line 287) | @Test
    method testAddRootTree_NewChild (line 302) | @Test
    method testDeactivateChatBotList_Success (line 324) | @Test
    method testDeactivateChatBotList_UidNull (line 337) | @Test
    method testDeactivateChatBotList_BotIdNull (line 347) | @Test
    method testGetAllListByChildChatId_Success (line 357) | @Test
    method testGetAllListByChildChatId_ChildChatIdNull (line 375) | @Test
    method testGetAllListByChildChatId_UidNull (line 386) | @Test
    method testGetAllListByChildChatId_ChildNotFound (line 397) | @Test
    method testDeleteById_Success (line 412) | @Test
    method testDeleteById_IdNull (line 432) | @Test
    method testDeleteBatchIds_Success (line 442) | @Test
    method testDeleteBatchIds_EmptyList (line 462) | @Test
    method testDeleteBatchIds_NullList (line 472) | @Test
    method testGetBotChat_Success (line 482) | @Test
    method testInsertChatBotList_Success (line 496) | @Test
    method testUpdateChatBotList_Success (line 510) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/data/impl/UserLangChainInfoDataServiceImplTest.java
  class UserLangChainInfoDataServiceImplTest (line 23) | @ExtendWith(MockitoExtension.class)
    method setUp (line 37) | @BeforeEach
    method testFindByBotIdSet_Success (line 52) | @Test
    method testFindByBotIdSet_NullInput (line 69) | @Test
    method testFindByBotIdSet_EmptyInput (line 80) | @Test
    method testInsertUserLangChainInfo_Success (line 91) | @Test
    method testFindOneByBotId_Success (line 105) | @Test
    method testFindOneByBotId_NullInput (line 119) | @Test
    method testFindListByBotId_Success (line 129) | @Test
    method testFindListByBotId_NullInput (line 145) | @Test
    method testFindFlowIdByBotId_Success (line 156) | @Test
    method testFindFlowIdByBotId_NoResult (line 170) | @Test
    method testSelectByFlowId_Success (line 182) | @Test
    method testSelectByFlowId_NullInput (line 196) | @Test
    method testSelectByMaasId_Success (line 206) | @Test
    method testSelectByMaasId_NullInput (line 220) | @Test
    method testFindByMaasId_Success (line 230) | @Test
    method testFindByMaasId_NullInput (line 246) | @Test
    method testUpdateByBotId_Success (line 256) | @Test
    method testUpdateByBotId_NullBotId (line 272) | @Test
    method testUpdateByBotId_NullUserLangChainInfo (line 285) | @Test
    method testUpdateByBotId_BothParametersNull (line 295) | @Test
    method testFindByBotIdSet_VerifyQueryParameters (line 305) | @Test
    method testFindOneByBotId_VerifyLimitClause (line 323) | @Test
    method testFindFlowIdByBotId_VerifyOrderByAndLimit (line 340) | @Test
    method testInsertUserLangChainInfo_VerifyMapperCall (line 357) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/ApplyRecordServiceImplTest.java
  class ApplyRecordServiceImplTest (line 27) | @ExtendWith(MockitoExtension.class)
    method setUp (line 42) | @BeforeEach
    method testPage_WithValidSpaceId_ShouldReturnPagedResults (line 71) | @Test
    method testPage_WithNullSpaceId_ShouldReturnEmptyPage (line 96) | @Test
    method testPage_WithNullNickname_ShouldCallMapperWithNullNickname (line 116) | @Test
    method testGetByUidAndSpaceId_ShouldReturnCorrectRecord (line 138) | @Test
    method testGetByUidAndSpaceId_WithNonExistingRecord_ShouldReturnNull (line 159) | @Test
    method testGetById_ShouldReturnCorrectRecord (line 176) | @Test
    method testGetById_WithNonExistingId_ShouldReturnNull (line 193) | @Test
    method testUpdateById_WhenUpdateSucceeds_ShouldReturnTrue (line 209) | @Test
    method testUpdateById_WhenUpdateFails_ShouldReturnFalse (line 225) | @Test
    method testUpdateById_WithNullEntity_ShouldHandleGracefully (line 239) | @Test
    method testSave_WhenSaveSucceeds_ShouldReturnTrue (line 253) | @Test
    method testSave_WhenSaveFails_ShouldReturnFalse (line 272) | @Test
    method testSave_WithNullEntity_ShouldHandleGracefully (line 288) | @Test
    method testPage_WithDifferentPageParameters_ShouldSetCorrectPageInfo (line 302) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/EnterprisePermissionServiceImplTest.java
  class EnterprisePermissionServiceImplTest (line 26) | @ExtendWith(MockitoExtension.class)
    method setUp (line 39) | @BeforeEach
    method getEnterprisePermissionByKey_WithValidKey_ShouldReturnPermission (line 85) | @Test
    method getEnterprisePermissionByKey_WithNonExistentKey_ShouldReturnNull (line 113) | @Test
    method getEnterprisePermissionByKey_WithNullKey_ShouldHandleGracefully (line 129) | @Test
    method getEnterprisePermissionByKey_WithEmptyKey_ShouldHandleGracefully (line 145) | @Test
    method getEnterprisePermissionByKey_WithSpecialCharacters_ShouldHandleCorrectly (line 161) | @Test
    method getEnterprisePermissionByKey_WithDifferentCasing_ShouldRespectCaseSensitivity (line 185) | @Test
    method listByKeys_MethodExistsAndImplementsCorrectInterface (line 205) | @Test
    method listByKeys_WithNonMatchingKeys_TestMethodFunctionality (line 223) | @Test
    method listByKeys_WithSingleKey_TestMethodAccessibility (line 243) | @Test
    method verifyServiceInterfaceImplementation (line 267) | @Test
    method verifyQueryWrapperConstruction_GetEnterprisePermissionByKey (line 278) | @Test
    method testMethodDelegationToBaseService (line 298) | @Test
    method testServiceBehaviorWithVariousInputs (line 317) | @Test
    method testInsertBatchMethodExistsAndCallable (line 343) | @Test
    method verifyAllInterfaceMethodsAreImplemented (line 365) | @Test
    method verifyQueryWrapperConstruction_ListByKeys (line 395) | @Test
    method verifyServiceExtendsCorrectBaseClass (line 423) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/EnterpriseServiceImplTest.java
  class EnterpriseServiceImplTest (line 39) | @ExtendWith(MockitoExtension.class)
    method setUp (line 66) | @BeforeEach
    method setLastVisitEnterpriseId_WithValidEnterpriseId_ShouldSetSuccessfully (line 104) | @Test
    method setLastVisitEnterpriseId_WithNullEnterpriseId_ShouldDeleteSuccessfully (line 128) | @Test
    method setLastVisitEnterpriseId_WithNullEnterpriseId_WhenDeleteFails_ShouldReturnFalse (line 152) | @Test
    method getLastVisitEnterpriseId_WithExistingValue_ShouldReturnEnterpriseId (line 174) | @Test
    method getLastVisitEnterpriseId_WithNoValue_ShouldReturnNull (line 198) | @Test
    method getLastVisitEnterpriseId_WithBlankValue_ShouldReturnNull (line 219) | @Test
    method checkNeedCreateTeam_WithExistingEnterprise_ShouldReturn0 (line 240) | @Test
    method checkNeedCreateTeam_WithNoEnterpriseService_ShouldReturn0 (line 258) | @Test
    method checkNeedCreateTeam_WithEnterpriseService_ShouldReturnServiceTypeCode (line 277) | @Test
    method checkNeedCreateTeam_WithNullUserInfo_ShouldThrowNullPointerException (line 296) | @Test
    method orderChangeNotify_WithExistingEnterprise_ShouldUpdateExpireTime (line 313) | @Test
    method orderChangeNotify_WithNonExistentEnterprise_ShouldNotUpdate (line 335) | @Test
    method checkCertification_ShouldThrowUnsupportedOperationException (line 351) | @Test
    method detail_WithValidData_ShouldReturnEnterpriseVO (line 360) | @Test
    method detail_WithNullEnterpriseId_ShouldReturnNull (line 390) | @Test
    method detail_WithNonExistentEnterprise_ShouldReturnNull (line 408) | @Test
    method joinList_ShouldReturnEnterpriseVOList (line 431) | @Test
    method checkExistByName_WithExistingNameAndDifferentId_ShouldReturnTrue (line 454) | @Test
    method checkExistByName_WithNonExistingName_ShouldReturnFalse (line 471) | @Test
    method checkExistByName_WithExistingNameAndNullId_ShouldReturnTrue (line 487) | @Test
    method checkExistByUid_WithExistingUid_ShouldReturnTrue (line 503) | @Test
    method checkExistByUid_WithNonExistingUid_ShouldReturnFalse (line 519) | @Test
    method getEnterpriseById_WithValidId_ShouldReturnEnterprise (line 534) | @Test
    method getEnterpriseById_WithNonExistentId_ShouldReturnNull (line 551) | @Test
    method getEnterpriseByUid_WithValidUid_ShouldReturnEnterprise (line 566) | @Test
    method getEnterpriseByUid_WithNonExistentUid_ShouldReturnNull (line 583) | @Test
    method getUidByEnterpriseId_WithValidEnterpriseId_ShouldReturnUid (line 598) | @Test
    method updateExpireTime_WithValidEnterprise_TestMethodExists (line 613) | @Test
    method save_WithValidEnterprise_ShouldSaveSuccessfully (line 629) | @Test
    method updateById_WithValidEnterprise_ShouldUpdateSuccessfully (line 643) | @Test
    method getById_WithValidId_ShouldReturnEnterprise (line 657) | @Test
    method setLastVisitEnterpriseId_WithRedisException_ShouldHandleGracefully (line 674) | @Test
    method getLastVisitEnterpriseId_WithRedisException_ShouldHandleGracefully (line 694) | @Test
    method verifyServiceImplementsInterfaceCorrectly (line 713) | @Test
    method handleNullParametersGracefully (line 724) | @Test
    method handleInvalidDataFormatsInRedis (line 739) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/EnterpriseSpaceServiceImplTest.java
  class EnterpriseSpaceServiceImplTest (line 25) | @ExtendWith(MockitoExtension.class)
    method setUp (line 57) | @BeforeEach
    method getUidByCurrentSpaceId_WithEnterpriseSpace_ShouldReturnEnterpriseOwnerUid (line 107) | @Test
    method getUidByCurrentSpaceId_WithPersonalSpace_ShouldReturnSpaceOwnerUid (line 127) | @Test
    method getUidByCurrentSpaceId_WithNullSpaceId_ShouldReturnNull (line 148) | @Test
    method getUidByCurrentSpaceId_WithNonExistentSpace_ShouldReturnNull (line 164) | @Test
    method getUidByCurrentSpaceId_WithNonExistentEnterprise_ShouldReturnNull (line 182) | @Test
    method getUidByCurrentSpaceId_WithNonExistentSpaceOwner_ShouldReturnNull (line 202) | @Test
    method checkUserBelongSpace_WithValidUser_ShouldReturnSpaceUser (line 221) | @Test
    method checkUserBelongSpace_WithNonExistentUser_ShouldReturnNull (line 241) | @Test
    method clearSpaceUserCache_ShouldExecuteSuccessfully (line 258) | @Test
    method checkUserBelongEnterprise_WithValidUser_ShouldReturnEnterpriseUser (line 271) | @Test
    method checkUserBelongEnterprise_WithNonExistentUser_ShouldReturnNull (line 291) | @Test
    method clearEnterpriseUserCache_ShouldExecuteSuccessfully (line 308) | @Test
    method getSpacePermissionByKey_WithValidKey_ShouldReturnPermission (line 321) | @Test
    method getSpacePermissionByKey_WithNonExistentKey_ShouldReturnNull (line 339) | @Test
    method getEnterprisePermissionByKey_WithValidKey_ShouldReturnPermission (line 355) | @Test
    method getEnterprisePermissionByKey_WithNonExistentKey_ShouldReturnNull (line 373) | @Test
    method checkEnterpriseExpired_WithValidEnterprise_ShouldReturnFalse (line 389) | @Test
    method checkEnterpriseExpired_WithExpiredEnterprise_ShouldReturnTrue (line 406) | @Test
    method checkEnterpriseExpired_WithNonExistentEnterprise_ShouldReturnTrue (line 423) | @Test
    method checkSpaceExpired_WithNonExistentSpace_ShouldReturnTrue (line 439) | @Test
    method checkSpaceExpired_WithEnterpriseSpace_ShouldCheckEnterpriseExpiration (line 455) | @Test
    method checkSpaceExpired_WithFreeSpace_ShouldReturnFalse (line 475) | @Test
    method checkSpaceExpired_WithProSpace_ShouldCheckOrderValidity (line 493) | @Test
    method checkSpaceExpired_WithProSpaceNoValidOrder_ShouldReturnTrue (line 517) | @Test
    method checkSpaceExpired_WithUnknownSpaceType_ShouldReturnFalse (line 541) | @Test
    method verifyServiceImplementsInterfaceCorrectly (line 559) | @Test
    method handleNullParametersGracefully (line 567) | @Test
    method handleEmptyStringParametersCorrectly (line 587) | @Test
    method checkEnterpriseExpired_WithNullExpirationTime_ShouldHandleGracefully (line 602) | @Test
    method verifyCacheMethodsExistAndCallable (line 617) | @Test
    method verifyAllInterfaceMethodsAreImplemented (line 637) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/EnterpriseUserServiceImplTest.java
  class EnterpriseUserServiceImplTest (line 34) | @ExtendWith(MockitoExtension.class)
    method setUp (line 54) | @BeforeEach
    method getEnterpriseUserByUid_WithValidParameters_ShouldReturnEnterpriseUser (line 107) | @Test
    method getEnterpriseUserByUid_WithNonExistentUser_ShouldReturnNull (line 129) | @Test
    method getEnterpriseUserByUid_WithNullParameters_ShouldHandleGracefully (line 146) | @Test
    method countByEnterpriseIdAndUids_WithValidParameters_ShouldReturnCorrectCount (line 160) | @Test
    method countByEnterpriseIdAndUids_WithNoMatches_ShouldReturnZero (line 178) | @Test
    method countByEnterpriseIdAndUids_WithEmptyUidsList_ShouldHandleGracefully (line 195) | @Test
    method listByEnterpriseId_WithValidEnterpriseId_ShouldReturnUserList (line 212) | @Test
    method listByEnterpriseId_WithNoUsers_ShouldReturnEmptyList (line 230) | @Test
    method addEnterpriseUser_WithNewUser_ShouldAddSuccessfully (line 247) | @Test
    method addEnterpriseUser_WithExistingUser_ShouldReturnTrue (line 269) | @Test
    method addEnterpriseUser_WithNonExistentUserInfo_ShouldThrowException (line 289) | @Test
    method addEnterpriseUser_WithValidData_ShouldCreateCorrectEnterpriseUser (line 310) | @Test
    method listByRole_WithValidRoleAndEnterpriseId_ShouldReturnFilteredUsers (line 338) | @Test
    method listByRole_WithNoUsersForRole_ShouldReturnEmptyList (line 358) | @Test
    method countByEnterpriseId_WithValidEnterpriseId_ShouldReturnCorrectCount (line 376) | @Test
    method countByEnterpriseId_WithNoUsers_ShouldReturnZero (line 393) | @Test
    method page_WithValidEnterpriseId_ShouldReturnPagedResults (line 409) | @Test
    method page_WithNullEnterpriseId_ShouldReturnEmptyPage (line 439) | @Test
    method page_WithNullParameters_ShouldHandleGracefully (line 459) | @Test
    method page_WithUserInfoNotFound_ShouldThrowException (line 486) | @Test
    method removeById_WithValidEntity_ShouldReturnTrue (line 505) | @Test
    method removeById_WhenRemoveFails_ShouldReturnFalse (line 519) | @Test
    method updateById_WithValidEntity_ShouldReturnTrue (line 533) | @Test
    method updateById_WhenUpdateFails_ShouldReturnFalse (line 547) | @Test
    method removeById_WithNullEntity_ShouldHandleGracefully (line 561) | @Test
    method updateById_WithNullEntity_ShouldHandleGracefully (line 575) | @Test
    method verifyServiceImplementsInterfaceCorrectly (line 589) | @Test
    method verifyAllInterfaceMethodsAreImplemented (line 600) | @Test
    method addEnterpriseUser_WithDifferentRoles_ShouldHandleCorrectly (line 649) | @Test
    method countByEnterpriseIdAndUids_WithLargeUidList_ShouldHandleCorrectly (line 678) | @Test
    method page_WithDifferentPageSizes_ShouldHandleCorrectly (line 698) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/InviteRecordServiceImplTest.java
  class InviteRecordServiceImplTest (line 36) | @ExtendWith(MockitoExtension.class)
    method setUp (line 52) | @BeforeEach
    method createMockInviteRecord (line 98) | private InviteRecord createMockInviteRecord(Long id, String inviterUid...
    method inviteList_WithSpaceType_ShouldReturnPagedResults (line 113) | @Test
    method inviteList_WithEnterpriseType_ShouldReturnPagedResults (line 140) | @Test
    method inviteList_WithNullIds_ShouldReturnEmptyPage (line 166) | @Test
    method countBySpaceIdAndUids_WithValidParameters_ShouldReturnCorrectCount (line 188) | @Test
    method countBySpaceIdAndUids_WithNoMatches_ShouldReturnZero (line 206) | @Test
    method countBySpaceIdAndUids_WithEmptyUidsList_ShouldHandleGracefully (line 223) | @Test
    method countByEnterpriseIdAndUids_WithValidParameters_ShouldReturnCorrectCount (line 240) | @Test
    method countByEnterpriseIdAndUids_WithNoMatches_ShouldReturnZero (line 258) | @Test
    method countJoiningByEnterpriseId_WithValidEnterpriseId_ShouldReturnCorrectCount (line 275) | @Test
    method countJoiningByEnterpriseId_WithNoJoiningRecords_ShouldReturnZero (line 292) | @Test
    method countJoiningBySpaceId_WithValidSpaceId_ShouldReturnCorrectCount (line 308) | @Test
    method countJoiningBySpaceId_WithNoJoiningRecords_ShouldReturnZero (line 325) | @Test
    method countJoiningByUid_WithValidParameters_ShouldReturnCorrectCount (line 341) | @Test
    method countJoiningByUid_WithNoJoiningRecords_ShouldReturnZero (line 359) | @Test
    method saveBatch_WithValidEntityList_ShouldReturnTrue (line 376) | @Test
    method saveBatch_WhenSaveFails_ShouldTestMethodAccessibility (line 394) | @Test
    method saveBatch_WithEmptyCollection_ShouldTestMethodVisibility (line 418) | @Test
    method getById_WithValidId_ShouldReturnInviteRecord (line 438) | @Test
    method getById_WithNonExistentId_ShouldReturnNull (line 457) | @Test
    method updateById_WithValidEntity_ShouldReturnTrue (line 473) | @Test
    method updateById_WhenUpdateFails_ShouldReturnFalse (line 489) | @Test
    method updateById_WithNullEntity_ShouldHandleGracefully (line 503) | @Test
    method selectVOById_WithValidId_ShouldReturnInviteRecordVO (line 517) | @Test
    method selectVOById_WithNonExistentId_ShouldReturnNull (line 536) | @Test
    method updateExpireRecord_ShouldTestMethodExistsAndCallable (line 552) | @Test
    method updateExpireRecord_WithNoExpiredRecords_ShouldTestMethodFunctionality (line 569) | @Test
    method getInvitingUids_WithSpaceType_ShouldReturnCorrectUIDs (line 592) | @Test
    method getInvitingUids_WithEnterpriseType_ShouldReturnCorrectUIDs (line 617) | @Test
    method getInvitingUids_WithNoInvitingRecords_ShouldReturnEmptySet (line 643) | @Test
    method verifyServiceImplementsInterfaceCorrectly (line 664) | @Test
    method verifyAllInterfaceMethodsAreImplemented (line 675) | @Test
    method inviteList_WithNullParameters_ShouldHandleGracefully (line 736) | @Test
    method countBySpaceIdAndUids_WithLargeUidsList_ShouldHandleCorrectly (line 764) | @Test
    method updateExpireRecord_ShouldHaveScheduledAnnotation (line 784) | @Test
    method countJoiningByUid_WithDifferentSpaceTypes_ShouldHandleCorrectly (line 804) | @Test
    method verifyQueryWrapperConstruction_WithDifferentStatusConditions (line 825) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/SpacePermissionServiceImplTest.java
  class SpacePermissionServiceImplTest (line 26) | @ExtendWith(MockitoExtension.class)
    method setUp (line 39) | @BeforeEach
    method createMockSpacePermission (line 59) | private SpacePermission createMockSpacePermission(Long id, String perm...
    method getSpacePermissionByKey_WithValidKey_ShouldReturnPermission (line 74) | @Test
    method getSpacePermissionByKey_WithNonExistentKey_ShouldReturnNull (line 101) | @Test
    method getSpacePermissionByKey_WithNullKey_ShouldHandleGracefully (line 117) | @Test
    method getSpacePermissionByKey_WithEmptyKey_ShouldHandleGracefully (line 133) | @Test
    method getSpacePermissionByKey_WithSpecialCharacters_ShouldHandleCorrectly (line 149) | @Test
    method getSpacePermissionByKey_WithDifferentCasing_ShouldRespectCaseSensitivity (line 169) | @Test
    method listByKeys_MethodExistsAndImplementsCorrectInterface (line 189) | @Test
    method listByKeys_WithNonMatchingKeys_TestMethodFunctionality (line 207) | @Test
    method listByKeys_WithSingleKey_TestMethodAccessibility (line 227) | @Test
    method verifyServiceInterfaceImplementation (line 251) | @Test
    method verifyQueryWrapperConstruction_GetSpacePermissionByKey (line 262) | @Test
    method testMethodDelegationToBaseService (line 282) | @Test
    method testServiceBehaviorWithVariousInputs (line 301) | @Test
    method testInsertBatchMethodExistsAndCallable (line 327) | @Test
    method verifyAllInterfaceMethodsAreImplemented (line 349) | @Test
    method verifyQueryWrapperConstruction_ListByKeys (line 379) | @Test
    method verifyServiceExtendsCorrectBaseClass (line 407) | @Test
    method testInsertBatchMethodFunctionality (line 436) | @Test
    method getSpacePermissionByKey_WithEdgeCases_ShouldHandleGracefully (line 464) | @Test
    method testPerformanceWithMultiplePermissionKeys (line 493) | @Test
    method verifyServiceInstantiationAndDependencyInjection (line 515) | @Test
    method testConcurrentAccessSimulation (line 532) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/SpaceServiceImplTest.java
  class SpaceServiceImplTest (line 41) | @ExtendWith(MockitoExtension.class)
    method setUp (line 74) | @BeforeEach
    method createMockSpace (line 107) | private Space createMockSpace(Long id, String name, String uid, Long e...
    method createMockSpaceVO (line 122) | private SpaceVO createMockSpaceVO(Long id, String name, String uid, Lo...
    method createMockSpaceUser (line 137) | private SpaceUser createMockSpaceUser(Long id, Long spaceId, String ui...
    method recentVisitList_ShouldReturnSpaceVOList (line 150) | @Test
    method personalList_WithValidName_ShouldReturnSpaceVOListWithExtraInfo (line 174) | @Test
    method personalSelfList_WithValidName_ShouldReturnSpaceVOList (line 205) | @Test
    method corporateJoinList_WithValidName_ShouldReturnSpaceVOList (line 233) | @Test
    method corporateList_WithValidName_ShouldReturnSpaceVOList (line 260) | @Test
    method corporateCount_ShouldReturnEnterpriseSpaceCountVO (line 287) | @Test
    method getSpaceVO_WithValidSpaceId_ShouldReturnSpaceVOWithMemberInfo (line 312) | @Test
    method getSpaceVO_WithNonExistentSpace_ShouldReturnNull (line 340) | @Test
    method setLastVisitPersonalSpaceTime_ShouldSetTimestampInRedis (line 364) | @Test
    method getLastVisitSpace_WithValidData_ShouldReturnSpaceVO (line 384) | @Test
    method getLastVisitSpace_WithNoRecentVisitsButEnterpriseExists_ShouldReturnSpaceVOWithEnterpriseId (line 410) | @Test
    method getLastVisitSpace_WithNoEnterpriseId_ShouldGetLastVisitEnterpriseId (line 434) | @Test
    method countByEnterpriseId_WithValidEnterpriseId_ShouldReturnCorrectCount (line 462) | @Test
    method countByUid_WithValidUid_ShouldReturnCorrectCount (line 479) | @Test
    method getSpaceById_WithValidId_ShouldReturnSpace (line 496) | @Test
    method getSpaceById_WithNonExistentId_ShouldReturnNull (line 514) | @Test
    method listByEnterpriseIdAndUid_WithValidParameters_ShouldReturnSpaceVOList (line 530) | @Test
    method checkExistByName_WithEnterpriseSpace_ShouldReturnTrue (line 548) | @Test
    method checkExistByName_WithPersonalSpace_ShouldReturnTrue (line 569) | @Test
    method checkExistByName_WithNonExistentName_ShouldReturnFalse (line 593) | @Test
    method getSpaceType_WithValidSpaceId_ShouldReturnSpaceType (line 614) | @Test
    method getSpaceType_WithNullSpaceId_ShouldReturnFree (line 630) | @Test
    method getSpaceType_WithNonExistentSpace_ShouldReturnNull (line 641) | @Test
    method save_WithValidSpace_ShouldReturnTrue (line 657) | @Test
    method getById_WithValidId_ShouldReturnSpace (line 671) | @Test
    method removeById_WithValidId_ShouldReturnTrue (line 688) | @Test
    method updateById_WithValidSpace_ShouldReturnTrue (line 704) | @Test
    method setSpaceVOExtraInfo_WithEmptyList_ShouldHandleGracefully (line 718) | @Test
    method setSpaceVOExtraInfo_WithNullUserInfo_ShouldHandleGracefully (line 736) | @Test
    method verifyServiceImplementsInterfaceCorrectly (line 754) | @Test
    method verifyAllInterfaceMethodsAreImplemented (line 765) | @Test
    method testRedisOperations_ShouldHandleGracefully (line 793) | @Test
    method getSpaceType_WithDifferentTypes_ShouldReturnCorrectTypes (line 813) | @Test
    method personalList_WithLargeCollections_ShouldHandleEfficiently (line 829) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/space/impl/SpaceUserServiceImplTest.java
  class SpaceUserServiceImplTest (line 35) | @ExtendWith(MockitoExtension.class)
    method setUp (line 55) | @BeforeEach
    method createMockSpaceUser (line 94) | private SpaceUser createMockSpaceUser(Long id, Long spaceId, String ui...
    method addSpaceUser_WithNewUser_ShouldAddSuccessfully (line 107) | @Test
    method addSpaceUser_WithExistingUserSameRole_ShouldReturnTrue (line 129) | @Test
    method addSpaceUser_WithExistingUserDifferentRole_ShouldUpdateRole (line 151) | @Test
    method addSpaceUser_WithNonExistentUserInfo_ShouldThrowException (line 176) | @Test
    method listSpaceMember_ShouldReturnMembersExcludingOwner (line 197) | @Test
    method getSpaceUserByUid_WithValidParameters_ShouldReturnSpaceUser (line 220) | @Test
    method getSpaceUserByUid_WithNonExistentUser_ShouldReturnNull (line 240) | @Test
    method countSpaceUserByUids_WithValidParameters_ShouldReturnCorrectCount (line 257) | @Test
    method countSpaceUserByUids_WithNoMatches_ShouldReturnZero (line 275) | @Test
    method countBySpaceId_WithValidSpaceId_ShouldReturnCorrectCount (line 292) | @Test
    method updateVisitTime_WithValidParameters_ShouldTestMethodExists (line 309) | @Test
    method updateVisitTime_WhenUpdateFails_ShouldTestMethodFunctionality (line 326) | @Test
    method removeByUid_WithValidParameters_ShouldReturnTrue (line 351) | @Test
    method removeByUid_WhenRemoveFails_ShouldReturnFalse (line 368) | @Test
    method getAllSpaceUsers_WithSingleSpaceId_ShouldReturnAllUsers (line 385) | @Test
    method getAllSpaceUsers_WithMultipleSpaceIds_ShouldReturnAllUsers (line 402) | @Test
    method countFreeSpaceUser_WithValidUid_ShouldReturnCorrectCount (line 419) | @Test
    method countProSpaceUser_WithValidUid_ShouldReturnCorrectCount (line 438) | @Test
    method getSpaceOwner_WithValidSpaceId_ShouldReturnOwner (line 457) | @Test
    method getSpaceOwner_WithNoOwner_ShouldReturnNull (line 475) | @Test
    method page_WithValidSpaceId_ShouldReturnPagedResults (line 491) | @Test
    method page_WithNullSpaceId_ShouldReturnEmptyPage (line 514) | @Test
    method save_WithValidEntity_ShouldReturnTrue (line 534) | @Test
    method updateById_WithValidEntity_ShouldReturnTrue (line 548) | @Test
    method updateBatchById_WithValidEntityList_ShouldTestMethodExists (line 562) | @Test
    method removeById_WithValidEntity_ShouldReturnTrue (line 580) | @Test
    method getRole_WithValidParameters_ShouldReturnRole (line 594) | @Test
    method getRole_WithNonExistentUser_ShouldReturnNull (line 612) | @Test
    method handleNullParametersGracefully (line 629) | @Test
    method handleEmptyCollectionsGracefully (line 643) | @Test
    method verifyServiceImplementsInterfaceCorrectly (line 661) | @Test
    method verifyAllInterfaceMethodsAreImplemented (line 672) | @Test
    method addSpaceUser_WithDifferentRoles_ShouldHandleCorrectly (line 703) | @Test
    method countSpaceUserByUids_WithLargeUidsList_ShouldHandleCorrectly (line 728) | @Test
    method addSpaceUser_ShouldHaveTransactionalAnnotation (line 748) | @Test
    method countSpaceUsers_WithDifferentSpaceTypes_ShouldHandleCorrectly (line 763) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/workflow/impl/WorkflowBotChatServiceImplTest.java
  class WorkflowBotChatServiceImplTest (line 42) | @ExtendWith(MockitoExtension.class)
    method setUp (line 82) | @BeforeEach
    method testChatWorkflowBot_Success_WithDebugUrl (line 117) | @Test
    method testChatWorkflowBot_Success_WithChatUrl (line 150) | @Test
    method testChatWorkflowBot_WithResumeWorkflow (line 183) | @Test
    method testChatWorkflowBot_UserLangChainInfoNotFound (line 223) | @Test
    method testChatWorkflowBot_WithMultiFileParam (line 238) | @Test
    method testFilterContent_WithListContent (line 268) | @Test
    method testFilterContent_WithWorkflowEventData (line 304) | @Test
    method testShouldRemove_WithWorkflowEventData (line 336) | @Test
    method testShouldRemove_WithNormalContent (line 355) | @Test
    method testShouldRemove_WithInvalidJson (line 367) | @Test
    method testChatWorkflowBot_VerifyChatReqRecordsCreation (line 379) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/service/workflow/impl/WorkflowBotParamServiceImplTest.java
  class WorkflowBotParamServiceImplTest (line 27) | @ExtendWith(MockitoExtension.class)
    method setUp (line 46) | @BeforeEach
    method testHandleSingleParam_WithFileUrl (line 61) | @Test
    method testHandleSingleParam_WithFileUrlContainingComma (line 87) | @Test
    method testHandleSingleParam_WithoutFileUrl_BothReqModelAndFileReq (line 105) | @Test
    method testHandleSingleParam_WithoutFileUrl_FileReqNewer (line 130) | @Test
    method testHandleSingleParam_WithoutFileUrl_OnlyReqModel (line 160) | @Test
    method testHandleSingleParam_WithoutFileUrl_OnlyFileReq (line 177) | @Test
    method testHandleSingleParam_NoExtraInputs (line 202) | @Test
    method testHandleSingleParam_EmptyExtraInputs (line 212) | @Test
    method testHandleMultiFileParam_Success (line 225) | @Test
    method testHandleMultiFileParam_SingleFileType (line 254) | @Test
    method testHandleMultiFileParam_NoMatchingFiles (line 278) | @Test
    method testHandleMultiFileParam_EmptyConfig (line 301) | @Test
    method testHandleMultiFileParam_WithChatFileReqs (line 311) | @Test
    method testIsFileArray_ArrayStringType (line 330) | @Test
    method testIsFileArray_NonArrayType (line 343) | @Test
    method testIsFileArray_InvalidSchema (line 356) | @Test
    method testHandleFileReqInput_WithValidFileUser (line 369) | @Test
    method testHandleFileReqInput_FileUserNotFound (line 400) | @Test
    method createSchemaJson (line 420) | private JSONObject createSchemaJson(String type) {

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/util/BotFileParamUtilTest.java
  class BotFileParamUtilTest (line 16) | class BotFileParamUtilTest {
    method testGetOldExtraInputsConfig_SimpleFormat (line 20) | @Test
    method testGetOldExtraInputsConfig_ComplexFormat (line 46) | @Test
    method testGetOldExtraInputsConfig_AudioType (line 73) | @Test
    method testGetOldExtraInputsConfig_UnknownTypeReturnsNone (line 98) | @Test
    method testGetOldExtraInputsConfig_ComplexFormat_WithoutRequired (line 119) | @Test
    method testMergeSupportUploadFields_BothEmpty (line 146) | @Test
    method testMergeSupportUploadFields_OnlyUploadHasItems (line 157) | @Test
    method testMergeSupportUploadFields_OnlyConfigHasItems (line 174) | @Test
    method testMergeSupportUploadFields_NoOverlap (line 191) | @Test
    method testMergeSupportUploadFields_WithOverlap_ConfigOverrides (line 215) | @Test
    method testMergeSupportUploadFields_MultipleOverlaps (line 242) | @Test
    method testMergeSupportUploadFields_NullNamesIgnored (line 290) | @Test
    method testGetExtraInputsConfig_ValidArray (line 317) | @Test
    method testGetExtraInputsConfig_EmptyArray (line 342) | @Test
    method testGetExtraInputsConfig_MissingName (line 354) | @Test
    method testGetExtraInputsConfig_MissingType (line 371) | @Test
    method testGetExtraInputsConfig_MissingBothNameAndType (line 388) | @Test
    method testGetExtraInputsConfig_MultipleItems (line 400) | @Test
    method testGetExtraInputsConfig_MixedValidAndInvalid (line 448) | @Test
    method testGetExtraInputsConfig_ArrayType (line 474) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/util/MaasUtilTest.java
  class MaasUtilTest (line 35) | @ExtendWith(MockitoExtension.class)
    method initMybatisPlus (line 62) | @BeforeAll
    method setUp (line 73) | @BeforeEach
    method testGetAuthorizationHeader_WithValidHeader (line 91) | @Test
    method testGetAuthorizationHeader_WithNullHeader (line 102) | @Test
    method testGetAuthorizationHeader_WithEmptyHeader (line 112) | @Test
    method testGetAuthorizationHeader_WithBlankHeader (line 122) | @Test
    method testGetRequestCookies_WithValidCookies (line 132) | @Test
    method testGetRequestCookies_WithNullCookies (line 146) | @Test
    method testGetRequestCookies_WithEmptyCookies (line 156) | @Test
    method testGeneratePrefix_Success (line 167) | @Test
    method testGetFileType_PDF_Single (line 177) | @Test
    method testGetFileType_PDF_Array (line 187) | @Test
    method testGetFileType_Image_Single (line 199) | @Test
    method testGetFileType_Image_Array (line 209) | @Test
    method testGetFileType_Doc_Single (line 221) | @Test
    method testGetFileType_PPT_Single (line 231) | @Test
    method testGetFileType_Excel_Single (line 241) | @Test
    method testGetFileType_TXT_Single (line 251) | @Test
    method testGetFileType_Audio_Single (line 261) | @Test
    method testGetFileType_Unknown_Type (line 271) | @Test
    method testGetFileType_NullType (line 281) | @Test
    method testGetFileType_EmptyType (line 290) | @Test
    method testGetFileType_CaseInsensitive (line 299) | @Test
    method testIsFileArray_ArrayString (line 313) | @Test
    method testIsFileArray_NotArray (line 325) | @Test
    method testIsFileArray_NullSchema (line 337) | @Test
    method testIsFileArray_ExceptionHandling (line 346) | @Test
    method testKeepOldValue_EmptyList (line 356) | @Test
    method testKeepOldValue_NullList (line 366) | @Test
    method testKeepOldValue_WithValidInput (line 374) | @Test
    method testKeepOldValue_WithUnsupportedTypes (line 391) | @Test
    method testKeepOldValue_WithFileArray (line 413) | @Test
    method testDeleteSynchronize_NullBotId_ReturnsEmptyJson (line 437) | @Test
    method testDeleteSynchronize_NullSpaceId_ReturnsEmptyJson (line 446) | @Test
    method testDeleteSynchronize_NullRequest_ReturnsEmptyJson (line 455) | @Test
    method testDeleteSynchronize_BotNotFound_ReturnsEmptyJson (line 464) | @Test
    method testDeleteSynchronize_BotVersionNot3_ReturnsEmptyJson (line 475) | @Test
    method testDeleteSynchronize_BotInfoEmpty_ReturnsEmptyJson (line 490) | @Test
    method testDeleteSynchronize_MaasIdNull_ReturnsEmptyJson (line 506) | @Test
    method testSetBotTag_NullBotTagList (line 527) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/util/S3ClientUtilTest.java
  class S3ClientUtilTest (line 36) | class S3ClientUtilTest {
    method setUp (line 85) | @BeforeEach
    method ensureBucketExists (line 120) | private void ensureBucketExists() throws Exception {
    method isMinioUnavailable (line 144) | static boolean isMinioUnavailable() {
    method uploadObject_success (line 148) | @Test
    method uploadObject_withNullContentType (line 166) | @Test
    method uploadObject_withEmptyContentType (line 182) | @Test
    method uploadObject_withInvalidCredentials (line 198) | @Test
    method generatePresignedPutUrl_success (line 230) | @Test
    method generatePresignedPutUrl_withInvalidCredentials (line 248) | @Test
    method getDefaultBucket_success (line 279) | @Test
    method getPresignExpirySeconds_success (line 286) | @Test
    method uploadObject_withDefaultBucket_success (line 293) | @Test
    method generatePresignedPutUrl_withDefaultBucketAndExpiry_success (line 316) | @Test
    method uploadObject_withByteArray_success (line 333) | @Test
    method uploadObject_simplified_success (line 349) | @Test
    method uploadObject_toDefaultBucketWithByteArray_success (line 365) | @Test
    method uploadObject_toDefaultBucketSimplified_success (line 381) | @Test
    method isUrlAccessible (line 398) | private boolean isUrlAccessible(String urlString) {
    method readFromUrl (line 413) | private String readFromUrl(String urlString) throws IOException {
    method uploadObject_generatedUrlIsAccessible (line 427) | @Test
    method uploadObject_withByteArray_generatedUrlIsAccessible (line 463) | @Test
    method generatePresignedPutUrl_canBeUsedForUpload (line 498) | @Test
    method uploadObject_invalidUrl_shouldNotBeAccessible (line 549) | @Test
    method generatePresignedGetUrl_success (line 561) | @Test
    method generatePresignedGetUrl_withDefaultBucketAndExpiry_success (line 593) | @Test
    method generatePresignedGetUrl_withInvalidCredentials (line 624) | @Test
    method uploadObject_withNullBucketName_shouldThrowException (line 657) | @Test
    method uploadObject_withEmptyBucketName_shouldThrowException (line 675) | @Test
    method uploadObject_withNullObjectKey_shouldThrowException (line 693) | @Test
    method uploadObject_withEmptyObjectKey_shouldThrowException (line 710) | @Test
    method uploadObject_withNullInputStream_shouldThrowException (line 727) | @Test
    method uploadObject_withNullByteArray_shouldThrowException (line 744) | @Test
    method generatePresignedPutUrl_withNullBucketName_shouldThrowException (line 761) | @Test
    method generatePresignedPutUrl_withEmptyBucketName_shouldThrowException (line 777) | @Test
    method generatePresignedPutUrl_withNullObjectKey_shouldThrowException (line 793) | @Test
    method generatePresignedPutUrl_withEmptyObjectKey_shouldThrowException (line 807) | @Test
    method generatePresignedPutUrl_withInvalidExpirySeconds_shouldThrowException (line 821) | @Test
    method generatePresignedGetUrl_withNullBucketName_shouldThrowException (line 842) | @Test
    method generatePresignedGetUrl_withEmptyBucketName_shouldThrowException (line 858) | @Test
    method generatePresignedGetUrl_withNullObjectKey_shouldThrowException (line 874) | @Test
    method generatePresignedGetUrl_withEmptyObjectKey_shouldThrowException (line 888) | @Test
    method generatePresignedGetUrl_withInvalidExpirySeconds_shouldThrowException (line 902) | @Test
    method init_withNullEndpoint_shouldThrowException (line 923) | @Test
    method init_withEmptyRemoteEndpoint_shouldThrowException (line 939) | @Test
    method init_withInvalidPresignExpirySeconds_shouldThrowException (line 955) | @Test
    method generatePresignedPutUrl_offline_success (line 971) | @Test

FILE: console/backend/commons/src/test/java/com/iflytek/astron/console/commons/util/SseEmitterUtilTest.java
  class SseEmitterUtilTest (line 20) | class SseEmitterUtilTest {
    method setUp (line 25) | @BeforeEach
    method tearDown (line 32) | @AfterEach
    method clearSessionMap (line 39) | private void clearSessionMap() {
    method clearEventSourceMap (line 44) | private void clearEventSourceMap() {
    method getSessionMap (line 49) | @SuppressWarnings("unchecked")
    method getEventSourceMap (line 54) | @SuppressWarnings("unchecked")
    method testCreate_WithoutTimeout (line 61) | @Test
    method testCreate_WithTimeout (line 70) | @Test
    method testGet_Exists (line 80) | @Test
    method testGet_NotExists (line 88) | @Test
    method testExist_True (line 95) | @Test
    method testExist_False (line 102) | @Test
    method testClose_Success (line 107) | @Test
    method testClose_NonExistent (line 117) | @Test
    method testError_Success (line 123) | @Test
    method testError_NonExistent (line 134) | @Test
    method testSendMessage_Success (line 143) | @Test
    method testSendMessage_NonExistent (line 150) | @Test
    method testSendData_WithValidEmitter (line 156) | @Test
    method testSendData_WithNullEmitter (line 163) | @Test
    method testSendData_WithNullData (line 168) | @Test
    method testSendData_WithObjectData (line 175) | @Test
    method testSendError_WithValidEmitter (line 183) | @Test
    method testSendError_WithNullEmitter (line 190) | @Test
    method testSendError_WithNullMessage (line 195) | @Test
    method testSendComplete_WithoutData (line 202) | @Test
    method testSendComplete_WithData (line 209) | @Test
    method testSendComplete_WithNullEmitter (line 217) | @Test
    method testSendEndAndComplete_Success (line 222) | @Test
    method testSendEndAndComplete_WithNullEmitter (line 229) | @Test
    method testCompleteWithError_Success (line 234) | @Test
    method testCompleteWithError_WithNullEmitter (line 241) | @Test
    method testSendAndCompleteWithError_Exists (line 246) | @Test
    method testSendAndCompleteWithError_NotExists (line 257) | @Test
    method testNewSseAndSendMessageClose_Success (line 264) | @Test
    method testCreateSseEmitter_WithoutTimeout (line 271) | @Test
    method testCreateSseEmitter_WithTimeout (line 278) | @Test
    method testStopStream_ValidStreamId (line 288) | @Test
    method testStopStream_NullStreamId (line 295) | @Test
    method testIsStreamStopped_NotStopped (line 300) | @Test
    method testIsStreamStopped_Stopped (line 309) | @Test
    method testIsStreamStopped_NullStreamId (line 319) | @Test
    method testIsStreamStopped_CalledTwice_ReturnsFalseSecondTime (line 326) | @Test
    method testSendStream_WithNullStream (line 337) | @Test
    method testSendStream_WithValidStream (line 345) | @Test
    method testSendStream_WithDataMapper (line 354) | @Test
    method testSendStream_WithErrorHandler (line 374) | @Test
    method testSendStream_WithStopSignal (line 401) | @Test
    method testSendStream_WithNullData_SkipsNull (line 426) | @Test
    method testAsyncSendStreamAndClose_Success (line 447) | @Test
    method testSendBufferedStream_WithNullStream (line 465) | @Test
    method testSendBufferedStream_WithValidStream (line 473) | @Test
    method testSendWithCallback_Success (line 491) | @Test
    method testSendWithCallback_WithError (line 508) | @Test
    method testStreamProcessor_Creation (line 527) | @Test
    method testStreamProcessor_WithDataMapper (line 538) | @Test
    method testStreamProcessor_WithErrorHandler (line 549) | @Test
    method testStreamProcessor_WithBeforeAndAfterProcess (line 561) | @Test
    method testStreamProcessor_WithBuffer (line 575) | @Test
    method testStreamProcessor_ProcessStream (line 586) | @Test
    method testStreamProcessor_ProcessStreamWithBuffer (line 601) | @Test
    method testStreamProcessor_ChainedConfiguration (line 616) | @Test
    method testEventSourceMap_AddAndRetrieve (line 636) | @Test
    method testEventSourceMap_ClearOnClose (line 645) | @Test

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/HubApplication.java
  class HubApplication (line 8) | @SpringBootApplication(scanBasePackages = "com.iflytek.astron.console")
    method main (line 13) | public static void main(String[] args) {

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/annotation/DistributedLock.java
  type LockType (line 79) | enum LockType {
  type FailStrategy (line 104) | enum FailStrategy {

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/aspect/DistributedLockAspect.java
  class DistributedLockAspect (line 38) | @Slf4j
    method DistributedLockAspect (line 47) | @Autowired
    method around (line 60) | @Around("@annotation(distributedLock)")
    method executeLockLogic (line 75) | private Object executeLockLogic(ProceedingJoinPoint point, Distributed...
    method logSuccessfulAcquisition (line 103) | private void logSuccessfulAcquisition(DistributedLock distributedLock,...
    method createLockException (line 113) | private DistributedLockException createLockException(String lockKey, D...
    method releaseLockSafely (line 120) | private void releaseLockSafely(DistributedLock distributedLock, String...
    method parseLockKey (line 138) | private String parseLockKey(String keyExpression, ProceedingJoinPoint ...
    method getLock (line 165) | private RLock getLock(String lockKey, DistributedLock.LockType lockTyp...
    method tryLock (line 190) | private boolean tryLock(RLock lock, DistributedLock distributedLock) t...
    method handleLockFailure (line 211) | private Object handleLockFailure(String lockKey, DistributedLock distr...
    method logLockFailure (line 217) | private void logLockFailure(String lockKey, DistributedLock distribute...
    method executeFailureStrategy (line 223) | private Object executeFailureStrategy(String lockKey, DistributedLock ...
    method logLockOperation (line 240) | private void logLockOperation(String lockKey, DistributedLock distribu...
    method getTimeInSeconds (line 248) | private long getTimeInSeconds(long time, TimeUnit timeUnit) {

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/DeepSeekConfig.java
  class DeepSeekConfig (line 11) | @Configuration
    method deepSeekHttpClient (line 23) | @Bean("deepSeekHttpClient")
    method getChatCompletionUrl (line 32) | public String getChatCompletionUrl() {

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/DistributedLockConfig.java
  class DistributedLockConfig (line 19) | @Slf4j
    method DistributedLockConfig (line 27) | public DistributedLockConfig(RedissonClient redissonClient) {
    method validateConfiguration (line 34) | @PostConstruct

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/GlobalExceptionHandler.java
  class GlobalExceptionHandler (line 28) | @Slf4j
    method handleBusinessException (line 34) | @ExceptionHandler(BusinessException.class)
    method handleMethodArgumentNotValidException (line 43) | @ExceptionHandler(MethodArgumentNotValidException.class)
    method handleBindException (line 55) | @ExceptionHandler(BindException.class)
    method handleConstraintViolationException (line 67) | @ExceptionHandler(ConstraintViolationException.class)
    method handleMethodArgumentTypeMismatchException (line 77) | @ExceptionHandler(MethodArgumentTypeMismatchException.class)
    method handleMissingServletRequestParameterException (line 87) | @ExceptionHandler(MissingServletRequestParameterException.class)
    method handleHttpMessageNotReadableException (line 97) | @ExceptionHandler(HttpMessageNotReadableException.class)
    method handleHttpRequestMethodNotSupportedException (line 106) | @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
    method handleNoHandlerFoundException (line 116) | @ExceptionHandler(NoHandlerFoundException.class)
    method handleDistributedLockException (line 126) | @ExceptionHandler(DistributedLockException.class)
    method handleException (line 135) | @ExceptionHandler(Exception.class)

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/InternationalConfig.java
  class InternationalConfig (line 14) | @Configuration
    method localeResolver (line 18) | @Bean
    method localeChangeInterceptor (line 30) | @Bean
    method addInterceptors (line 38) | @Override
    method messageSource (line 44) | @Bean

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/JacksonConfig.java
  class JacksonConfig (line 11) | @Configuration
    method objectMapper (line 15) | @Bean

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/MyBatisPlusConfig.java
  class MyBatisPlusConfig (line 17) | @Configuration
    method mybatisPlusInterceptor (line 21) | @Bean(name = "mybatisPlusInterceptor")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/RedisCacheConfig.java
  class RedisCacheConfig (line 24) | @Configuration
    method RedisCacheConfig (line 32) | public RedisCacheConfig(ObjectMapper objectMapper) {
    method cacheManagerDefault (line 36) | @Bean
    method cacheManager10s (line 43) | @Bean("cacheManager10s")
    method cacheManager5min (line 49) | @Bean("cacheManager5min")
    method cacheManager30min (line 55) | @Bean("cacheManager30min")
    method cacheManager1h (line 61) | @Bean("cacheManager1h")
    method createBaseCacheConfiguration (line 67) | private RedisCacheConfiguration createBaseCacheConfiguration(Duration ...
    method jackson2JsonRedisSerializer (line 78) | private GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer...
    method errorHandler (line 96) | @Override

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/SecurityConfig.java
  class SecurityConfig (line 23) | @Configuration
    method resourceServerFilterChain (line 31) | @Bean
    method corsConfigurationSource (line 67) | CorsConfigurationSource corsConfigurationSource() {

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/SpringDocConfig.java
  class SpringDocConfig (line 14) | @Configuration
    method customOpenAPI (line 18) | @Bean
    method swaggerUiConfigProperties (line 32) | @Bean

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/VoiceTrainConfig.java
  class VoiceTrainConfig (line 8) | @Configuration
    method voiceTrainClient (line 17) | @Bean

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/WebMvcConfig.java
  class WebMvcConfig (line 8) | @Configuration
    method addInterceptors (line 25) | @Override

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/WorkflowConfig.java
  class WorkflowConfig (line 10) | @Data
    class FileUpload (line 45) | @Data

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/security/RestfulAccessDeniedHandler.java
  class RestfulAccessDeniedHandler (line 21) | @Component
    method handle (line 27) | @Override

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/security/RestfulAuthenticationEntryPoint.java
  class RestfulAuthenticationEntryPoint (line 19) | @Component
    method commence (line 25) | @Override

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/config/space/EnterpriseSpaceConfig.java
  class EnterpriseSpaceConfig (line 13) | @Configuration
    method init (line 25) | @PostConstruct

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/HealthController.java
  class HealthController (line 8) | @RestController
    method health (line 11) | @GetMapping

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/S3Controller.java
  class S3Controller (line 16) | @RestController
    method presignPut (line 24) | @GetMapping("/presign")
    class PresignResp (line 35) | @Data

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/SparkChatController.java
  class SparkChatController (line 16) | @Slf4j
    method chatStream (line 26) | @PostMapping(value = "/chat/stream", produces = MediaType.TEXT_EVENT_S...

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/WorkflowChatController.java
  class WorkflowChatController (line 22) | @Slf4j
    method workflowChatStream (line 38) | @PostMapping(value = "/chat/stream", produces = MediaType.TEXT_EVENT_S...
    method resumeWorkflowChat (line 53) | @PostMapping(value = "/chat/resume", produces = MediaType.TEXT_EVENT_S...
    method stopWorkflowStream (line 67) | @PostMapping("/chat/stop/{streamId}")
    method getWorkflowChatStatus (line 84) | @GetMapping("/chat/status")
    method healthCheck (line 102) | @GetMapping("/health")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/bot/BotController.java
  class BotController (line 47) | @Slf4j
    method createBot (line 86) | @PostMapping(path = "/base-save")
    method syncWorkflowRuntimeModel (line 113) | private void syncWorkflowRuntimeModel(BotCreateForm bot, HttpServletRe...
    method resolveSelectedModel (line 132) | private LLMInfoVo resolveSelectedModel(BotCreateForm bot, HttpServletR...
    method maasPublish (line 162) | @PostMapping("/publish")
    method takeoffBot (line 185) | @SpacePreAuth(key = "BotController_takeoffBot_POST")
    method updateSynchronize (line 199) | @PostMapping("/updateSynchronize")
    method copyBot2 (line 233) | @SpacePreAuth(key = "BotController_copyBot2_POST")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/bot/BotCreateController.java
  class BotCreateController (line 42) | @Slf4j
    method createBot (line 81) | @SpacePreAuth(key = "BotCreateController_createBot_POST")
    method getBotTypeList (line 129) | @PostMapping("/type-list")
    method generateAvatar (line 141) | @PostMapping("/ai-avatar-gen")
    method sentence (line 167) | @PostMapping("/ai-sentence-gen")
    method generateInputExample (line 184) | @PostMapping(value = "/generate-input-example")
    method aiGenPrologue (line 202) | @PostMapping("/ai-prologue-gen")
    method updateBot (line 220) | @SpacePreAuth(key = "BotCreateController_updateBot_POST")
    method botModel (line 273) | @Operation(summary = "Get bot model list", description = "Fetches both...
    method convertToModelDto (line 329) | private BotModelDto convertToModelDto(JSONObject modelJson) {
    method getTemplates (line 349) | @GetMapping("/template")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/bot/BotFavoriteController.java
  class BotFavoriteController (line 14) | @Tag(name = "Assistant Favorites")
    method list (line 22) | @PostMapping(value = "/list")
    method create (line 30) | @PostMapping(value = "/create")
    method delete (line 38) | @PostMapping(value = "/delete")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/bot/PersonalityController.java
  class PersonalityController (line 18) | @RestController
    method aiGenerate (line 38) | @PostMapping("/aiGenerate")
    method aiPolishing (line 57) | @PostMapping("/aiPolishing")
    method getCategory (line 73) | @GetMapping("/getCategory")
    method getRole (line 80) | @GetMapping("/getRole")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/bot/SpeakerTrainController.java
  class SpeakerTrainController (line 24) | @Slf4j
    method create (line 35) | @Operation(summary = "create speaker")
    method getText (line 49) | @Operation(summary = "get text")
    method trainSpeaker (line 56) | @Operation(summary = "get train speaker")
    method updateTrainSpeaker (line 66) | @Operation(summary = "update train speaker")
    method deleteTrainSpeaker (line 76) | @Operation(summary = "delete train speaker")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/bot/TalkAgentController.java
  class TalkAgentController (line 21) | @Tag(name = "Talk Agent")
    method getSceneList (line 37) | @PostMapping("/getSceneList")
    method createTalkAgent (line 43) | @PostMapping("/create")
    method upgradeWorkflow (line 58) | @PostMapping("/upgradeWorkflow")
    method saveHistory (line 68) | @PostMapping("/saveHistory")
    method getSignature (line 74) | @GetMapping("/signature")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/bot/VoiceApiController.java
  class VoiceApiController (line 20) | @Slf4j
    method ttsSign (line 30) | @GetMapping(value = "/tts-sign")
    method getPronunciationPerson (line 39) | @GetMapping(value = "/get-pronunciation-person")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/chat/ChatEnhanceController.java
  class ChatEnhanceController (line 35) | @RestController
    method saveFile (line 56) | @PostMapping(path = "/save-file")
    method unbindFile (line 94) | @Operation(summary = "Unbind file's FileId and ChatId")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/chat/ChatHistoryController.java
  class ChatHistoryController (line 37) | @RestController
    method getAllChatHistory (line 65) | @GetMapping("/all/{chatId}")
    method getMessageHistory (line 95) | private ChatHistoryResponseDto getMessageHistory(String uid, Long chat...

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/chat/ChatListController.java
  class ChatListController (line 30) | @RestController
    method getAllChatList (line 44) | @PostMapping("/all-chat-list")
    method createChatList (line 58) | @PostMapping("/v1/create-chat-list")
    method deleteChatList (line 75) | @PostMapping("/v1/del-chat-list")
    method getBotInfo (line 96) | @GetMapping("/v1/get-bot-info")
    method getCurrentUserId (line 108) | private String getCurrentUserId() {
    method setDefaultChatListName (line 117) | private void setDefaultChatListName(ChatListCreateRequest payload) {
    method validateBotId (line 133) | private Integer validateBotId(Integer botId) {
    method validateBotPermissions (line 146) | private void validateBotPermissions(Integer botId, String uid) {
    method validateMarketBotPermissions (line 163) | private void validateMarketBotPermissions(ChatBotMarket chatBotMarket,...
    method validatePrivateBotPermissions (line 176) | private void validatePrivateBotPermissions(Integer botId, String uid) {
    method validateSpacePermissions (line 190) | private void validateSpacePermissions(ChatBotBase chatBotBase) {

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/chat/ChatMessageController.java
  class ChatMessageController (line 41) | @RestController
    method chat (line 67) | @PostMapping(path = "/chat", produces = "text/event-stream;charset=UTF...
    method validateChatRequest (line 113) | private ValidationResult validateChatRequest(Long chatId, String text,...
    method validateChatContext (line 139) | private ChatContext validateChatContext(Long chatId, Long requestId, S...
    method processChatRequest (line 187) | private SseEmitter processChatRequest(ChatContext chatContext, String ...
    method buildChatBotRequest (line 213) | private ChatBotReqDto buildChatBotRequest(ChatContext chatContext, Str...
    method sendStartSignal (line 231) | private void sendStartSignal(SseEmitter sseEmitter, String sseId, Chat...
    method valid (line 246) | static ValidationResult valid() { return new ValidationResult(true); }
    method invalid (line 251) | static ValidationResult invalid() { return new ValidationResult(false); }
    method stopStream (line 259) | @PostMapping("/stop")
    method subscribe (line 271) | @PostConstruct
    method reAnswer (line 282) | @PostMapping(path = "/re-answer", produces = "text/event-stream;charse...
    method validateReAnswerRequest (line 324) | private ValidationResult validateReAnswerRequest(Long chatId, Long req...
    method processReAnswerRequest (line 351) | private SseEmitter processReAnswerRequest(ChatContext chatContext, Lon...
    method botDebug (line 369) | @PostMapping(path = "/bot-debug", produces = "text/event-stream;charse...
    method clear (line 418) | @GetMapping(path = "/clear")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/chat/ChatRestartController.java
  class ChatRestartController (line 29) | @RestController
    method restart (line 53) | @PostMapping(value = "/restart")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/extra/RtasrController.java
  class RtasrController (line 24) | @Slf4j
    method rtasrSign (line 41) | @Operation(summary = "Get authorization token for real-time speech rec...
    method getSign (line 64) | public String getSign(String ts, String rtasrApikey, String appId) {

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/homepage/AgentSquareController.java
  class AgentSquareController (line 21) | @Slf4j
    method getBotTypeList (line 30) | @GetMapping("/get-bot-type-list")
    method getBotPageByType (line 36) | @GetMapping("/get-bot-page-by-type")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/notification/NotificationController.java
  class NotificationController (line 17) | @RestController
    method getUserNotifications (line 26) | @GetMapping("/list")
    method getUnreadNotificationCount (line 42) | @GetMapping("/unread-count")
    method markNotificationsAsRead (line 54) | @PostMapping("/mark-read")
    method deleteNotification (line 67) | @DeleteMapping("/{notificationId}")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/publish/BotPublishController.java
  class BotPublishController (line 44) | @Slf4j
    method getBotList (line 59) | @Operation(
    method getBotDetail (line 80) | @Operation(
    method getPrepareData (line 106) | @Operation(
    method unifiedPublish (line 131) | @Operation(
    method getBotSummaryStats (line 184) | @Operation(
    method getBotTimeSeriesStats (line 209) | @Operation(
    method getBotVersions (line 239) | @Operation(
    method getBotTrace (line 276) | @Operation(

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/publish/PublishApiController.java
  class PublishApiController (line 24) | @Slf4j
    method createUserApp (line 35) | @Operation(summary = "Create User App", description = "create user app")
    method getAppList (line 42) | @Operation(summary = "Get App List", description = "Get user app list")
    method createBotApi (line 49) | @Operation(summary = "Create Bot Api", description = "create bot api w...
    method usageRealTime (line 56) | @Operation(summary = "Get Bot Api Info", description = "Get Bot Api In...

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/share/ShareController.java
  class ShareController (line 30) | @Slf4j
    method getShareKey (line 51) | @SpacePreAuth(key = "ShareController_getShareKey_POST")
    method addSharedAgent (line 78) | @PostMapping("/add-shared-agent")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/space/ApplyRecordController.java
  class ApplyRecordController (line 22) | @Slf4j
    method joinEnterpriseSpace (line 31) | @PostMapping("/join-enterprise-space")
    method agreeEnterpriseSpace (line 39) | @PostMapping("/agree-enterprise-space")
    method refuseEnterpriseSpace (line 47) | @PostMapping("/refuse-enterprise-space")
    method page (line 55) | @PostMapping("/page")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/space/EnterpriseController.java
  class EnterpriseController (line 23) | @Slf4j
    method visitEnterprise (line 34) | @GetMapping("/visit-enterprise")
    method checkNeedCreateTeam (line 40) | @GetMapping("/check-need-create-team")
    method checkCertification (line 46) | @GetMapping("/check-certification")
    method create (line 52) | @PostMapping("/create")
    method checkName (line 59) | @GetMapping("/check-name")
    method updateName (line 65) | @PostMapping("/update-name")
    method updateLogo (line 73) | @PostMapping("/update-logo")
    method updateAvatar (line 81) | @PostMapping("/update-avatar")
    method detail (line 89) | @GetMapping("/detail")
    method joinList (line 96) | @GetMapping("/join-list")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/space/EnterprisePermissionController.java
  class EnterprisePermissionController (line 13) | @Slf4j

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/space/EnterpriseUserController.java
  class EnterpriseUserController (line 26) | @Slf4j
    method remove (line 37) | @DeleteMapping("/remove")
    method updateRole (line 45) | @PostMapping("/update-role")
    method page (line 53) | @PostMapping("/page")
    method quitEnterprise (line 60) | @PostMapping("/quit-enterprise")
    method getUserLimit (line 69) | @GetMapping("/get-user-limit")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/space/InviteRecordController.java
  class InviteRecordController (line 31) | @Slf4j
    method getInviteByParam (line 42) | @GetMapping("/get-invite-by-param")
    method spaceSearchUser (line 52) | @GetMapping("/space-search-user")
    method spaceSearchUsername (line 59) | @GetMapping("/space-search-username")
    method spaceInvite (line 66) | @PostMapping("/space-invite")
    method spaceInviteList (line 74) | @PostMapping("/space-invite-list")
    method enterpriseSearchUser (line 81) | @GetMapping("/enterprise-search-user")
    method enterpriseSearchUsername (line 88) | @GetMapping("/enterprise-search-username")
    method enterpriseBatchSearchUser (line 95) | @PostMapping("/enterprise-batch-search-user")
    method enterpriseBatchSearchUsername (line 102) | @PostMapping("/enterprise-batch-search-username")
    method enterpriseInvite (line 109) | @PostMapping("/enterprise-invite")
    method enterpriseInviteList (line 117) | @PostMapping("/enterprise-invite-list")
    method acceptInvite (line 124) | @PostMapping("/accept-invite")
    method refuseInvite (line 131) | @PostMapping("/refuse-invite")
    method revokeEnterpriseInvite (line 138) | @PostMapping("/revoke-enterprise-invite")
    method revokeSpaceInvite (line 146) | @PostMapping("/revoke-space-invite")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/space/SpaceController.java
  class SpaceController (line 29) | @Slf4j
    method checkName (line 40) | @GetMapping("/check-name")
    method visitSpace (line 46) | @GetMapping("/visit-space")
    method recentVisitList (line 52) | @GetMapping("/recent-visit-list")
    method getLastVisitSpace (line 58) | @GetMapping("/get-last-visit-space")
    method personalList (line 64) | @GetMapping("/personal-list")
    method personalSelfList (line 70) | @GetMapping("/personal-self-list")
    method detail (line 76) | @GetMapping("/detail")
    method sendMessageCode (line 83) | @GetMapping("/send-message-code")
    method deletePersonalSpace (line 90) | @DeleteMapping("/delete-personal-space")
    method ossVersionUserUpgrade (line 97) | @PostMapping("/oss-version-user-upgrade")
    method createPersonalSpace (line 107) | @PostMapping("/create-personal-space")
    method updatePersonalSpace (line 114) | @PostMapping("/update-personal-space")
    method createCorporateSpace (line 125) | @PostMapping("/create-corporate-space")
    method deleteCorporateSpace (line 133) | @DeleteMapping("/delete-corporate-space")
    method updateCorporateSpace (line 141) | @PostMapping("/update-corporate-space")
    method corporateList (line 149) | @GetMapping("/corporate-list")
    method corporateCount (line 156) | @GetMapping("/corporate-count")
    method corporateJoinList (line 163) | @GetMapping("/corporate-join-list")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/space/SpacePermissionController.java
  class SpacePermissionController (line 13) | @Slf4j

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/space/SpaceUserController.java
  class SpaceUserController (line 25) | @Slf4j
    method enterpriseAdd (line 35) | @PostMapping("/enterprise-add")
    method remove (line 43) | @DeleteMapping("/remove")
    method updateRole (line 51) | @PostMapping("/update-role")
    method page (line 59) | @PostMapping("/page")
    method quitSpace (line 66) | @PostMapping("/quit-space")
    method listSpaceMember (line 74) | @GetMapping("/list-space-member")
    method transferSpace (line 81) | @PostMapping("/transfer-space")
    method getUserLimit (line 89) | @GetMapping("/get-user-limit")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/user/MyBotController.java
  class MyBotController (line 31) | @Slf4j
    method getCreatedList (line 58) | @SpacePreAuth(key = "MyBotController_getCreatedList_POST")
    method deleteBot (line 68) | @SpacePreAuth(key = "MyBotController_deleteBot_POST")
    method getBotDetail (line 78) | @SpacePreAuth(key = "MyBotController_getBotDetail_POST")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/user/UserInfoController.java
  class UserInfoController (line 20) | @RestController
    method getCurrentUserInfo (line 29) | @GetMapping("/me")
    method updateCurrentUserBasicInfo (line 37) | @PostMapping("/update")
    method agreeUserAgreement (line 48) | @PostMapping("/agreement")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/wechat/WechatCallbackController.java
  class WechatCallbackController (line 27) | @Slf4j
    method handleSysMsg (line 51) | @RequestMapping(value = "/callback", method = {RequestMethod.POST, Req...
    method authCallback (line 124) | @PostMapping("/authCallback")
    method setTestVerifyTicket (line 145) | @PostMapping("/test/set-verify-ticket")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/workflow/ChatWorkflowController.java
  class ChatWorkflowController (line 29) | @Slf4j
    method info (line 49) | @GetMapping(value = "/info")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/controller/workflow/WorkflowBotController.java
  class WorkflowBotController (line 36) | @Slf4j
    method templateGroup (line 57) | @GetMapping("/templateGroup")
    method createFromTemplate (line 64) | @Operation(summary = "work flow template", description = "Create workf...
    method templateList (line 73) | @PostMapping("/templateList")
    method getInputsType (line 80) | @PostMapping("/get-inputs-type")

FILE: console/backend/hub/src/main/java/com/iflytek/astron/console/hub/converter/BotPublishConverter.java
  type BotPublishConverter (line 20) | @Mapper(
    method queryResultToDto (line 33) | @Mapping(target = "publishStatus", source = "botStatus")
    method queryResultsToDtoList (line 45) | List<BotPublishInfoDto> queryResultsToDtoList(List<BotPublishQueryResu...
    method queryResultToDetailDto (line 53) | @Mapping(target = "publishStatus", source = "botStatus")
    method parsePublishChannels (line 65) | @Named("parsePublishChannels")

FILE: console/backend
Copy disabled (too large) Download .json
Condensed preview — 3154 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (23,092K chars).
[
  {
    "path": ".gemini/config.yaml",
    "chars": 298,
    "preview": "# https://developers.google.com/gemini-code-assist/docs/customize-gemini-behavior-github\nhave_fun: false  # Just review "
  },
  {
    "path": ".gitattributes",
    "chars": 64,
    "preview": "# Shell scripts must always use LF line endings\n*.sh text eol=lf"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 3090,
    "preview": "---\nname: \"🐞 Bug Report\"\ndescription: Report a bug to help us improve\ntitle: \"[BUG] \"\nlabels:\n  - bug\nassignees: []\nbod"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 190,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: 💬 Discussions\n    url: https://github.com/iflytek/astron-agent/dis"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 2335,
    "preview": "---\nname: \"✨ Feature Request\"\ndescription: Suggest an improvement or new capability for the project\ntitle: \"[FEATURE] \"\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/general_issue.yml",
    "chars": 2626,
    "preview": "---\nname: \"💬 General Issue\"\ndescription: Questions, documentation gaps, performance topics, or other general discussions"
  },
  {
    "path": ".github/code_of_conduct.md",
    "chars": 5467,
    "preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
  },
  {
    "path": ".github/code_owners",
    "chars": 472,
    "preview": "* @scguoi @wowo_zZ @shuanchengtang @hellovigoss\n\n/console/backend @abelzha @vsxd @yun-zhi-ztl @cherrywooo @mingsuiyonghe"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 659,
    "preview": "## Summary\n<!-- Brief description of what this PR does -->\n\n## Type of Change\n- [ ] Bug fix\n- [ ] New feature\n- [ ] Brea"
  },
  {
    "path": ".github/quality-requirements/branch-commit-standards-zh.md",
    "chars": 3608,
    "preview": "# 分支与提交规范\n\n本文档定义了项目的分支管理和提交消息规范,确保团队协作的一致性和代码质量。\n\n## 分支管理规范\n\n### 分支类型\n\n| 分支类型 | 命名格式 | 用途 | 示例 |\n|---------|---------|--"
  },
  {
    "path": ".github/quality-requirements/branch-commit-standards.md",
    "chars": 6008,
    "preview": "# Branch and Commit Standards\n\nThis document defines the branch management and commit message standards for the project,"
  },
  {
    "path": ".github/quality-requirements/code-requirements-zh.md",
    "chars": 1281,
    "preview": "# 代码质量检测文档\n\n本目录包含各语言的代码质量检测工具说明,与Makefile工具链集成。\n\n## 支持的语言\n\n| 语言 | 文档 | Makefile命令 | 工具链 |\n|------|------|-------------|-"
  },
  {
    "path": ".github/quality-requirements/code-requirements.md",
    "chars": 1770,
    "preview": "# Code Quality Requirements\n\nThis directory contains code quality detection tool documentation for different programming"
  },
  {
    "path": ".github/quality-requirements/langs/go-zh.md",
    "chars": 1455,
    "preview": "# Go代码质量检测\n\n## 工具链\n\n### 格式化工具\n- **gofmt**: Go官方格式化\n- **goimports**: 自动管理imports\n- **gofumpt**: 更严格的格式化\n- **golines**: 控制"
  },
  {
    "path": ".github/quality-requirements/langs/go.md",
    "chars": 2195,
    "preview": "# Go Code Quality Detection\n\n## Toolchain\n\n### Formatting Tools\n- **gofmt**: Go official formatting\n- **goimports**: Aut"
  },
  {
    "path": ".github/quality-requirements/langs/java-zh.md",
    "chars": 2078,
    "preview": "# Java代码质量检测\n\n## 工具链\n\n### 格式化工具\n- **Spotless**: 基于Google Java Format的自动格式化\n- **Maven集成**: 通过spotless-maven-plugin实现\n\n###"
  },
  {
    "path": ".github/quality-requirements/langs/java.md",
    "chars": 2894,
    "preview": "# Java Code Quality Detection\n\n## Toolchain\n\n### Formatting Tools\n- **Spotless**: Automatic formatting based on Google J"
  },
  {
    "path": ".github/quality-requirements/langs/python-zh.md",
    "chars": 2567,
    "preview": "# Python代码质量检测\n\n## 工具链\n\n### 格式化工具\n- **black**: 代码格式化(PEP 8标准)\n- **isort**: 导入语句排序和整理\n\n### 质量检测工具\n- **flake8**: 代码风格和错误检查"
  },
  {
    "path": ".github/quality-requirements/langs/python.md",
    "chars": 3418,
    "preview": "# Python Code Quality Detection\n\n## Toolchain\n\n### Formatting Tools\n- **black**: Code formatting (PEP 8 standard)\n- **is"
  },
  {
    "path": ".github/quality-requirements/langs/typescript-zh.md",
    "chars": 2143,
    "preview": "# TypeScript代码质量检测\n\n## 工具链\n\n### 格式化工具\n- **prettier**: 代码格式化(统一代码风格)\n- **全局安装**: 避免项目空间污染\n\n### 质量检测工具\n- **eslint**: 代码规范和"
  },
  {
    "path": ".github/quality-requirements/langs/typescript.md",
    "chars": 2969,
    "preview": "# TypeScript Code Quality Detection\n\n## Toolchain\n\n### Formatting Tools\n- **prettier**: Code formatting (unified code st"
  },
  {
    "path": ".github/workflows/build-push.yml",
    "chars": 24396,
    "preview": "name: Build and Push astron Agent Images\n\non:\n  push:\n    branches:\n      - main\n      - master\n      - bugfix/superteam"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 20775,
    "preview": "name: 🚀 CI Pipeline\n\non:\n  push:\n    branches: [main, master, 'feature/**']\n  pull_request:\n    branches: [main, master,"
  },
  {
    "path": ".github/workflows/claude-review.yml",
    "chars": 1915,
    "preview": "name: Claude Review\n\non:\n  pull_request_target:\n    types: [opened, synchronize]\n    # Optional: Only run on specific fi"
  },
  {
    "path": ".github/workflows/claude.yml",
    "chars": 2148,
    "preview": "name: Claude Code\n\non:\n  issue_comment:\n    types: [created]\n  pull_request_review_comment:\n    types: [created]\n  issue"
  },
  {
    "path": ".github/workflows/codeql-security-analysis.yml",
    "chars": 5081,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 14112,
    "preview": "name: Release Astron Agent\n\non:\n  push:\n    tags:\n      - 'v*.*.*'      # 匹配语义版本号 (v1.0.0, v2.1.3, etc.)\n      - 'v*.*.*"
  },
  {
    "path": ".gitignore",
    "chars": 3943,
    "preview": ".vscode\n\n# IntelliJ IDEA project files\n# ===================================\n.idea/\n*.iml\n*.iws\nout/\n\n# ================"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 13756,
    "preview": "# =============================================================================\n# Pre-commit Configuration for Multi-lan"
  },
  {
    "path": "AGENTS.md",
    "chars": 2894,
    "preview": "# AGENTS.md\n\n## 项目概览\n\nAstron Agent 是一个企业级 Agentic Workflow 开发平台,包含控制台前后端、多个核心微服务、插件系统以及部署与基础设施配置。仓库采用多语言多模块结构,主要语言包括 Typ"
  },
  {
    "path": "CLAUDE.md",
    "chars": 6956,
    "preview": "# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## "
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 12094,
    "preview": "# Contributing to Astron Agent\n\nThank you for your interest in contributing to Astron Agent! We welcome contributions fr"
  },
  {
    "path": "FAQ.md",
    "chars": 213,
    "preview": "# Astron Agent 常见问题\n\n本 FAQ 汇总自 Issue、PR 评审和讨论的高频问题,每个子页保持短答与操作步骤,便于快速落地。\n\n- [安装与启动](faq/setup.md)\n- [配置与认证](faq/config."
  },
  {
    "path": "LICENSE",
    "chars": 11347,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 5433,
    "preview": "# =============================================================================\n# Multi-language CI/CD Toolchain - Optim"
  },
  {
    "path": "NOTICE",
    "chars": 791,
    "preview": "OpenStellar\nCopyright 2025 iFlytek Co., Ltd.\n\nThis product includes software developed at\niFlytek Co., Ltd. (https://git"
  },
  {
    "path": "PR.md",
    "chars": 3287,
    "preview": "## Summary\nIntroduce a new OpenAPI response visibility feature based on `x-display`, including schema-aware filtering wi"
  },
  {
    "path": "README.md",
    "chars": 8780,
    "preview": "[![Astron_Readme](./docs/imgs/Astron_Readme.png)](https://agent.xfyun.cn)\n\n<div align=\"center\">\n\n[![License](https://img"
  },
  {
    "path": "console/.claude/DOC_VALIDATION_LOOP.md",
    "chars": 4146,
    "preview": "# 文档校验闭环设计\n\n## 问题背景\n\n在引入 `/doc-module` 后,虽然解决了\"代码 → 文档\"的生成问题,但缺少**后置校验**,导致:\n\n1. ✅ 前置校验:`/context-check` 检查旧文档是否可信\n2. ✅ "
  },
  {
    "path": "console/.claude/QUICK_REFERENCE.md",
    "chars": 6636,
    "preview": "# Skills 快速参考\n\n## 🎯 流程选择指南\n\n### 大功能(完整链路)\n\n**适用场景**:新增数据表、新增前端页面、跨模块改动、多角色交互\n\n```mermaid\ngraph LR\n    A[收到需求] --> B[/con"
  },
  {
    "path": "console/.claude/WORKFLOW.md",
    "chars": 9514,
    "preview": "# Console 开发工作流程\n\n本文档定义了 Console 项目的标准开发流程,确保文档与代码同步迭代。\n\n## 流程选择指南\n\n根据任务类型选择合适的开发流程,避免小功能走完整重流程。\n\n### 大功能(完整链路)\n\n**适用场景*"
  },
  {
    "path": "console/.claude/docs/ai-tools/module.md",
    "chars": 8101,
    "preview": "---\nmodule: ai-tools\ngenerated: 2026-03-04\n---\n\n# AI Tools 模块文档\n\n## 1. 模块概述\n\nAI Tools(AI 工具箱)模块提供自定义 AI 工具的创建、管理和调试功能。用户"
  },
  {
    "path": "console/.claude/docs/bot-management/module.md",
    "chars": 15869,
    "preview": "---\nmodule: bot-management\ngenerated: 2026-03-04\n---\n\n# Bot Management 模块文档\n\n## 1. 模块概述\n\nBot Management(助手管理)模块是 Astron "
  },
  {
    "path": "console/.claude/docs/chat/module.md",
    "chars": 13146,
    "preview": "---\nmodule: chat\ngenerated: 2026-03-04\n---\n\n# Chat 模块文档\n\n## 1. 模块概述\n\nChat(聊天)模块是 Astron Agent Console 的核心交互模块,提供用户与 AI 助"
  },
  {
    "path": "console/.claude/docs/enterprise-management/module.md",
    "chars": 10019,
    "preview": "# Enterprise Management 模块文档\n\n## 1. 模块概述\n\nEnterprise Management(企业管理)模块负责管理企业团队的创建、编辑、成员管理、邀请管理等功能。企业团队是比空间更高一级的组织单元,一个企"
  },
  {
    "path": "console/.claude/docs/knowledge/module.md",
    "chars": 11927,
    "preview": "---\nmodule: knowledge\ngenerated: 2026-03-04\n---\n\n# Knowledge 模块文档\n\n## 1. 模块概述\n\nKnowledge(知识库)模块提供企业级知识管理能力,支持文档上传、解析、切片、"
  },
  {
    "path": "console/.claude/docs/model-management/module.md",
    "chars": 6247,
    "preview": "---\nmodule: model-management\ngenerated: 2026-03-04\n---\n\n# Model Management 模块文档\n\n## 1. 模块概述\n\nModel Management(模型管理)模块提供 "
  },
  {
    "path": "console/.claude/docs/overview.md",
    "chars": 5303,
    "preview": "---\nproject: Astron Agent Console\ngenerated: 2026-03-04\nlast_updated: 2026-03-04\n---\n\n# Console 项目全局概览\n\n## 项目简介\n\nAstron "
  },
  {
    "path": "console/.claude/docs/publish/module.md",
    "chars": 10373,
    "preview": "# Publish 模块文档\n\n## 1. 模块概述\n\nPublish(发布管理)模块负责管理 Bot 的发布、下架、多渠道发布、发布统计、版本管理等功能。该模块支持将 Bot 发布到多个渠道(助手市场、API、微信、飞书、MCP),并提供"
  },
  {
    "path": "console/.claude/docs/space-management/module.md",
    "chars": 15664,
    "preview": "# Space Management 模块文档\n\n## 1. 模块概述\n\nSpace Management(空间管理)模块负责管理个人空间和企业空间的创建、编辑、删除、成员管理、邀请管理、申请管理等功能。空间是 Astron Agent C"
  },
  {
    "path": "console/.claude/docs/user-management/module.md",
    "chars": 4893,
    "preview": "# User Management 模块文档\n\n## 1. 模块概述\n\nUser Management(用户管理)模块负责管理用户的基本信息、个人 Bot 管理、用户协议等功能。该模块是用户在系统中的基础身份管理模块,提供用户信息的查询和更"
  },
  {
    "path": "console/.claude/docs/workflow/module.md",
    "chars": 15612,
    "preview": "---\nmodule: workflow\ngenerated: 2026-03-04\n---\n\n# Workflow 模块文档\n\n## 1. 模块概述\n\nWorkflow(工作流)模块是 Astron Console 的核心功能之一,提供可"
  },
  {
    "path": "console/.claude/skills/backend-design.md",
    "chars": 5426,
    "preview": "# Skill: 后端技术设计\n\n为后端开发生成详细的技术设计文档,包含类设计、代码骨架、数据库迁移、集成方案,可直接指导 Claude 编写代码。\n\n## 前置条件\n\n读取以下文档:\n- `console/.claude/docs/{fe"
  },
  {
    "path": "console/.claude/skills/bugfix.md",
    "chars": 3537,
    "preview": "# Skill: Bug 修复文档\n\n为 Bug 修复生成结构化文档,记录问题分析、根因、修复方案和验证结果,确保知识沉淀。\n\n## 适用场景\n\n- 复杂 Bug 修复(需要重构或影响多个模块)\n- 需要记录根因分析的 Bug\n- 需要团队"
  },
  {
    "path": "console/.claude/skills/context-check.md",
    "chars": 2108,
    "preview": "# Skill: 上下文校验\n\n在需求分析前校验相关模块文档的可信度,确保 AI coding 基于正确的上下文。\n\n## 适用场景\n\n- 开始新功能开发前(在 `/requirement` 前执行)\n- 怀疑模块文档已漂移时\n- 长时间未"
  },
  {
    "path": "console/.claude/skills/doc-module.md",
    "chars": 2352,
    "preview": "# Skill: 模块文档生成\n\n从现有代码逆向生成模块级文档,供 Claude AI coding 时快速理解业务上下文。\n\n## 适用场景\n\n- 为已有代码生成文档(代码 → 文档)\n- 新成员/AI 需要快速了解某个模块\n- 模块重构"
  },
  {
    "path": "console/.claude/skills/drift-check.md",
    "chars": 2623,
    "preview": "# Skill: 文档漂移校验\n\n在文档更新后验证文档与代码的一致性,确保文档更新没有遗漏或错误。\n\n## 适用场景\n\n- `/doc-module` 执行后(后置校验)\n- 代码变更后更新文档时\n- 需要验证文档准确性时\n\n## 执行步骤"
  },
  {
    "path": "console/.claude/skills/frontend-design.md",
    "chars": 4471,
    "preview": "# Skill: 前端技术设计\n\n为前端开发生成详细的技术设计文档,包含组件树、状态管理、API 集成、国际化方案,可直接指导 Claude 编写代码。\n\n## 前置条件\n\n读取以下文档:\n- `console/.claude/docs/{"
  },
  {
    "path": "console/.claude/skills/requirement.md",
    "chars": 1282,
    "preview": "# Skill: 需求文档生成\n\n将用户的原始需求描述转化为结构化需求文档,供后续 Skills 链路消费。\n\n## 执行步骤\n\n1. 理解用户描述的需求,必要时追问澄清模糊点\n2. 确定功能名称(英文短横线命名,如 `bot-tag-ma"
  },
  {
    "path": "console/.claude/skills/spec.md",
    "chars": 3508,
    "preview": "# Skill: 需求规格说明\n\n将用户故事转化为详细的技术规格,包含 API 接口、数据模型、状态流转、前端页面规格等,是开发实施的核心依据。\n\n## 前置条件\n\n读取 `console/.claude/docs/{feature-nam"
  },
  {
    "path": "console/.claude/skills/stories.md",
    "chars": 1100,
    "preview": "# Skill: 用户故事生成\n\n从需求文档提取用户故事,定义验收标准,为后续规格说明和任务拆解提供基础。\n\n## 前置条件\n\n读取 `console/.claude/docs/{feature-name}/requirement.md`。"
  },
  {
    "path": "console/.claude/skills/tasks.md",
    "chars": 2632,
    "preview": "# Skill: 任务规划\n\n将需求规格说明拆解为可执行的开发任务,带依赖关系、执行顺序和文件路径,可直接用于指导 Claude 逐步实现。\n\n## 前置条件\n\n读取 `console/.claude/docs/{feature-name}"
  },
  {
    "path": "console/.gitignore",
    "chars": 27,
    "preview": "backend-old/\nfrontend-old/\n"
  },
  {
    "path": "console/README.md",
    "chars": 5859,
    "preview": "# Astron Console Module\n\nThe Astron Console module is a comprehensive web application that provides a user interface and"
  },
  {
    "path": "console/backend/commons/pom.xml",
    "chars": 4716,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/annotation/RateLimit.java",
    "chars": 862,
    "preview": "package com.iflytek.astron.console.commons.annotation;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annota"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/annotation/space/EnterprisePreAuth.java",
    "chars": 727,
    "preview": "package com.iflytek.astron.console.commons.annotation.space;\n\nimport java.lang.annotation.ElementType;\nimport java.lang."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/annotation/space/SpacePreAuth.java",
    "chars": 876,
    "preview": "package com.iflytek.astron.console.commons.annotation.space;\n\nimport java.lang.annotation.ElementType;\nimport java.lang."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/aspect/RateLimitAspect.java",
    "chars": 6771,
    "preview": "package com.iflytek.astron.console.commons.aspect;\n\nimport com.iflytek.astron.console.commons.annotation.RateLimit;\nimpo"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/aspect/space/EnterpriseAuthAspect.java",
    "chars": 3646,
    "preview": "package com.iflytek.astron.console.commons.aspect.space;\n\nimport com.iflytek.astron.console.commons.annotation.space.Ent"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/aspect/space/PermissionValidator.java",
    "chars": 9815,
    "preview": "package com.iflytek.astron.console.commons.aspect.space;\n\nimport com.iflytek.astron.console.commons.annotation.space.Ent"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/aspect/space/SpaceAuthAspect.java",
    "chars": 4137,
    "preview": "package com.iflytek.astron.console.commons.aspect.space;\n\n\nimport com.iflytek.astron.console.commons.constant.ResponseEn"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/config/JwtClaimsFilter.java",
    "chars": 3856,
    "preview": "package com.iflytek.astron.console.commons.config;\n\nimport com.iflytek.astron.console.commons.data.UserInfoDataService;\n"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/constant/RedisKeyConstant.java",
    "chars": 360,
    "preview": "package com.iflytek.astron.console.commons.constant;\n\n/**\n * @author yingpeng Store Redis-related prefix keys\n */\npublic"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/constant/ResponseEnum.java",
    "chars": 26292,
    "preview": "package com.iflytek.astron.console.commons.constant;\n\nimport lombok.Getter;\n\n/**\n * Response code enumeration class\n */\n"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/data/UserInfoDataService.java",
    "chars": 3604,
    "preview": "package com.iflytek.astron.console.commons.data;\n\n\nimport com.iflytek.astron.console.commons.entity.user.UserInfo;\nimpor"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/data/impl/UserInfoDataServiceImpl.java",
    "chars": 18098,
    "preview": "package com.iflytek.astron.console.commons.data.impl;\n\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQuery"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/AdvancedConfig.java",
    "chars": 1024,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotCloneWorkflowDto.java",
    "chars": 231,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.Data;\n\n@Data\npublic class BotCloneWorkflowDto {\n    L"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotCreateForm.java",
    "chars": 5129,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport jakarta.v"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotDetail.java",
    "chars": 2569,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.D"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotFavoriteItemDto.java",
    "chars": 1134,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Da"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotFavoritePageDto.java",
    "chars": 686,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Da"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotFavoriteQueryDto.java",
    "chars": 733,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok.Da"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotInfoDto.java",
    "chars": 2315,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport com.alibaba.fastjson2.JSONObject;\nimport lombok.Data;\n\nimpor"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotListRequestDto.java",
    "chars": 4899,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport jakarta.v"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotMarketForm.java",
    "chars": 1362,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.Data;\n\nimport java.util.ArrayList;\nimport java.util.L"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotModelDto.java",
    "chars": 306,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.Data;\n\n/**\n * Bot Model DTO for API response\n */\n@Dat"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotPublishQueryResult.java",
    "chars": 1191,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.Data;\n\nimport java.time.LocalDateTime;\n\n/**\n * Bot Pu"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotQueryCondition.java",
    "chars": 5986,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Builder;\nimport lom"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/BotTag.java",
    "chars": 665,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\n\nimport java"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/ChatBotApi.java",
    "chars": 1634,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baomi"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/ChatBotMarketPage.java",
    "chars": 1784,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok.D"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/ChatBotReqDto.java",
    "chars": 678,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/DebugChatBotReqDto.java",
    "chars": 925,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/PersonalityConfigDto.java",
    "chars": 489,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.Data;\n\n/**\n * Data Transfer Object for personality co"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/PromptBotDetail.java",
    "chars": 754,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport com.iflytek.astron.console.commons.entity.bot.ChatBotPromptS"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentConfigDto.java",
    "chars": 419,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.Data;\n\n@Data\npublic class TalkAgentConfigDto {\n    pr"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentCreateDto.java",
    "chars": 256,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n\n@Data\n@Equals"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentHistoryDto.java",
    "chars": 248,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\n\nimport lombok.Data;\n\n@Data\npublic class TalkAgentHistoryDto {\n    "
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentSceneDto.java",
    "chars": 475,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/bot/TalkAgentUpgradeDto.java",
    "chars": 244,
    "preview": "package com.iflytek.astron.console.commons.dto.bot;\n\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n\n@Data\n@Equals"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatBotListDto.java",
    "chars": 2457,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport cn.hutool.core.util.StrUtil;\nimport com.baomidou.mybatisplu"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatContentMeta.java",
    "chars": 1112,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport com.fasterxml.jackson.annotation.JsonInclude;\nimport lombok"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatFileReq.java",
    "chars": 1358,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baom"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatListCreateRequest.java",
    "chars": 568,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombo"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatListCreateResponse.java",
    "chars": 802,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatListDelRequest.java",
    "chars": 324,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombo"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatListResponseDto.java",
    "chars": 3505,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport io.swag"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatModelMeta.java",
    "chars": 460,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport com.fasterxml.jackson.annotation.JsonInclude;\nimport lombok"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatReqModelDto.java",
    "chars": 584,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport com.iflytek.astron.console.commons.entity.chat.ChatReqRecor"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatRequestDto.java",
    "chars": 2310,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport com.alibaba.fastjson2.JSON;\nimport com.alibaba.fastjson2.JS"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatRequestDtoList.java",
    "chars": 355,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport lombok.Data;\n\nimport java.util.LinkedList;\n\n/**\n * @author "
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/chat/ChatRespModelDto.java",
    "chars": 1569,
    "preview": "package com.iflytek.astron.console.commons.dto.chat;\n\nimport com.iflytek.astron.console.commons.entity.chat.ChatRespReco"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/dataset/DatasetStats.java",
    "chars": 254,
    "preview": "package com.iflytek.astron.console.commons.dto.dataset;\n\nimport lombok.Data;\n\n@Data\npublic class DatasetStats {\n\n    pri"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/llm/ChatCompletionRequest.java",
    "chars": 851,
    "preview": "package com.iflytek.astron.console.commons.dto.llm;\n\nimport com.fasterxml.jackson.annotation.JsonProperty;\nimport java.u"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/llm/ChatCompletionResponse.java",
    "chars": 1375,
    "preview": "package com.iflytek.astron.console.commons.dto.llm;\n\nimport com.fasterxml.jackson.annotation.JsonProperty;\nimport java.u"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/llm/ChatMessage.java",
    "chars": 411,
    "preview": "package com.iflytek.astron.console.commons.dto.llm;\n\nimport com.fasterxml.jackson.annotation.JsonProperty;\nimport lombok"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/llm/SparkChatRequest.java",
    "chars": 1515,
    "preview": "package com.iflytek.astron.console.commons.dto.llm;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport jakarta.v"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/ApplyRecordParam.java",
    "chars": 506,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/ApplyRecordVO.java",
    "chars": 1965,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport io.swa"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/BatchChatUserVO.java",
    "chars": 342,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/ChatUserVO.java",
    "chars": 652,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseAddDTO.java",
    "chars": 463,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseSpaceCountVO.java",
    "chars": 336,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseUserParam.java",
    "chars": 494,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseUserVO.java",
    "chars": 1292,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport io.swa"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/EnterpriseVO.java",
    "chars": 1946,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport io.swa"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/InviteRecordAddDTO.java",
    "chars": 465,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/InviteRecordParam.java",
    "chars": 497,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/InviteRecordVO.java",
    "chars": 2819,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport io.swa"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/PageParam.java",
    "chars": 453,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceAddDTO.java",
    "chars": 536,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceUpdateDTO.java",
    "chars": 699,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceUserParam.java",
    "chars": 473,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceUserVO.java",
    "chars": 1292,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport io.swa"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/SpaceVO.java",
    "chars": 1911,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport com.fasterxml.jackson.annotation.JsonFormat;\nimport io.swa"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/space/UserLimitVO.java",
    "chars": 383,
    "preview": "package com.iflytek.astron.console.commons.dto.space;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lombok."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/user/BotDataParam.java",
    "chars": 439,
    "preview": "package com.iflytek.astron.console.commons.dto.user;\n\nimport com.iflytek.astron.console.commons.enums.user.WordsTypeEnum"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/user/JwtInfoDto.java",
    "chars": 142,
    "preview": "package com.iflytek.astron.console.commons.dto.user;\n\npublic record JwtInfoDto(String uid, String username, String avata"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/vcn/CustomV2VCNDTO.java",
    "chars": 434,
    "preview": "package com.iflytek.astron.console.commons.dto.vcn;\n\nimport lombok.Data;\n\n@Data\npublic class CustomV2VCNDTO {\n\n    priva"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/CloneSynchronize.java",
    "chars": 252,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport lombok.Data;\n\n@Data\npublic class CloneSynchronize {\n\n  "
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/MaasApi.java",
    "chars": 1218,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport com.alibaba.fastjson2.JSONObject;\nimport lombok.AllArgs"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowApiRequest.java",
    "chars": 810,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport com.alibaba.fastjson2.JSONObject;\nimport com.iflytek.as"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowChatRequest.java",
    "chars": 1472,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport com.iflytek.astron.console.commons.dto.llm.SparkChatReq"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowEventData.java",
    "chars": 5659,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport com.google.common.collect.Maps;\nimport lombok.*;\n\nimpor"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowInfoDto.java",
    "chars": 493,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\nimport j"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowInputTypeDto.java",
    "chars": 1204,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport com.alibaba.fastjson2.JSONObject;\nimport lombok.Data;\ni"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowInputsResponseDto.java",
    "chars": 1445,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lomb"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowResumeReq.java",
    "chars": 1094,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport io.swagger.v3.oas.annotations.media.Schema;\nimport lomb"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/dto/workflow/WorkflowResumeRequest.java",
    "chars": 639,
    "preview": "package com.iflytek.astron.console.commons.dto.workflow;\n\nimport com.alibaba.fastjson2.annotation.JSONField;\nimport lomb"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotChatFileParam.java",
    "chars": 1644,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotDataset.java",
    "chars": 1169,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotFavorite.java",
    "chars": 1024,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotTemplate.java",
    "chars": 2514,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/BotTypeList.java",
    "chars": 1730,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotBase.java",
    "chars": 4718,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotList.java",
    "chars": 1738,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotMarket.java",
    "chars": 3655,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotPromptStruct.java",
    "chars": 1219,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/ChatBotTag.java",
    "chars": 1124,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/DatasetFile.java",
    "chars": 1376,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/DatasetInfo.java",
    "chars": 1310,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/TakeoffList.java",
    "chars": 1133,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/UserLangChainInfo.java",
    "chars": 1880,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.ba"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/bot/UserLangChainLog.java",
    "chars": 760,
    "preview": "package com.iflytek.astron.console.commons.entity.bot;\n\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatFileUser.java",
    "chars": 2544,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatList.java",
    "chars": 1869,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatReanwserRecords.java",
    "chars": 1473,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatReasonRecords.java",
    "chars": 1150,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatReqModel.java",
    "chars": 1634,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatReqRecords.java",
    "chars": 1507,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatRespAlltoolData.java",
    "chars": 1234,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatRespModel.java",
    "chars": 1674,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatRespRecords.java",
    "chars": 1260,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatTokenRecords.java",
    "chars": 1128,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatTraceSource.java",
    "chars": 1093,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/chat/ChatTreeIndex.java",
    "chars": 1062,
    "preview": "package com.iflytek.astron.console.commons.entity.chat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/dataset/BotDatasetMaas.java",
    "chars": 1192,
    "preview": "package com.iflytek.astron.console.commons.entity.dataset;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport co"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/model/McpData.java",
    "chars": 2253,
    "preview": "package com.iflytek.astron.console.commons.entity.model;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/AgentShareRecord.java",
    "chars": 1107,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/ApplyRecord.java",
    "chars": 1802,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/Enterprise.java",
    "chars": 1267,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/EnterprisePermission.java",
    "chars": 1600,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/EnterpriseUser.java",
    "chars": 1238,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/InviteRecord.java",
    "chars": 1425,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/Space.java",
    "chars": 1172,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/SpacePermission.java",
    "chars": 1638,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/space/SpaceUser.java",
    "chars": 1145,
    "preview": "package com.iflytek.astron.console.commons.entity.space;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com."
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/user/AppMst.java",
    "chars": 1600,
    "preview": "package com.iflytek.astron.console.commons.entity.user;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/user/UserInfo.java",
    "chars": 1657,
    "preview": "package com.iflytek.astron.console.commons.entity.user;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.b"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/wechat/BotOffiaccount.java",
    "chars": 1284,
    "preview": "package com.iflytek.astron.console.commons.entity.wechat;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/entity/workflow/Workflow.java",
    "chars": 1007,
    "preview": "package com.iflytek.astron.console.commons.entity.workflow;\n\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport c"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/BotOffiaccountStatusEnum.java",
    "chars": 593,
    "preview": "package com.iflytek.astron.console.commons.enums;\n\nimport lombok.Getter;\n\n/**\n * Binding status enum for agent and WeCha"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/PublishChannelEnum.java",
    "chars": 1502,
    "preview": "package com.iflytek.astron.console.commons.enums;\n\nimport lombok.Getter;\n\n/**\n * Publishing Channel Enumeration\n *\n * @a"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/ShelfStatusEnum.java",
    "chars": 2375,
    "preview": "package com.iflytek.astron.console.commons.enums;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Getter;\n\n/**\n * Shelf"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/BotStatusEnum.java",
    "chars": 828,
    "preview": "package com.iflytek.astron.console.commons.enums.bot;\n\nimport java.util.Arrays;\nimport java.util.List;\n\npublic enum BotS"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/BotTypeEnum.java",
    "chars": 1182,
    "preview": "package com.iflytek.astron.console.commons.enums.bot;\n\n/**\n * @author yingpeng\n */\npublic enum BotTypeEnum {\n\n    SYSTEM"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/BotUploadEnum.java",
    "chars": 2352,
    "preview": "package com.iflytek.astron.console.commons.enums.bot;\n\nimport com.alibaba.fastjson2.JSONObject;\n\npublic enum BotUploadEn"
  },
  {
    "path": "console/backend/commons/src/main/java/com/iflytek/astron/console/commons/enums/bot/BotVersionEnum.java",
    "chars": 1050,
    "preview": "package com.iflytek.astron.console.commons.enums.bot;\n\nimport lombok.Getter;\n\n/**\n * @author yun-zhi-ztl\n */\n\n@Getter\npu"
  }
]

// ... and 2954 more files (download for full content)

About this extraction

This page contains the full source code of the iflytek/astron-agent GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3154 files (94.0 MB), approximately 5.6M tokens, and a symbol index with 14501 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!