add_workflow_subpkg_javadoc.py 64 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """Add comprehensive JavaDoc to workflow subpackages. Documentation-only; no logic changes."""
  4. import re
  5. from pathlib import Path
  6. ROOT = Path(r"d:/ylrz_saas_new/java")
  7. WORKFLOW_DIR = ROOT / "fs-service/src/main/java/com/fs/company/service/workflow"
  8. TARGET_PACKAGES = [
  9. "api", "async", "cache", "canvas", "capability", "data", "dedup", "event",
  10. "expression", "feedback", "handoff", "health", "heartbeat", "http", "inbound",
  11. "knowledge", "media", "memory", "monitor", "pay", "push", "queue", "scope",
  12. "sim", "vector",
  13. ]
  14. PACKAGE_INFO = {
  15. "api": (
  16. "��Ϻ�������ⲿ API �����Ӱ���\n"
  17. " <p>\n"
  18. " �ṩ API �˵�ע�����ġ�ͨ�� HTTP ִ������SpEL �ű����������� API �ڵ�ִ��������\n"
  19. " ��Ҫ���÷���{@code SmartApiCallNodeExecutor}��{@code LobsterWorkflowExecutorImpl}��"
  20. "{@code ToolCallFrameworkImpl}��{@code LobsterApiRegistryController}��"
  21. ),
  22. "async": (
  23. "��Ϻ�������첽�����Ӱ���\n"
  24. " <p>\n"
  25. " ���ؽ��������첽�ύ��֪ʶ��ʹ����־�첽д�룬���������Ի���·����\n"
  26. " ��Ҫ���÷���{@code LobsterEvolveTaskConsumer}��{@code ContextAssemblerImpl}��"
  27. ),
  28. "cache": (
  29. "��Ϻ���������� Redis �����Ӱ���\n"
  30. " <p>\n"
  31. " ���滭�񡢶Ի���֪ʶ�⡢�Ϲ���������е���·�����ݣ�Redis ������ʱ�Զ�����ֱ�� DB��\n"
  32. " ��Ҫ���÷���{@code ContextAssemblerImpl}��{@code LobsterEvolutionEngineImpl}��"
  33. "{@code VectorPatternMatcherImpl}��"
  34. ),
  35. "canvas": (
  36. "����������ͬ�������Ӱ���\n"
  37. " <p>\n"
  38. " ��ǰ�˻�����ͬ�����ڵ� nextNodeCode ��������֧�ֶΣ�������ʱִ����ʹ�á�\n"
  39. " ��Ҫ���÷���{@code CompanyWorkflowLobsterServiceImpl}��"
  40. ),
  41. "capability": (
  42. "��Ϻ�ڵ�����ע����ģ��У���Ӱ���\n"
  43. " <p>\n"
  44. " �������ڵ����ͳ����������ȱ�ڣ�����ģ�屣��ʱУ�� PayRouter��API �󶨵ȡ�\n"
  45. " ��Ҫ���÷���{@code CompanyWorkflowLobsterServiceImpl}��{@code LobsterEngineController}��"
  46. ),
  47. "data": (
  48. "�ⲿʵʱ�����ṩ���Ӱ���\n"
  49. " <p>\n"
  50. " ͨ�� {@code ExternalDataRouter} ·���������ڼ��յȲ��ʽ�����ṩ�ߡ�\n"
  51. " ��Ҫ���÷�����������̬�ڵ��빤�ߵ��ÿ�ܡ�"
  52. ),
  53. "dedup": (
  54. "��Ϣȥ���Ӱ���\n"
  55. " <p>\n"
  56. " �ṩ��ȷƥ�����������ƶȣ�2-gram Jaccard��ȥ�أ�ά���Ự�����Ϣ��ʷ��\n"
  57. " ��Ҫ���÷���{@code DuplicateReplyDetector}��"
  58. ),
  59. "event": (
  60. "�������¼������벹���Ӱ���\n"
  61. " <p>\n"
  62. " �����û��¼���ء��ڵ㿨סͳ���빤����/�ڵ㲹�����Ӧ�á�\n"
  63. " ��Ҫ���÷���{@code LobsterEventAuditController}��"
  64. ),
  65. "expression": (
  66. "��������ʽ��ֵ�Ӱ���\n"
  67. " <p>\n"
  68. " ���� SpEL ������������֧������ģ�����ʽ��\n"
  69. " ��Ҫ���÷��������������ڵ������� API �ڵ㡣"
  70. ),
  71. "feedback": (
  72. "�������������Ӱ���\n"
  73. " <p>\n"
  74. " ��¼�˹��������������������� A/B ���Ա��壬�����ڵ� Prompt �Զ��Ż���\n"
  75. " ��Ҫ���÷���{@code LobsterAdminController}��{@code EvolutionSchedulerImpl}��"
  76. ),
  77. "handoff": (
  78. "����ת�˹�����Ӱ���\n"
  79. " <p>\n"
  80. " ��ά���жϿͻ��� AI �Ƿ���Ҫת�˹��ӹܣ�������ת�˹��������¼���¼��\n"
  81. " ��Ҫ���÷���{@code DynamicNodeAdjusterImpl}��{@code LobsterInboundReplyOrchestrator}��"
  82. ),
  83. "health": (
  84. "��Ϻ���潡������Ӱ���\n"
  85. " <p>\n"
  86. " ����ʱ������ Bean �Ƿ�װ����������������̽�\n"
  87. " ��Ҫ���÷���{@code LobsterEngineController}��"
  88. ),
  89. "heartbeat": (
  90. "������ʵ�����������Ӱ���\n"
  91. " <p>\n"
  92. " ע��/ע����Ծʵ������ʱ������������ⳬʱ���������ڼ�¼��\n"
  93. " ��Ҫ���÷���{@code LobsterWorkflowExecutorImpl}��{@code LobsterEngineController}��"
  94. ),
  95. "http": (
  96. "������ HTTP �ͻ����Ӱ���\n"
  97. " <p>\n"
  98. " ��װ GET/POST/PUT/DELETE ���󣬹� Webhook �ڵ����ⲿ API ����ʹ�á�"
  99. ),
  100. "inbound": (
  101. "ȫ����ͳһ��վ�����Ӱ���\n"
  102. " <p>\n"
  103. " ���ͻ���Ϣ��ҵ���¼�·�ɵ�������ʵ������У�� Webhook ��Կ��\n"
  104. " ��Ҫ���÷���{@code LobsterInboundController}��"
  105. ),
  106. "knowledge": (
  107. "֪ʶ��汾�����Ӱ���\n"
  108. " <p>\n"
  109. " �ṩ֪ʶ���մ������汾�Աȡ��ع����ǩ����������"
  110. ),
  111. "media": (
  112. "��վ��ý����ϢԤ�����Ӱ���\n"
  113. " <p>\n"
  114. " ͼƬʶ���ļ�/��Ƶת�˹��ж����ý�����ݹ淶����\n"
  115. " ��Ҫ���÷���{@code LobsterInboundService}��{@code LobsterInboundReplyOrchestrator}��"
  116. ),
  117. "memory": (
  118. "��Ϻ�Ի�����ͬ���Ӱ���\n"
  119. " <p>\n"
  120. " �� chat_msg ͬ���� lobster_chat_record�����Ž���΢ Hook ��վ����·����\n"
  121. " ��Ҫ���÷���{@code LobsterWorkflowExecutorImpl}��{@code LobsterOutboundMessageService}��"
  122. ),
  123. "monitor": (
  124. "��Ϻҵ���ؿ����Ӱ���\n"
  125. " <p>\n"
  126. " �ۺ�ʵ������Ϣ��ת�������ŵȶ�ά�⻧ָ�ꡣ\n"
  127. " ��Ҫ���÷���{@code LobsterAdminController}��"
  128. ),
  129. "pay": (
  130. "������֧�������Ӱ���\n"
  131. " <p>\n"
  132. " ֧������·�ɡ���������/��ѯ/�ص�������֧���ɹ����ƽ��������������\n"
  133. " ��Ҫ���÷���{@code PayCallbackController}��{@code LobsterAdminController}��"
  134. ),
  135. "push": (
  136. "ʵʱ��Ϣ�����Ӱ���\n"
  137. " <p>\n"
  138. " ͳһ SSE/WebSocket ������ڣ��������߿ͻ������ӳء�"
  139. ),
  140. "queue": (
  141. "�ֲ�ʽ�����Ӱ���\n"
  142. " <p>\n"
  143. " Redis ZSET �ӳٶ��������Ŷ��г־û������Թ�����\n"
  144. " ��Ҫ���÷���{@code LobsterWorkflowExecutorImpl}��{@code LobsterDeadLetterController}��"
  145. ),
  146. "scope": (
  147. "��Ϻ���ݿɼ���Χ�Ӱ���\n"
  148. " <p>\n"
  149. " �����۶˽�ɫ����ȫ��˾/������/���������ݷ�Χ������ʵ�����ǩ�󶨡�\n"
  150. " ��Ҫ���÷���{@code LobsterWorkflowExecController}��{@code CompanyTagTemplateBindingServiceImpl}��"
  151. ),
  152. "sim": (
  153. "��֤����ʱ�������Ӱ���\n"
  154. " <p>\n"
  155. " ��������ӳ��Ϊ��ʵ���ӣ���������֤��ȴ��ڵ������١�\n"
  156. " ��Ҫ���÷���{@code LobsterTravelValidationServiceImpl}��{@code DynamicNodeExecutorImpl}��"
  157. ),
  158. "vector": (
  159. "��������ƥ���Ӱ���\n"
  160. " <p>\n"
  161. " �洢/��������Ƕ�벢�Ƽ�ѧϰ���ԣ���ǿ֪ʶ������������װ��\n"
  162. " ��Ҫ���÷���{@code ContextAssemblerImpl}��{@code LobsterWorkflowExecutorImpl}��"
  163. ),
  164. }
  165. CLASS_DESC = {
  166. # api
  167. "SmartApiCallNodeExecutor": "���� API �ڵ�ִ����������ƥ��ע�� API����ȡ���������� REST ���ò��� SpEL ���������",
  168. "ApiCallExecutor": "ͨ�� HTTP API ����ִ������֧�� GET/POST/PUT/DELETE �볬ʱ����Ȩͷ��",
  169. "ScriptCache": "SpEL �ű����뻺�棬������ API �ڵ� resultScript ���á�",
  170. "ApiRegistryService": "�ⲿ�ӿ�ͳһע�����ģ��� DB ����/ע�� API �˵㲢������Ȩͷ��",
  171. # async
  172. "LobsterEvolveAsyncService": "���������첽�ύ��ִ�У�֧���̳߳ء�MQ �� Redis ������ա�",
  173. "KnowledgeUsageLogAsyncWriter": "�첽д��֪ʶ��ʹ����־�����������Ի���·����",
  174. # cache
  175. "LobsterContextCacheService": "��Ϻ���������� Redis ���棨����/�Ի�/֪ʶ/�Ϲ�ȣ���������ʱ����ֱ�� DB��",
  176. # canvas
  177. "WorkflowCanvasSyncUtil": "��������ͬ�����ڵ� nextNodeCode ��������֧�ֶΣ�������ʱִ����ʹ�á�",
  178. # capability
  179. "LobsterNodeCapabilityRegistry": "��̬ע�������������Ϻ�ڵ����͵ij���ȡ�ִ����������ȱ�ڡ�",
  180. "LobsterTemplateCapabilityValidator": "У�鹤����ģ�廭���ڵ�������PayRouter��API �󶨵ȣ���",
  181. # data
  182. "ExternalDataRouter": "�ⲿ����·�������Զ����ֲ�·�� ExternalDataProvider ʵ�֡�",
  183. "ExternalDataProvider": "�ⲿʵʱ�����ṩ�߲�νӿڣ�����/�ڼ���/�����ȣ���",
  184. "HolidayDataProvider": "�����й������ڼ���/�������жϵ������ṩ�ߡ�",
  185. "WeatherDataProvider": "ͨ�� ApiRegistryService ����ߵ�/�ͷ������ API��",
  186. # dedup
  187. "MessageDedupService": "��Ϣ��ȷ+���壨2-gram Jaccard��ȥ�أ�ά���Ự��� 5 ����ʷ��",
  188. # event
  189. "WorkflowPatcher": "������/�ڵ㲹��������д�롢��ˡ�Ӧ�û����ڵ㲹����",
  190. "EventDecisionEngine": "�¼��ڵ���ߣ���ס�ڵ�ͳ�ơ���Ƽ�¼���û��¼�������",
  191. "UserEventMonitor": "�û��¼���أ�����Ѵ�����ͳ���¼�����",
  192. # expression
  193. "ExpressionEngine": "���� SpEL ����������ʽ��������ֵ���档",
  194. # feedback
  195. "FeedbackDrivenEvolution": "�������������ӿڣ���¼�������������������ɱ����� A/B ���ԡ�",
  196. "FeedbackDrivenEvolutionImpl": "������������ʵ�֣�MyBatis �־û���AI ���ɱ��塢A/B �������Զ�Ӧ�á�",
  197. # handoff
  198. "HumanHandoffDetector": "���弶ת�˹����ӿڣ���ά���ж��Ƿ���Ҫ�˹��ӹܡ�",
  199. "HumanHandoffDetectorImpl": "ת�˹��¼���¼ʵ�֣��־û�ת�˹���ʷ�������˲�ѯ��",
  200. "HandoffResult": "ת�˹������ DTO����ԭ�򡢽����ȡ����Ŷȵȡ�",
  201. "HandoffRule": "�⻧ת�˹���������ʵ�塣",
  202. # health
  203. "LobsterEngineHealthService": "����ʱ�����Ϻ������� Bean �Ƿ�װ��������",
  204. # heartbeat
  205. "HeartbeatConfig": "������ʵ���������ã��������ʱ�����Եȣ���",
  206. "HeartbeatScheduler": "�����������ӿڣ�ע��/ע��ʵ�������ִ�С���ѯ״̬��",
  207. "HeartbeatSchedulerImpl": "��������ʵ�֣���ʱ����/�����������ڴ���ٻ�Ծʵ����",
  208. # http
  209. "HttpClient": "������ HTTP �ͻ��˷�װ���� Webhook/�ⲿ API �ڵ�ʹ�á�",
  210. # inbound
  211. "LobsterInboundService": "ȫ����ͳһ��վ���أ��ͻ���Ϣ��ҵ���¼�·�ɵ�������ʵ����",
  212. "LobsterInboundWebhookAuth": "��վ Webhook ��ԿУ�飨X-Lobster-Webhook-Secret �� body �ֶΣ���",
  213. # knowledge
  214. "KnowledgeVersionManager": "֪ʶ��汾���������ա��Աȡ��ع����ǩ��",
  215. "KnowledgeVersionManagerImpl": "֪ʶ�汾���� MyBatis ʵ�֡�",
  216. # media
  217. "LobsterMediaMessageService": "��վ��ý��Ԥ������ͼƬʶ���ļ�/��Ƶת�˹���",
  218. "LobsterMediaMessageServiceImpl": "��ý����Ϣ����ʵ�֣����� AiVisionService �������¼�����ġ�",
  219. # memory
  220. "LobsterChatRecordSyncService": "�� chat_msg ͬ��д�� lobster_chat_record���������������ʹ�á�",
  221. "LobsterQwEvolutionBridge": "��΢ Hook ��վ�ظ��� LobsterEvolutionEngine �������Žӷ���",
  222. # monitor
  223. "DashboardService": "��Ϻҵ���ؿ��壬�ۺ�ʵ��/��Ϣ/ת��/���ŵȶ�άָ�ꡣ",
  224. # pay
  225. "PayProvider": "֧�����ز�νӿڣ�΢��/֧�����ȣ���",
  226. "PayRouter": "֧��·�������Զ����ֲ�·�� PayProvider��",
  227. "PayService": "֧������ȫ�������ڣ���������ѯ���ص����ƽ���������",
  228. "LobsterPayWorkflowBridge": "֧���ɹ���д�� ActionOutcome ��������������������ͻ���",
  229. "WechatPayProvider": "΢��֧���ṩ�ߣ��� ApiRegistryService �����̻���Ϣ��",
  230. # push
  231. "MessagePushService": "ͳһ��Ϣ������ڣ�SSE/WebSocket ռλ�����������߿ͻ������ӳء�",
  232. # queue
  233. "DistributedDelayQueue": "Redis ZSET �ֲ�ʽ�ӳٶ��У�֧���û� hash ������������ȡ��",
  234. "DeadLetterQueue": "���Ŷ��г־û������Թ�����",
  235. # scope
  236. "LobsterDataScope": "��Ϻ���ݿɼ���Χֵ���󣨰� create_by ���ˣ���",
  237. "LobsterInstanceScopeFilter": "���󶨴����˷�Χ������Ϻ������ʵ���б���",
  238. "LobsterDataScopeService": "�������۶����ݷ�Χ��ȫ��˾/������/�����ˡ�",
  239. # sim
  240. "LobsterSimulationTimeScale": "��֤/����ʱ�����ţ�1 ������ = N ��ʵ���ӣ�Ĭ�� 10����",
  241. # vector
  242. "VectorPatternMatcher": "��������ƥ��ӿڣ��洢/�����������Ƽ����ԡ�",
  243. "VectorPatternMatcherImpl": "����ģʽƥ��ʵ�֣����� EmbeddingService �������Ļ��档",
  244. # root interfaces
  245. "LobsterWorkflowExecutor": "��Ϻ������ִ�к��Ľӿڣ���ͣ���ƽ��ڵ㡢ģ�����������",
  246. "LobsterEvolutionEngine": "��Ϻ�������棺�����ġ�Prompt��AI���ʼ���Ϲ��ժҪ�������Ի�������",
  247. "ContextAssembler": "��װ�Ի������ģ�����/ժҪ/��ʷ/֪ʶ/�Ϲ�/ѧϰ���ԣ���",
  248. "ComplianceService": "�Ϲ����� Prompt ע�롢AI �ظ�Υ��ɨ�衣",
  249. "ConditionEvaluator": "������������֧��ֵ����һ�ڵ������",
  250. "DynamicNodeAdjuster": "������ͼ/������̬������һ�ڵ��ת�˹���",
  251. "DynamicNodeExecutor": "��̬�ڵ�ִ������֧��ע���Զ���ڵ㴦������",
  252. "DynamicNodeImplService": "��̬�ڵ�ѧϰ���ָ�Ƹ��á���⡢�������������",
  253. "MultiModelWorkflowGenerator": "��ģ��Э������/�����Ż�������ģ�塣",
  254. "MultiTurnDialogueManager": "���ڵ���ֶԻ��������ִ�״̬���١�",
  255. "OutputQualityChecker": "�������������Զ�������",
  256. "PendingAuditKnowledgeService": "������ AI �ظ��Զ���������֪ʶ�⡣",
  257. "PromptManager": "�������ȼ� Prompt ���أ��ڵ�>�⻧>Fallback����",
  258. "QualityScoringService": "8 ά������������ϵ���������ɻ��ơ�",
  259. "ReplaceWordService": "Υ����/�״����滻��ȫ��+�⻧�ʿ⣩��",
  260. "SemanticTakeoverDetector": "����ӹ�/ת AI ��⡣",
  261. "SensitiveWordService": "���дʹ��ˣ�������������㣩��",
  262. "SummaryGenerator": "�Ի�ժҪ���ɡ��첽�����뻺���ȡ��",
  263. "ToolCallFramework": "���ߵ��ÿ�ܣ�ע��/ִ�� HTTP/�ű�/���ù��ߡ�",
  264. "VariableStore": "������ʵ�������ڴ�+DB ˫д�洢��",
  265. "VariableSubstitutionEngine": "ģ�����ռλ���滻���档",
  266. "WorkflowPromptResolver": "���� workflowId��templateCode���� PromptManager ��ѯ��",
  267. "LobsterE2eTestService": "�˵��˲��ԣ�AI ���ɹ�������ʵ���ƽ����ʼ���������顣",
  268. "LobsterIntegrationTestService": "��Ϻ��ģ�鼯�ɲ�����ڡ�",
  269. "LobsterModelConfigService": "����������/�ʼ����ô�ģ�����ù�����",
  270. "LobsterNodeTypeService": "�ڵ����� DB �����뻺�����",
  271. "LobsterSalesCorpusAnalysisReport": "�������� AI �������� DTO��",
  272. "LobsterTestScenarioService": "���Գ����籾 CRUD �붨ʱ/��ʱ�ع����С�",
  273. "LobsterWorkflowGenerateAsyncService": "�첽/ͬ��ִ�� AI �������������񲢸������ɼ�¼��",
  274. "ILobsterBillingService": "��Ϻ Token �Ʒ������Ѽ�¼��ѯ��",
  275. "ILobsterConversationSummaryService": "�Ի�ժҪ�б��������ѯ��",
  276. "ILobsterEventAuditService": "�¼��ڵ�����б���ͨ��/���ء�",
  277. "ILobsterEvolutionSuggestionService": "�������������������ˡ�",
  278. "ILobsterInstanceStatsService": "��Ϻʵ������ͳ�ơ�",
  279. "ILobsterLearningCorpusService": "ѧϰ���Ͽ��б���ѯ��",
  280. "ILobsterPromptService": "ϵͳ/���漶��ʾ�� CRUD ������ѯ��",
  281. "ILobsterSalesCorpusService": "�������Ϲ����������� AI ������",
  282. "INodePromptService": "�ڵ㼶 Prompt ���ء���������ҵĬ��Ԥ��/�ָ���",
  283. "IWorkflowTemplateAdminService": "������ģ��/�ڵ�����˷���",
  284. }
  285. CLASS_CALLERS = {
  286. "SmartApiCallNodeExecutor": ["LobsterWorkflowExecutorImpl"],
  287. "ApiCallExecutor": ["SmartApiCallNodeExecutor", "ApiRegistryService"],
  288. "ScriptCache": ["SmartApiCallNodeExecutor"],
  289. "ApiRegistryService": ["SmartApiCallNodeExecutor", "ToolCallFrameworkImpl", "WeatherDataProvider", "WechatPayProvider", "LobsterApiRegistryController"],
  290. "LobsterEvolveAsyncService": ["LobsterEvolveTaskConsumer"],
  291. "KnowledgeUsageLogAsyncWriter": ["ContextAssemblerImpl"],
  292. "LobsterContextCacheService": ["ContextAssemblerImpl", "LobsterEvolutionEngineImpl", "ComplianceServiceImpl", "SummaryGeneratorImpl", "VectorPatternMatcherImpl", "TenantLearningEngineImpl"],
  293. "WorkflowCanvasSyncUtil": ["CompanyWorkflowLobsterServiceImpl"],
  294. "LobsterNodeCapabilityRegistry": ["LobsterTemplateCapabilityValidator", "LobsterEngineController"],
  295. "LobsterTemplateCapabilityValidator": ["CompanyWorkflowLobsterServiceImpl"],
  296. "ExternalDataRouter": ["DynamicNodeExecutorImpl"],
  297. "ExternalDataProvider": ["ExternalDataRouter"],
  298. "HolidayDataProvider": ["ExternalDataRouter"],
  299. "WeatherDataProvider": ["ExternalDataRouter"],
  300. "MessageDedupService": ["DuplicateReplyDetector"],
  301. "WorkflowPatcher": ["LobsterEventAuditController"],
  302. "EventDecisionEngine": ["LobsterEventAuditController"],
  303. "UserEventMonitor": ["EventDecisionEngine"],
  304. "ExpressionEngine": ["ConditionEvaluatorImpl", "SmartApiCallNodeExecutor"],
  305. "FeedbackDrivenEvolution": ["LobsterAdminController", "FeedbackDrivenEvolutionImpl"],
  306. "FeedbackDrivenEvolutionImpl": ["EvolutionSchedulerImpl", "LobsterAdminController"],
  307. "HumanHandoffDetector": ["DynamicNodeAdjusterImpl", "LobsterInboundReplyOrchestrator"],
  308. "HumanHandoffDetectorImpl": ["LobsterInboundReplyOrchestrator"],
  309. "HandoffResult": ["HumanHandoffDetector", "DynamicNodeAdjusterImpl"],
  310. "HandoffRule": ["HumanHandoffDetector"],
  311. "LobsterEngineHealthService": ["LobsterEngineController"],
  312. "HeartbeatConfig": ["HeartbeatSchedulerImpl", "LobsterWorkflowExecutorImpl"],
  313. "HeartbeatScheduler": ["LobsterWorkflowExecutorImpl", "LobsterEngineController"],
  314. "HeartbeatSchedulerImpl": ["LobsterWorkflowExecutorImpl", "LobsterEngineController"],
  315. "HttpClient": ["DynamicNodeExecutorImpl", "ToolCallFrameworkImpl"],
  316. "LobsterInboundService": ["LobsterInboundController"],
  317. "LobsterInboundWebhookAuth": ["LobsterInboundController"],
  318. "KnowledgeVersionManager": ["KnowledgeVersionManagerImpl"],
  319. "KnowledgeVersionManagerImpl": ["LobsterAdminController"],
  320. "LobsterMediaMessageService": ["LobsterInboundService"],
  321. "LobsterMediaMessageServiceImpl": ["LobsterInboundService", "LobsterInboundReplyOrchestrator"],
  322. "LobsterChatRecordSyncService": ["LobsterOutboundMessageService", "LobsterWorkflowExecutorImpl", "LobsterQwEvolutionBridge"],
  323. "LobsterQwEvolutionBridge": ["LobsterWorkflowExecutorImpl"],
  324. "DashboardService": ["LobsterAdminController"],
  325. "PayProvider": ["PayRouter"],
  326. "PayRouter": ["PayService", "DynamicNodeExecutorImpl"],
  327. "PayService": ["LobsterAdminController", "PayCallbackController"],
  328. "LobsterPayWorkflowBridge": ["PayService"],
  329. "WechatPayProvider": ["PayRouter"],
  330. "MessagePushService": ["LobsterWorkflowExecutorImpl"],
  331. "DistributedDelayQueue": ["LobsterScheduleService", "WorkflowTriggerScheduler"],
  332. "DeadLetterQueue": ["LobsterWorkflowExecutorImpl", "LobsterOutboundMessageService", "LobsterDeadLetterController", "DashboardService"],
  333. "LobsterDataScope": ["LobsterDataScopeService", "LobsterInstanceScopeFilter"],
  334. "LobsterInstanceScopeFilter": ["LobsterInstanceMonitorController", "LobsterWorkflowExecController"],
  335. "LobsterDataScopeService": ["LobsterInstanceScopeFilter", "CompanyTagTemplateBindingServiceImpl"],
  336. "LobsterSimulationTimeScale": ["DynamicNodeExecutorImpl", "LobsterTravelValidationServiceImpl"],
  337. "VectorPatternMatcher": ["ContextAssemblerImpl", "LobsterWorkflowExecutorImpl"],
  338. "VectorPatternMatcherImpl": ["ContextAssemblerImpl", "LobsterWorkflowExecutorImpl", "DynamicNodeExecutorImpl"],
  339. "LobsterWorkflowExecutor": ["LobsterInboundService", "LobsterWorkflowExecController", "LobsterTaskDispatchService", "LobsterTravelValidationServiceImpl"],
  340. "LobsterEvolutionEngine": ["LobsterWorkflowExecutorImpl", "LobsterQwEvolutionBridge", "LobsterPayWorkflowBridge", "LobsterTravelValidationServiceImpl"],
  341. "ContextAssembler": ["LobsterEvolutionEngineImpl", "MultiTurnDialogueManagerImpl"],
  342. "ComplianceService": ["LobsterEvolutionEngineImpl", "MultiTurnDialogueManagerImpl"],
  343. "ConditionEvaluator": ["LobsterWorkflowExecutorImpl"],
  344. "DynamicNodeAdjuster": ["LobsterEvolutionEngineImpl"],
  345. "DynamicNodeExecutor": ["LobsterWorkflowExecutorImpl", "LobsterIntegrationTestServiceImpl"],
  346. "DynamicNodeImplService": ["DynamicNodeExecutorImpl", "LobsterAdminController"],
  347. "MultiModelWorkflowGenerator": ["LobsterIntegrationTestServiceImpl", "LobsterAdminController", "LobsterWorkflowGenerateAsyncService"],
  348. "MultiTurnDialogueManager": ["LobsterEvolutionEngineImpl", "LobsterWorkflowExecutorImpl"],
  349. "OutputQualityChecker": ["DynamicNodeExecutorImpl", "LobsterEvolutionEngineImpl"],
  350. "PendingAuditKnowledgeService": ["TenantLearningEngineImpl", "QualityScoringServiceImpl"],
  351. "PromptManager": ["LobsterEvolutionEngineImpl", "LobsterWorkflowExecutorImpl", "DynamicNodeExecutorImpl"],
  352. "QualityScoringService": ["LobsterEvolutionEngineImpl", "LobsterE2eTestServiceImpl", "LobsterTravelValidationServiceImpl"],
  353. "ReplaceWordService": ["LobsterEvolutionEngineImpl", "LobsterCompanyConfigService"],
  354. "SemanticTakeoverDetector": ["DynamicNodeAdjusterImpl", "LobsterInboundReplyOrchestrator"],
  355. "SensitiveWordService": ["LobsterEvolutionEngineImpl", "LobsterEngineHealthService"],
  356. "SummaryGenerator": ["LobsterEvolutionEngineImpl", "ContextAssemblerImpl", "LobsterEngineHealthService"],
  357. "ToolCallFramework": ["LobsterEvolutionEngineImpl", "DynamicNodeExecutorImpl"],
  358. "VariableStore": ["LobsterEvolutionEngineImpl", "LobsterWorkflowExecutorImpl", "TriggerOrchestratorImpl"],
  359. "VariableSubstitutionEngine": ["LobsterWorkflowExecutorImpl", "LobsterEvolutionEngineImpl"],
  360. "WorkflowPromptResolver": ["PromptManagerImpl", "LobsterEvolutionEngineImpl"],
  361. "LobsterE2eTestService": ["LobsterE2eController", "LobsterAdminController", "LobsterTravelValidationServiceImpl"],
  362. "LobsterIntegrationTestService": ["LobsterEngineController", "LobsterAdminController"],
  363. "LobsterModelConfigService": ["LobsterAdminController", "LobsterModelRouteController"],
  364. "LobsterNodeTypeService": ["LobsterIntegrationTestServiceImpl", "DynamicNodeExecutorImpl"],
  365. "LobsterSalesCorpusAnalysisReport": ["ILobsterSalesCorpusService", "LobsterSalesCorpusServiceImpl"],
  366. "LobsterTestScenarioService": ["LobsterE2eController", "LobsterAdminController"],
  367. "LobsterWorkflowGenerateAsyncService": ["CompanyWorkflowLobsterServiceImpl", "LobsterAiGeneratorController"],
  368. "ILobsterBillingService": ["LobsterAdminController", "LobsterPlatformAdminController"],
  369. "ILobsterConversationSummaryService": ["LobsterAdminController"],
  370. "ILobsterEventAuditService": ["LobsterEventAuditController", "LobsterAdminController"],
  371. "ILobsterEvolutionSuggestionService": ["LobsterAdminController", "LobsterEngineController"],
  372. "ILobsterInstanceStatsService": ["LobsterAdminController"],
  373. "ILobsterLearningCorpusService": ["LobsterAdminController"],
  374. "ILobsterPromptService": ["LobsterPromptController", "LobsterAdminController"],
  375. "ILobsterSalesCorpusService": ["LobsterAdminController", "LobsterSalesCorpusController"],
  376. "INodePromptService": ["WorkflowTemplateAdminServiceImpl", "CompanyWorkflowLobsterServiceImpl"],
  377. "IWorkflowTemplateAdminService": ["LobsterAdminController"],
  378. }
  379. METHOD_CN = {
  380. "execute": "ִ������ API �ڵ㣺ƥ��˵㡢���� REST ������ SpEL �����",
  381. "invoke": "���� HTTP API ���ò�������Ӧ�塣",
  382. "init": "��ʼ�����������á�ע�� handler ��ˢ�»���ȡ�",
  383. "refreshCache": "ˢ�±���/Redis ���档",
  384. "get": "����ʶ��ȡע���",
  385. "getAllApis": "��ȡȫ����ע�� API �˵㡣",
  386. "register": "ע���µ� API �˵�������ṩ�ߡ�",
  387. "buildAuthHeaders": "���ݼ�Ȩ���ù��� HTTP ����ͷ��",
  388. "size": "���ػ��浱ǰ��Ŀ����",
  389. "clear": "��ջ��档",
  390. "isAsyncEnabled": "�ж��Ƿ������첽��������",
  391. "submit": "�ύ�첽��������",
  392. "executeTask": "ִ��ָ����������",
  393. "getTask": "������ ID ��ѯ��������״̬��",
  394. "cleanupOldTasks": "�������ڽ���������ա�",
  395. "shutdown": "�ر��첽�����̳߳ء�",
  396. "writeUsageLogs": "�첽д��֪ʶ������ʹ����־��",
  397. "getUserProfile": "��������Դ�����û�����",
  398. "getRecentChats": "��������Դ��������Ի���¼��",
  399. "getHistoricalFacts": "��������Դ������ʷ�û���ʵ��",
  400. "getDialogueState": "��������Դ���ضԻ�״̬��",
  401. "getCustomerHabits": "��������Դ���ؿͻ���ͨϰ�ߡ�",
  402. "getLearnedStrategies": "��������Դ�����⻧ѧϰ���ԡ�",
  403. "getKnowledgeSearch": "��������Դִ��֪ʶ�������",
  404. "getComplianceRules": "��������Դ���غϹ�����б���",
  405. "getCompliancePrompt": "��������Դ���غϹ� Prompt Ƭ�Ρ�",
  406. "getEmbeddingJson": "��������Դ��ȡ�ı�����Ƕ�� JSON��",
  407. "getVectorRowsJson": "��������Դ��ȡ������ JSON��",
  408. "getWorkflowInstance": "��������Դ���ع�����ʵ����",
  409. "getExecutionLogs": "��������Դ���ؽڵ�ִ����־��",
  410. "getTenantKeywords": "��������Դ�����⻧����ؼ��ʡ�",
  411. "invalidateUserProfile": "ʧЧ�û����񻺴档",
  412. "invalidateRecentChats": "ʧЧ����Ի����档",
  413. "invalidateHistoricalFacts": "ʧЧ��ʷ��ʵ���档",
  414. "invalidateDialogueState": "ʧЧ�Ի�״̬���档",
  415. "invalidateCustomerHabits": "ʧЧ�ͻ�ϰ�߻��档",
  416. "invalidateLearnedStrategies": "ʧЧѧϰ���Ի��档",
  417. "invalidateKnowledge": "ʧЧ֪ʶ��������档",
  418. "invalidateCompliance": "ʧЧ�Ϲ������ Prompt ���档",
  419. "invalidateVectorRows": "ʧЧ�����л��档",
  420. "invalidateInstance": "ʧЧʵ����ִ����־���档",
  421. "invalidateTenantKeywords": "ʧЧ�⻧�ؼ��ʻ��档",
  422. "invalidateAfterDialogue": "�Ի�����������ʧЧ�û��������ݡ�",
  423. "syncEdgesToNodes": "��������ͬ��д��ڵ� nextNodeCode ���֧������",
  424. "normalizeLegacyBranchFields": "�淶���ɰ��֧�ֶ��Լ�������ʱִ������",
  425. "all": "����ȫ���ڵ�����ע���",
  426. "belowStars": "ɸѡ����ָ���Ǽ��Ľڵ����͡�",
  427. "dynamicExecutorTypes": "����֧�ֶ�ִ̬�����Ľڵ����ͼ��ϡ�",
  428. "summary": "���ܽڵ����������ͳ�ơ�",
  429. "validate": "У��ģ�廭���ڵ����������Ƿ�������",
  430. "getProvider": "�����ͻ�ȡ���ݻ�֧���ṩ�ߡ�",
  431. "getAvailableSources": "�г������ⲿ����Դ���͡�",
  432. "fetch": "��ȡ�ⲿʵʱ���ݡ�",
  433. "getSourceType": "��������Դ���ͱ�ʶ��",
  434. "isAvailable": "�ж��ṩ��/�����Ƿ���á�",
  435. "isExactDuplicate": "�ж���Ϣ�Ƿ�����ʷ��ȷ�ظ���",
  436. "semanticSimilarity": "����������Ϣ���������ƶȡ�",
  437. "check": "�ۺϾ�ȷ������ȥ�ؼ�顣",
  438. "record": "��¼�ѷ�����Ϣ��ȥ����ʷ��",
  439. "restoreFromRedis": "�� Redis �ָ�ȥ����ʷ��",
  440. "addPatch": "������������ڵ㲹����",
  441. "getPendingPatches": "��ѯ����˲����б���",
  442. "applyPatch": "Ӧ�������ͨ���IJ�����",
  443. "rejectPatch": "���ز������롣",
  444. "patchNode": "�Ե����ڵ�Ӧ�ò������ݡ�",
  445. "getStuckNodes": "ͳ�ƿ�ס�Ľڵ��б���",
  446. "getNodeStats": "��ȡ�ڵ�ִ��ͳ�ơ�",
  447. "recordAudit": "��¼�¼��ڵ���ơ�",
  448. "markProcessed": "����û��¼��Ѵ�����",
  449. "countEvents": "ͳ���û��¼�������",
  450. "evaluateBoolean": "��ֵ SpEL ����ʽ�����ز��������",
  451. "evaluate": "��ֵ��������ʽ���֧������",
  452. "isValid": "У�� SpEL ����ʽ�﷨�Ƿ�Ϸ���",
  453. "recordFeedback": "��¼�˹����������뱸ע��",
  454. "analyzeFeedback": "������������ȡ�����Ľ����顣",
  455. "generateVariants": "���ڷ������� Prompt ���塣",
  456. "getActiveABTests": "��ѯ�����е� A/B ���ԡ�",
  457. "applyABTestResult": "Ӧ�� A/B ����ʤ�����塣",
  458. "resolveVariantForNode": "Ϊ�ڵ������ǰ��Ч�� A/B ���塣",
  459. "sweepAutoApply": "ɨ�貢�Զ�Ӧ�ô����塣",
  460. "detectHandoff": "����Ƿ���Ҫת�˹���",
  461. "getHandoffRules": "��ѯ�⻧ת�˹�����",
  462. "saveHandoffRule": "����ת�˹��������á�",
  463. "recordHandoffEvent": "��¼ת�˹��¼���",
  464. "recordHandoff": "��¼һ��ת�˹�������",
  465. "getHandoffHistory": "��ѯת�˹���ʷ��¼��",
  466. "noHandoff": "��������ת�˹��Ľ����",
  467. "needHandoff": "������Ҫת�˹��Ľ����",
  468. "isHandoffNeeded": "�ж��Ƿ��ѱ����Ҫת�˹���",
  469. "setHandoffNeeded": "�����Ƿ���Ҫת�˹���",
  470. "check": "ִ�����潡����顣",
  471. "defaultConfig": "����Ĭ���������á�",
  472. "registerInstance": "ע��ʵ�����������ȡ�",
  473. "unregisterInstance": "����������ע��ʵ����",
  474. "checkAndExecute": "��鲢ִ�е�����������",
  475. "getHeartbeatStatus": "��ѯʵ������״̬��",
  476. "sendHeartbeat": "����ʵ��������",
  477. "cleanupExpiredHeartbeats": "��������������¼��",
  478. "recordHeartbeat": "��¼�����¼���",
  479. "getRecentHeartbeats": "��ѯ���������¼��",
  480. "updateHeartbeatStatus": "��������״̬��",
  481. "get": "���� GET ����",
  482. "postJson": "���� JSON POST ����",
  483. "postForm": "������� POST ����",
  484. "put": "���� PUT ����",
  485. "delete": "���� DELETE ����",
  486. "request": "����ͨ�� HTTP ����",
  487. "handleInboundMessage": "�����ͻ���վ��Ϣ��·�ɵ���������",
  488. "handleBusinessEvent": "����ҵ���¼���������������",
  489. "assertWebhookAuthorized": "У�� Webhook ������Կ��",
  490. "createVersion": "����֪ʶ��汾���ա�",
  491. "getVersionHistory": "��ѯ֪ʶ�汾��ʷ��",
  492. "getVersion": "���汾�Ż�ȡ�������顣",
  493. "diffVersions": "�Ա�����֪ʶ�汾���졣",
  494. "rollback": "�ع���ָ��֪ʶ�汾��",
  495. "addVersionTag": "Ϊ֪ʶ�汾���ӱ�ǩ��",
  496. "isImageType": "�ж���Ϣ�����Ƿ�ΪͼƬ��",
  497. "requiresHandoff": "�ж϶�ý���Ƿ���ת�˹���",
  498. "classifyMediaKind": "�����ý����Ϣ���͡�",
  499. "recognizeImageWithContext": "��϶Ի�������ʶ��ͼƬ���ݡ�",
  500. "buildConversationContext": "������ý��ʶ���öԻ������ġ�",
  501. "preprocess": "Ԥ������վ��ý����Ϣ��",
  502. "normalizeImageParse": "�淶��ͼƬʶ�����ı���",
  503. "resolveInstanceId": "������Ϣ��Ӧ�Ĺ�����ʵ�� ID��",
  504. "syncFromChatMsg": "�� chat_msg ͬ���� lobster_chat_record��",
  505. "syncInboundText": "ͬ����վ�ı���Ϣ���������",
  506. "tryEvolve": "���Ծ��������洦����΢��վ�ظ���",
  507. "getTenantDashboard": "�ۺ��⻧��ؿ���ָ�ꡣ",
  508. "getGatewayType": "����֧���������ͱ�ʶ��",
  509. "createOrder": "����֧��������",
  510. "queryOrder": "��ѯ֧������״̬��",
  511. "getAvailableGateways": "�г�����֧�����ء�",
  512. "createPayOrder": "����������֧��������",
  513. "checkPayStatus": "���֧��״̬��",
  514. "handlePaymentNotify": "����֧���ص�֪ͨ��",
  515. "sqlEscapePublic": "�� SQL �ַ���������ת�塣",
  516. "onPaymentSuccess": "֧���ɹ����ƽ����������������",
  517. "loadOrderRow": "����֧�����������ݡ�",
  518. "pushToUser": "��ָ���û�����ʵʱ��Ϣ��",
  519. "broadcastToCompany": "���⻧ȫԱ�㲥��Ϣ��",
  520. "clientConnect": "ע��ͻ����������ӡ�",
  521. "clientDisconnect": "ע���ͻ����������ӡ�",
  522. "getOnlineCount": "��ȡ������������",
  523. "enqueue": "����ӳٻ�������Ϣ��",
  524. "enqueueWithSharding": "���û� hash ��������ӳ���Ϣ��",
  525. "pollBatch": "������ȡ�����ӳ���Ϣ��",
  526. "getQueueSize": "��ȡ���е�ǰ��С��",
  527. "tryAcquireBatchLock": "���Ի�ȡ������������",
  528. "releaseBatchLock": "�ͷ�������������",
  529. "dequeue": "����������Ϣ��",
  530. "retry": "����������Ϣ��",
  531. "remove": "�Ƴ����ż�¼��",
  532. "getDeadLetterList": "��ѯ�����б���",
  533. "getPendingCount": "��ȡ����������������",
  534. "getDeadCount": "��ȡ��������������",
  535. "retryAllDead": "��������ȫ�����š�",
  536. "unrestricted": "�������������ݷ�Χ��",
  537. "filtered": "���찴�����˹��˵����ݷ�Χ��",
  538. "isUnrestricted": "�ж��Ƿ�Ϊ�����Ʒ�Χ��",
  539. "getCreateByUsernames": "��ȡ�ɼ��������û������ϡ�",
  540. "canAccessCreateBy": "�ж��Ƿ�ɷ���ָ�����������ݡ�",
  541. "filterInstances": "�����ݷ�Χ����ʵ���б���",
  542. "canAccessInstance": "�ж��Ƿ�ɷ���ָ��ʵ����",
  543. "resolve": "������ǰ�û����ݿɼ���Χ��",
  544. "describeScope": "�������ݷ�Χ�����İ���",
  545. "enabled": "�жϷ���ʱ�������Ƿ����á�",
  546. "minuteUnit": "����ÿ���Ӷ�Ӧ����������",
  547. "daysToMillis": "��������ת��Ϊ��ʵ���롣",
  548. "alignToMinuteBucket": "���뵽����ʱ��Ͱ��",
  549. "storeVector": "�洢����Ƕ�롣",
  550. "searchSimilar": "������������������",
  551. "deleteVector": "ɾ��������¼��",
  552. "recommendByVector": "���������Ƽ�ѧϰ���ԡ�",
  553. "startWorkflow": "�����µĹ�����ʵ����ִ���׽ڵ㡣",
  554. "executeNextNode": "���ͻ��ظ��ƽ�����������һ�ڵ㡣",
  555. "pauseWorkflow": "��ͣ������ʵ��ִ�С�",
  556. "resumeWorkflow": "�ָ�����ͣ�Ĺ�����ʵ����",
  557. "terminateWorkflow": "��ֹ������ʵ������¼ԭ��",
  558. "getInstanceState": "��ѯ������ʵ����ǰ״̬�������ġ�",
  559. "simulateExecution": "ģ��ִ�й������ڵ㣨��ʵ�ʷ���Ϣ����",
  560. "deliverProactiveMessage": "��ͻ�Ͷ�ݹ�����������Ϣ��",
  561. "evolve": "ִ�е��ֶԻ�������ˮ�ߡ�",
  562. "enrichWithDynamicNode": "AI ��̬���ɲ�����Ի������Ľڵ㡣",
  563. "assembleContext": "��װ�Ի��������ı����� token ���ޣ���",
  564. "assembleForNode": "Ϊָ���ڵ�������װ�����ġ�",
  565. "getContextVariables": "��ȡʵ�������ı��� Map��",
  566. "assembleFullContext": "���м��ض�Դ�����IJ���װΪ Map��",
  567. "buildAiPrompt": "�������� Map ��ʽ��Ϊ AI Prompt �ı���",
  568. "formatKnowledgeForScoring": "��ʽ��֪ʶ��Ƭ�ι���������ʹ�á�",
  569. "checkCompliance": "������ݺϹ��ԡ�",
  570. "checkComplianceWithResult": "���Ϲ��Բ�������ϸ�����",
  571. "getComplianceRules": "��ȡ�⻧�Ϲ�����б���",
  572. "buildCompliancePrompt": "�����Ϲ� Prompt ע��Ƭ�Ρ�",
  573. "checkAiReplyCompliance": "У�� AI �ظ��Ϲ��Բ����طּ������",
  574. "evaluateNextNode": "��ֵ������������һ�ڵ���롣",
  575. "adjustNode": "��������������ڽڵ�·�ɾ��ߡ�",
  576. "shouldTransferToHuman": "�ж��Ƿ�Ӧת�˹���",
  577. "detectIntent": "���ͻ���ͼ���͡�",
  578. "supports": "�жϽڵ������Ƿ���ע�� handler��",
  579. "registerHandler": "ע���Զ���ڵ����� handler��",
  580. "getRegisteredHandlers": "������ע���ȫ���ڵ� handler ӳ�䡣",
  581. "computeFingerprint": "���㶯̬�ڵ�ʵ��ָ�ơ�",
  582. "findActiveImpl": "�����Ѽ���Ķ�̬�ڵ�ʵ�֡�",
  583. "saveLearned": "����ѧϰ�õ��Ķ�̬�ڵ�ʵ�֡�",
  584. "recordRunAndScore": "��¼���в����ֶ�̬�ڵ�ʵ�֡�",
  585. "approve": "���ͨ����̬�ڵ�ʵ�ֻ�֪ʶ��Ŀ��",
  586. "reject": "��˲��ض�̬�ڵ�ʵ�ֻ�֪ʶ��Ŀ��",
  587. "listByStatus": "��״̬�г���̬�ڵ�ʵ�֡�",
  588. "getStats": "��ȡͳ��ָ�ꡣ",
  589. "generateWorkflow": "AI ���ɹ�����ģ�� JSON��",
  590. "generateWorkflowWithResult": "AI ���ɹ�������������ϸ�����",
  591. "iterateOptimize": "�����Ż����й�����ģ�塣",
  592. "processDialogue": "�������ֶԻ��ڵ��һ�ֽ�����",
  593. "isMultiTurnNode": "�жϽڵ��Ƿ�����Ϊ���ֶԻ���",
  594. "isDialogueComplete": "�ж϶��ֶԻ��Ƿ�����ɡ�",
  595. "getDialogueRound": "��ȡ��ǰ���ֶԻ��ִΡ�",
  596. "resetDialogue": "���ö��ֶԻ�״̬��",
  597. "checkQuality": "���������ݻ���������",
  598. "checkAndCorrect": "����������ڱ�Ҫʱ�������ݡ�",
  599. "saveToPending": "���������ظ���������֪ʶ�⡣",
  600. "listPendingAudit": "�г������֪ʶ��Ŀ��",
  601. "promoteToKnowledge": "�����ͨ����Ŀ������ʽ֪ʶ�⡣",
  602. "getPrompt": "��ȡ�ڵ�/ȫ�� Prompt ���ݡ�",
  603. "getSystemPrompt": "��ȡ�ڵ�ϵͳ Prompt��",
  604. "getInstructionPrompt": "��ȡ�ڵ�ָ�� Prompt��",
  605. "getFallbackPrompt": "��ȡ�ڵ㶵�� Prompt��",
  606. "hasConfiguredNodePrompt": "�жϽڵ��Ƿ�������ָ������ Prompt��",
  607. "saveNodePrompt": "����ڵ� Prompt �����ݿ⡣",
  608. "saveGlobalPrompt": "����ȫ�� Prompt �����ݿ⡣",
  609. "listPrompts": "�г��⻧ Prompt ���á�",
  610. "invalidateCache": "ʧЧ Prompt ���档",
  611. "scoreWithRetry": "�������ֲ��ڲ����ʱ���������ɡ�",
  612. "score": "�� AI �ظ����ж�ά���������֡�",
  613. "getThreshold": "��ȡ����������ֵ��",
  614. "getImprovementHint": "���ݵ�ǰ�÷����ɸĽ���ʾ��",
  615. "applyReplace": "���ı�Ӧ��Υ����/�״����滻��",
  616. "listWords": "��ҳ��ѯ�滻���б���",
  617. "saveWord": "�����滻�����á�",
  618. "deleteWord": "ɾ���滻�ʡ�",
  619. "detectTakeover": "���ͻ��Ƿ�Ҫ��ת�˹��ӹܡ�",
  620. "detectAITransfer": "��� AI �Ƿ�Ӧ����ת���˹���",
  621. "filterSensitiveWords": "�����ı��е����дʲ��滻��",
  622. "containsSensitiveWord": "����ı��Ƿ�������дʡ�",
  623. "detectSensitiveWords": "��Ⲣ�������д���ϸ�б���",
  624. "addSensitiveWord": "�����⻧���дʲ�ˢ�»��档",
  625. "removeSensitiveWord": "�Ƴ����дʲ�ˢ�»��档",
  626. "listSensitiveWords": "��ѯ�⻧���д��б���",
  627. "generateSummary": "���ڶԻ���ʷ����ժҪ�ı���",
  628. "extractKeyPoints": "�ӶԻ���ʷ��ȡ�ؼ�Ҫ�㡣",
  629. "analyzeSentiment": "����������Ϣ�������",
  630. "generateSummaryAsync": "�첽����ʵ��ժҪ���£�����������",
  631. "forceGenerateSummary": "ǿ���������ɲ��־û�ʵ��ժҪ��",
  632. "forceGenerateSummaryFromHistory": "���ڸ�����ʷ�ı�ǿ������ժҪ��",
  633. "getCachedSummary": "��ȡ�ѻ�����û�/ʵ��ժҪ��",
  634. "buildSummaryPrompt": "����ժҪ������ Prompt��",
  635. "executeTool": "ִ��ָ�����ƵĹ��ߵ��á�",
  636. "getAvailableTools": "�г��⻧���ù��ߡ�",
  637. "registerTool": "ע���Զ��幤�ߡ�",
  638. "setVariable": "���õ���ʵ���������ڴ�+Redis+DB����",
  639. "setVariables": "��������ʵ��������",
  640. "getVariable": "��ȡ����ʵ��������",
  641. "getAllVariables": "��ȡʵ��ȫ��������",
  642. "removeVariable": "ɾ������ʵ��������",
  643. "clearVariables": "���ʵ��ȫ��������",
  644. "persistToDatabase": "���ڴ�����־û������ݿ⡣",
  645. "loadFromDatabase": "�����ݿ���ر������ڴ滺�档",
  646. "substitute": "��ģ���еı���ռλ���滻Ϊʵ��ֵ��",
  647. "extractVariables": "���������г�ȡ����ֵ��",
  648. "resolveWorkflowCode": "�� workflowId ���� templateCode��",
  649. "resolveWorkflowCodeFromInstance": "��ʵ�� ID ���� templateCode��",
  650. "runE2e": "�������� E2E ���Բ����ر��档",
  651. "getReport": "�� runId ��ѯ E2E ���Ա��档",
  652. "stepNext": "E2E �����ƽ���ע���û����벢ִ����һ�ڵ㡣",
  653. "multiTurn": "E2E ���ֶԻ����ԡ�",
  654. "listRuns": "��ҳ�г� E2E �������м�¼��",
  655. "deleteRun": "ɾ�� E2E �������м�¼��",
  656. "runAllTests": "����ȫ������ð�̲��ԡ�",
  657. "testNodeTypeService": "���Խڵ����ͷ���",
  658. "testDynamicNodeExecutor": "���Զ�̬�ڵ�ִ������",
  659. "testMultiModelWorkflowGenerator": "���Զ�ģ�͹�������������",
  660. "testModelConfigService": "����ģ�����÷���",
  661. "setupTestData": "׼�����ɲ������ݡ�",
  662. "cleanupTestData": "�������ɲ������ݡ�",
  663. "getWorkflowGeneratorConfig": "��ȡ����������ģ�����á�",
  664. "getQualityCheckConfig": "��ȡ�������ģ�����á�",
  665. "getConfig": "�� ID ��ȡģ�����á�",
  666. "getAllConfigs": "��ȡȫ��ģ�����á�",
  667. "getConfigsByCompany": "���⻧��ȡģ�������б���",
  668. "saveConfig": "����ģ�����á�",
  669. "deleteConfig": "ɾ��ģ�����á�",
  670. "getByNodeType": "���ڵ����ͻ�ȡ���á�",
  671. "getByCodeName": "����������ȡ�ڵ����͡�",
  672. "getAllEnabled": "��ȡȫ�����õĽڵ����͡�",
  673. "getByCategory": "�������ȡ�ڵ����͡�",
  674. "getNodeTypeMap": "��ȡ�ڵ����� Map ���档",
  675. "saveNodeType": "����ڵ��������á�",
  676. "updateNodeType": "���½ڵ��������á�",
  677. "deleteNodeType": "ɾ���ڵ��������á�",
  678. "createScenario": "�������Գ����籾��",
  679. "updateScenario": "���²��Գ����籾��",
  680. "deleteScenario": "ɾ�����Գ����籾��",
  681. "getScenario": "��ȡ���Գ������顣",
  682. "listScenarios": "�г����Գ����б���",
  683. "runScenarioNow": "��������ָ�����Գ�����",
  684. "runAllEnabledScenarios": "����ȫ�����õIJ��Գ�����",
  685. "executeGenerateSync": "ͬ��ִ�� AI ��������������",
  686. "executeGenerate": "�첽ִ�� AI ��������������",
  687. "applyFallbackForRecord": "Ϊ���ɼ�¼Ӧ�ö���ģ�塣",
  688. "getBalance": "��ѯ�⻧ Token ��",
  689. "updateTokenCoefficient": "���� Token ����ϵ����",
  690. "listConsumeRecords": "�г����Ѽ�¼��",
  691. "getTokenDailySummary": "��ȡ Token �ջ��ܡ�",
  692. "getTokenModelSummary": "��ȡ Token ��ģ�ͻ��ܡ�",
  693. "getTokenInstanceSummary": "��ȡ Token ��ʵ�����ܡ�",
  694. "listTokenRecords": "�г� Token ������ϸ��",
  695. "listSummaries": "��ҳ�г��Ի�ժҪ��",
  696. "getById": "�� ID ��ѯ���顣",
  697. "listAudits": "�г��¼���˼�¼��",
  698. "listSuggestions": "�г��������顣",
  699. "getEvolutionMetrics": "��ȡ����ָ��ͳ�ơ�",
  700. "auditSuggestion": "��˵����������顣",
  701. "batchAudit": "������˽������顣",
  702. "selectListByCompanyId": "���⻧��ѯѧϰ�����б���",
  703. "listEnginePrompts": "�г����漶 Prompt��",
  704. "create": "�����¼�¼��",
  705. "update": "�������м�¼��",
  706. "softDelete": "��ɾ����¼��",
  707. "listCategories": "�г� Prompt ���ࡣ",
  708. "getByScene": "��������ȡ Prompt��",
  709. "listCorpus": "�г��������ϡ�",
  710. "addDialog": "�������ڶԻ���",
  711. "batchImportDialogs": "�����������ڶԻ���",
  712. "batchImportFromJson": "�� JSON �����������ڶԻ���",
  713. "analyzeCorpus": "AI �����������ϡ�",
  714. "queryByScenario": "��������ѯ���ڻ�����",
  715. "getScenarios": "��ȡ�������ϳ����б���",
  716. "attachPromptsToNodes": "Ϊ�ڵ���� Prompt ���á�",
  717. "saveNodePromptsFromPayload": "�������屣��ڵ� Prompt��",
  718. "saveNodePromptsFromEntities": "��ʵ���б�����ڵ� Prompt��",
  719. "previewIndustryDefault": "Ԥ����ҵĬ�Ͻڵ� Prompt��",
  720. "restoreNodeFromIndustry": "����ҵĬ�ϻָ��ڵ� Prompt��",
  721. "listTemplates": "�г�������ģ�塣",
  722. "listPublishedTemplates": "�г��ѷ���ģ�塣",
  723. "getTemplateWithNodes": "��ȡģ�弰�ڵ����顣",
  724. "saveTemplateNodes": "����ģ��ڵ����á�",
  725. "isToolAvailable": "�жϹ��߶��⻧�Ƿ���á�",
  726. }
  727. CALLER_INDEX = None
  728. def build_caller_index():
  729. index = {}
  730. for jf in ROOT.rglob("*.java"):
  731. try:
  732. text = jf.read_text(encoding="utf-8", errors="replace")
  733. except Exception:
  734. continue
  735. stem = jf.stem
  736. for m in re.finditer(
  737. r'\b([A-Z][a-zA-Z0-9]+(?:Service|Executor|Engine|Manager|Store|Assembler|Generator|Framework|Detector|Evaluator|Adjuster|Scheduler|Checker|Router|Bridge|Registry|Validator|Monitor|Patcher|Provider|Queue|Filter|Scale|Matcher|Writer|Auth|Client|Controller)?)\b',
  738. text,
  739. ):
  740. name = m.group(1)
  741. if name.endswith("Impl"):
  742. index.setdefault(name[:-4], set()).add(stem)
  743. index.setdefault(name, set()).add(stem)
  744. for m in re.finditer(
  745. r'\b(Lobster[A-Za-z]+|ContextAssembler|VariableStore|SummaryGenerator|QualityScoringService|SensitiveWordService|DynamicNodeExecutor|MultiTurnDialogueManager|PromptManager|ComplianceService|ToolCallFramework|ConditionEvaluator|DynamicNodeAdjuster|ReplaceWordService|OutputQualityChecker|SemanticTakeoverDetector|VariableSubstitutionEngine|MultiModelWorkflowGenerator|PendingAuditKnowledgeService|I[A-Z][a-zA-Z]+Service|ApiCallExecutor|MessageDedupService|PayRouter|PayService|HeartbeatScheduler|LobsterInboundService|VectorPatternMatcher|FeedbackDrivenEvolution|HumanHandoffDetector|ExpressionEngine|ExternalDataRouter|DeadLetterQueue|DistributedDelayQueue|MessagePushService|DashboardService|LobsterContextCacheService)\s+\w+',
  746. text,
  747. ):
  748. iface = m.group(1)
  749. if stem not in {iface, iface + "Impl"}:
  750. index.setdefault(iface, set()).add(stem)
  751. return index
  752. def get_callers(class_name):
  753. if class_name in CLASS_CALLERS:
  754. return CLASS_CALLERS[class_name]
  755. global CALLER_INDEX
  756. if CALLER_INDEX is None:
  757. CALLER_INDEX = build_caller_index()
  758. iface = class_name.replace("Impl", "")
  759. callers = set()
  760. for key in (class_name, iface, "I" + iface if not iface.startswith("I") else iface):
  761. callers.update(CALLER_INDEX.get(key, set()))
  762. callers.discard(class_name)
  763. filtered = sorted(c for c in callers if not c.endswith("Impl") or c in {
  764. "LobsterWorkflowExecutorImpl", "LobsterEvolutionEngineImpl", "DynamicNodeExecutorImpl",
  765. "ContextAssemblerImpl", "MultiTurnDialogueManagerImpl", "LobsterE2eTestServiceImpl",
  766. "LobsterTravelValidationServiceImpl", "LobsterIntegrationTestServiceImpl",
  767. "FeedbackDrivenEvolutionImpl", "HumanHandoffDetectorImpl", "HeartbeatSchedulerImpl",
  768. "KnowledgeVersionManagerImpl", "VectorPatternMatcherImpl", "LobsterMediaMessageServiceImpl",
  769. })
  770. return filtered[:8] if filtered else ["Spring ����ע��"]
  771. def format_callers(callers):
  772. return "��".join(f"{{@code {c}}}" for c in callers)
  773. def method_purpose(class_name, method_name):
  774. if method_name in METHOD_CN:
  775. return METHOD_CN[method_name]
  776. if method_name.startswith("get") and len(method_name) > 3:
  777. return f"��ȡ{method_name[3:]}��"
  778. if method_name.startswith("set") and len(method_name) > 3:
  779. return f"����{method_name[3:]}��"
  780. if method_name.startswith("is") and len(method_name) > 2:
  781. return f"�ж��Ƿ�Ϊ{method_name[2:]}��"
  782. if method_name.startswith("has") and len(method_name) > 3:
  783. return f"�ж��Ƿ����{method_name[3:]}��"
  784. if method_name.startswith("list"):
  785. return f"��ѯ{method_name[4:]}�б���"
  786. if method_name.startswith("save") or method_name.startswith("create"):
  787. return f"����/����������ݡ�"
  788. if method_name.startswith("delete") or method_name.startswith("remove"):
  789. return f"ɾ��������ݡ�"
  790. if method_name.startswith("update"):
  791. return f"����{method_name[6:]}��"
  792. return f"{method_name} ��ҵ����ڡ�"
  793. def make_method_javadoc(class_name, method_name, indent=" "):
  794. purpose = method_purpose(class_name, method_name)
  795. callers = get_callers(class_name)
  796. return [
  797. f"{indent}/**",
  798. f"{indent} * {purpose}",
  799. f"{indent} * <p>���÷���{format_callers(callers)}��",
  800. f"{indent} */",
  801. ]
  802. def make_class_javadoc(class_name, is_interface=False):
  803. kind = "�ӿ�" if is_interface else "����"
  804. desc = CLASS_DESC.get(class_name, f"{class_name}����Ϻ workflow {kind}��")
  805. callers = get_callers(class_name)
  806. return [
  807. "/**",
  808. f" * {desc}",
  809. f" * <p>��Ҫ���÷���{format_callers(callers)}��",
  810. " */",
  811. ]
  812. def has_javadoc_before(lines, idx):
  813. j = idx - 1
  814. while j >= 0 and lines[j].strip().startswith("@"):
  815. j -= 1
  816. if j >= 0 and (lines[j].strip().startswith("/**") or lines[j].strip().endswith("*/")):
  817. return True
  818. return False
  819. def find_declaration(lines, class_name):
  820. patterns = [
  821. re.compile(r'public\s+(?:final\s+)?class\s+' + re.escape(class_name) + r'\b'),
  822. re.compile(r'public\s+interface\s+' + re.escape(class_name) + r'\b'),
  823. re.compile(r'public\s+enum\s+' + re.escape(class_name) + r'\b'),
  824. ]
  825. for i, line in enumerate(lines):
  826. for pat in patterns:
  827. if pat.search(line):
  828. return i, "interface" in line
  829. return None, False
  830. def remove_existing_javadoc(lines, decl_idx):
  831. """Remove javadoc block immediately above declaration (skip annotations)."""
  832. j = decl_idx - 1
  833. while j >= 0 and (lines[j].strip().startswith("@") or lines[j].strip() == ""):
  834. j -= 1
  835. if j >= 0 and lines[j].strip().endswith("*/"):
  836. end = j
  837. while j >= 0:
  838. if lines[j].strip().startswith("/**"):
  839. return j, end + 1
  840. j -= 1
  841. return None, None
  842. def process_file(path: Path):
  843. text = path.read_text(encoding="utf-8")
  844. class_name = path.stem
  845. lines = text.splitlines(keepends=True)
  846. decl_idx, is_interface = find_declaration(lines, class_name)
  847. if decl_idx is None:
  848. return False
  849. modified = False
  850. new_lines = []
  851. # Replace or insert class javadoc
  852. start, end = remove_existing_javadoc(lines, decl_idx)
  853. class_doc = make_class_javadoc(class_name, is_interface)
  854. class_doc_lines = [dl + "\n" for dl in class_doc]
  855. i = 0
  856. while i < len(lines):
  857. if start is not None and i == start:
  858. for dl in class_doc_lines:
  859. new_lines.append(dl)
  860. i = end
  861. modified = True
  862. continue
  863. if i == decl_idx and start is None:
  864. for dl in class_doc_lines:
  865. new_lines.append(dl)
  866. modified = True
  867. line = lines[i]
  868. stripped = line.strip()
  869. pub_match = re.match(
  870. r'^(\s*)(@Override\s+)?public\s+(?!class\b|interface\b|enum\b|static\s+class\b)',
  871. stripped,
  872. )
  873. if pub_match and not has_javadoc_before(new_lines if i >= len(lines) else lines, i):
  874. # check javadoc in original lines
  875. if not has_javadoc_before(lines, i):
  876. indent = pub_match.group(1)
  877. combined = stripped
  878. k = i
  879. while ";" not in combined and "{" not in combined and k + 1 < len(lines):
  880. k += 1
  881. combined += " " + lines[k].strip()
  882. mm = re.search(r'\b(\w+)\s*\(', combined)
  883. if mm:
  884. method_name = mm.group(1)
  885. if method_name not in ("if", "for", "while", "switch", "catch", "synchronized", "return", "new", "super"):
  886. for dl in make_method_javadoc(class_name, method_name, indent):
  887. new_lines.append(dl + "\n")
  888. modified = True
  889. else:
  890. # Replace existing method javadoc with standard format
  891. j = i - 1
  892. while j >= 0 and lines[j].strip().startswith("@"):
  893. j -= 1
  894. if j >= 0 and lines[j].strip().endswith("*/"):
  895. end_j = j
  896. while j >= 0:
  897. if lines[j].strip().startswith("/**"):
  898. indent = re.match(r'^(\s*)', lines[j]).group(1)
  899. combined = stripped
  900. k = i
  901. while ";" not in combined and "{" not in combined and k + 1 < len(lines):
  902. k += 1
  903. combined += " " + lines[k].strip()
  904. mm = re.search(r'\b(\w+)\s*\(', combined)
  905. if mm:
  906. method_name = mm.group(1)
  907. for dl in make_method_javadoc(class_name, method_name, indent):
  908. new_lines.append(dl + "\n")
  909. modified = True
  910. i = end_j + 1
  911. continue
  912. j -= 1
  913. new_lines.append(line)
  914. i += 1
  915. if modified:
  916. path.write_text("".join(new_lines), encoding="utf-8")
  917. return modified
  918. def write_package_info(pkg: str):
  919. pkg_dir = WORKFLOW_DIR / pkg
  920. if not pkg_dir.is_dir():
  921. return False
  922. info_path = pkg_dir / "package-info.java"
  923. desc = PACKAGE_INFO.get(pkg, f"��Ϻ������ {pkg} �Ӱ���")
  924. content = (
  925. "/**\n"
  926. f" * {desc}\n"
  927. " */\n"
  928. f"package com.fs.company.service.workflow.{pkg};\n"
  929. )
  930. if info_path.exists():
  931. existing = info_path.read_text(encoding="utf-8")
  932. if "���÷�" in existing or "��Ҫ���÷�" in existing:
  933. return False
  934. info_path.write_text(content, encoding="utf-8")
  935. return True
  936. def collect_files():
  937. files = []
  938. for pkg in TARGET_PACKAGES:
  939. pkg_dir = WORKFLOW_DIR / pkg
  940. if pkg_dir.is_dir():
  941. files.extend(sorted(pkg_dir.rglob("*.java")))
  942. if (pkg_dir / "impl").is_dir():
  943. pass # already covered by rglob
  944. for jf in sorted(WORKFLOW_DIR.glob("*.java")):
  945. if jf.name != "package-info.java":
  946. files.append(jf)
  947. return files
  948. def main():
  949. modified = []
  950. pkg_created = []
  951. for pkg in TARGET_PACKAGES:
  952. if write_package_info(pkg):
  953. pkg_created.append(pkg)
  954. print(f"PACKAGE-INFO: {pkg}")
  955. for jf in collect_files():
  956. if process_file(jf):
  957. modified.append(str(jf.relative_to(ROOT)))
  958. print(f"MODIFIED: {jf.name}")
  959. else:
  960. print(f"SKIP: {jf.name}")
  961. print(f"\nPackage-info created/updated: {len(pkg_created)}")
  962. print(f"Files modified: {len(modified)}")
  963. return modified, pkg_created
  964. if __name__ == "__main__":
  965. main()