searchknowledgelib.html.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace zin;
  3. detailHeader
  4. (
  5. to::prefix
  6. (
  7. backBtn
  8. (
  9. set::icon('back'),
  10. set::type('secondary'),
  11. set::url(createLink('ai', 'knowledgelibview', "id={$knowledgeLib->id}&type=$type&contentID=$contentID")),
  12. $lang->goback
  13. ),
  14. entityLabel
  15. (
  16. set(array(
  17. 'entityID' => $knowledgeLib->id,
  18. 'level' => 1,
  19. 'text' => $knowledgeLib->name
  20. ))
  21. )
  22. ),
  23. to::suffix
  24. (
  25. btn
  26. (
  27. setClass('btn ghost'),
  28. set::icon('exit'),
  29. set::url(createLink('ai', 'knowledgelibview', "id={$knowledgeLib->id}&type=$type&contentID=$contentID")),
  30. $lang->ai->knowledgeLibs->exitSearchTest
  31. )
  32. )
  33. );
  34. function getLabelClassName($similarity)
  35. {
  36. switch($similarity)
  37. {
  38. case $similarity > 0.8:
  39. return 'high';
  40. case $similarity > 0.5 && $similarity <= 0.8:
  41. return 'medium';
  42. default:
  43. return 'low';
  44. }
  45. }
  46. $fnBuildResult = function() use ($lang, $result, $isEmpty)
  47. {
  48. $emptyText = $isEmpty ? $this->lang->noData : $lang->ai->knowledgeLibs->tips->searchTest;
  49. if(empty($result) || $isEmpty) return p(setClass('h-full flex justify-center items-center text-gray'), $emptyText);
  50. $resultList = array();
  51. foreach($result as $index => $item)
  52. {
  53. $item['similarity'] = round($item['similarity'], 4);
  54. $labelClassName = getLabelClassName($item['similarity']);
  55. $markdownContainerId = 'markdownContent_' . $index;
  56. $resultList[] = div
  57. (
  58. setClass('py-5 pl-4 rounded-sm relative overflow-hidden'),
  59. setStyle(array('background-color' => '#F8FAFD', 'padding-right' => '80px', 'min-height' => '100px')),
  60. div
  61. (
  62. setClass("triangle-label absolute top-0 right-0 $labelClassName"),
  63. span
  64. (
  65. setClass('font-medium absolute top-2.5 z-10'),
  66. setStyle(array('right' => '-60px', 'font-size' => '10px')),
  67. $item['similarity'] * 100 . '%'
  68. )
  69. ),
  70. div
  71. (
  72. setID($markdownContainerId),
  73. setData(array('content' => $item['chunk_content']))
  74. )
  75. );
  76. }
  77. return div(setClass('flex col gap-5'), $resultList);
  78. };
  79. formPanel(setClass('bg-canvas search-form'), setStyle(array('height' => 'calc(100vh - 160px)', 'max-width' => 'unset')), set::bodyClass('h-full'), set::formClass('h-full'), set::actions(array()), setData(array('knowledgeLibID' => $knowledgeLib->id, 'contentID' => $contentID, 'inputTip' => $lang->ai->knowledgeLibs->tips->searchTest, 'type' => $type)), formRow
  80. (
  81. setClass('flex justify-center gap-6', empty($result) ? 'pt-6' : 'pt-0'),
  82. setStyle(array('align-items' => 'center')),
  83. div($lang->ai->knowledgeLibs->testText),
  84. formGroup(setClass('w-1/3'), set::name('content'), set::value($content), set::placeholder($lang->ai->knowledgeLibs->inputContent)),
  85. btn
  86. (
  87. setClass('btn primary'),
  88. on::click()->call('searchKnowledgeLib'),
  89. $lang->ai->searchKnowledgelibCheck
  90. )
  91. ), div(setClass('h-full scrollbar-thin scrollbar-hover overflow-auto'), $fnBuildResult()));