@tencent-rtc/trtc-agent-skills 0.1.0

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 (205) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +172 -0
  3. package/README.zh.md +173 -0
  4. package/bin/cli.js +434 -0
  5. package/knowledge-base/index.yaml +454 -0
  6. package/knowledge-base/platform-slice-template.md +233 -0
  7. package/knowledge-base/scenario-spec.md +350 -0
  8. package/knowledge-base/scenarios/conference/base/general-conference.md +365 -0
  9. package/knowledge-base/scenarios/conference/base/webinar-conference.md +130 -0
  10. package/knowledge-base/scenarios/conference/medical/1v1-video-consultation.md +145 -0
  11. package/knowledge-base/scenarios/conference/medical/medical-multidoctor-consultation.md +113 -0
  12. package/knowledge-base/scenarios/live/entertainment-live-room.md +118 -0
  13. package/knowledge-base/slice-spec.md +546 -0
  14. package/knowledge-base/slices/conference/web/ai-tools.md +225 -0
  15. package/knowledge-base/slices/conference/web/beauty-effects.md +188 -0
  16. package/knowledge-base/slices/conference/web/device-control.md +338 -0
  17. package/knowledge-base/slices/conference/web/login-auth.md +261 -0
  18. package/knowledge-base/slices/conference/web/network-quality.md +190 -0
  19. package/knowledge-base/slices/conference/web/official-roomkit-api.md +298 -0
  20. package/knowledge-base/slices/conference/web/official-roomkit-login-ui.md +246 -0
  21. package/knowledge-base/slices/conference/web/participant-list.md +238 -0
  22. package/knowledge-base/slices/conference/web/participant-management.md +718 -0
  23. package/knowledge-base/slices/conference/web/prejoin-check.md +293 -0
  24. package/knowledge-base/slices/conference/web/room-call.md +213 -0
  25. package/knowledge-base/slices/conference/web/room-chat.md +426 -0
  26. package/knowledge-base/slices/conference/web/room-lifecycle.md +534 -0
  27. package/knowledge-base/slices/conference/web/room-schedule.md +281 -0
  28. package/knowledge-base/slices/conference/web/screen-share.md +211 -0
  29. package/knowledge-base/slices/conference/web/video-layout.md +675 -0
  30. package/knowledge-base/slices/conference/web/virtual-background.md +197 -0
  31. package/knowledge-base/slices/conference/web/webinar-interaction.md +206 -0
  32. package/knowledge-base/slices/live/anchor-lifecycle.md +122 -0
  33. package/knowledge-base/slices/live/anchor-preview.md +90 -0
  34. package/knowledge-base/slices/live/anchor-room-config.md +104 -0
  35. package/knowledge-base/slices/live/audience-list.md +86 -0
  36. package/knowledge-base/slices/live/audience-manage.md +92 -0
  37. package/knowledge-base/slices/live/audience-watch.md +85 -0
  38. package/knowledge-base/slices/live/audio.md +116 -0
  39. package/knowledge-base/slices/live/barrage.md +88 -0
  40. package/knowledge-base/slices/live/beauty.md +99 -0
  41. package/knowledge-base/slices/live/coguest-apply.md +105 -0
  42. package/knowledge-base/slices/live/device-control.md +91 -0
  43. package/knowledge-base/slices/live/error-codes.md +167 -0
  44. package/knowledge-base/slices/live/gift.md +84 -0
  45. package/knowledge-base/slices/live/ios/.gitkeep +0 -0
  46. package/knowledge-base/slices/live/ios/anchor-lifecycle.md +313 -0
  47. package/knowledge-base/slices/live/ios/anchor-preview.md +228 -0
  48. package/knowledge-base/slices/live/ios/anchor-room-config.md +257 -0
  49. package/knowledge-base/slices/live/ios/audience-list.md +353 -0
  50. package/knowledge-base/slices/live/ios/audience-manage.md +381 -0
  51. package/knowledge-base/slices/live/ios/audience-watch.md +286 -0
  52. package/knowledge-base/slices/live/ios/audio.md +373 -0
  53. package/knowledge-base/slices/live/ios/barrage.md +285 -0
  54. package/knowledge-base/slices/live/ios/beauty.md +323 -0
  55. package/knowledge-base/slices/live/ios/coguest-apply.md +506 -0
  56. package/knowledge-base/slices/live/ios/device-control.md +286 -0
  57. package/knowledge-base/slices/live/ios/error-codes.md +270 -0
  58. package/knowledge-base/slices/live/ios/gift.md +315 -0
  59. package/knowledge-base/slices/live/ios/live-list.md +269 -0
  60. package/knowledge-base/slices/live/ios/login-auth.md +247 -0
  61. package/knowledge-base/slices/live/live-list.md +82 -0
  62. package/knowledge-base/slices/live/login-auth.md +78 -0
  63. package/package.json +34 -0
  64. package/skills/trtc/SKILL.md +326 -0
  65. package/skills/trtc/room-builder/SKILL.md +138 -0
  66. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/README.md +108 -0
  67. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/docs/backend-contract.zh-CN.md +162 -0
  68. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/docs/integration.zh-CN.md +154 -0
  69. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/docs/theme.zh-CN.md +78 -0
  70. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/index.html +12 -0
  71. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/package.json +28 -0
  72. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/postcss.config.js +5 -0
  73. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/App.vue +25 -0
  74. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/ConsultationManagePanel.vue +838 -0
  75. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/LanguageSwitch.vue +102 -0
  76. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/LoadingSpinner.vue +6 -0
  77. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/MedicalAlert.vue +34 -0
  78. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/MedicalBusinessPanel.vue +148 -0
  79. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/MedicalButton.vue +49 -0
  80. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/MedicalConfirmDialog.vue +68 -0
  81. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/MedicalDataPanel.vue +196 -0
  82. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/MedicalRecordPanel.vue +270 -0
  83. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/components/PrescriptionPanel.vue +363 -0
  84. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/config/basic-info-config.ts +29 -0
  85. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/config/lib-generate-test-usersig-es.min.d.ts +4 -0
  86. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/config/lib-generate-test-usersig-es.min.js +2 -0
  87. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/config/runtime-config.ts +12 -0
  88. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/env.d.ts +32 -0
  89. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/components/ConsultationChatPanel.vue +123 -0
  90. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/components/ConsultationMembersPanel.vue +230 -0
  91. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/components/ConsultationTranscriptionPanel.vue +135 -0
  92. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/components/ConsultationVideoStage.vue +113 -0
  93. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/components/InviteDoctorDialog.vue +132 -0
  94. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/components/KickMemberConfirmDialog.vue +50 -0
  95. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/types.ts +77 -0
  96. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/useConsultationChat.ts +97 -0
  97. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/useConsultationDevices.ts +48 -0
  98. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/useConsultationParticipants.ts +121 -0
  99. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/useConsultationPermissions.ts +25 -0
  100. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/features/consultation/utils.ts +70 -0
  101. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/i18n/en-US/index.ts +553 -0
  102. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/i18n/index.ts +25 -0
  103. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/i18n/medicalTranslate.ts +85 -0
  104. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/i18n/state.ts +49 -0
  105. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/i18n/zh-CN/index.ts +463 -0
  106. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/main.ts +12 -0
  107. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/mock/appointments.ts +96 -0
  108. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/mock/users.ts +79 -0
  109. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/router/index.ts +63 -0
  110. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/index.ts +25 -0
  111. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/integration/appointmentService.ts +77 -0
  112. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/integration/authService.ts +38 -0
  113. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/integration/launchContext.ts +31 -0
  114. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/integration/userService.ts +35 -0
  115. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/mock/appointmentService.ts +43 -0
  116. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/mock/authService.ts +33 -0
  117. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/mock/userService.ts +43 -0
  118. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/services/adapters/types.ts +135 -0
  119. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/shared/icons.ts +53 -0
  120. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/styles/index.css +106 -0
  121. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/styles/tailwind.css +3 -0
  122. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/styles/theme.css +209 -0
  123. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/utils/auth.ts +50 -0
  124. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/utils/format.ts +24 -0
  125. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/utils/navigation.ts +12 -0
  126. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/utils/session.ts +28 -0
  127. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/views/DoctorConsultationView.vue +777 -0
  128. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/views/DoctorDashboardView.vue +678 -0
  129. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/views/LoginView.vue +441 -0
  130. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/views/PatientConsultationFinishedView.vue +185 -0
  131. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/views/PatientConsultationView.vue +1003 -0
  132. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/views/PatientSelectDoctorView.vue +317 -0
  133. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/src/views/PatientWaitingView.vue +454 -0
  134. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/tsconfig.json +21 -0
  135. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/tsconfig.node.json +8 -0
  136. package/skills/trtc/room-builder/templates/scenarios/medical-consultation/vite.config.ts +17 -0
  137. package/skills/trtc/room-builder/templates/scenarios/medical-consultation//346/216/245/345/205/245/350/257/264/346/230/216.md +6 -0
  138. package/skills/trtc/room-builder/tools/render_ai_instructions.py +226 -0
  139. package/skills/trtc-apply/SKILL.md +97 -0
  140. package/skills/trtc-apply/guardrails/apply_lib/__init__.py +0 -0
  141. package/skills/trtc-apply/guardrails/apply_lib/__pycache__/__init__.cpython-313.pyc +0 -0
  142. package/skills/trtc-apply/guardrails/apply_lib/__pycache__/rule_parser.cpython-313.pyc +0 -0
  143. package/skills/trtc-apply/guardrails/apply_lib/rule_parser.py +268 -0
  144. package/skills/trtc-docs/SKILL.md +207 -0
  145. package/skills/trtc-onboarding/SKILL.md +839 -0
  146. package/skills/trtc-onboarding/reference/path-a1-demo.md +103 -0
  147. package/skills/trtc-onboarding/reference/path-a2-integrate.md +693 -0
  148. package/skills/trtc-onboarding/reference/path-b-troubleshoot.md +115 -0
  149. package/skills/trtc-onboarding/reference/path-c-expand.md +43 -0
  150. package/skills/trtc-onboarding/reference/reporting-protocol.md +174 -0
  151. package/skills/trtc-onboarding/reference/supported-matrix.md +100 -0
  152. package/skills/trtc-onboarding/reference/usersig-handling.md +140 -0
  153. package/skills/trtc-search/SKILL.md +221 -0
  154. package/skills/trtc-topic/SKILL.md +638 -0
  155. package/skills/trtc-topic/guardrails/__pycache__/gate_slice_read.cpython-313.pyc +0 -0
  156. package/skills/trtc-topic/guardrails/__pycache__/gate_slice_write.cpython-313.pyc +0 -0
  157. package/skills/trtc-topic/guardrails/__pycache__/stop_require_apply_evidence.cpython-313.pyc +0 -0
  158. package/skills/trtc-topic/guardrails/gate_slice_read.py +133 -0
  159. package/skills/trtc-topic/guardrails/gate_slice_write.py +169 -0
  160. package/skills/trtc-topic/guardrails/stop_require_apply_evidence.py +97 -0
  161. package/skills/trtc-topic/references/execution-units.yaml +58 -0
  162. package/skills/trtc-topic/runtime/README.md +50 -0
  163. package/skills/trtc-topic/runtime/RUNTIME.md +128 -0
  164. package/skills/trtc-topic/runtime/lib/__init__.py +0 -0
  165. package/skills/trtc-topic/runtime/lib/platforms.py +194 -0
  166. package/skills/trtc-topic/runtime/package-lock.json +1211 -0
  167. package/skills/trtc-topic/runtime/package.json +13 -0
  168. package/skills/trtc-topic/runtime/telemetry-bridge.mjs +339 -0
  169. package/skills/trtc-topic/runtime/telemetry_collector.py +293 -0
  170. package/skills/trtc-topic/scripts/STATE-MACHINE-GUIDE.md +186 -0
  171. package/skills/trtc-topic/scripts/__pycache__/apply.cpython-313.pyc +0 -0
  172. package/skills/trtc-topic/scripts/apply.py +581 -0
  173. package/skills/trtc-topic/scripts/finalize_session.py +113 -0
  174. package/skills/trtc-topic/scripts/init_slice_queue.py +96 -0
  175. package/skills/trtc-topic/scripts/lib/__pycache__/state_machine.cpython-313.pyc +0 -0
  176. package/skills/trtc-topic/scripts/lib/state_machine.py +328 -0
  177. package/skills/trtc-topic/scripts/next_slice.py +137 -0
  178. package/skills/trtc-topic/tests/README.md +70 -0
  179. package/skills/trtc-topic/tests/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc +0 -0
  180. package/skills/trtc-topic/tests/__pycache__/conftest.cpython-313-pytest-9.0.3.pyc +0 -0
  181. package/skills/trtc-topic/tests/__pycache__/test_apply_cli.cpython-313-pytest-9.0.2.pyc +0 -0
  182. package/skills/trtc-topic/tests/__pycache__/test_apply_cli.cpython-313-pytest-9.0.3.pyc +0 -0
  183. package/skills/trtc-topic/tests/__pycache__/test_end_to_end.cpython-313-pytest-9.0.2.pyc +0 -0
  184. package/skills/trtc-topic/tests/__pycache__/test_end_to_end.cpython-313-pytest-9.0.3.pyc +0 -0
  185. package/skills/trtc-topic/tests/__pycache__/test_finalize_session.cpython-313-pytest-9.0.2.pyc +0 -0
  186. package/skills/trtc-topic/tests/__pycache__/test_finalize_session.cpython-313-pytest-9.0.3.pyc +0 -0
  187. package/skills/trtc-topic/tests/__pycache__/test_gates.cpython-313-pytest-9.0.2.pyc +0 -0
  188. package/skills/trtc-topic/tests/__pycache__/test_gates.cpython-313-pytest-9.0.3.pyc +0 -0
  189. package/skills/trtc-topic/tests/__pycache__/test_session_resolver.cpython-313-pytest-9.0.2.pyc +0 -0
  190. package/skills/trtc-topic/tests/__pycache__/test_session_resolver.cpython-313-pytest-9.0.3.pyc +0 -0
  191. package/skills/trtc-topic/tests/__pycache__/test_state_machine.cpython-313-pytest-9.0.2.pyc +0 -0
  192. package/skills/trtc-topic/tests/__pycache__/test_state_machine.cpython-313-pytest-9.0.3.pyc +0 -0
  193. package/skills/trtc-topic/tests/__pycache__/test_stop_require_apply.cpython-313-pytest-9.0.2.pyc +0 -0
  194. package/skills/trtc-topic/tests/__pycache__/test_stop_require_apply.cpython-313-pytest-9.0.3.pyc +0 -0
  195. package/skills/trtc-topic/tests/__pycache__/test_topic_skill_invariants.cpython-313-pytest-9.0.2.pyc +0 -0
  196. package/skills/trtc-topic/tests/__pycache__/test_topic_skill_invariants.cpython-313-pytest-9.0.3.pyc +0 -0
  197. package/skills/trtc-topic/tests/conftest.py +72 -0
  198. package/skills/trtc-topic/tests/test_apply_cli.py +480 -0
  199. package/skills/trtc-topic/tests/test_end_to_end.py +305 -0
  200. package/skills/trtc-topic/tests/test_finalize_session.py +51 -0
  201. package/skills/trtc-topic/tests/test_gates.py +316 -0
  202. package/skills/trtc-topic/tests/test_session_resolver.py +260 -0
  203. package/skills/trtc-topic/tests/test_state_machine.py +414 -0
  204. package/skills/trtc-topic/tests/test_stop_require_apply.py +99 -0
  205. package/skills/trtc-topic/tests/test_topic_skill_invariants.py +130 -0
@@ -0,0 +1,85 @@
1
+ import { i18next } from '@tencentcloud/uikit-base-component-vue3';
2
+ import { medicalLanguage } from './state';
3
+
4
+ const textKeyMap: Record<string, string> = {
5
+ 李医生: 'Medical.Mock.DoctorLi',
6
+ 王医生: 'Medical.Mock.DoctorWang',
7
+ 张医生: 'Medical.Mock.DoctorZhang',
8
+ 张晓明: 'Medical.Mock.PatientZhang',
9
+ 李美华: 'Medical.Mock.PatientLi',
10
+ 主任医师: 'Medical.Mock.ChiefPhysician',
11
+ 副主任医师: 'Medical.Mock.AssociateChiefPhysician',
12
+ 主治医师: 'Medical.Mock.AttendingPhysician',
13
+ 心内科: 'Medical.Mock.Cardiology',
14
+ 呼吸内科: 'Medical.Mock.Respiratory',
15
+ 消化内科: 'Medical.Mock.Gastroenterology',
16
+ 示例三甲医院: 'Medical.Mock.TertiaryHospital',
17
+ 示例互联网医院: 'Medical.Mock.InternetHospital',
18
+ 示例专科医院: 'Medical.Mock.SpecialtyHospital',
19
+ '20年': 'Medical.Mock.Years20',
20
+ '15年': 'Medical.Mock.Years15',
21
+ '10年': 'Medical.Mock.Years10',
22
+ 高血压: 'Medical.Mock.Hypertension',
23
+ 冠心病: 'Medical.Mock.Coronary',
24
+ 心律失常: 'Medical.Mock.Arrhythmia',
25
+ 咳嗽: 'Medical.Mock.Cough',
26
+ 哮喘: 'Medical.Mock.Asthma',
27
+ 肺炎: 'Medical.Mock.Pneumonia',
28
+ 胃炎: 'Medical.Mock.Gastritis',
29
+ 胃溃疡: 'Medical.Mock.GastricUlcer',
30
+ 消化不良: 'Medical.Mock.Indigestion',
31
+ 复诊问诊与慢病管理: 'Medical.Mock.ChronicCare',
32
+ 呼吸系统在线复诊: 'Medical.Mock.RespiratoryFollowUp',
33
+ 胃肠健康随访: 'Medical.Mock.GastroFollowUp',
34
+ 男: 'Medical.Mock.Male',
35
+ 女: 'Medical.Mock.Female',
36
+ 无: 'Medical.Mock.None',
37
+ 未知: 'Medical.Mock.Unknown',
38
+ '持续咳嗽、低热 3 天': 'Medical.Mock.CoughFever',
39
+ '夜间咳嗽、轻微气喘': 'Medical.Mock.NightCough',
40
+ '饭后胃胀、反酸': 'Medical.Mock.Reflux',
41
+ '头晕、心悸': 'Medical.Mock.DizzyPalpitations',
42
+ '反复咽痒、清晨咳嗽': 'Medical.Mock.ThroatCough',
43
+ '腹部隐痛、食欲下降': 'Medical.Mock.AbdominalPain',
44
+ 青霉素过敏: 'Medical.Mock.PenicillinAllergy',
45
+ 花粉过敏: 'Medical.Mock.PollenAllergy',
46
+ 无重大疾病史: 'Medical.Mock.NoMajorHistory',
47
+ 过敏性鼻炎: 'Medical.Mock.AllergicRhinitis',
48
+ 慢性胃炎: 'Medical.Mock.ChronicGastritis',
49
+ 甲状腺结节: 'Medical.Mock.ThyroidNodule',
50
+ 轻度哮喘: 'Medical.Mock.MildAsthma',
51
+ '示例主诉,请替换为客户预约系统返回的诊前信息': 'Medical.Mock.IntegrationChiefComplaint',
52
+ 请替换为客户业务数据: 'Medical.Mock.IntegrationBusinessData',
53
+ '[图片消息]': 'Medical.Message.ImageMessage',
54
+ '[视频消息]': 'Medical.Message.VideoMessage',
55
+ '[文件消息]': 'Medical.Message.FileMessage',
56
+ '[暂不支持的消息类型]': 'Medical.Message.UnsupportedMessage',
57
+ 'EMR / HIS / PACS 业务插槽': 'Medical.Business.EMRHISPACSSlot',
58
+ 会话初始化失败: 'Medical.Chat.SessionInitFailed',
59
+ 消息发送失败: 'Medical.Chat.MessageSendFailed',
60
+ 确认踢出成员: 'Medical.Member.ConfirmKickTitle',
61
+ 确认踢出: 'Medical.Member.ConfirmButton',
62
+ 取消: 'Medical.Member.CancelButton',
63
+ 中文: 'Medical.LanguageSwitch.ChineseLang',
64
+ };
65
+
66
+ export function medicalTranslate(text?: string) {
67
+ medicalLanguage.value;
68
+ if (!text) {
69
+ return text || '';
70
+ }
71
+ if (text.startsWith('Medical.')) {
72
+ return i18next.t(text);
73
+ }
74
+ const key = textKeyMap[text];
75
+ return key ? i18next.t(key) : text;
76
+ }
77
+
78
+ export function medicalT(key: string, options?: Record<string, unknown>) {
79
+ medicalLanguage.value;
80
+ return i18next.t(key, options);
81
+ }
82
+
83
+ export function medicalTranslateList(values?: string[]) {
84
+ return values?.map(item => medicalTranslate(item)) || [];
85
+ }
@@ -0,0 +1,49 @@
1
+ import { ref } from 'vue';
2
+
3
+ export type MedicalLanguage = 'zh-CN' | 'en-US';
4
+
5
+ export const MEDICAL_LANGUAGE_STORAGE_KEY = 'tuiMedical-language';
6
+
7
+ export function normalizeMedicalLanguage(
8
+ language?: string | null
9
+ ): MedicalLanguage {
10
+ if (!language) {
11
+ return 'zh-CN';
12
+ }
13
+ const normalizedLanguage = language.toLowerCase();
14
+ if (normalizedLanguage.startsWith('zh')) {
15
+ return 'zh-CN';
16
+ }
17
+ if (normalizedLanguage.startsWith('en')) {
18
+ return 'en-US';
19
+ }
20
+ return 'en-US';
21
+ }
22
+
23
+ function getBrowserLanguage() {
24
+ const languages = navigator.languages?.length
25
+ ? navigator.languages
26
+ : [navigator.language];
27
+ return (
28
+ languages.find(language => /^zh/i.test(language)) ||
29
+ languages.find(language => /^en/i.test(language)) ||
30
+ navigator.userAgent.match(/\b(zh|en)(?:-|_)[a-z]{2}\b/i)?.[0] ||
31
+ ''
32
+ );
33
+ }
34
+
35
+ function getInitialLanguage(): MedicalLanguage {
36
+ const queryLanguage = new URLSearchParams(window.location.search).get('lang');
37
+ const storedLanguage = localStorage.getItem(MEDICAL_LANGUAGE_STORAGE_KEY);
38
+ return normalizeMedicalLanguage(
39
+ queryLanguage || storedLanguage || getBrowserLanguage()
40
+ );
41
+ }
42
+
43
+ export const medicalLanguage = ref<MedicalLanguage>(getInitialLanguage());
44
+
45
+ export function setMedicalLanguage(language: MedicalLanguage) {
46
+ medicalLanguage.value = language;
47
+ localStorage.setItem(MEDICAL_LANGUAGE_STORAGE_KEY, language);
48
+ document.documentElement.lang = language;
49
+ }
@@ -0,0 +1,463 @@
1
+ export const resource = {
2
+ 'Medical.Common.PlatformName': '示例医疗平台',
3
+ 'Medical.Common.TemplateName': 'Medical Consultation Template',
4
+ 'Medical.Common.SourceTemplate': '医疗场景源码模板',
5
+ 'Medical.Common.SecureLink': '音视频链路加密',
6
+ 'Medical.Common.SceneTemplate': '医疗场景接入模板',
7
+ 'Medical.Common.Doctor': '医生',
8
+ 'Medical.Common.Patient': '患者',
9
+ 'Medical.Common.Member': '成员',
10
+ 'Medical.Common.Me': '我',
11
+ 'Medical.Common.AttendingDoctor': '主治医生',
12
+ 'Medical.Common.ConsultingDoctor': '会诊医生',
13
+ 'Medical.Common.UnknownDepartment': '未知科室',
14
+ 'Medical.Common.Online': '在线',
15
+ 'Medical.Common.Busy': '忙碌',
16
+ 'Medical.Common.Entering': '进入中...',
17
+ 'Medical.Common.Processing': '处理中...',
18
+ 'Medical.Common.Cancel': '取消',
19
+ 'Medical.Common.Confirm': '确认',
20
+ 'Medical.Common.Decline': '拒绝',
21
+ 'Medical.Common.Accept': '同意',
22
+ 'Medical.Common.Invite': '邀请',
23
+ 'Medical.Common.Inviting': '邀请中',
24
+ 'Medical.Common.Canceling': '取消中',
25
+ 'Medical.Common.Copy': '复制',
26
+ 'Medical.Common.Copying': '复制中...',
27
+ 'Medical.Common.Export': '导出',
28
+ 'Medical.Common.Exporting': '导出中...',
29
+ 'Medical.Common.View': '查看',
30
+ 'Medical.Common.Download': '下载',
31
+ 'Medical.Common.BackHome': '返回首页',
32
+ 'Medical.Common.Replaceable': '可替换',
33
+
34
+ 'Medical.Language.SwitchToEnglish': 'Switch to English',
35
+ 'Medical.Language.SwitchToChinese': '切换到中文',
36
+ 'Medical.Language.Chinese': '中文',
37
+ 'Medical.Language.English': 'English',
38
+
39
+ 'Medical.Login.VideoSecurityTitle': '音视频安全底座',
40
+ 'Medical.Login.VideoSecurityDescription': '提供稳定音视频链路,可按客户要求接入业务安全体系',
41
+ 'Medical.Login.WorkflowTitle': '完整诊疗闭环',
42
+ 'Medical.Login.WorkflowDescription': '从预约到处方,全流程数字化管理',
43
+ 'Medical.Login.MockEntryTitle': '场景化演示入口',
44
+ 'Medical.Login.IntegrationEntryTitle': '接入入口示例',
45
+ 'Medical.Login.MockEntryDescription': '请选择预置身份快速体验医患链路',
46
+ 'Medical.Login.IntegrationEntryDescription': '集成模式下建议由客户业务系统携带参数直接跳转进入',
47
+ 'Medical.Login.DoctorLogin': '医生登录',
48
+ 'Medical.Login.PatientLogin': '患者登录',
49
+ 'Medical.Login.DoctorAccount': '医生账号',
50
+ 'Medical.Login.PatientAccount': '患者账号',
51
+ 'Medical.Login.SelectAccount': '请选择账号',
52
+ 'Medical.Login.Password': '密码',
53
+ 'Medical.Login.AppointmentCode': '预约验证码',
54
+ 'Medical.Login.RememberLogin': '记住登录状态',
55
+ 'Medical.Login.ForgotPassword': '忘记密码?',
56
+ 'Medical.Login.Tips': '温馨提示:',
57
+ 'Medical.Login.PatientPhoneTip': '请使用预约时填写的手机号登录',
58
+ 'Medical.Login.ConfigTipPrefix': '运行前请先在',
59
+ 'Medical.Login.ConfigTipMiddle': '中填写',
60
+ 'Medical.Login.ConfigTipSuffix': '。正式交付时请改为客户服务端签发',
61
+ 'Medical.Login.LoginLoading': '登录中...',
62
+ 'Medical.Login.OpenDashboard': '登录工作台',
63
+ 'Medical.Login.EnterWaitingRoom': '进入候诊室',
64
+ 'Medical.Login.EntryDescription': '当前页面用于演示入口与接入方式,客户可替换为自有登录或单点入口',
65
+ 'Medical.Login.IntegrationMode': 'Integration 模式',
66
+ 'Medical.Login.IntegrationModeDescription': '页面会尝试从 URL 中读取 role、userId、appointmentId、token 等参数自动登录。',
67
+ 'Medical.Login.DoctorExample': '医生端示例:',
68
+ 'Medical.Login.PatientExample': '患者端示例:',
69
+ 'Medical.Login.PresetAccountNotFound': '未找到预置演示账号',
70
+ 'Medical.Login.LoginFailed': '登录失败,请检查 SDK 配置',
71
+ 'Medical.Login.IntegrationHint': '当前为 integration 模式。请由业务系统通过 URL 注入 role、userId、appointmentId、token 等参数后进入。',
72
+ 'Medical.Login.IntegrationInitFailed': '接入模式初始化失败',
73
+
74
+ 'Medical.PatientSelect.Subtitle': '选择医生开始问诊',
75
+ 'Medical.PatientSelect.Logout': '退出登录',
76
+ 'Medical.PatientSelect.SearchPlaceholder': '搜索医生、科室或疾病',
77
+ 'Medical.PatientSelect.Satisfaction': '满意度',
78
+ 'Medical.PatientSelect.Experience': '从医经验',
79
+ 'Medical.PatientSelect.Consultations': '接诊人次',
80
+ 'Medical.PatientSelect.VideoConsultation': '视频问诊',
81
+ 'Medical.PatientSelect.PerConsultation': '/次',
82
+ 'Medical.PatientSelect.StartConsultation': '立即问诊',
83
+
84
+ 'Medical.DoctorDashboard.Title': '医生工作台',
85
+ 'Medical.DoctorDashboard.Subtitle': '医疗音视频场景化接入模板',
86
+ 'Medical.DoctorDashboard.TodayAppointments': '今天有 {{count}} 个预约患者',
87
+ 'Medical.DoctorDashboard.CurrentDoctor': '{{hospital}} · 当前登录医生 {{doctor}}',
88
+ 'Medical.DoctorDashboard.Refreshing': '刷新中...',
89
+ 'Medical.DoctorDashboard.RefreshToday': '刷新今日预约',
90
+ 'Medical.DoctorDashboard.StatToday': '今日接诊',
91
+ 'Medical.DoctorDashboard.StatWaiting': '待接诊',
92
+ 'Medical.DoctorDashboard.StatRunning': '进行中',
93
+ 'Medical.DoctorDashboard.StatSynced': '已同步房间',
94
+ 'Medical.DoctorDashboard.ConsultationInvite': '会诊邀请',
95
+ 'Medical.DoctorDashboard.Pending': '待处理',
96
+ 'Medical.DoctorDashboard.InviteSummary': '{{doctor}}({{department}})邀请您参与患者 {{patient}} 的会诊',
97
+ 'Medical.DoctorDashboard.ViewDetails': '查看详情',
98
+ 'Medical.DoctorDashboard.Joining': '加入中...',
99
+ 'Medical.DoctorDashboard.JoinNow': '立即加入',
100
+ 'Medical.DoctorDashboard.WaitingPatients': '待接诊患者',
101
+ 'Medical.DoctorDashboard.LoadingAppointments': '正在加载预约房间...',
102
+ 'Medical.DoctorDashboard.SortByTime': '按预约时间排序',
103
+ 'Medical.DoctorDashboard.All': '全部',
104
+ 'Medical.DoctorDashboard.Waiting': '待接诊',
105
+ 'Medical.DoctorDashboard.Running': '进行中',
106
+ 'Medical.DoctorDashboard.PatientAge': '{{gender}} · {{age}}岁',
107
+ 'Medical.DoctorDashboard.ConsultationRunning': '问诊进行中',
108
+ 'Medical.DoctorDashboard.StartConsultation': '开始接诊',
109
+ 'Medical.DoctorDashboard.InviteDetails': '会诊邀请详情',
110
+ 'Medical.DoctorDashboard.AppointmentId': '预约编号:{{id}}',
111
+ 'Medical.DoctorDashboard.InvitingDoctor': '邀请医生',
112
+ 'Medical.DoctorDashboard.PatientInfo': '患者信息',
113
+ 'Medical.DoctorDashboard.ChiefComplaint': '主诉',
114
+ 'Medical.DoctorDashboard.AllergyHistory': '过敏史',
115
+ 'Medical.DoctorDashboard.HandleLater': '稍后处理',
116
+ 'Medical.DoctorDashboard.RefreshSuccess': '今日预约已刷新,可由客户替换为自有预约接口',
117
+ 'Medical.DoctorDashboard.RefreshFailed': '预约刷新失败',
118
+ 'Medical.DoctorDashboard.EnterFailed': '进入问诊房间失败,请重试',
119
+ 'Medical.DoctorDashboard.JoinInviteFailed': '加入会诊失败,请稍后重试',
120
+
121
+ 'Medical.PatientWaiting.InitialCallMessage': '医生暂未发起呼叫,请保持页面停留。',
122
+ 'Medical.PatientWaiting.JoinFailed': '接入问诊失败,请重试。',
123
+ 'Medical.PatientWaiting.RejectedMessage': '你已暂不接听本次呼叫,请等待医生再次发起。',
124
+ 'Medical.PatientWaiting.CallingMessage': '{{doctor}} 正在呼叫你加入问诊。',
125
+ 'Medical.PatientWaiting.CancelledMessage': '医生已取消本次呼叫。',
126
+ 'Medical.PatientWaiting.TimeoutMessage': '本次呼叫已超时,请等待医生重新发起。',
127
+ 'Medical.PatientWaiting.DoctorCalling': '医生正在呼叫',
128
+ 'Medical.PatientWaiting.InviteToConsultation': '{{doctor}} 邀请您进入视频问诊',
129
+ 'Medical.PatientWaiting.JoinLater': '稍后接入',
130
+ 'Medical.PatientWaiting.Joining': '接入中...',
131
+ 'Medical.PatientWaiting.JoinNow': '立即接入',
132
+ 'Medical.PatientWaiting.Subtitle': '视频问诊候诊中',
133
+ 'Medical.PatientWaiting.Title': '候诊中',
134
+ 'Medical.PatientWaiting.Description': '请保持页面停留,医生准备好后将发起视频呼叫。',
135
+ 'Medical.PatientWaiting.Flow': '问诊流程',
136
+ 'Medical.PatientWaiting.StepAppointment': '1. 预约成功',
137
+ 'Medical.PatientWaiting.StepAppointmentDesc': '已选择医生并提交预约',
138
+ 'Medical.PatientWaiting.StepWaiting': '2. 等待接诊(当前)',
139
+ 'Medical.PatientWaiting.StepWaitingDesc': '医生将很快接入视频',
140
+ 'Medical.PatientWaiting.StepVideo': '3. 视频问诊',
141
+ 'Medical.PatientWaiting.StepVideoDesc': '与医生面对面交流',
142
+ 'Medical.PatientWaiting.StepPrescription': '4. 获取处方',
143
+ 'Medical.PatientWaiting.StepPrescriptionDesc': '医生开具电子处方',
144
+ 'Medical.PatientWaiting.AppointmentDetails': '预约详情',
145
+ 'Medical.PatientWaiting.AppointmentTime': '预约时间',
146
+ 'Medical.PatientWaiting.AppointmentId': '预约编号',
147
+ 'Medical.PatientWaiting.ChiefComplaint': '主诉症状',
148
+ 'Medical.PatientWaiting.Tip1': '• 请保持手机网络畅通,医生接诊时会自动进入视频',
149
+ 'Medical.PatientWaiting.Tip2': '• 建议准备好既往病历、检查报告等资料',
150
+ 'Medical.PatientWaiting.Tip3': '• 请在安静、光线充足的环境中进行视频问诊',
151
+ 'Medical.PatientWaiting.Returning': '返回中...',
152
+ 'Medical.PatientWaiting.BackToDoctors': '返回医生列表',
153
+
154
+ 'Medical.Consultation.Title': '视频问诊工作台',
155
+ 'Medical.Consultation.AppointmentId': '预约编号:{{id}}',
156
+ 'Medical.Consultation.InCall': '通话中',
157
+ 'Medical.Consultation.WaitingPatient': '等待患者',
158
+ 'Medical.Consultation.NetworkGood': '网络良好',
159
+ 'Medical.Consultation.PatientAge': '{{gender}} · {{age}}岁',
160
+ 'Medical.Consultation.CallIdleHint': '点击呼叫患者,患者端将收到通知并自动接入',
161
+ 'Medical.Consultation.ConnectingPatient': '正在连接 {{patient}}',
162
+ 'Medical.Consultation.InvitePatientMessage': '{{doctor}}邀请您加入视频问诊',
163
+ 'Medical.Consultation.CallPatientFailed': '呼叫患者失败',
164
+ 'Medical.Consultation.CallCancelled': '本次呼叫已取消',
165
+ 'Medical.Consultation.CancelCallFailed': '取消呼叫失败,请重试',
166
+ 'Medical.Consultation.PatientAccepted': '{{patient}} 已接听',
167
+ 'Medical.Consultation.PatientRejected': '{{patient}} 拒绝了问诊邀请',
168
+ 'Medical.Consultation.PatientTimeout': '{{patient}} 未在规定时间内接听',
169
+ 'Medical.Consultation.PatientJoined': '{{patient}} 已接入房间',
170
+ 'Medical.Consultation.CallingPatient': '正在呼叫患者...',
171
+ 'Medical.Consultation.PendingPatient': '待接诊患者',
172
+ 'Medical.Consultation.CameraPreviewOff': '摄像头已关闭,可点击左下角按钮开启预览',
173
+ 'Medical.Consultation.Calling': '呼叫中...',
174
+ 'Medical.Consultation.CallPatient': '呼叫患者',
175
+ 'Medical.Consultation.Canceling': '取消中...',
176
+ 'Medical.Consultation.CancelCall': '取消呼叫',
177
+ 'Medical.Consultation.PatientResponding': '患者正在响应并自动接入',
178
+ 'Medical.Consultation.WaitPrimaryDoctor': '等待主治医生呼叫患者',
179
+ 'Medical.Consultation.PatientAvatarFallback': '患',
180
+ 'Medical.Consultation.ChiefComplaint': '主诉',
181
+ 'Medical.Consultation.AllergyHistory': '过敏史',
182
+ 'Medical.Consultation.MedicalHistory': '既往病史',
183
+ 'Medical.Consultation.Phone': '联系电话',
184
+ 'Medical.Consultation.FinishTitle': '确认结束问诊?',
185
+ 'Medical.Consultation.FinishMessage': '结束后患者会离开当前视频问诊,并进入问诊完成页。请确认诊疗内容已沟通完成。',
186
+ 'Medical.Consultation.ContinueConsultation': '继续问诊',
187
+ 'Medical.Consultation.ConfirmFinish': '确认结束',
188
+ 'Medical.Consultation.CameraOff': '{{role}}摄像头未开启',
189
+ 'Medical.Consultation.Speaker': '扬声器',
190
+ 'Medical.Consultation.Messages': '消息',
191
+ 'Medical.Consultation.PatientBottomHint': '请根据医生指导进行描述,诊疗结束后可查看电子处方',
192
+ 'Medical.Consultation.Transcription': '实时转写',
193
+ 'Medical.Consultation.NoTranscription': '暂无转写内容,医生开启实时转写后将显示在这里',
194
+ 'Medical.Consultation.AITranscribingTip': 'AI 自动转写中,仅供参考',
195
+ 'Medical.Consultation.TextChat': '文字聊天',
196
+ 'Medical.Consultation.DeviceRequest': '设备开启请求',
197
+ 'Medical.Consultation.DeviceInviteTitle': '{{sender}}邀请你开启{{device}}',
198
+ 'Medical.Consultation.InviteCancelled': '该邀请已被取消',
199
+ 'Medical.Consultation.InviteTimeout': '该邀请已超时',
200
+ 'Medical.Consultation.DeviceInviteAccepted': '已同意开启{{device}}',
201
+ 'Medical.Consultation.DeviceInviteDeclined': '已拒绝开启{{device}}',
202
+ 'Medical.Consultation.DeviceInviteProcessFailed': '处理邀请失败',
203
+
204
+ 'Medical.Finished.Title': '问诊详情',
205
+ 'Medical.Finished.Completed': '问诊已完成',
206
+ 'Medical.Finished.Thanks': '感谢您的信任,祝您早日康复',
207
+ 'Medical.Finished.Duration': '时长{{minutes}}分钟',
208
+ 'Medical.Finished.ResultExample': '结果示例',
209
+ 'Medical.Finished.ResultPlaceholder': '这里可展示客户业务系统回填的诊断结果',
210
+ 'Medical.Finished.PrescriptionExample': '处方示例',
211
+ 'Medical.Finished.RecordExample': '病历示例',
212
+ 'Medical.Finished.PrescriptionDataExample': '处方数据示例',
213
+ 'Medical.Finished.SampleNo': '示例编号:{{no}}',
214
+
215
+ 'Medical.Data.Title': '检查资料',
216
+ 'Medical.Data.Description': '患者上传的影像及检查报告',
217
+ 'Medical.Data.FileCount': '{{count}} 个文件',
218
+ 'Medical.Data.Upload': '上传检查资料',
219
+ 'Medical.Data.UploadHint': '支持 JPG、PNG、PDF,单个文件不超过10MB',
220
+ 'Medical.Data.EmptyTitle': '暂无检查资料',
221
+ 'Medical.Data.EmptyDesc': '患者可在移动端上传检查报告',
222
+ 'Medical.Data.SecurityTip': '所有资料将安全加密存储,仅医患双方可见',
223
+ 'Medical.Data.BloodRoutine': '血常规',
224
+ 'Medical.Data.CTImage': 'CT影像',
225
+ 'Medical.Data.XRay': 'X光片',
226
+ 'Medical.Data.ECG': '心电图',
227
+ 'Medical.Data.BloodRoutineReport': '血常规检查报告.pdf',
228
+ 'Medical.Data.ChestCTImage': '胸部CT影像.jpg',
229
+ 'Medical.Data.ECGReport': '心电图报告.pdf',
230
+
231
+ 'Medical.Prescription.Title': '处方表单示例',
232
+ 'Medical.Prescription.Description': '客户可替换为自有处方系统或审核流',
233
+ 'Medical.Prescription.AllergyWarning': '过敏史警告',
234
+ 'Medical.Prescription.Diagnosis': '诊断信息',
235
+ 'Medical.Prescription.DiagnosisPlaceholder': '请输入诊断(必填)',
236
+ 'Medical.Prescription.MedicineIndex': '药品 {{index}}',
237
+ 'Medical.Prescription.MedicineName': '药品名称 *',
238
+ 'Medical.Prescription.MedicineNamePlaceholder': '请输入药品名称',
239
+ 'Medical.Prescription.Spec': '规格',
240
+ 'Medical.Prescription.SpecPlaceholder': '如:0.25g*24粒',
241
+ 'Medical.Prescription.Dosage': '单次剂量',
242
+ 'Medical.Prescription.DosagePlaceholder': '如:1粒',
243
+ 'Medical.Prescription.Frequency': '频次',
244
+ 'Medical.Prescription.QD': '每日1次',
245
+ 'Medical.Prescription.BID': '每日2次',
246
+ 'Medical.Prescription.TID': '每日3次',
247
+ 'Medical.Prescription.QID': '每日4次',
248
+ 'Medical.Prescription.QN': '睡前',
249
+ 'Medical.Prescription.DurationDays': '用药天数',
250
+ 'Medical.Prescription.DayPlaceholder': '天',
251
+ 'Medical.Prescription.Quantity': '总量',
252
+ 'Medical.Prescription.AutoCalculate': '自动计算',
253
+ 'Medical.Prescription.Usage': '用法',
254
+ 'Medical.Prescription.Oral': '口服',
255
+ 'Medical.Prescription.External': '外用',
256
+ 'Medical.Prescription.Injection': '注射',
257
+ 'Medical.Prescription.Nebulization': '雾化吸入',
258
+ 'Medical.Prescription.AddMedicine': '添加药品',
259
+ 'Medical.Prescription.CommonMedicines': '常用药品',
260
+ 'Medical.Prescription.Guidance': '用药指导',
261
+ 'Medical.Prescription.Guidance1': '请按医嘱规定剂量和时间服药',
262
+ 'Medical.Prescription.Guidance2': '如出现不适请立即停药并联系医生',
263
+ 'Medical.Prescription.Guidance3': '妥善保存药品,注意有效期',
264
+ 'Medical.Prescription.FooterTip': '当前仅演示表单结构与提交流程,实际审核与购药逻辑建议接入客户系统',
265
+ 'Medical.Prescription.SubmitAlert': '已触发处方示例提交,请在上层接入客户业务系统',
266
+ 'Medical.Prescription.Amoxicillin': '阿莫西林胶囊',
267
+ 'Medical.Prescription.Ibuprofen': '布洛芬缓释胶囊',
268
+ 'Medical.Prescription.Ambroxol': '氨溴索口服液',
269
+ 'Medical.Prescription.Montmorillonite': '蒙脱石散',
270
+ 'Medical.Prescription.Antibiotic': '抗生素',
271
+ 'Medical.Prescription.Antipyretic': '解热镇痛',
272
+ 'Medical.Prescription.Expectorant': '化痰止咳',
273
+ 'Medical.Prescription.Antidiarrheal': '止泻',
274
+ 'Medical.Prescription.AmoxicillinSpec': '0.25g*24粒',
275
+ 'Medical.Prescription.IbuprofenSpec': '0.3g*20粒',
276
+ 'Medical.Prescription.AmbroxolSpec': '15mg/5ml*100ml',
277
+ 'Medical.Prescription.MontmorilloniteSpec': '3g*10袋',
278
+ 'Medical.Prescription.DosageOneCapsule': '1粒',
279
+ 'Medical.Prescription.Quantity21': '21粒',
280
+
281
+ 'Medical.Business.Workspace': '业务工作区',
282
+ 'Medical.Business.WorkspaceDesc': '中间区域用于承载 EMR、病历、处方、PACS 等客户自有业务系统。',
283
+ 'Medical.Business.RecordTab': '病历表单示例',
284
+ 'Medical.Business.PrescriptionTab': '处方表单示例',
285
+ 'Medical.Business.DataTab': '检查资料示例',
286
+ 'Medical.Business.SlotTab': '业务插槽',
287
+ 'Medical.Business.SlotDesc': '这里建议由客户前端团队接入自有的 EMR、HIS、PACS、处方审核或随访表单。音视频主链路、会诊协同、即时呼叫和聊天转录由 SDK 场景模板承载。',
288
+ 'Medical.Business.Left': '左侧',
289
+ 'Medical.Business.Center': '中间',
290
+ 'Medical.Business.Right': '右侧',
291
+ 'Medical.Business.LeftDesc': '音视频画面与设备控制',
292
+ 'Medical.Business.CenterDesc': '客户业务系统插槽',
293
+ 'Medical.Business.RightDesc': '会诊协同、聊天、转录、成员管理',
294
+ 'Medical.Business.EMRHISPACSSlot': 'EMR / HIS / PACS 业务插槽',
295
+
296
+ 'Medical.Record.ReplaceDesc': '客户可替换为自有 EMR / HIS 表单',
297
+ 'Medical.Record.SlotExample': '业务插槽示例',
298
+ 'Medical.Record.PatientLabel': '患者:',
299
+ 'Medical.Record.PresentIllness': '现病史',
300
+ 'Medical.Record.PastHistory': '既往史',
301
+ 'Medical.Record.PhysicalExam': '体格检查',
302
+ 'Medical.Record.Temperature': '体温 (℃)',
303
+ 'Medical.Record.Pulse': '脉搏 (次/分)',
304
+ 'Medical.Record.BloodPressure': '血压 (mmHg)',
305
+ 'Medical.Record.Respiration': '呼吸 (次/分)',
306
+ 'Medical.Record.AuxiliaryExam': '辅助检查',
307
+ 'Medical.Record.InitialDiagnosis': '初步诊断',
308
+ 'Medical.Record.ICD10': '查询ICD-10编码',
309
+ 'Medical.Record.Treatment': '处理意见',
310
+ 'Medical.Record.FollowUp': '复诊建议',
311
+ 'Medical.Record.ChiefComplaintPlaceholder': '请描述患者主要症状及持续时间',
312
+ 'Medical.Record.PresentIllnessPlaceholder': '详细描述发病经过、症状变化、既往诊疗情况等',
313
+ 'Medical.Record.PastHistoryPlaceholder': '既往疾病史、手术史、外伤史等',
314
+ 'Medical.Record.AllergyPlaceholder': '药物过敏、食物过敏等,如无请填写"无"',
315
+ 'Medical.Record.AuxiliaryExamPlaceholder': '血常规、影像学检查等结果',
316
+ 'Medical.Record.DiagnosisPlaceholder': '请输入诊断结果',
317
+ 'Medical.Record.TreatmentPlaceholder': '治疗方案、医嘱、注意事项等',
318
+ 'Medical.Record.SubmitDemo': '提交示例数据',
319
+ 'Medical.Record.Preview': '预览',
320
+ 'Medical.Record.FooterTip': '当前仅演示表单结构与提交流程,实际提交逻辑建议接入客户业务系统',
321
+ 'Medical.Record.Option3Days': '3天后',
322
+ 'Medical.Record.Option1Week': '1周后',
323
+ 'Medical.Record.Option2Weeks': '2周后',
324
+ 'Medical.Record.Option1Month': '1个月后',
325
+ 'Medical.Record.SaveAlert': '已触发病历示例提交,请在上层接入客户业务系统',
326
+
327
+ 'Medical.Manage.Chat': '聊天',
328
+ 'Medical.Manage.Transcribe': '转写',
329
+ 'Medical.Manage.Members': '成员',
330
+ 'Medical.Manage.PendingJoin': '待加入',
331
+ 'Medical.Manage.PrimaryDoctor': '主诊医生',
332
+ 'Medical.Manage.UnknownMember': '未知成员',
333
+ 'Medical.Manage.MemberManagement': '成员管理',
334
+ 'Medical.Manage.MemberCount': '{{count}} 人',
335
+ 'Medical.Manage.InviteDoctor': '邀请会诊医生',
336
+ 'Medical.Manage.KickMember': '踢出成员',
337
+ 'Medical.Manage.ClosePatientCamera': '关闭患者摄像头',
338
+ 'Medical.Manage.InvitePatientCamera': '邀请患者打开摄像头',
339
+ 'Medical.Manage.ClosePatientMicrophone': '关闭患者麦克风',
340
+ 'Medical.Manage.InvitePatientMicrophone': '邀请患者打开麦克风',
341
+ 'Medical.Manage.CancelInvite': '取消邀请',
342
+ 'Medical.Manage.PermissionTip1': '主治医生拥有邀请、移出和患者设备管理权限',
343
+ 'Medical.Manage.PermissionTip2': '会诊医生可发言、聊天和查看转写',
344
+ 'Medical.Manage.PermissionTip3': '患者仅可参与视频通话',
345
+ 'Medical.Manage.TranscriptionTitle': '实时语音转写',
346
+ 'Medical.Manage.Transcribing': '转写中',
347
+ 'Medical.Manage.StartTranscription': '开启转写',
348
+ 'Medical.Manage.RealtimeTranscribing': '实时转写中',
349
+ 'Medical.Manage.TranscriptCount': '{{count}}条对话',
350
+ 'Medical.Manage.WaitingSpeech': '等待语音输入...',
351
+ 'Medical.Manage.ClickStartTranscription': '点击上方按钮开启实时转写',
352
+ 'Medical.Manage.TranscriptionFooterTip': '支持实时转写内容复制与导出',
353
+ 'Medical.Manage.SearchDoctorPlaceholder': '搜索医生姓名或科室',
354
+ 'Medical.Manage.NoInviteDoctor': '未找到可邀请的医生',
355
+ 'Medical.Manage.TranscriberClosed': '实时转写已关闭',
356
+ 'Medical.Manage.TranscriberStarted': '实时转写已开启',
357
+ 'Medical.Manage.TranscriberFailed': '转写操作失败',
358
+ 'Medical.Manage.NoCopyContent': '暂无可复制内容',
359
+ 'Medical.Manage.Copied': '内容已复制到剪贴板',
360
+ 'Medical.Manage.CopyFailed': '复制失败,请检查浏览器权限',
361
+ 'Medical.Manage.NoExportContent': '暂无可导出内容',
362
+ 'Medical.Manage.Exported': '内容已导出',
363
+ 'Medical.Manage.NoInvitePermission': '当前角色无权邀请会诊医生',
364
+ 'Medical.Manage.NotInRoomInvite': '当前不在房间中,暂时无法邀请会诊医生',
365
+ 'Medical.Manage.InviteExtension': '{{doctor}}邀请您加入会诊',
366
+ 'Medical.Manage.InviteSent': '邀请已发送,等待对方接听',
367
+ 'Medical.Manage.InviteFailed': '邀请失败,请稍后重试',
368
+ 'Medical.Manage.NoCancelInvitePermission': '当前角色无权取消会诊邀请',
369
+ 'Medical.Manage.NotInRoomCancelInvite': '当前不在房间中,暂时无法取消邀请',
370
+ 'Medical.Manage.InviteCancelled': '已取消邀请',
371
+ 'Medical.Manage.CancelInviteFailed': '取消邀请失败,请稍后重试',
372
+ 'Medical.Manage.InvitedPatientOpenDevice': '已邀请患者开启{{device}}',
373
+ 'Medical.Manage.InviteOpenDeviceFailed': '邀请开启{{device}}失败',
374
+ 'Medical.Manage.CancelledPatientDeviceInvite': '已取消患者{{device}}邀请',
375
+ 'Medical.Manage.CancelDeviceInviteFailed': '取消{{device}}邀请失败',
376
+ 'Medical.Manage.ClosedPatientDevice': '已关闭患者{{device}}',
377
+ 'Medical.Manage.CloseDeviceFailed': '关闭{{device}}失败',
378
+ 'Medical.Manage.NoKickPermission': '当前角色无权移出成员',
379
+ 'Medical.Manage.MemberKicked': '成员已移出房间',
380
+ 'Medical.Manage.KickFailed': '移出成员失败,请稍后重试',
381
+ 'Medical.Manage.PatientAcceptedDeviceInvite': '患者已接受{{device}}邀请',
382
+ 'Medical.Manage.PatientDeclinedDeviceInvite': '患者已拒绝{{device}}邀请',
383
+ 'Medical.Manage.DeviceInviteTimeout': '{{device}}邀请已超时',
384
+ 'Medical.Manage.DeviceInviteCancelled': '{{device}}邀请已取消',
385
+ 'Medical.Chat.EncryptedNotice': '对话内容已加密,可直接与患者实时沟通。当前仅展示会诊场景文本消息。',
386
+ 'Medical.Chat.Empty': '暂无聊天消息',
387
+ 'Medical.Chat.Initializing': '正在初始化会话...',
388
+ 'Medical.Chat.InputPlaceholder': '输入消息...',
389
+ 'Medical.Chat.MessageCount': '{{count}} 条消息',
390
+ 'Medical.Chat.SessionInitFailed': '会话初始化失败',
391
+ 'Medical.Chat.MessageSendFailed': '消息发送失败',
392
+
393
+ 'Medical.Device.Microphone': '麦克风',
394
+ 'Medical.Device.Camera': '摄像头',
395
+ 'Medical.Device.OpenFailed': '{{device}}开启失败。请检查浏览器是否允许访问{{device}}、系统隐私权限是否开启,并确认设备未被其他应用占用。{{message}}',
396
+ 'Medical.Device.ErrorInfo': '错误信息:{{message}}',
397
+ 'Medical.Device.PermissionHint': '{{devices}}未成功开启。请检查浏览器权限、系统隐私设置,并确认设备未被其他应用占用。',
398
+
399
+ 'Medical.Message.ImageMessage': '[图片消息]',
400
+ 'Medical.Message.VideoMessage': '[视频消息]',
401
+ 'Medical.Message.FileMessage': '[文件消息]',
402
+ 'Medical.Message.UnsupportedMessage': '[暂不支持的消息类型]',
403
+
404
+ 'Medical.Config.SDKConfigError': '请先在 src/config/basic-info-config.ts 中配置 SDKAPPID 和 SDKSECRETKEY',
405
+ 'Medical.Config.SDKConfigErrorWithUserSig': '请先在 src/config/basic-info-config.ts 中配置 SDKAPPID 和 SDKSECRETKEY,正式环境请由业务服务端签发 UserSig',
406
+
407
+ 'Medical.Member.ConfirmKickTitle': '确认踢出成员',
408
+ 'Medical.Member.ConfirmKickMessage': '确定将 {{userName}} 移出当前问诊房间吗?',
409
+ 'Medical.Member.ConfirmButton': '确认踢出',
410
+ 'Medical.Member.CancelButton': '取消',
411
+ 'Medical.Member.ProcessingButton': '处理中...',
412
+
413
+ 'Medical.LanguageSwitch.ChineseLang': '中文',
414
+
415
+ 'Medical.Mock.DoctorLi': '李医生',
416
+ 'Medical.Mock.DoctorWang': '王医生',
417
+ 'Medical.Mock.DoctorZhang': '张医生',
418
+ 'Medical.Mock.PatientZhang': '张晓明',
419
+ 'Medical.Mock.PatientLi': '李美华',
420
+ 'Medical.Mock.ChiefPhysician': '主任医师',
421
+ 'Medical.Mock.AssociateChiefPhysician': '副主任医师',
422
+ 'Medical.Mock.AttendingPhysician': '主治医师',
423
+ 'Medical.Mock.Cardiology': '心内科',
424
+ 'Medical.Mock.Respiratory': '呼吸内科',
425
+ 'Medical.Mock.Gastroenterology': '消化内科',
426
+ 'Medical.Mock.TertiaryHospital': '示例三甲医院',
427
+ 'Medical.Mock.InternetHospital': '示例互联网医院',
428
+ 'Medical.Mock.SpecialtyHospital': '示例专科医院',
429
+ 'Medical.Mock.Years20': '20年',
430
+ 'Medical.Mock.Years15': '15年',
431
+ 'Medical.Mock.Years10': '10年',
432
+ 'Medical.Mock.Hypertension': '高血压',
433
+ 'Medical.Mock.Coronary': '冠心病',
434
+ 'Medical.Mock.Arrhythmia': '心律失常',
435
+ 'Medical.Mock.Cough': '咳嗽',
436
+ 'Medical.Mock.Asthma': '哮喘',
437
+ 'Medical.Mock.Pneumonia': '肺炎',
438
+ 'Medical.Mock.Gastritis': '胃炎',
439
+ 'Medical.Mock.GastricUlcer': '胃溃疡',
440
+ 'Medical.Mock.Indigestion': '消化不良',
441
+ 'Medical.Mock.ChronicCare': '复诊问诊与慢病管理',
442
+ 'Medical.Mock.RespiratoryFollowUp': '呼吸系统在线复诊',
443
+ 'Medical.Mock.GastroFollowUp': '胃肠健康随访',
444
+ 'Medical.Mock.Male': '男',
445
+ 'Medical.Mock.Female': '女',
446
+ 'Medical.Mock.None': '无',
447
+ 'Medical.Mock.Unknown': '未知',
448
+ 'Medical.Mock.CoughFever': '持续咳嗽、低热 3 天',
449
+ 'Medical.Mock.NightCough': '夜间咳嗽、轻微气喘',
450
+ 'Medical.Mock.Reflux': '饭后胃胀、反酸',
451
+ 'Medical.Mock.DizzyPalpitations': '头晕、心悸',
452
+ 'Medical.Mock.ThroatCough': '反复咽痒、清晨咳嗽',
453
+ 'Medical.Mock.AbdominalPain': '腹部隐痛、食欲下降',
454
+ 'Medical.Mock.PenicillinAllergy': '青霉素过敏',
455
+ 'Medical.Mock.PollenAllergy': '花粉过敏',
456
+ 'Medical.Mock.NoMajorHistory': '无重大疾病史',
457
+ 'Medical.Mock.AllergicRhinitis': '过敏性鼻炎',
458
+ 'Medical.Mock.ChronicGastritis': '慢性胃炎',
459
+ 'Medical.Mock.ThyroidNodule': '甲状腺结节',
460
+ 'Medical.Mock.MildAsthma': '轻度哮喘',
461
+ 'Medical.Mock.IntegrationChiefComplaint': '示例主诉,请替换为客户预约系统返回的诊前信息',
462
+ 'Medical.Mock.IntegrationBusinessData': '请替换为客户业务数据',
463
+ };
@@ -0,0 +1,12 @@
1
+ import { createApp } from 'vue';
2
+ import App from './App.vue';
3
+ import router from './router';
4
+ import { bootstrapSession } from './utils/auth';
5
+ import './styles/index.css';
6
+
7
+ async function bootstrapApp() {
8
+ await bootstrapSession();
9
+ createApp(App).use(router).mount('#app');
10
+ }
11
+
12
+ void bootstrapApp();