diff --git a/feat.md b/feat.md index 4fed5d6..410a483 100644 --- a/feat.md +++ b/feat.md @@ -1,3 +1,93 @@ # 任务目标 -修改E:\gitlab\mis-paw\mis-modules\mis-paw\src\main\java\com\lcfc\mispaw\service\Impl\AgentApprovalServiceImpl.java里面的"assertNoUnpublishedSkillMapping"方法,目前判断agentId关联的skill包含未发布的逻辑有误,应该参考"E:\gitlab\mis-paw\mis-modules\mis-paw\src\main\java\com\lcfc\mispaw\service\Impl\AgentPublishServiceImpl.java"的"submitPublish"方法生成的"AgentConfigSnapshot.java"。 \ No newline at end of file +agent发布时,`agent_skill_mapping`表中`skill_id`关联的SKILL信息没有存储到`agent_published_version_snapshot`表中的`skills_json`字段,尝试了2次都不行。 + +## 代码路径 + +|#|源文件名称|方法名称|补充说明| +|---|---|---|---| +|提交发布|AgentPublishServiceImpl.java|submitPublishInLock|无| +|在哪里保存的快照|AgentPublishedVersionSnapshotServiceImpl.java|sealBindingsOnSubmit|在"submitPublishInLock"方法内部嵌套调用,然后调用"insertSealedRow"方法,最终存储到`agent_published_version_snapshot`表中| + +## 通过SQL查到提交发布时的SKILL信息 + +查询结果中`skill_release`的表中是没有关联到数据的,只有`skill`表关联上了2条数据。 + +```sql +with mapping AS ( +select + asm.agent_id,asm.mapping_id,asm.skill_id,asm.skill_release_id,asm.create_time +from `mis-paw-claw`.`agent_skill_mapping` asm +where asm.agent_id = '1977925311412596737FcNLSZ' +and asm.del_flag = '0' +) +select mapping.mapping_id, mapping.skill_id, mapping.skill_release_id, sk.skill_name,sk.skill_file +from mapping join `mis-mcp-paw-claw`.`skill` sk +on mapping.skill_id = sk.skill_id and sk.del_flag = '0' +union all +select mapping.mapping_id, mapping.skill_id, mapping.skill_release_id, sr.skill_name, sr.skill_file +from mapping join `mis-mcp-paw-claw`.`skill_release` sr +on mapping.skill_release_id = sr.skill_release_id and sr.del_flag = '0'; +``` + +```json +[ + { + "mapping_id": "2102629713947136001", + "skill_id": "2102629462528081922", + "skill_release_id": null, + "skill_name": "mis-spec-eclaw", + "skill_file": "{\"ossId\": \"1790140893732205682\", \"fileName\": \"mis-spec-eclaw.zip\"}" + }, + { + "mapping_id": "2105125581220810754", + "skill_id": "2105124095074033665", + "skill_release_id": null, + "skill_name": "java-spec", + "skill_file": "{\"ossId\": \"1790735602461436068\", \"fileName\": \"java-spec.zip\"}" + } +] +``` + +## 通过SQL查到agent的快照信息 + +```sql +select * from `mis-paw-claw`.`agent_published_version_snapshot` apvs +where apvs.agent_id = '1977925311412596737FcNLSZ' +and apvs.del_flag = '0' +``` + +```json +[ + { + "config_id": "2105128598548582402", + "snapshot_id": "2105128595469963266", + "agent_id": "1977925311412596737FcNLSZ", + "skills_json": "[]", + "mcps_json": "[]", + "persona_docs_json": "", + "kbs_json": "[]", + "create_by": "1977925311412596737", + "create_dept": "5", + "create_time": "2026-09-30 10:52:24", + "update_by": "1977925311412596737", + "update_time": "2026-09-30 10:52:24", + "del_flag": "0" + }, + { + "config_id": "2105179820223688705", + "snapshot_id": "2105179819527434242", + "agent_id": "1977925311412596737FcNLSZ", + "skills_json": "[]", + "mcps_json": "[]", + "persona_docs_json": "", + "kbs_json": "[]", + "create_by": "1977925311412596737", + "create_dept": "5", + "create_time": "2026-09-30 14:15:56", + "update_by": "1977925311412596737", + "update_time": "2026-09-30 14:15:56", + "del_flag": "0" + } +] +``` \ No newline at end of file diff --git a/sql.md b/sql.md index e5a5fc8..c3e9af4 100644 --- a/sql.md +++ b/sql.md @@ -7,8 +7,10 @@ - [查智能体使用数据](查智能体使用数据) - [查项目统计数据](#查项目统计数据) - [新增devco账号](#新增devco账号) -- [查paw-agent信息](#查paw-agent信息) +- [查某个用户的智能体](#查某个用户的智能体) - [查工作流工单状态](#查工作流工单状态) +- [查智能体绑定的技能](#查智能体绑定的技能) +- [查智能体的发布快照](#查智能体的发布快照) ## 查智能体用户数 @@ -18,40 +20,25 @@ select agent.agent_id, agent.agent_name, IFNULL (aus.user_num, 0) AS user_num -from - `agent` AS agent - left join agent_usage_stats AS aus ON agent.agent_id = aus.agent_id -where - agent.del_flag = '0' +from `mis-agent`.`agent` AS agent left join agent_usage_stats AS aus ON agent.agent_id = aus.agent_id +where agent.del_flag = '0' UNION ALL select '多智能体' AS agent_type, ma.agent_id, ma.agent_name, IFNULL (maus.user_num, 0) AS user_num -from - `multi_agent_main` AS ma - left join agent_usage_stats AS maus ON ma.agent_id = maus.agent_id -where - ma.del_flag = '0'; +from `mis-agent`.`multi_agent_main` AS ma left join agent_usage_stats AS maus ON ma.agent_id = maus.agent_id +where ma.del_flag = '0'; ``` ## 查客户端是否登录 ```sql -select - * -from - `mis-cloud-claw`.`sys_logininfor` -where - client_key = ( - select - client_key - from - `mis-cloud-claw`.`sys_client` - where - `client_id` = '客户端ID' - ); +select * from `mis-cloud-claw`.`sys_logininfor` +where client_key = ( +select client_key from `mis-cloud-claw`.`sys_client` where `client_id` = '客户端ID' +); ``` ## 查智能体对话日志 @@ -59,15 +46,15 @@ where 1. 查询所有切片号,假设查询出来的`part`是[1,2] ```sql -select part from log_agent_chat where del_flag = '0'; +select part from `mis-agent`.`log_agent_chat` where del_flag = '0'; ``` 2. 根据切片号查询并合并各个切片表的数据 ```sql -select * from log_agent_chat_1 where chat_window_id = 会话ID +select * from `mis-agent`.`log_agent_chat_1` where chat_window_id = 会话ID UNION ALL -select * from log_agent_chat_2 where chat_window_id = 会话ID +select * from `mis-agent`.`log_agent_chat_2` where chat_window_id = 会话ID ``` ## 查智能体信息 @@ -94,14 +81,14 @@ with agent_info AS ( long_term_memory, case kb_mode when '1' then '直接检索' when '2' then 'tool检索' else '' end AS kb_mode, case kb_search_type when '0' then '向量检索' when '1' then '混合检索' when '2' then '智能检索' else '' end AS kb_search_type - from mis-agent.agent + from `mis-agent`.`agent` where agent_id = <智能体ID> ), agent_skill AS ( select <智能体ID> AS agent_id, GROUP_CONCAT(skill_name) AS skill_names - from mis-mcp.skill + from `mis-mcp`.`skill` where skill_id in ( select skill_id from mis-agent.agent_skill_mapping where agent_id = <智能体ID> @@ -111,7 +98,7 @@ agent_mcp_tool AS ( select <智能体ID> AS agent_id, GROUP_CONCAT(tool_name) AS tool_names - from mis-mcp.map_tools + from `mis-mcp`.`map_tools` where mcp_server_uuid in ( select mcp_server_uuid from mis-agent.agent_tool_mapping where relate_agent_id = <智能体ID> @@ -125,12 +112,18 @@ left join agent_mcp_tool AS c on a.agent_id = c.agent_id 2. 查询多智能体信息 +查询主智能体: ```sql -select * from mis-agent.agent_release_info where release_id in ( +select * from `mis-agent`.`multi_agent_main` where agent_id = <主智能体ID> +``` + +查询子智能体: +```sql +select * from `mis-agent`.`agent_release_info` where release_id in ( select release_id - from mis-agent.multi_agent_sub - where main_agent_id = <智能体ID> + from `mis-agent`.`multi_agent_sub` + where main_agent_id = <主智能体ID> ) ``` @@ -139,7 +132,7 @@ select * from mis-agent.agent_release_info where release_id in ( 必须提供**智能体ID**。 ```sql -select * from mis-agent.agent_usage_stats_daily where agent_id = <智能体ID> order by daily desc +select * from `mis-agent`.`agent_usage_stats_daily` where agent_id = <智能体ID> order by daily desc ``` ## 查项目统计数据 @@ -149,7 +142,7 @@ select * from mis-agent.agent_usage_stats_daily where agent_id = <智能体ID> o 1. 查询项目注册表,判断是否包含该项目。用户提供的项目名称大概率是模糊的,比如"认证"、"ebiz",要根据语义判断究竟是哪一个,如果猜不准就询问一下用户是哪个。 ```sql -select * from mis-agent.project_stats_registry +select * from `mis-agent`.`project_stats_registry` ``` **重要:`project_stats_registry`里的`id`字段,称为项目ID,或者叫project_id,后面的步骤需要用到。** @@ -157,7 +150,7 @@ select * from mis-agent.project_stats_registry 2. 查询项目统计数据 ```sql -select * from mis-agent.project_data_stats_daily where project_id = +select * from `mis-agent`.`project_data_stats_daily` where project_id = ``` ## 新增devco账号 @@ -178,104 +171,61 @@ username3 **在`mis-dev`资源下的`mis-cloud-paw`库中执行**批量插入sql,示例: ```sql -INSERT INTO external_login_client_account (client_id, account, state) VALUES +INSERT INTO `mis-cloud-paw`.`external_login_client_account`(client_id, account, state) VALUES ('226c18408b5705449f37b621a432a6d3', 'username1', 1), ('226c18408b5705449f37b621a432a6d3', 'username2', 1), ('226c18408b5705449f37b621a432a6d3', 'username3', 1); ``` -## 查paw-agent信息 +## 查某个用户的智能体 -在`mis-dev`资源下,根据用户名(username)查询paw-agent信息,如果用户没有提供username,友好的提问要查哪个用户的,一个可用的username示例:`Agnes2.wang`。 - -1. 根据用户提供的`username`查询`user_id`,只会查出来1行数据,示例: - -```sql -select user_id from `mis-cloud-claw`.`sys_user` where user_name = '{username}'; -``` - -2. 根据`user_id`查询agent信息,可能返回多行数据,使用markdown表格的形式展示每一行的数据,示例: +把`{username}`替换成真实的用户名。 ```sql select - agent_id, - agent_mode, - publish_status, - publish_scope, - published_at, - version_lane, - key_scope_default -from - `mis-paw-claw`.`agent` -where - create_by = < user_id >; + agent_id, agent_mode, + publish_status, publish_scope, published_at, + version_lane, key_scope_default +from `mis-paw-claw`.`agent` +where del_flag = '0' +and create_by = (select user_id from `mis-cloud-claw`.`sys_user` where user_name = '{username}') ``` ## 查工作流工单状态 +把`{business_key}`替换成申请单ID。 + ```sql -CREATE DEFINER=`root`@`%` PROCEDURE `sp_flow_status_by_business_key`(IN p_business_key VARCHAR(64)) -BEGIN - -- 1) 流程实例摘要 - SELECT - h.BUSINESS_KEY_ AS business_key, - h.PROC_INST_ID_ AS process_instance_id, - SUBSTRING_INDEX(h.PROC_DEF_ID_, ':', 1) AS process_key, - h.BUSINESS_STATUS_ AS business_status, - CASE h.BUSINESS_STATUS_ - WHEN 'waiting' THEN '待审核' - WHEN 'finish' THEN '已完成' - WHEN 'back' THEN '已退回' - WHEN 'cancel' THEN '已撤销' - WHEN 'draft' THEN '草稿' - ELSE IFNULL(h.BUSINESS_STATUS_, '未知') - END AS business_status_name, - h.START_USER_ID_ AS start_user_id, - h.START_TIME_ AS start_time, - h.END_TIME_ AS end_time, - CASE WHEN h.END_TIME_ IS NULL THEN 'RUNNING' ELSE 'FINISHED' END AS flow_state, - (SELECT COUNT(1) - FROM ACT_RU_TASK t - INNER JOIN ACT_RU_EXECUTION e ON e.ID_ = t.PROC_INST_ID_ - WHERE e.BUSINESS_KEY_ = h.BUSINESS_KEY_ - AND e.PROC_INST_ID_ = h.PROC_INST_ID_) AS pending_task_count - FROM ACT_HI_PROCINST h - WHERE h.BUSINESS_KEY_ = p_business_key - ORDER BY h.START_TIME_ DESC; +call `mis-workflow-claw`.sp_flow_status_by_business_key('{business_key}') +``` - -- 2) 当前待办 - SELECT - t.ID_ AS task_id, - t.NAME_ AS task_name, - t.TASK_DEF_KEY_ AS task_definition_key, - t.ASSIGNEE_ AS assignee, - t.CREATE_TIME_ AS create_time, - t.PROC_INST_ID_ AS process_instance_id, - e.BUSINESS_KEY_ AS business_key - FROM ACT_RU_TASK t - INNER JOIN ACT_RU_EXECUTION e ON e.ID_ = t.PROC_INST_ID_ - WHERE e.BUSINESS_KEY_ = p_business_key - ORDER BY t.CREATE_TIME_ ASC; +## 查智能体绑定的技能 - -- 3) 历史任务 + 意见 - SELECT - ht.ID_ AS task_id, - ht.NAME_ AS task_name, - ht.TASK_DEF_KEY_ AS task_definition_key, - ht.ASSIGNEE_ AS assignee, - ht.START_TIME_ AS start_time, - ht.END_TIME_ AS end_time, - c.TYPE_ AS comment_type, - c.MESSAGE_ AS comment_msg, - h.PROC_INST_ID_ AS process_instance_id, - h.BUSINESS_KEY_ AS business_key - FROM ACT_HI_TASKINST ht - INNER JOIN ACT_HI_PROCINST h ON h.PROC_INST_ID_ = ht.PROC_INST_ID_ - LEFT JOIN ACT_HI_COMMENT c - ON c.TASK_ID_ = ht.ID_ - AND c.TYPE_ IN ('pass', 'back') - WHERE h.BUSINESS_KEY_ = p_business_key - AND (ht.PARENT_TASK_ID_ IS NULL OR ht.PARENT_TASK_ID_ = '') - ORDER BY ht.START_TIME_ ASC, ht.ID_ ASC; -END +把`{agentId}`替换成真实的智能体ID。 + +```sql +with mapping AS ( +select + asm.agent_id,asm.mapping_id,asm.skill_id,asm.skill_release_id,asm.create_time +from `mis-paw-claw`.`agent_skill_mapping` asm +where asm.agent_id = '{agentId}' +and asm.del_flag = '0' +) +select mapping.mapping_id, mapping.skill_id, mapping.skill_release_id, sk.skill_name,sk.skill_file +from mapping join `mis-mcp-paw-claw`.`skill` sk +on mapping.skill_id = sk.skill_id and sk.del_flag = '0' +union all +select mapping.mapping_id, mapping.skill_id, mapping.skill_release_id, sr.skill_name, sr.skill_file +from mapping join `mis-mcp-paw-claw`.`skill_release` sr +on mapping.skill_release_id = sr.skill_release_id and sr.del_flag = '0' +``` + +## 查智能体的发布快照 + +把`{agentId}`替换成真实的智能体ID。 + +```sql +select * from `mis-paw-claw`.`agent_published_version_snapshot` apvs +where apvs.agent_id = '{agentId}' +and apvs.del_flag = '0' ``` \ No newline at end of file