test-dedup.html 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>测试去重逻辑</title>
  7. <style>
  8. body {
  9. font-family: Arial, sans-serif;
  10. max-width: 800px;
  11. margin: 50px auto;
  12. padding: 20px;
  13. }
  14. button {
  15. padding: 10px 20px;
  16. font-size: 16px;
  17. cursor: pointer;
  18. margin: 10px 0;
  19. }
  20. #result {
  21. margin-top: 20px;
  22. padding: 20px;
  23. background: #f5f5f5;
  24. border-radius: 4px;
  25. }
  26. .log {
  27. margin: 5px 0;
  28. padding: 5px;
  29. background: white;
  30. border-left: 3px solid #4CAF50;
  31. }
  32. .log.duplicate {
  33. border-left-color: #f44336;
  34. }
  35. </style>
  36. </head>
  37. <body>
  38. <h1>文档去重测试</h1>
  39. <p>这个页面用于测试文档内容去重逻辑是否正常工作。</p>
  40. <div>
  41. <label>
  42. Record ID:
  43. <input type="text" id="recordId" value="请从实际记录中获取" style="width: 300px;">
  44. </label>
  45. </div>
  46. <div>
  47. <label>
  48. User ID:
  49. <input type="text" id="userId" value="default-user" style="width: 200px;">
  50. </label>
  51. </div>
  52. <button onclick="testDedup()">测试去重逻辑</button>
  53. <button onclick="clearResult()">清除结果</button>
  54. <div id="result"></div>
  55. <script>
  56. async function testDedup() {
  57. const recordId = document.getElementById('recordId').value;
  58. const userId = document.getElementById('userId').value;
  59. const resultDiv = document.getElementById('result');
  60. resultDiv.innerHTML = '<div class="log">开始测试...</div>';
  61. try {
  62. // 模拟内容数组(完全重复的情况)
  63. const mockContent = [
  64. { type: 'heading', level: 1, text: '东河塘油田东河1****区块****DH1-10H****井', id: 'h1' },
  65. { type: 'paragraph', text: '调剖****地质设计', id: 'p1' },
  66. { type: 'paragraph', text: '作业类型:调剖', id: 'p2' },
  67. // 重复内容
  68. { type: 'heading', level: 1, text: '东河塘油田东河1****区块****DH1-10H****井', id: 'h1-dup' },
  69. { type: 'paragraph', text: '调剖****地质设计', id: 'p1-dup' },
  70. { type: 'paragraph', text: '作业类型:调剖', id: 'p2-dup' },
  71. ];
  72. resultDiv.innerHTML += `<div class="log">原始内容块数量: ${mockContent.length}</div>`;
  73. // 执行去重逻辑
  74. const uniqueContent = [];
  75. const seenTexts = new Map();
  76. let duplicateCount = 0;
  77. mockContent.forEach((block, index) => {
  78. let key = '';
  79. if (block.type === 'heading') {
  80. key = `H${block.level}:${block.text}`;
  81. } else if (block.type === 'paragraph') {
  82. key = `P:${block.text}`;
  83. }
  84. const firstIndex = seenTexts.get(key);
  85. if (firstIndex === undefined) {
  86. seenTexts.set(key, uniqueContent.length);
  87. uniqueContent.push(block);
  88. resultDiv.innerHTML += `<div class="log">✓ 保留 [${index}]: ${block.text?.substring(0, 50)}...</div>`;
  89. } else {
  90. duplicateCount++;
  91. resultDiv.innerHTML += `<div class="log duplicate">✗ 跳过重复 [${index}]: ${block.text?.substring(0, 50)}... (首次出现在 ${firstIndex})</div>`;
  92. }
  93. });
  94. resultDiv.innerHTML += `<div class="log"><strong>去重结果:</strong></div>`;
  95. resultDiv.innerHTML += `<div class="log">- 原始: ${mockContent.length} 个块</div>`;
  96. resultDiv.innerHTML += `<div class="log">- 唯一: ${uniqueContent.length} 个块</div>`;
  97. resultDiv.innerHTML += `<div class="log">- 移除: ${duplicateCount} 个重复块</div>`;
  98. resultDiv.innerHTML += `<div class="log">- 移除比例: ${((duplicateCount / mockContent.length) * 100).toFixed(1)}%</div>`;
  99. if (duplicateCount === 3) {
  100. resultDiv.innerHTML += `<div class="log" style="border-left-color: #4CAF50; font-weight: bold;">✓ 去重逻辑工作正常!</div>`;
  101. } else {
  102. resultDiv.innerHTML += `<div class="log duplicate" style="font-weight: bold;">✗ 去重逻辑可能有问题</div>`;
  103. }
  104. } catch (error) {
  105. resultDiv.innerHTML += `<div class="log duplicate">错误: ${error.message}</div>`;
  106. }
  107. }
  108. function clearResult() {
  109. document.getElementById('result').innerHTML = '';
  110. }
  111. </script>
  112. </body>
  113. </html>