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
================================================
[](https://agent.xfyun.cn)
<div align="center">
[](LICENSE)
[](https://github.com/iflytek/astron-agent/stargazers)
[](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`
-
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.
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": "[](https://agent.xfyun.cn)\n\n<div align=\"center\">\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.