pcm-agents 0.6.63 → 0.6.64-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/cjs/components-position-selector_28.cjs.entry.js +49 -11
  2. package/dist/cjs/components-position-selector_28.cjs.entry.js.map +1 -1
  3. package/dist/cjs/{index-NR0bG-Uv.js → index-CL4Tz2fU.js} +5 -5
  4. package/dist/cjs/{index-NR0bG-Uv.js.map → index-CL4Tz2fU.js.map} +1 -1
  5. package/dist/cjs/index-C_qhED9Z.js.map +1 -1
  6. package/dist/cjs/index.cjs.js +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/oem-htws-modal.cjs.entry.js +1 -1
  9. package/dist/cjs/oem-jd-modal.cjs.entry.js +2 -2
  10. package/dist/cjs/oem-jlpp-modal.cjs.entry.js +1 -1
  11. package/dist/cjs/oem-jlsx-modal.cjs.entry.js +2 -2
  12. package/dist/cjs/oem-jlzz-modal.cjs.entry.js +1 -1
  13. package/dist/cjs/oem-mnct-modal.cjs.entry.js +1 -1
  14. package/dist/cjs/oem-qgqjl-modal.cjs.entry.js +1 -1
  15. package/dist/cjs/oem-zygh-modal.cjs.entry.js +1 -1
  16. package/dist/cjs/pcm-agents.cjs.js +1 -1
  17. package/dist/cjs/pcm-hr-chat-modal.cjs.entry.js +2 -2
  18. package/dist/cjs/pcm-mnms-modal.cjs.entry.js +7 -3
  19. package/dist/cjs/pcm-mnms-modal.cjs.entry.js.map +1 -1
  20. package/dist/cjs/pcm-mnms-modal.entry.cjs.js.map +1 -1
  21. package/dist/cjs/pcm-zygh-v2-modal.cjs.entry.js +1 -1
  22. package/dist/cjs/{sentry-reporter-BvQcVVQ_.js → sentry-reporter-CshODO7C.js} +3 -3
  23. package/dist/cjs/{sentry-reporter-BvQcVVQ_.js.map → sentry-reporter-CshODO7C.js.map} +1 -1
  24. package/dist/collection/components/oem-mnms-modal/oem-mnms-modal.js +26 -2
  25. package/dist/collection/components/oem-mnms-modal/oem-mnms-modal.js.map +1 -1
  26. package/dist/collection/components/pcm-1zhanshi-mnms-modal/pcm-1zhanshi-mnms-modal.js +26 -2
  27. package/dist/collection/components/pcm-1zhanshi-mnms-modal/pcm-1zhanshi-mnms-modal.js.map +1 -1
  28. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js +25 -1
  29. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js.map +1 -1
  30. package/dist/collection/components/pcm-digital-human/pcm-digital-human.js +33 -1
  31. package/dist/collection/components/pcm-digital-human/pcm-digital-human.js.map +1 -1
  32. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js +26 -2
  33. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js.map +1 -1
  34. package/dist/collection/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.js +26 -2
  35. package/dist/collection/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.js.map +1 -1
  36. package/dist/collection/components/pcm-virtual-chat-modal/pcm-virtual-chat-modal.js +31 -1
  37. package/dist/collection/components/pcm-virtual-chat-modal/pcm-virtual-chat-modal.js.map +1 -1
  38. package/dist/components/components-position-selector.js +1 -1
  39. package/dist/components/index.js +1 -1
  40. package/dist/components/oem-htws-modal.js +6 -6
  41. package/dist/components/oem-jd-modal.js +4 -4
  42. package/dist/components/oem-jlpp-modal.js +8 -8
  43. package/dist/components/oem-jlsx-modal.js +6 -6
  44. package/dist/components/oem-jlzz-modal.js +6 -6
  45. package/dist/components/oem-mnct-modal.js +8 -8
  46. package/dist/components/oem-mnms-modal.js +16 -11
  47. package/dist/components/oem-mnms-modal.js.map +1 -1
  48. package/dist/components/oem-qgqjl-modal.js +8 -8
  49. package/dist/components/oem-zygh-modal.js +6 -6
  50. package/dist/components/{p-zNL5HFbN.js → p-B9yaqEpW.js} +3 -3
  51. package/dist/components/{p-zNL5HFbN.js.map → p-B9yaqEpW.js.map} +1 -1
  52. package/dist/components/{p-CNx58GiW.js → p-BY558a8i.js} +3 -3
  53. package/dist/components/{p-CNx58GiW.js.map → p-BY558a8i.js.map} +1 -1
  54. package/dist/components/{p-DeoeSzgS.js → p-BdDugOD6.js} +5 -5
  55. package/dist/components/{p-DeoeSzgS.js.map → p-BdDugOD6.js.map} +1 -1
  56. package/dist/components/{p-CNKZCbo_.js → p-Bo88CJnt.js} +11 -6
  57. package/dist/components/p-Bo88CJnt.js.map +1 -0
  58. package/dist/components/{p-ebsIIpQh.js → p-C8RERqdE.js} +15 -4
  59. package/dist/components/p-C8RERqdE.js.map +1 -0
  60. package/dist/components/p-CR7WLzmM.js.map +1 -1
  61. package/dist/components/{p-_ysXxBbt.js → p-Ckq0an2q.js} +3 -3
  62. package/dist/components/{p-_ysXxBbt.js.map → p-Ckq0an2q.js.map} +1 -1
  63. package/dist/components/{p-Dl6ISIDE.js → p-D8Wi8fsl.js} +17 -4
  64. package/dist/components/p-D8Wi8fsl.js.map +1 -0
  65. package/dist/components/{p-DY30qE8x.js → p-DvqR5xcW.js} +3 -3
  66. package/dist/components/{p-DY30qE8x.js.map → p-DvqR5xcW.js.map} +1 -1
  67. package/dist/components/{p-B0in66n7.js → p-WUTJc9UM.js} +3 -3
  68. package/dist/components/{p-B0in66n7.js.map → p-WUTJc9UM.js.map} +1 -1
  69. package/dist/components/{p-C3QG0kk0.js → p-bciQWw-t.js} +4 -4
  70. package/dist/components/{p-C3QG0kk0.js.map → p-bciQWw-t.js.map} +1 -1
  71. package/dist/components/pcm-1zhanshi-mnms-modal.js +12 -7
  72. package/dist/components/pcm-1zhanshi-mnms-modal.js.map +1 -1
  73. package/dist/components/pcm-app-chat-modal.js +1 -1
  74. package/dist/components/pcm-card.js +1 -1
  75. package/dist/components/pcm-chat-message.js +1 -1
  76. package/dist/components/pcm-digital-human.js +1 -1
  77. package/dist/components/pcm-export-records-modal.js +1 -1
  78. package/dist/components/pcm-hr-chat-modal.js +2 -2
  79. package/dist/components/pcm-htws-modal.js +7 -7
  80. package/dist/components/pcm-hyzj-modal.js +4 -4
  81. package/dist/components/pcm-jd-modal.js +4 -4
  82. package/dist/components/pcm-jlpp-modal.js +7 -7
  83. package/dist/components/pcm-jlsx-modal.js +5 -5
  84. package/dist/components/pcm-jlzz-modal.js +6 -6
  85. package/dist/components/pcm-mnct-modal.js +4 -4
  86. package/dist/components/pcm-mnms-modal.js +15 -10
  87. package/dist/components/pcm-mnms-modal.js.map +1 -1
  88. package/dist/components/pcm-mnms-zp-modal.js +15 -10
  89. package/dist/components/pcm-mnms-zp-modal.js.map +1 -1
  90. package/dist/components/pcm-mobile-input-btn.js +1 -1
  91. package/dist/components/pcm-mobile-upload-btn.js +1 -1
  92. package/dist/components/pcm-msbg-modal.js +4 -4
  93. package/dist/components/pcm-qgqjl-modal.js +7 -7
  94. package/dist/components/pcm-upload.js +1 -1
  95. package/dist/components/pcm-virtual-chat-modal.js +1 -1
  96. package/dist/components/pcm-zsk-chat-modal.js +2 -2
  97. package/dist/components/pcm-zygh-modal.js +6 -6
  98. package/dist/components/pcm-zygh-v2-modal.js +6 -6
  99. package/dist/esm/components-position-selector_28.entry.js +49 -11
  100. package/dist/esm/components-position-selector_28.entry.js.map +1 -1
  101. package/dist/esm/index-Bq0K-WqZ.js.map +1 -1
  102. package/dist/esm/{index-DcHaiJdv.js → index-ijcgY5Pl.js} +5 -5
  103. package/dist/esm/{index-DcHaiJdv.js.map → index-ijcgY5Pl.js.map} +1 -1
  104. package/dist/esm/index.js +1 -1
  105. package/dist/esm/loader.js +1 -1
  106. package/dist/esm/oem-htws-modal.entry.js +1 -1
  107. package/dist/esm/oem-jd-modal.entry.js +2 -2
  108. package/dist/esm/oem-jlpp-modal.entry.js +1 -1
  109. package/dist/esm/oem-jlsx-modal.entry.js +2 -2
  110. package/dist/esm/oem-jlzz-modal.entry.js +1 -1
  111. package/dist/esm/oem-mnct-modal.entry.js +1 -1
  112. package/dist/esm/oem-qgqjl-modal.entry.js +1 -1
  113. package/dist/esm/oem-zygh-modal.entry.js +1 -1
  114. package/dist/esm/pcm-agents.js +1 -1
  115. package/dist/esm/pcm-hr-chat-modal.entry.js +2 -2
  116. package/dist/esm/pcm-mnms-modal.entry.js +7 -3
  117. package/dist/esm/pcm-mnms-modal.entry.js.map +1 -1
  118. package/dist/esm/pcm-zygh-v2-modal.entry.js +1 -1
  119. package/dist/esm/{sentry-reporter-BZ6jaP_d.js → sentry-reporter-B-Ll9kE6.js} +3 -3
  120. package/dist/esm/{sentry-reporter-BZ6jaP_d.js.map → sentry-reporter-B-Ll9kE6.js.map} +1 -1
  121. package/dist/pcm-agents/index.esm.js +1 -1
  122. package/dist/pcm-agents/{p-285a11db.entry.js → p-34925caa.entry.js} +2 -2
  123. package/dist/pcm-agents/{p-df3f8c9a.entry.js → p-3b60a3ba.entry.js} +2 -2
  124. package/dist/pcm-agents/p-3b60a3ba.entry.js.map +1 -0
  125. package/dist/pcm-agents/p-600c7006.entry.js +245 -0
  126. package/dist/pcm-agents/p-600c7006.entry.js.map +1 -0
  127. package/dist/pcm-agents/{p-26c3bb94.entry.js → p-8d72af4a.entry.js} +2 -2
  128. package/dist/pcm-agents/{p-da967a8c.entry.js → p-93508b4b.entry.js} +2 -2
  129. package/dist/pcm-agents/{p-359d3474.entry.js → p-99b56e3d.entry.js} +2 -2
  130. package/dist/pcm-agents/p-BEtiNpmR.js +2 -0
  131. package/dist/pcm-agents/{p-WTSeW6oH.js.map → p-BEtiNpmR.js.map} +1 -1
  132. package/dist/pcm-agents/p-Bq0K-WqZ.js.map +1 -1
  133. package/dist/pcm-agents/p-CjaheW4D.js +2 -0
  134. package/dist/pcm-agents/{p-CBQPOkZb.js.map → p-CjaheW4D.js.map} +1 -1
  135. package/dist/pcm-agents/{p-178f3772.entry.js → p-a3b4cbee.entry.js} +2 -2
  136. package/dist/pcm-agents/{p-22e147d9.entry.js → p-a8627941.entry.js} +2 -2
  137. package/dist/pcm-agents/{p-4a91a26a.entry.js → p-b01605a5.entry.js} +2 -2
  138. package/dist/pcm-agents/{p-7a6267c2.entry.js → p-c4c4d812.entry.js} +2 -2
  139. package/dist/pcm-agents/{p-6037c915.entry.js → p-c6e10b76.entry.js} +2 -2
  140. package/dist/pcm-agents/{p-079c81fd.entry.js → p-c7525afe.entry.js} +2 -2
  141. package/dist/pcm-agents/pcm-agents.esm.js +1 -1
  142. package/dist/pcm-agents/pcm-mnms-modal.entry.esm.js.map +1 -1
  143. package/dist/types/components/oem-mnms-modal/oem-mnms-modal.d.ts +4 -0
  144. package/dist/types/components/pcm-1zhanshi-mnms-modal/pcm-1zhanshi-mnms-modal.d.ts +4 -0
  145. package/dist/types/components/pcm-app-chat-modal/pcm-app-chat-modal.d.ts +4 -0
  146. package/dist/types/components/pcm-digital-human/pcm-digital-human.d.ts +4 -0
  147. package/dist/types/components/pcm-mnms-modal/pcm-mnms-modal.d.ts +4 -0
  148. package/dist/types/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.d.ts +4 -0
  149. package/dist/types/components/pcm-virtual-chat-modal/pcm-virtual-chat-modal.d.ts +4 -0
  150. package/dist/types/components.d.ts +56 -0
  151. package/package.json +1 -1
  152. package/dist/components/p-CNKZCbo_.js.map +0 -1
  153. package/dist/components/p-Dl6ISIDE.js.map +0 -1
  154. package/dist/components/p-ebsIIpQh.js.map +0 -1
  155. package/dist/pcm-agents/p-CBQPOkZb.js +0 -2
  156. package/dist/pcm-agents/p-WTSeW6oH.js +0 -2
  157. package/dist/pcm-agents/p-ca2fb22a.entry.js +0 -245
  158. package/dist/pcm-agents/p-ca2fb22a.entry.js.map +0 -1
  159. package/dist/pcm-agents/p-df3f8c9a.entry.js.map +0 -1
  160. /package/dist/pcm-agents/{p-285a11db.entry.js.map → p-34925caa.entry.js.map} +0 -0
  161. /package/dist/pcm-agents/{p-26c3bb94.entry.js.map → p-8d72af4a.entry.js.map} +0 -0
  162. /package/dist/pcm-agents/{p-da967a8c.entry.js.map → p-93508b4b.entry.js.map} +0 -0
  163. /package/dist/pcm-agents/{p-359d3474.entry.js.map → p-99b56e3d.entry.js.map} +0 -0
  164. /package/dist/pcm-agents/{p-178f3772.entry.js.map → p-a3b4cbee.entry.js.map} +0 -0
  165. /package/dist/pcm-agents/{p-22e147d9.entry.js.map → p-a8627941.entry.js.map} +0 -0
  166. /package/dist/pcm-agents/{p-4a91a26a.entry.js.map → p-b01605a5.entry.js.map} +0 -0
  167. /package/dist/pcm-agents/{p-7a6267c2.entry.js.map → p-c4c4d812.entry.js.map} +0 -0
  168. /package/dist/pcm-agents/{p-6037c915.entry.js.map → p-c6e10b76.entry.js.map} +0 -0
  169. /package/dist/pcm-agents/{p-079c81fd.entry.js.map → p-c7525afe.entry.js.map} +0 -0
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-C_qhED9Z.js');
4
- var index$1 = require('./index-NR0bG-Uv.js');
4
+ var index$1 = require('./index-CL4Tz2fU.js');
5
5
  var message_service = require('./message.service-DGUsA-FY.js');
6
6
  var errorEvent = require('./error-event-J_ZWIqWF.js');
7
7
  var messageUtils = require('./message-utils-pPGi8R71.js');
8
- var sentryReporter = require('./sentry-reporter-BvQcVVQ_.js');
8
+ var sentryReporter = require('./sentry-reporter-CshODO7C.js');
9
9
  require('./exports-Dc-pQh4A.js');
10
10
 
11
11
  const componentsPositionSelectorCss = ":host{display:block;width:100%;height:100%}.position-selector-container{display:flex;flex-direction:column;width:100%;height:100%;background:#fff}.search-bar{display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid #f0f0f0;flex-shrink:0}.search-input-wrapper{position:relative;display:flex;align-items:center;flex:1;min-width:200px;max-width:500px}.search-icon{position:absolute;left:12px;color:#bfbfbf;pointer-events:none}.search-input{width:100%;height:36px;padding:4px 36px 4px 36px;font-size:14px;line-height:1.5;color:rgba(0, 0, 0, 0.85);background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:6px;transition:all 0.3s;outline:none}.search-input:hover{border-color:#40a9ff}.search-input:focus{border-color:#40a9ff;box-shadow:0 0 0 2px rgba(24, 144, 255, 0.2)}.search-input::placeholder{color:#bfbfbf}.clear-button{position:absolute;right:12px;background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#bfbfbf;transition:color 0.3s}.clear-button:hover{color:#8c8c8c}.search-button{padding:4px 15px;height:36px;font-size:14px;line-height:1.5;border-radius:6px;color:#fff;background-color:#1890ff;border:1px solid #1890ff;cursor:pointer;transition:all 0.3s;outline:none;white-space:nowrap;flex-shrink:0}.search-button:hover{background-color:#40a9ff;border-color:#40a9ff}.search-button:active{background-color:#096dd9;border-color:#096dd9}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;gap:16px;color:#8c8c8c}.loading-spinner{width:32px;height:32px;border:3px solid #f0f0f0;border-top-color:#1890ff;border-radius:50%;animation:spin 0.8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:16px}.empty-icon{opacity:0.5}.empty-text{margin:0;color:#8c8c8c;font-size:14px}.position-list{flex:1;overflow-y:auto;min-height:0}.table-container{width:100%;overflow-x:auto}.position-table{width:100%;border-collapse:collapse;font-size:14px}.position-table thead{background-color:#fafafa;position:sticky;top:0;z-index:1}.position-table th{padding:12px 16px;text-align:left;font-weight:500;color:rgba(0, 0, 0, 0.85);border-bottom:1px solid #f0f0f0;white-space:nowrap}.position-table td{padding:12px 16px;border-bottom:1px solid #f0f0f0;color:rgba(0, 0, 0, 0.65)}.position-table tbody tr{transition:background-color 0.3s}.position-table tbody tr:hover{background-color:#fafafa}.position-table tbody tr.selected-row{background-color:#e6f7ff}.checkbox-column{width:50px;text-align:center}.title-column{min-width:150px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.company-column{min-width:120px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location-column{min-width:100px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.requirements-column{min-width:200px;max-width:300px}.requirements-text{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;word-break:break-word;line-height:1.5}.salary-column{min-width:100px;white-space:nowrap}.action-column{width:100px;text-align:center}.position-checkbox{width:16px;height:16px;cursor:pointer;accent-color:#1890ff}.select-button{padding:4px 15px;height:28px;font-size:14px;line-height:1.5;border-radius:6px;color:#fff;background-color:#1890ff;border:1px solid #1890ff;cursor:pointer;transition:all 0.3s;outline:none}.select-button:hover{background-color:#40a9ff;border-color:#40a9ff}.select-button:active{background-color:#096dd9;border-color:#096dd9}@media screen and (max-width: 768px){.search-bar{padding:12px;gap:8px}.search-input-wrapper{min-width:auto;max-width:none}.search-input{height:40px;font-size:16px}.search-button{height:40px;padding:4px 12px}.table-container{overflow-x:auto;-webkit-overflow-scrolling:touch}.position-table{font-size:12px}.position-table th,.position-table td{padding:8px 12px}.title-column,.company-column,.location-column{min-width:100px}.select-button{padding:4px 12px;height:32px;font-size:14px}}.pagination-container{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px;border-top:1px solid #f0f0f0;flex-shrink:0}.pagination-button{padding:4px 15px;height:32px;font-size:14px;line-height:1.5;border-radius:6px;color:rgba(0, 0, 0, 0.85);background-color:#fff;border:1px solid #d9d9d9;cursor:pointer;transition:all 0.3s;outline:none}.pagination-button:hover:not(:disabled){color:#40a9ff;border-color:#40a9ff}.pagination-button:active:not(:disabled){color:#096dd9;border-color:#096dd9}.pagination-button:disabled{color:rgba(0, 0, 0, 0.25);background-color:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}.pagination-info{font-size:14px;color:rgba(0, 0, 0, 0.65)}.position-list::-webkit-scrollbar{width:8px;height:8px}.position-list::-webkit-scrollbar-track{background:#f1f1f1}.position-list::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.position-list::-webkit-scrollbar-thumb:hover{background:#555}";
@@ -343,6 +343,10 @@ const OemMnmsModal = class {
343
343
  * 是否显示结束面试按钮
344
344
  */
345
345
  showEndInterviewButton = false;
346
+ /**
347
+ * 数字人视频播放速率(0.5-2.0之间),默认1.0
348
+ */
349
+ playbackRate = 1.0;
346
350
  /**
347
351
  * 上传成功事件
348
352
  */
@@ -634,7 +638,7 @@ const OemMnmsModal = class {
634
638
  const result = e.detail ?? [];
635
639
  this.uploadedFileInfo = result[0];
636
640
  this.uploadSuccess.emit(this.uploadedFileInfo);
637
- } })), index.h("div", { class: "jd-input-section" }, index.h("label", null, "\u624B\u673A\u53F7\uFF08\u9009\u586B\uFF0C\u586B\u5199\u540E\u62A5\u544A\u7ED3\u679C\u5C06\u901A\u8FC7\u77ED\u4FE1\u53D1\u9001\uFF09"), index.h("input", { type: "tel", class: "phone-input", placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7", maxLength: 11, value: this.phoneNumber, onInput: this.handlePhoneNumberChange })), this.phoneNumber.trim().length === 11 && (index.h("div", { class: "jd-input-section" }, index.h("label", null, "\u9A8C\u8BC1\u7801"), index.h("div", { class: "verification-code-container" }, index.h("input", { type: "text", class: "verification-code-input", placeholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801", maxLength: 6, value: this.verificationCode, onInput: this.handleVerificationCodeChange }), index.h("button", { class: "send-code-button", disabled: this.isSendingCode || this.countdown > 0 || !this.phoneNumber.trim(), onClick: this.handleSendCode }, this.isSendingCode ? '发送中...' : this.countdown > 0 ? `${this.countdown}秒` : '发送验证码')))), index.h("button", { class: "submit-button", disabled: !(this.customInputs?.job_info || this.jobDescription.trim()) || this.isUploading || this.isSubmitting || this.isVerifyingCode, onClick: this.handleStartInterview }, this.isUploading ? '上传中...' : this.isVerifyingCode ? '验证中...' : this.isSubmitting ? '处理中...' : '开始面试'), index.h("div", { class: "ai-disclaimer" }, index.h("p", null, "\u6240\u6709\u5185\u5BB9\u5747\u7531AI\u751F\u6210\u4EC5\u4F9B\u53C2\u8003"), index.h("p", { class: "beian-info" }, index.h("span", null, "\u4E2D\u592E\u7F51\u4FE1\u529E\u751F\u6210\u5F0F\u4EBA\u5DE5\u667A\u80FD\u670D\u52A1\u5907\u6848\u53F7"), "\uFF1A", index.h("a", { href: "https://www.pincaimao.com", target: "_blank", rel: "noopener noreferrer" }, "Hunan-PinCaiMao-202412310003"))))), isLoading && (index.h("div", { class: "loading-container" }, index.h("div", { class: "loading-spinner" }), index.h("p", { class: "loading-text" }, "\u6B63\u5728\u52A0\u8F7D\u5BF9\u8BDD..."))), this.showChatModal && (index.h("div", null, this.enableVirtualHuman && this.digitalId ? (index.h("pcm-virtual-chat-modal", { ref: el => this.virtualChatModalRef = el, isOpen: true, fullscreen: this.fullscreen, botId: "3022316191018884", digitalId: this.digitalId, openingIndex: this.openingIndex, conversationId: this.conversationId, defaultQuery: this.defaultQuery, waitingTime: this.waitingTime, showEndInterviewButton: this.showEndInterviewButton, customInputs: {
641
+ } })), index.h("div", { class: "jd-input-section" }, index.h("label", null, "\u624B\u673A\u53F7\uFF08\u9009\u586B\uFF0C\u586B\u5199\u540E\u62A5\u544A\u7ED3\u679C\u5C06\u901A\u8FC7\u77ED\u4FE1\u53D1\u9001\uFF09"), index.h("input", { type: "tel", class: "phone-input", placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7", maxLength: 11, value: this.phoneNumber, onInput: this.handlePhoneNumberChange })), this.phoneNumber.trim().length === 11 && (index.h("div", { class: "jd-input-section" }, index.h("label", null, "\u9A8C\u8BC1\u7801"), index.h("div", { class: "verification-code-container" }, index.h("input", { type: "text", class: "verification-code-input", placeholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801", maxLength: 6, value: this.verificationCode, onInput: this.handleVerificationCodeChange }), index.h("button", { class: "send-code-button", disabled: this.isSendingCode || this.countdown > 0 || !this.phoneNumber.trim(), onClick: this.handleSendCode }, this.isSendingCode ? '发送中...' : this.countdown > 0 ? `${this.countdown}秒` : '发送验证码')))), index.h("button", { class: "submit-button", disabled: !(this.customInputs?.job_info || this.jobDescription.trim()) || this.isUploading || this.isSubmitting || this.isVerifyingCode, onClick: this.handleStartInterview }, this.isUploading ? '上传中...' : this.isVerifyingCode ? '验证中...' : this.isSubmitting ? '处理中...' : '开始面试'), index.h("div", { class: "ai-disclaimer" }, index.h("p", null, "\u6240\u6709\u5185\u5BB9\u5747\u7531AI\u751F\u6210\u4EC5\u4F9B\u53C2\u8003"), index.h("p", { class: "beian-info" }, index.h("span", null, "\u4E2D\u592E\u7F51\u4FE1\u529E\u751F\u6210\u5F0F\u4EBA\u5DE5\u667A\u80FD\u670D\u52A1\u5907\u6848\u53F7"), "\uFF1A", index.h("a", { href: "https://www.pincaimao.com", target: "_blank", rel: "noopener noreferrer" }, "Hunan-PinCaiMao-202412310003"))))), isLoading && (index.h("div", { class: "loading-container" }, index.h("div", { class: "loading-spinner" }), index.h("p", { class: "loading-text" }, "\u6B63\u5728\u52A0\u8F7D\u5BF9\u8BDD..."))), this.showChatModal && (index.h("div", null, this.enableVirtualHuman && this.digitalId ? (index.h("pcm-virtual-chat-modal", { ref: el => this.virtualChatModalRef = el, isOpen: true, fullscreen: this.fullscreen, botId: "3022316191018884", digitalId: this.digitalId, openingIndex: this.openingIndex, conversationId: this.conversationId, defaultQuery: this.defaultQuery, waitingTime: this.waitingTime, playbackRate: this.playbackRate, showEndInterviewButton: this.showEndInterviewButton, customInputs: {
638
642
  ...this.customInputs,
639
643
  file_url: this.customInputs?.file_url || this.uploadedFileInfo?.cos_key,
640
644
  file_name: this.customInputs?.file_name || this.uploadedFileInfo?.file_name,
@@ -642,7 +646,7 @@ const OemMnmsModal = class {
642
646
  question_number: this.customInputs?.question_number || 5,
643
647
  interview_type: this.digitalId,
644
648
  phone: this.phoneNumber.trim() || undefined
645
- } })) : (index.h("pcm-app-chat-modal", { isOpen: true, modalTitle: this.modalTitle, icon: this.icon, isShowHeader: this.isShowHeader, isNeedClose: this.isShowHeader, fullscreen: this.fullscreen, showWorkspaceHistory: this.showWorkspaceHistory, botId: "3022316191018884", digitalId: this.digitalId, conversationId: this.conversationId, defaultQuery: this.defaultQuery, maxRecordingTime: this.maxRecordingTime, waitingTime: this.waitingTime, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, showEndInterviewButton: this.showEndInterviewButton, customInputs: {
649
+ } })) : (index.h("pcm-app-chat-modal", { isOpen: true, modalTitle: this.modalTitle, icon: this.icon, isShowHeader: this.isShowHeader, isNeedClose: this.isShowHeader, fullscreen: this.fullscreen, showWorkspaceHistory: this.showWorkspaceHistory, botId: "3022316191018884", digitalId: this.digitalId, conversationId: this.conversationId, defaultQuery: this.defaultQuery, maxRecordingTime: this.maxRecordingTime, waitingTime: this.waitingTime, playbackRate: this.playbackRate, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, showEndInterviewButton: this.showEndInterviewButton, customInputs: {
646
650
  ...this.customInputs,
647
651
  file_url: this.customInputs?.file_url || this.uploadedFileInfo?.cos_key,
648
652
  file_name: this.customInputs?.file_name || this.uploadedFileInfo?.file_name,
@@ -751,6 +755,10 @@ const ZhanshiMnmsModal = class {
751
755
  * 是否显示结束面试按钮
752
756
  */
753
757
  showEndInterviewButton = false;
758
+ /**
759
+ * 数字人视频播放速率(0.5-2.0之间),默认1.0
760
+ */
761
+ playbackRate = 1.0;
754
762
  /**
755
763
  * 上传成功事件
756
764
  */
@@ -867,13 +875,13 @@ const ZhanshiMnmsModal = class {
867
875
  };
868
876
  // 显示加载状态
869
877
  const isLoading = this.conversationId && !this.showChatModal;
870
- return (index.h("div", { class: overlayClass, style: modalStyle }, index.h("div", { class: containerClass }, this.isShowHeader && (index.h("div", { class: "modal-header" }, index.h("div", { class: "header-left" }, this.icon && index.h("img", { src: this.icon, class: "header-icon", alt: "\u5E94\u7528\u56FE\u6807" }), index.h("div", null, this.modalTitle)), this.isNeedClose && (index.h("button", { class: "close-button", onClick: this.handleClose }, index.h("span", null, "\u00D7"))))), isLoading && (index.h("div", { class: "loading-container" }, index.h("div", { class: "loading-spinner" }), index.h("p", { class: "loading-text" }, "\u6B63\u5728\u52A0\u8F7D\u5BF9\u8BDD..."))), this.showChatModal && (index.h("div", null, this.enableVirtualHuman ? (index.h("pcm-virtual-chat-modal", { ref: el => this.virtualChatModalRef = el, isOpen: true, fullscreen: this.fullscreen, botId: "3022316191018903", digitalId: this.digitalId, openingIndex: this.openingIndex, conversationId: this.conversationId, defaultQuery: this.defaultQuery, showEndInterviewButton: this.showEndInterviewButton, waitingTime: this.waitingTime, customInputs: {
878
+ return (index.h("div", { class: overlayClass, style: modalStyle }, index.h("div", { class: containerClass }, this.isShowHeader && (index.h("div", { class: "modal-header" }, index.h("div", { class: "header-left" }, this.icon && index.h("img", { src: this.icon, class: "header-icon", alt: "\u5E94\u7528\u56FE\u6807" }), index.h("div", null, this.modalTitle)), this.isNeedClose && (index.h("button", { class: "close-button", onClick: this.handleClose }, index.h("span", null, "\u00D7"))))), isLoading && (index.h("div", { class: "loading-container" }, index.h("div", { class: "loading-spinner" }), index.h("p", { class: "loading-text" }, "\u6B63\u5728\u52A0\u8F7D\u5BF9\u8BDD..."))), this.showChatModal && (index.h("div", null, this.enableVirtualHuman ? (index.h("pcm-virtual-chat-modal", { ref: el => this.virtualChatModalRef = el, isOpen: true, fullscreen: this.fullscreen, botId: "3022316191018903", digitalId: this.digitalId, openingIndex: this.openingIndex, conversationId: this.conversationId, defaultQuery: this.defaultQuery, showEndInterviewButton: this.showEndInterviewButton, waitingTime: this.waitingTime, playbackRate: this.playbackRate, customInputs: {
871
879
  ...this.customInputs,
872
880
  file_url: this.customInputs?.file_url || this.uploadedFileInfo?.cos_key,
873
881
  file_name: this.customInputs?.file_name || this.uploadedFileInfo?.file_name,
874
882
  job_info: this.customInputs?.job_info || this.jobDescription,
875
883
  interview_type: this.digitalId
876
- } })) : (index.h("pcm-app-chat-modal", { isOpen: true, modalTitle: this.modalTitle, icon: this.icon, isShowHeader: this.isShowHeader, isNeedClose: this.isShowHeader, fullscreen: this.fullscreen, botId: "3022316191018903", showEndInterviewButton: this.showEndInterviewButton, conversationId: this.conversationId, defaultQuery: this.defaultQuery, maxRecordingTime: this.maxRecordingTime, waitingTime: this.waitingTime, customInputs: {
884
+ } })) : (index.h("pcm-app-chat-modal", { isOpen: true, modalTitle: this.modalTitle, icon: this.icon, isShowHeader: this.isShowHeader, isNeedClose: this.isShowHeader, fullscreen: this.fullscreen, botId: "3022316191018903", showEndInterviewButton: this.showEndInterviewButton, conversationId: this.conversationId, defaultQuery: this.defaultQuery, maxRecordingTime: this.maxRecordingTime, waitingTime: this.waitingTime, playbackRate: this.playbackRate, customInputs: {
877
885
  ...this.customInputs,
878
886
  file_url: this.uploadedFileInfo?.cos_key,
879
887
  file_name: this.uploadedFileInfo?.file_name,
@@ -1149,6 +1157,10 @@ const ChatAPPModal = class {
1149
1157
  * 是否显示结束面试按钮
1150
1158
  */
1151
1159
  showEndInterviewButton = false;
1160
+ /**
1161
+ * 数字人视频播放速率(0.5-2.0之间),默认1.0
1162
+ */
1163
+ playbackRate = 1.0;
1152
1164
  handleTokenChange(newToken) {
1153
1165
  // 当传入的 token 变化时,更新 authStore 中的 token
1154
1166
  if (newToken && newToken !== index$1.authStore.getToken()) {
@@ -2681,7 +2693,7 @@ const ChatAPPModal = class {
2681
2693
  } }, index.h("img", { src: "https://pcm-pub-1351162788.cos.ap-guangzhou.myqcloud.com/sdk/image/i_send.png", alt: "\u53D1\u9001" })))));
2682
2694
  // 确定要使用的助手头像
2683
2695
  const effectiveAssistantAvatar = this.assistantAvatar || this.agentLogo;
2684
- return (index.h("div", { class: overlayClass, style: modalStyle }, index.h("div", { class: containerClass }, this.isShowHeader && (index.h("div", { class: "modal-header" }, index.h("div", { class: "header-left" }, this.icon && index.h("img", { src: this.icon, class: "header-icon", alt: "\u5E94\u7528\u56FE\u6807" }), index.h("div", null, this.modalTitle)), this.isNeedClose && (index.h("button", { class: "close-button", onClick: this.handleClose }, index.h("span", null, "\u00D7"))))), index.h("div", { class: "chat-container" }, index.h("div", { class: "chat-history", onScroll: this.handleScroll, onTouchStart: this.handleTouchStart, onTouchEnd: this.handleTouchEnd, onWheel: this.handleWheel }, this.isLoadingHistory ? (index.h("div", { class: "loading-container" }, index.h("div", { class: "loading-spinner" }), index.h("p", null, "\u52A0\u8F7D\u5386\u53F2\u6D88\u606F\u4E2D..."))) : (index.h("div", null, this.messages.map(message => (index.h("div", { id: `message_${message.id}`, key: message.id }, index.h("pcm-chat-message", { botId: this.botId, message: message, showAssistantMessage: !this.digitalId || !this.isLastMessage(message) || this.digitalHumanVideoReady || this.isTaskCompleted, userAvatar: this.userAvatar, assistantAvatar: effectiveAssistantAvatar, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, filePreviewMode: this.filePreviewMode, onFilePreviewRequest: this.handleFilePreviewRequest, showSaveJdButton: this.showSaveJdButton, saveJdButtonText: this.saveJdButtonText })))), this.currentStreamingMessage && (index.h("div", { id: `message_${this.currentStreamingMessage.id}` }, index.h("pcm-chat-message", { botId: this.botId, message: this.currentStreamingMessage, showAssistantMessage: !this.digitalId || this.digitalHumanVideoReady || this.isTaskCompleted, userAvatar: this.userAvatar, assistantAvatar: effectiveAssistantAvatar, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, filePreviewMode: this.filePreviewMode, onFilePreviewRequest: this.handleFilePreviewRequest, showSaveJdButton: this.showSaveJdButton, saveJdButtonText: this.saveJdButtonText }))), this.messages.length === 0 && !this.currentStreamingMessage && (index.h("div", { class: "empty-state" }, index.h("p", null, "\u4F60\u597D\uFF0C\u6211\u662F\u8058\u624D\u732B\uFF0C\u4E00\u4E2AAI\u52A9\u624B\uFF0C\u5F88\u9AD8\u5174\u8BA4\u8BC6\u4F60...")))))), index.h("div", { class: "recording-section" }, index.h("div", { class: "recording-container" }, (this.showWorkspaceHistory || this.digitalId || (this.showEndInterviewButton && !this.isTaskCompleted && this.conversationId)) && (index.h("div", { class: "workspace-section" }, index.h("div", { class: "workspace-toolbar" }, index.h("div", { style: { display: 'flex', gap: '8px' } }, !this.isTaskCompleted && this.conversationId && this.showEndInterviewButton && (index.h("button", { class: "workspace-button end-interview-button", onClick: this.handleInterviewEnd, disabled: this.isLoading || this.isEndingInterview, title: this.isEndingInterview ? '正在结束面试...' : '结束面试' }, index.h("span", null, this.isEndingInterview ? '正在结束...' : '结束面试'))), this.showWorkspaceHistory && (index.h("button", { class: "workspace-button history-button", onClick: () => this.handleHistoryClick() }, index.h("span", null, "\u5386\u53F2\u4F1A\u8BDD")))), this.digitalId && !this.isTaskCompleted && (index.h("div", { class: "digital-human-wrapper" }, index.h("pcm-digital-human", { digitalId: this.digitalId, speechText: this.lastCompletedAnswer, isStreaming: !!this.currentStreamingMessage, onVideoGenerated: this.handleDigitalHumanVideoGenerated, onVideoEnded: this.handleDigitalHumanVideoEnded, onAvatarDetailLoaded: this.handleAvatarDetailLoaded })))))), this.interviewMode === 'text' && renderTextInputArea(), this.interviewMode === 'video' && (index.h("div", { class: "video-container" }, index.h("div", { class: "video-area" }, this.showRecordingUI ? renderVideoPreview() : index.h("div", { class: "video-preview placeholder" }, renderPlaceholderStatus())), index.h("div", { class: "recording-controls" }, this.showRecordingUI ? (index.h("button", { class: "stop-recording-button", onClick: () => this.handleStopRecording() }, "\u5B8C\u6210\u672C\u9898\u56DE\u7B54")) : (index.h("div", { class: "waiting-message" }, index.h("button", { class: "stop-recording-button disabled", disabled: true }, "\u5B8C\u6210\u56DE\u7B54"))))))))), index.h("pcm-drawer", { isOpen: this.isDrawerOpen, drawerTitle: this.previewFileName, width: "80%", onClosed: () => {
2696
+ return (index.h("div", { class: overlayClass, style: modalStyle }, index.h("div", { class: containerClass }, this.isShowHeader && (index.h("div", { class: "modal-header" }, index.h("div", { class: "header-left" }, this.icon && index.h("img", { src: this.icon, class: "header-icon", alt: "\u5E94\u7528\u56FE\u6807" }), index.h("div", null, this.modalTitle)), this.isNeedClose && (index.h("button", { class: "close-button", onClick: this.handleClose }, index.h("span", null, "\u00D7"))))), index.h("div", { class: "chat-container" }, index.h("div", { class: "chat-history", onScroll: this.handleScroll, onTouchStart: this.handleTouchStart, onTouchEnd: this.handleTouchEnd, onWheel: this.handleWheel }, this.isLoadingHistory ? (index.h("div", { class: "loading-container" }, index.h("div", { class: "loading-spinner" }), index.h("p", null, "\u52A0\u8F7D\u5386\u53F2\u6D88\u606F\u4E2D..."))) : (index.h("div", null, this.messages.map(message => (index.h("div", { id: `message_${message.id}`, key: message.id }, index.h("pcm-chat-message", { botId: this.botId, message: message, showAssistantMessage: !this.digitalId || !this.isLastMessage(message) || this.digitalHumanVideoReady || this.isTaskCompleted, userAvatar: this.userAvatar, assistantAvatar: effectiveAssistantAvatar, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, filePreviewMode: this.filePreviewMode, onFilePreviewRequest: this.handleFilePreviewRequest, showSaveJdButton: this.showSaveJdButton, saveJdButtonText: this.saveJdButtonText })))), this.currentStreamingMessage && (index.h("div", { id: `message_${this.currentStreamingMessage.id}` }, index.h("pcm-chat-message", { botId: this.botId, message: this.currentStreamingMessage, showAssistantMessage: !this.digitalId || this.digitalHumanVideoReady || this.isTaskCompleted, userAvatar: this.userAvatar, assistantAvatar: effectiveAssistantAvatar, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, filePreviewMode: this.filePreviewMode, onFilePreviewRequest: this.handleFilePreviewRequest, showSaveJdButton: this.showSaveJdButton, saveJdButtonText: this.saveJdButtonText }))), this.messages.length === 0 && !this.currentStreamingMessage && (index.h("div", { class: "empty-state" }, index.h("p", null, "\u4F60\u597D\uFF0C\u6211\u662F\u8058\u624D\u732B\uFF0C\u4E00\u4E2AAI\u52A9\u624B\uFF0C\u5F88\u9AD8\u5174\u8BA4\u8BC6\u4F60...")))))), index.h("div", { class: "recording-section" }, index.h("div", { class: "recording-container" }, (this.showWorkspaceHistory || this.digitalId || (this.showEndInterviewButton && !this.isTaskCompleted && this.conversationId)) && (index.h("div", { class: "workspace-section" }, index.h("div", { class: "workspace-toolbar" }, index.h("div", { style: { display: 'flex', gap: '8px' } }, !this.isTaskCompleted && this.conversationId && this.showEndInterviewButton && (index.h("button", { class: "workspace-button end-interview-button", onClick: this.handleInterviewEnd, disabled: this.isLoading || this.isEndingInterview, title: this.isEndingInterview ? '正在结束面试...' : '结束面试' }, index.h("span", null, this.isEndingInterview ? '正在结束...' : '结束面试'))), this.showWorkspaceHistory && (index.h("button", { class: "workspace-button history-button", onClick: () => this.handleHistoryClick() }, index.h("span", null, "\u5386\u53F2\u4F1A\u8BDD")))), this.digitalId && !this.isTaskCompleted && (index.h("div", { class: "digital-human-wrapper" }, index.h("pcm-digital-human", { digitalId: this.digitalId, speechText: this.lastCompletedAnswer, isStreaming: !!this.currentStreamingMessage, playbackRate: this.playbackRate, onVideoGenerated: this.handleDigitalHumanVideoGenerated, onVideoEnded: this.handleDigitalHumanVideoEnded, onAvatarDetailLoaded: this.handleAvatarDetailLoaded })))))), this.interviewMode === 'text' && renderTextInputArea(), this.interviewMode === 'video' && (index.h("div", { class: "video-container" }, index.h("div", { class: "video-area" }, this.showRecordingUI ? renderVideoPreview() : index.h("div", { class: "video-preview placeholder" }, renderPlaceholderStatus())), index.h("div", { class: "recording-controls" }, this.showRecordingUI ? (index.h("button", { class: "stop-recording-button", onClick: () => this.handleStopRecording() }, "\u5B8C\u6210\u672C\u9898\u56DE\u7B54")) : (index.h("div", { class: "waiting-message" }, index.h("button", { class: "stop-recording-button disabled", disabled: true }, "\u5B8C\u6210\u56DE\u7B54"))))))))), index.h("pcm-drawer", { isOpen: this.isDrawerOpen, drawerTitle: this.previewFileName, width: "80%", onClosed: () => {
2685
2697
  this.isDrawerOpen = false;
2686
2698
  this.previewUrl = '';
2687
2699
  this.previewContent = '';
@@ -3627,6 +3639,10 @@ const PcmDigitalHuman = class {
3627
3639
  * 是否正在流式输出
3628
3640
  */
3629
3641
  isStreaming = false;
3642
+ /**
3643
+ * 数字人视频播放速率(0.5-2.0之间),默认1.0
3644
+ */
3645
+ playbackRate = 1.0;
3630
3646
  generatedVideoUrl = '';
3631
3647
  currentVideoUrl = '';
3632
3648
  isPlayingGenerated = false;
@@ -3658,6 +3674,8 @@ const PcmDigitalHuman = class {
3658
3674
  // 设置视频元素的初始源
3659
3675
  if (this.videoElement && this.currentVideoUrl) {
3660
3676
  this.videoElement.src = this.currentVideoUrl;
3677
+ // 默认视频使用1.0速率,生成的视频使用设置的速率
3678
+ this.videoElement.playbackRate = 1.0;
3661
3679
  }
3662
3680
  }
3663
3681
  handleStreamingChange(newValue, oldValue) {
@@ -3824,6 +3842,8 @@ const PcmDigitalHuman = class {
3824
3842
  this.videoElement.src = videoUrl;
3825
3843
  // 生成的视频不循环播放
3826
3844
  this.videoElement.loop = false;
3845
+ // 设置播放速率(生成的视频使用设置的速率)
3846
+ this.videoElement.playbackRate = this.playbackRate;
3827
3847
  // 播放新视频
3828
3848
  this.videoElement.play().catch(error => {
3829
3849
  console.error('播放生成视频失败:', error);
@@ -3845,6 +3865,8 @@ const PcmDigitalHuman = class {
3845
3865
  this.videoElement.pause();
3846
3866
  this.videoElement.src = videoUrl;
3847
3867
  this.videoElement.loop = false;
3868
+ // 设置播放速率(生成的视频使用设置的速率)
3869
+ this.videoElement.playbackRate = this.playbackRate;
3848
3870
  this.videoElement.play().catch(error => {
3849
3871
  console.error('播放生成视频失败:', error);
3850
3872
  });
@@ -3871,6 +3893,8 @@ const PcmDigitalHuman = class {
3871
3893
  this.videoElement.src = defaultUrl;
3872
3894
  // 设置循环播放并开始播放
3873
3895
  this.videoElement.loop = true;
3896
+ // 恢复默认速率1.0
3897
+ this.videoElement.playbackRate = 1.0;
3874
3898
  this.videoElement.play().catch(error => {
3875
3899
  console.error('播放默认视频失败:', error);
3876
3900
  });
@@ -3879,7 +3903,7 @@ const PcmDigitalHuman = class {
3879
3903
  }
3880
3904
  };
3881
3905
  render() {
3882
- return (index.h("div", { key: '29fac767e0eedf056b436f9689926616a3e0e894', class: "digital-human-container" }, index.h("video", { key: '8822a30d88d72048372fa144c065c4300630ced6', autoplay: true, playsinline: true, loop: true, onEnded: this.handleVideoEnded, ref: el => (this.videoElement = el) })));
3906
+ return (index.h("div", { key: '7b38a3fc594fb3524f6e3be381d018d052b91916', class: "digital-human-container" }, index.h("video", { key: 'fc778d9668dcf39b9d050a82585a3fbc5ab8172e', autoplay: true, playsinline: true, loop: true, onEnded: this.handleVideoEnded, ref: el => (this.videoElement = el) })));
3883
3907
  }
3884
3908
  static get watchers() { return {
3885
3909
  "isStreaming": ["handleStreamingChange"]
@@ -7493,6 +7517,10 @@ const MnmsZpModal = class {
7493
7517
  * 是否显示结束面试按钮
7494
7518
  */
7495
7519
  showEndInterviewButton = false;
7520
+ /**
7521
+ * 数字人视频播放速率(0.5-2.0之间),默认1.0
7522
+ */
7523
+ playbackRate = 1.0;
7496
7524
  /**
7497
7525
  * 上传成功事件
7498
7526
  */
@@ -7661,14 +7689,14 @@ const MnmsZpModal = class {
7661
7689
  const result = e.detail ?? [];
7662
7690
  this.uploadedFileInfo = result[0];
7663
7691
  this.uploadSuccess.emit(this.uploadedFileInfo);
7664
- } }))), index.h("button", { class: "submit-button", disabled: (!hideJdInput && !this.jobDescription.trim()) || this.isUploading || this.isSubmitting, onClick: this.handleStartInterview }, this.isUploading ? '上传中...' : this.isSubmitting ? '处理中...' : '开始面试'), index.h("div", { class: "ai-disclaimer" }, index.h("p", null, "\u6240\u6709\u5185\u5BB9\u5747\u7531AI\u751F\u6210\u4EC5\u4F9B\u53C2\u8003"), index.h("p", { class: "beian-info" }, index.h("span", null, "\u4E2D\u592E\u7F51\u4FE1\u529E\u751F\u6210\u5F0F\u4EBA\u5DE5\u667A\u80FD\u670D\u52A1\u5907\u6848\u53F7"), "\uFF1A", index.h("a", { href: "https://www.pincaimao.com", target: "_blank", rel: "noopener noreferrer" }, "Hunan-PinCaiMao-202412310003"))))), isLoading && (index.h("div", { class: "loading-container" }, index.h("div", { class: "loading-spinner" }), index.h("p", { class: "loading-text" }, "\u6B63\u5728\u52A0\u8F7D\u5BF9\u8BDD..."))), this.showChatModal && (index.h("div", null, this.enableVirtualHuman && this.digitalId ? (index.h("pcm-virtual-chat-modal", { ref: el => this.virtualChatModalRef = el, isOpen: true, fullscreen: this.fullscreen, botId: "3022316191018907", digitalId: this.digitalId, openingIndex: this.openingIndex, conversationId: this.conversationId, defaultQuery: this.defaultQuery, waitingTime: this.waitingTime, showEndInterviewButton: this.showEndInterviewButton, customInputs: {
7692
+ } }))), index.h("button", { class: "submit-button", disabled: (!hideJdInput && !this.jobDescription.trim()) || this.isUploading || this.isSubmitting, onClick: this.handleStartInterview }, this.isUploading ? '上传中...' : this.isSubmitting ? '处理中...' : '开始面试'), index.h("div", { class: "ai-disclaimer" }, index.h("p", null, "\u6240\u6709\u5185\u5BB9\u5747\u7531AI\u751F\u6210\u4EC5\u4F9B\u53C2\u8003"), index.h("p", { class: "beian-info" }, index.h("span", null, "\u4E2D\u592E\u7F51\u4FE1\u529E\u751F\u6210\u5F0F\u4EBA\u5DE5\u667A\u80FD\u670D\u52A1\u5907\u6848\u53F7"), "\uFF1A", index.h("a", { href: "https://www.pincaimao.com", target: "_blank", rel: "noopener noreferrer" }, "Hunan-PinCaiMao-202412310003"))))), isLoading && (index.h("div", { class: "loading-container" }, index.h("div", { class: "loading-spinner" }), index.h("p", { class: "loading-text" }, "\u6B63\u5728\u52A0\u8F7D\u5BF9\u8BDD..."))), this.showChatModal && (index.h("div", null, this.enableVirtualHuman && this.digitalId ? (index.h("pcm-virtual-chat-modal", { ref: el => this.virtualChatModalRef = el, isOpen: true, fullscreen: this.fullscreen, botId: "3022316191018907", digitalId: this.digitalId, openingIndex: this.openingIndex, conversationId: this.conversationId, defaultQuery: this.defaultQuery, waitingTime: this.waitingTime, playbackRate: this.playbackRate, showEndInterviewButton: this.showEndInterviewButton, customInputs: {
7665
7693
  ...this.customInputs,
7666
7694
  file_url: this.customInputs?.file_url || this.uploadedFileInfo?.cos_key,
7667
7695
  file_name: this.customInputs?.file_name || this.uploadedFileInfo?.file_name,
7668
7696
  job_info: this.customInputs?.job_info || this.jobDescription,
7669
7697
  question_number: this.customInputs?.question_number || 5,
7670
7698
  interview_type: this.digitalId
7671
- } })) : (index.h("pcm-app-chat-modal", { isOpen: true, modalTitle: this.modalTitle, icon: this.icon, isShowHeader: this.isShowHeader, isNeedClose: this.isShowHeader, fullscreen: this.fullscreen, showWorkspaceHistory: this.showWorkspaceHistory, botId: "3022316191018907", digitalId: this.digitalId, conversationId: this.conversationId, defaultQuery: this.defaultQuery, maxRecordingTime: this.maxRecordingTime, waitingTime: this.waitingTime, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, showEndInterviewButton: this.showEndInterviewButton, customInputs: {
7699
+ } })) : (index.h("pcm-app-chat-modal", { isOpen: true, modalTitle: this.modalTitle, icon: this.icon, isShowHeader: this.isShowHeader, isNeedClose: this.isShowHeader, fullscreen: this.fullscreen, showWorkspaceHistory: this.showWorkspaceHistory, botId: "3022316191018907", digitalId: this.digitalId, conversationId: this.conversationId, defaultQuery: this.defaultQuery, maxRecordingTime: this.maxRecordingTime, waitingTime: this.waitingTime, playbackRate: this.playbackRate, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, showEndInterviewButton: this.showEndInterviewButton, customInputs: {
7672
7700
  ...this.customInputs,
7673
7701
  file_url: this.customInputs?.file_url || this.uploadedFileInfo?.cos_key,
7674
7702
  file_name: this.customInputs?.file_name || this.uploadedFileInfo?.file_name,
@@ -11616,6 +11644,10 @@ const ChatVirtualAPPModal = class {
11616
11644
  * 等待录制时间(秒)默认10
11617
11645
  */
11618
11646
  waitingTime = 10;
11647
+ /**
11648
+ * 数字人视频播放速率(0.5-2.0之间),默认1.0
11649
+ */
11650
+ playbackRate = 1.0;
11619
11651
  /**
11620
11652
  * 是否显示结束面试按钮
11621
11653
  */
@@ -13034,7 +13066,13 @@ const ChatVirtualAPPModal = class {
13034
13066
  'modal-overlay': true,
13035
13067
  'fullscreen-overlay': this.fullscreen,
13036
13068
  };
13037
- return (index.h("div", { class: overlayClass, style: modalStyle }, index.h("div", { class: containerClass }, index.h("button", { class: "close-button", onClick: this.handleCloseClick }, index.h("svg", { viewBox: "0 0 24 24", width: "20", height: "20", fill: "currentColor" }, index.h("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }))), this.digitalId && this.digitalHumanVideoUrl && (index.h("div", { class: "digital-human-background" }, index.h("video", { autoplay: true, playsinline: true, loop: !this.isPlayingDigitalHumanVideo, muted: !this.isPlayingDigitalHumanVideo, src: this.digitalHumanVideoUrl, class: "digital-human-background-video", onEnded: this.handleVideoElementEnded }))), this.renderVideoPreview(), index.h("div", { class: "modal-content-layer" }, index.h("div", { class: "main-content" }, index.h("div", { class: "chat-history-section" }, this.renderChatHistory()), this.showEndInterviewButton && !this.isTaskCompleted && this.conversationId && (index.h("div", { class: "end-interview-button-container" }, index.h("button", { class: "end-interview-button", onClick: this.handleInterviewEnd, disabled: this.isEndingInterview || !this.isRecording, title: this.isEndingInterview ? '正在结束面试...' : !this.isRecording ? '请在录制时点击' : '结束面试' }, this.isEndingInterview ? '正在结束...' : '结束面试'))), this.renderRecordingStatusBar())), index.h("div", { style: { position: 'relative', zIndex: '100' } }, index.h("pcm-confirm-modal", { isOpen: this.showConfirmModal, modalTitle: "\u786E\u8BA4\u5B8C\u6210\u56DE\u7B54\uFF1F", okText: "\u786E\u8BA4\u5B8C\u6210", cancelText: "\u7EE7\u7EED\u5F55\u5236", okType: "danger", onOk: this.handleConfirmModalOk, onCancel: this.handleConfirmModalCancelEvent, onClosed: this.handleConfirmModalCancel }, index.h("div", { style: { marginBottom: '16px' } }, index.h("div", { style: {
13069
+ return (index.h("div", { class: overlayClass, style: modalStyle }, index.h("div", { class: containerClass }, index.h("button", { class: "close-button", onClick: this.handleCloseClick }, index.h("svg", { viewBox: "0 0 24 24", width: "20", height: "20", fill: "currentColor" }, index.h("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }))), this.digitalId && this.digitalHumanVideoUrl && (index.h("div", { class: "digital-human-background" }, index.h("video", { autoplay: true, playsinline: true, loop: !this.isPlayingDigitalHumanVideo, muted: !this.isPlayingDigitalHumanVideo, src: this.digitalHumanVideoUrl, class: "digital-human-background-video", onEnded: this.handleVideoElementEnded, ref: el => {
13070
+ if (el) {
13071
+ // 只有非默认占位视频才应用语速控制
13072
+ const isDefaultVideo = this.digitalHumanVideoUrl === this.digitalHumanDefaultVideoUrl;
13073
+ el.playbackRate = isDefaultVideo ? 1.0 : this.playbackRate;
13074
+ }
13075
+ } }))), this.renderVideoPreview(), index.h("div", { class: "modal-content-layer" }, index.h("div", { class: "main-content" }, index.h("div", { class: "chat-history-section" }, this.renderChatHistory()), this.showEndInterviewButton && !this.isTaskCompleted && this.conversationId && (index.h("div", { class: "end-interview-button-container" }, index.h("button", { class: "end-interview-button", onClick: this.handleInterviewEnd, disabled: this.isEndingInterview || !this.isRecording, title: this.isEndingInterview ? '正在结束面试...' : !this.isRecording ? '请在录制时点击' : '结束面试' }, this.isEndingInterview ? '正在结束...' : '结束面试'))), this.renderRecordingStatusBar())), index.h("div", { style: { position: 'relative', zIndex: '100' } }, index.h("pcm-confirm-modal", { isOpen: this.showConfirmModal, modalTitle: "\u786E\u8BA4\u5B8C\u6210\u56DE\u7B54\uFF1F", okText: "\u786E\u8BA4\u5B8C\u6210", cancelText: "\u7EE7\u7EED\u5F55\u5236", okType: "danger", onOk: this.handleConfirmModalOk, onCancel: this.handleConfirmModalCancelEvent, onClosed: this.handleConfirmModalCancel }, index.h("div", { style: { marginBottom: '16px' } }, index.h("div", { style: {
13038
13076
  fontSize: '14px',
13039
13077
  color: '#1890ff',
13040
13078
  fontWeight: '500',