@yadsh/dsh-qa-surface 0.16.0 → 0.18.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 (325) hide show
  1. package/README.md +34 -5
  2. package/compatibility.json +1 -1
  3. package/lib/account-remotes.js +13 -0
  4. package/lib/account-remotes.js.map +1 -1
  5. package/lib/accounts/database.js +120 -4
  6. package/lib/accounts/database.js.map +1 -1
  7. package/lib/accounts/file.js.map +1 -1
  8. package/lib/accounts/store.js +131 -5
  9. package/lib/accounts/store.js.map +1 -1
  10. package/lib/accounts/token.js +8 -2
  11. package/lib/accounts/token.js.map +1 -1
  12. package/lib/admin/metrics.js +15 -2
  13. package/lib/admin/metrics.js.map +1 -1
  14. package/lib/admin/read-budget.js +28 -0
  15. package/lib/admin/read-budget.js.map +1 -0
  16. package/lib/admin/service.js +135 -40
  17. package/lib/admin/service.js.map +1 -1
  18. package/lib/admin/session-log.js +63 -4
  19. package/lib/admin/session-log.js.map +1 -1
  20. package/lib/chat-sharing/native-fence.js +31 -2
  21. package/lib/chat-sharing/native-fence.js.map +1 -1
  22. package/lib/chat-sharing/store.js +9 -3
  23. package/lib/chat-sharing/store.js.map +1 -1
  24. package/lib/chat-sharing/transport.js +74 -13
  25. package/lib/chat-sharing/transport.js.map +1 -1
  26. package/lib/chat-sharing/uploads.js +79 -6
  27. package/lib/chat-sharing/uploads.js.map +1 -1
  28. package/lib/cli.js +13 -0
  29. package/lib/cli.js.map +1 -1
  30. package/lib/client/QaAccountsController.js +79 -0
  31. package/lib/client/QaAccountsController.js.map +1 -1
  32. package/lib/client/QaRouteController.js +3 -1
  33. package/lib/client/QaRouteController.js.map +1 -1
  34. package/lib/client/QaSessionController.js +102 -29
  35. package/lib/client/QaSessionController.js.map +1 -1
  36. package/lib/client/QaSurface.js +89 -19
  37. package/lib/client/QaSurface.js.map +1 -1
  38. package/lib/client/QaTranscriptAdapter.js +15 -2
  39. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  40. package/lib/client/account-sessions.js +74 -8
  41. package/lib/client/account-sessions.js.map +1 -1
  42. package/lib/client/admin/CapabilityPicker.js +50 -0
  43. package/lib/client/admin/CapabilityPicker.js.map +1 -0
  44. package/lib/client/admin/CoverageNotice.js +9 -0
  45. package/lib/client/admin/CoverageNotice.js.map +1 -0
  46. package/lib/client/admin/QaAdmin.js +3 -150
  47. package/lib/client/admin/QaAdmin.js.map +1 -1
  48. package/lib/client/admin/RoleEditor.js +46 -0
  49. package/lib/client/admin/RoleEditor.js.map +1 -0
  50. package/lib/client/admin/capability-selection.js +63 -0
  51. package/lib/client/admin/capability-selection.js.map +1 -0
  52. package/lib/client/admin/pages/Conversations.js +35 -17
  53. package/lib/client/admin/pages/Conversations.js.map +1 -1
  54. package/lib/client/admin/pages/Overview.js +3 -2
  55. package/lib/client/admin/pages/Overview.js.map +1 -1
  56. package/lib/client/admin/pages/Quality.js +77 -20
  57. package/lib/client/admin/pages/Quality.js.map +1 -1
  58. package/lib/client/admin/pages/SkillFiles.js +14 -3
  59. package/lib/client/admin/pages/SkillFiles.js.map +1 -1
  60. package/lib/client/admin/shared.js +68 -3
  61. package/lib/client/admin/shared.js.map +1 -1
  62. package/lib/client/answer-review.js +89 -0
  63. package/lib/client/answer-review.js.map +1 -0
  64. package/lib/client/chat-artifacts.js +1 -0
  65. package/lib/client/chat-artifacts.js.map +1 -1
  66. package/lib/client/components/QaAnswerReviewStatus.js +45 -0
  67. package/lib/client/components/QaAnswerReviewStatus.js.map +1 -0
  68. package/lib/client/components/QaAuthGate.js +31 -28
  69. package/lib/client/components/QaAuthGate.js.map +1 -1
  70. package/lib/client/components/QaChangelog.js +79 -0
  71. package/lib/client/components/QaChangelog.js.map +1 -1
  72. package/lib/client/components/QaChatActions.js +52 -0
  73. package/lib/client/components/QaChatActions.js.map +1 -0
  74. package/lib/client/components/QaChatSharing.js +22 -19
  75. package/lib/client/components/QaChatSharing.js.map +1 -1
  76. package/lib/client/components/QaComposer.js +27 -4
  77. package/lib/client/components/QaComposer.js.map +1 -1
  78. package/lib/client/components/QaFormItem.js +63 -0
  79. package/lib/client/components/QaFormItem.js.map +1 -0
  80. package/lib/client/components/QaInputForm.js +281 -0
  81. package/lib/client/components/QaInputForm.js.map +1 -0
  82. package/lib/client/components/QaMarkdownPreview.js +86 -0
  83. package/lib/client/components/QaMarkdownPreview.js.map +1 -0
  84. package/lib/client/components/QaMessage.js +8 -2
  85. package/lib/client/components/QaMessage.js.map +1 -1
  86. package/lib/client/components/QaModal.js +34 -4
  87. package/lib/client/components/QaModal.js.map +1 -1
  88. package/lib/client/components/QaRightRail.js +6 -4
  89. package/lib/client/components/QaRightRail.js.map +1 -1
  90. package/lib/client/components/QaRightRailResize.js +129 -0
  91. package/lib/client/components/QaRightRailResize.js.map +1 -0
  92. package/lib/client/components/QaSidebar.js +10 -1
  93. package/lib/client/components/QaSidebar.js.map +1 -1
  94. package/lib/client/components/QaSourceFilters.js +22 -0
  95. package/lib/client/components/QaSourceFilters.js.map +1 -0
  96. package/lib/client/components/QaSourcesPanel.js +57 -13
  97. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  98. package/lib/client/components/QaSpreadsheetPreview.js +56 -0
  99. package/lib/client/components/QaSpreadsheetPreview.js.map +1 -0
  100. package/lib/client/components/QaWelcomeNotice.js +2 -2
  101. package/lib/client/components/QaWelcomeNotice.js.map +1 -1
  102. package/lib/client/components/QaWorkspaceBrowser.js +22 -9
  103. package/lib/client/components/QaWorkspaceBrowser.js.map +1 -1
  104. package/lib/client/components/QaZoomImage.js +56 -0
  105. package/lib/client/components/QaZoomImage.js.map +1 -0
  106. package/lib/client/components/source-refs.js +18 -4
  107. package/lib/client/components/source-refs.js.map +1 -1
  108. package/lib/client/forms-styles.js +14 -0
  109. package/lib/client/forms-styles.js.map +1 -0
  110. package/lib/client/forms.js +40 -0
  111. package/lib/client/forms.js.map +1 -0
  112. package/lib/client/index.js +31 -3
  113. package/lib/client/index.js.map +1 -1
  114. package/lib/client/markdown/SourceImage.js +52 -0
  115. package/lib/client/markdown/SourceImage.js.map +1 -0
  116. package/lib/client/markdown/blocks.js +150 -115
  117. package/lib/client/markdown/blocks.js.map +1 -1
  118. package/lib/client/markdown/render.js +23 -5
  119. package/lib/client/markdown/render.js.map +1 -1
  120. package/lib/client/markdown/source-chip.js +2 -1
  121. package/lib/client/markdown/source-chip.js.map +1 -1
  122. package/lib/client/oidc-browser.js +39 -0
  123. package/lib/client/oidc-browser.js.map +1 -0
  124. package/lib/client/panels/PanelHost.js +23 -1
  125. package/lib/client/panels/PanelHost.js.map +1 -1
  126. package/lib/client/settings/sections/interface.js +2 -1
  127. package/lib/client/settings/sections/interface.js.map +1 -1
  128. package/lib/client/settings/sections/sources.js +1 -1
  129. package/lib/client/settings/sections/sources.js.map +1 -1
  130. package/lib/client/settings/sections/status.js +3 -1
  131. package/lib/client/settings/sections/status.js.map +1 -1
  132. package/lib/client/settings/styles.js +18 -28
  133. package/lib/client/settings/styles.js.map +1 -1
  134. package/lib/client/source-filters-styles.js +11 -0
  135. package/lib/client/source-filters-styles.js.map +1 -0
  136. package/lib/client/styles.js +56 -5
  137. package/lib/client/styles.js.map +1 -1
  138. package/lib/client/types.js.map +1 -1
  139. package/lib/client/use-right-rail.js +1 -1
  140. package/lib/client/use-right-rail.js.map +1 -1
  141. package/lib/client/user-settings/IntegrationTokensPage.js +30 -6
  142. package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -1
  143. package/lib/client.js +540 -71128
  144. package/lib/client.js.map +1 -1
  145. package/lib/config-resolvers/accounts.js +5 -4
  146. package/lib/config-resolvers/accounts.js.map +1 -1
  147. package/lib/config-resolvers/defaults.js +20 -3
  148. package/lib/config-resolvers/defaults.js.map +1 -1
  149. package/lib/config-resolvers/oidc.js +53 -0
  150. package/lib/config-resolvers/oidc.js.map +1 -0
  151. package/lib/config-resolvers/sources.js +2 -0
  152. package/lib/config-resolvers/sources.js.map +1 -1
  153. package/lib/config.js +74 -0
  154. package/lib/config.js.map +1 -1
  155. package/lib/forms/attachments.js +214 -0
  156. package/lib/forms/attachments.js.map +1 -0
  157. package/lib/forms/errors.js +37 -0
  158. package/lib/forms/errors.js.map +1 -0
  159. package/lib/forms/fingerprint.js +21 -0
  160. package/lib/forms/fingerprint.js.map +1 -0
  161. package/lib/forms/gate.js +125 -0
  162. package/lib/forms/gate.js.map +1 -0
  163. package/lib/forms/schema.js +182 -0
  164. package/lib/forms/schema.js.map +1 -0
  165. package/lib/forms/service.js +220 -0
  166. package/lib/forms/service.js.map +1 -0
  167. package/lib/forms/store.js +194 -0
  168. package/lib/forms/store.js.map +1 -0
  169. package/lib/forms/types.js +2 -0
  170. package/lib/forms/types.js.map +1 -0
  171. package/lib/forms/validation.js +113 -0
  172. package/lib/forms/validation.js.map +1 -0
  173. package/lib/index.js +276 -5
  174. package/lib/index.js.map +1 -1
  175. package/lib/integration/host-runner.js +1 -0
  176. package/lib/integration/host-runner.js.map +1 -1
  177. package/lib/integration/question-policy.js +126 -0
  178. package/lib/integration/question-policy.js.map +1 -0
  179. package/lib/integration/service.js +2 -0
  180. package/lib/integration/service.js.map +1 -1
  181. package/lib/llm-identity.js +27 -0
  182. package/lib/llm-identity.js.map +1 -0
  183. package/lib/markdown-frontmatter.js +47 -0
  184. package/lib/markdown-frontmatter.js.map +1 -0
  185. package/lib/markdown-images.js +33 -0
  186. package/lib/markdown-images.js.map +1 -0
  187. package/lib/oidc/http.js +30 -0
  188. package/lib/oidc/http.js.map +1 -0
  189. package/lib/oidc/service.js +250 -0
  190. package/lib/oidc/service.js.map +1 -0
  191. package/lib/prompt-notes.js +1 -1
  192. package/lib/prompt-notes.js.map +1 -1
  193. package/lib/provenance/collector.js +2 -0
  194. package/lib/provenance/collector.js.map +1 -1
  195. package/lib/provenance/connectors.js +25 -19
  196. package/lib/provenance/connectors.js.map +1 -1
  197. package/lib/provenance/dedupe.js +17 -0
  198. package/lib/provenance/dedupe.js.map +1 -1
  199. package/lib/provenance/document-preview.js +12 -2
  200. package/lib/provenance/document-preview.js.map +1 -1
  201. package/lib/provenance/extractors.js +23 -5
  202. package/lib/provenance/extractors.js.map +1 -1
  203. package/lib/provenance/file-preview.js +9 -2
  204. package/lib/provenance/file-preview.js.map +1 -1
  205. package/lib/provenance/integration-extractor.js +5 -6
  206. package/lib/provenance/integration-extractor.js.map +1 -1
  207. package/lib/provenance/snapshot-store.js +2 -0
  208. package/lib/provenance/snapshot-store.js.map +1 -1
  209. package/lib/provenance/source-content.js +103 -0
  210. package/lib/provenance/source-content.js.map +1 -0
  211. package/lib/provenance/source-image.js +57 -0
  212. package/lib/provenance/source-image.js.map +1 -0
  213. package/lib/provenance/spreadsheet-preview.js +52 -0
  214. package/lib/provenance/spreadsheet-preview.js.map +1 -0
  215. package/lib/qa-tools/activation-manager.js +24 -2
  216. package/lib/qa-tools/activation-manager.js.map +1 -1
  217. package/lib/qa-tools/catalog.js +11 -1
  218. package/lib/qa-tools/catalog.js.map +1 -1
  219. package/lib/qa-tools/index.js +27 -0
  220. package/lib/qa-tools/index.js.map +1 -1
  221. package/lib/qa-tools/request-user-form.js +121 -0
  222. package/lib/qa-tools/request-user-form.js.map +1 -0
  223. package/lib/questions.js +6 -1
  224. package/lib/questions.js.map +1 -1
  225. package/lib/resolve-config.js +2 -0
  226. package/lib/resolve-config.js.map +1 -1
  227. package/lib/secure-session.js +14 -8
  228. package/lib/secure-session.js.map +1 -1
  229. package/lib/shared/documents.js +12 -0
  230. package/lib/shared/documents.js.map +1 -1
  231. package/lib/typert.host.js +5136 -1341
  232. package/lib/typert.remote-client.d.ts +141 -7
  233. package/lib/typert.remote-client.js +5896 -2255
  234. package/lib/types/account-remotes.d.ts +3 -0
  235. package/lib/types/accounts/database.d.ts +13 -0
  236. package/lib/types/accounts/file.d.ts +2 -0
  237. package/lib/types/accounts/store.d.ts +23 -1
  238. package/lib/types/accounts/token.d.ts +3 -1
  239. package/lib/types/admin/metrics.d.ts +5 -1
  240. package/lib/types/admin/read-budget.d.ts +8 -0
  241. package/lib/types/admin/service.d.ts +17 -0
  242. package/lib/types/admin/session-log.d.ts +30 -1
  243. package/lib/types/answer-review.js +2 -0
  244. package/lib/types/answer-review.js.map +1 -0
  245. package/lib/types/chat-sharing/store.d.ts +1 -0
  246. package/lib/types/chat-sharing/transport.d.ts +1 -0
  247. package/lib/types/chat-sharing/uploads.d.ts +2 -1
  248. package/lib/types/client/QaAccountsController.d.ts +5 -0
  249. package/lib/types/client/QaRouteController.d.ts +1 -0
  250. package/lib/types/client/QaSessionController.d.ts +12 -3
  251. package/lib/types/client/QaSurface.d.ts +2 -0
  252. package/lib/types/client/admin/CapabilityPicker.d.ts +14 -0
  253. package/lib/types/client/admin/CoverageNotice.d.ts +6 -0
  254. package/lib/types/client/admin/RoleEditor.d.ts +15 -0
  255. package/lib/types/client/admin/capability-selection.d.ts +27 -0
  256. package/lib/types/client/admin/shared.d.ts +39 -1
  257. package/lib/types/client/answer-review.d.ts +16 -0
  258. package/lib/types/client/components/QaAnswerReviewStatus.d.ts +8 -0
  259. package/lib/types/client/components/QaAuthGate.d.ts +2 -0
  260. package/lib/types/client/components/QaChatActions.d.ts +7 -0
  261. package/lib/types/client/components/QaChatSharing.d.ts +4 -2
  262. package/lib/types/client/components/QaFormItem.d.ts +20 -0
  263. package/lib/types/client/components/QaInputForm.d.ts +18 -0
  264. package/lib/types/client/components/QaMarkdownPreview.d.ts +13 -0
  265. package/lib/types/client/components/QaModal.d.ts +9 -0
  266. package/lib/types/client/components/QaRightRail.d.ts +3 -2
  267. package/lib/types/client/components/QaRightRailResize.d.ts +9 -0
  268. package/lib/types/client/components/QaSidebar.d.ts +2 -0
  269. package/lib/types/client/components/QaSourceFilters.d.ts +12 -0
  270. package/lib/types/client/components/QaSpreadsheetPreview.d.ts +8 -0
  271. package/lib/types/client/components/QaWelcomeNotice.d.ts +1 -1
  272. package/lib/types/client/components/QaZoomImage.d.ts +38 -0
  273. package/lib/types/client/forms-styles.d.ts +2 -0
  274. package/lib/types/client/forms.d.ts +23 -0
  275. package/lib/types/client/markdown/SourceImage.d.ts +7 -0
  276. package/lib/types/client/markdown/blocks.d.ts +8 -1
  277. package/lib/types/client/markdown/render.d.ts +5 -1
  278. package/lib/types/client/markdown/source-chip.d.ts +1 -0
  279. package/lib/types/client/oidc-browser.d.ts +12 -0
  280. package/lib/types/client/settings/styles.d.ts +2 -5
  281. package/lib/types/client/source-filters-styles.d.ts +2 -0
  282. package/lib/types/client/types.d.ts +18 -6
  283. package/lib/types/config-resolvers/oidc.d.ts +3 -0
  284. package/lib/types/forms/attachments.d.ts +48 -0
  285. package/lib/types/forms/errors.d.ts +11 -0
  286. package/lib/types/forms/fingerprint.d.ts +9 -0
  287. package/lib/types/forms/gate.d.ts +33 -0
  288. package/lib/types/forms/schema.d.ts +72 -0
  289. package/lib/types/forms/service.d.ts +15 -0
  290. package/lib/types/forms/store.d.ts +25 -0
  291. package/lib/types/forms/types.d.ts +215 -0
  292. package/lib/types/forms/validation.d.ts +20 -0
  293. package/lib/types/index.d.ts +36 -3
  294. package/lib/types/integration/contract.d.ts +1 -0
  295. package/lib/types/integration/question-policy.d.ts +20 -0
  296. package/lib/types/integration/service.d.ts +1 -0
  297. package/lib/types/llm-identity.d.ts +20 -0
  298. package/lib/types/markdown-frontmatter.d.ts +10 -0
  299. package/lib/types/markdown-images.d.ts +3 -0
  300. package/lib/types/oidc/http.d.ts +5 -0
  301. package/lib/types/oidc/service.d.ts +30 -0
  302. package/lib/types/oidc.js +2 -0
  303. package/lib/types/oidc.js.map +1 -0
  304. package/lib/types/prompt-notes.d.ts +1 -1
  305. package/lib/types/provenance/document-preview.d.ts +3 -2
  306. package/lib/types/provenance/file-preview.d.ts +2 -1
  307. package/lib/types/provenance/source-content.d.ts +19 -0
  308. package/lib/types/provenance/source-image.d.ts +4 -0
  309. package/lib/types/provenance/spreadsheet-preview.d.ts +5 -0
  310. package/lib/types/provenance/types.d.ts +3 -0
  311. package/lib/types/qa-tools/activation-manager.d.ts +5 -0
  312. package/lib/types/qa-tools/catalog.d.ts +4 -1
  313. package/lib/types/qa-tools/index.d.ts +5 -1
  314. package/lib/types/qa-tools/request-user-form.d.ts +5 -0
  315. package/lib/types/questions.d.ts +2 -1
  316. package/lib/types/secure-session.d.ts +1 -0
  317. package/lib/types/shared/documents.d.ts +2 -0
  318. package/lib/types/types/accounts.d.ts +7 -1
  319. package/lib/types/types/admin.d.ts +6 -0
  320. package/lib/types/types/answer-review.d.ts +11 -0
  321. package/lib/types/types/config.d.ts +9 -0
  322. package/lib/types/types/oidc.d.ts +36 -0
  323. package/lib/types/types/session.d.ts +18 -3
  324. package/lib/types/types.d.ts +3 -0
  325. package/package.json +58 -56
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useState } from "react";
3
3
  import { REVIEW_STATUS_LABELS, TRANSCRIPT_UNAVAILABLE_LABELS, formatCount, formatDuration, formatStamp, } from "../copy.js";
4
- import { Badge, Empty, FilterField, Pager, Stamp, adminErrorMessage, useAdminResource, useRequestSlot, } from "../shared.js";
4
+ import { Badge, Empty, FilterField, Pager, Stamp, adminErrorMessage, adminTimeoutMessage, callWithDeadline, useAdminResource, useRequestSlot, } from "../shared.js";
5
5
  import { ReviewPanel } from "./Review.js";
6
6
  const PAGE_SIZE = 25;
7
7
  /** Coarse status tone: what a triage list needs to scan at a glance. */
@@ -40,20 +40,38 @@ export function AdminConversations(props) {
40
40
  from: from === "" ? null : new Date(from).toISOString(),
41
41
  to: to === "" ? null : new Date(`${to}T23:59:59.999Z`).toISOString(),
42
42
  };
43
- const result = await props.api.conversations(props.token, query, next, PAGE_SIZE, controller.signal);
44
- // A page the reviewer changed or left while this was still being read on
45
- // the server has no answer worth showing.
46
- if (controller.signal.aborted)
47
- return;
48
- setLoading(false);
49
- if (!result.ok) {
50
- setError(adminErrorMessage(result.error));
51
- return;
43
+ try {
44
+ // The Host reads a log per row (and per search candidate). Without a
45
+ // deadline an answer that never arrives left the page on «Загружаю…»
46
+ // forever, even though the request had been accepted.
47
+ const outcome = await callWithDeadline((signal) => props.api.conversations(props.token, query, next, PAGE_SIZE, signal), controller.signal);
48
+ // A page the reviewer changed or left while this was still being read on
49
+ // the server has no answer worth showing.
50
+ if (controller.signal.aborted || outcome.status === "aborted")
51
+ return;
52
+ if (outcome.status === "timeout") {
53
+ setError(adminTimeoutMessage());
54
+ return;
55
+ }
56
+ setError(undefined);
57
+ const result = outcome.value;
58
+ if (!result.ok) {
59
+ setError(adminErrorMessage(result.error));
60
+ return;
61
+ }
62
+ setTotal(result.value.total);
63
+ setCursor(result.value.nextCursor);
64
+ setRows((current) => append ? [...current, ...result.value.items] : result.value.items);
65
+ }
66
+ catch (cause) {
67
+ if (controller.signal.aborted)
68
+ return;
69
+ setError(adminErrorMessage(cause));
70
+ }
71
+ finally {
72
+ if (!controller.signal.aborted)
73
+ setLoading(false);
52
74
  }
53
- setError(undefined);
54
- setTotal(result.value.total);
55
- setCursor(result.value.nextCursor);
56
- setRows((current) => append ? [...current, ...result.value.items] : result.value.items);
57
75
  }, [
58
76
  request,
59
77
  props.api,
@@ -68,9 +86,9 @@ export function AdminConversations(props) {
68
86
  useEffect(() => {
69
87
  void load(null, false);
70
88
  }, [load]);
71
- return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-conversations", "aria-label": "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("p", { children: props.userId === undefined
72
- ? "Все разговоры стенда."
73
- : "Разговоры одного пользователя." })] }) }), _jsxs("div", { className: "dsh-qa-admin__filters", "data-testid": "qa-admin-conversations-filters", children: [_jsx(FilterField, { label: "\u041F\u043E\u0438\u0441\u043A", testId: "qa-admin-conversations-filter-search", children: _jsx("input", { type: "search", "data-testid": "qa-admin-conversations-search", value: search, placeholder: "\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A, \u0438\u043C\u044F \u0438\u043B\u0438 \u0430\u0434\u0440\u0435\u0441", onChange: (event) => setSearch(event.currentTarget.value) }) }), _jsx(FilterField, { label: "\u041E\u0446\u0435\u043D\u043A\u0430", testId: "qa-admin-conversations-filter-rating", children: _jsxs("select", { "data-testid": "qa-admin-conversations-rating", value: rating, onChange: (event) => setRating(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), _jsx("option", { value: "positive", children: "\u0415\u0441\u0442\u044C \uD83D\uDC4D" }), _jsx("option", { value: "negative", children: "\u0415\u0441\u0442\u044C \uD83D\uDC4E" })] }) }), _jsx(FilterField, { label: "\u0420\u0430\u0437\u0431\u043E\u0440", testId: "qa-admin-conversations-filter-review", children: _jsxs("select", { "data-testid": "qa-admin-conversations-review-status", value: reviewStatus, onChange: (event) => setReviewStatus(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0439" }), _jsx("option", { value: "unreviewed", children: "\u041D\u0435 \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("option", { value: "reviewed", children: "\u0420\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("option", { value: "needs_followup", children: "\u041D\u0443\u0436\u043D\u043E \u0432\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F" })] }) }), _jsx(FilterField, { label: "\u0421 \u0434\u0430\u0442\u044B", testId: "qa-admin-conversations-filter-from", children: _jsx("input", { type: "date", "data-testid": "qa-admin-conversations-from", value: from, onChange: (event) => setFrom(event.currentTarget.value) }) }), _jsx(FilterField, { label: "\u041F\u043E \u0434\u0430\u0442\u0443", testId: "qa-admin-conversations-filter-to", children: _jsx("input", { type: "date", "data-testid": "qa-admin-conversations-to", value: to, onChange: (event) => setTo(event.currentTarget.value) }) })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", "data-testid": "qa-admin-conversations-error", role: "alert", children: error })), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-conversations-empty", children: loading ? "Загружаю…" : "Ничего не нашлось." })) : (_jsxs("table", { className: "dsh-qa-admin__table", "data-testid": "qa-admin-conversations-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440" }), _jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u044C" }), _jsx("th", { children: "\u041D\u0430\u0447\u0430\u0442" }), _jsx("th", { children: "\u0410\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C" }), _jsx("th", { children: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F" }), _jsx("th", { children: "\u041E\u0446\u0435\u043D\u043A\u0438" }), _jsx("th", { children: "\u0420\u0430\u0437\u0431\u043E\u0440" }), _jsx("th", {})] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { "data-testid": "qa-admin-conversations-row", children: [_jsxs("td", { "data-testid": "qa-admin-conversations-cell-title", children: [_jsx("strong", { children: row.title ?? "Без заголовка" }), _jsx("small", { children: row.conversationId })] }), _jsx("td", { children: row.displayName }), _jsx("td", { children: row.subroleId === "" ? "—" : row.subroleId }), _jsx("td", { children: formatStamp(row.createdAt) }), _jsx("td", { children: _jsx(Stamp, { value: row.updatedAt }) }), _jsx("td", { children: formatCount(row.messageCount) }), _jsxs("td", { children: ["\uD83D\uDC4D ", formatCount(row.positiveFeedback), " \u00B7 \uD83D\uDC4E", " ", formatCount(row.negativeFeedback)] }), _jsx("td", { "data-testid": "qa-admin-conversations-cell-review", children: _jsx(Badge, { tone: statusTone(row.reviewStatus), children: REVIEW_STATUS_LABELS[row.reviewStatus] }) }), _jsx("td", { children: _jsx("button", { type: "button", "data-testid": "qa-admin-conversations-open", onClick: () => props.onOpenConversation(row.conversationId), children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C" }) })] }, row.conversationId))) })] })), _jsx(Pager, { total: total, shown: rows.length, hasMore: cursor !== null, loading: loading, onMore: () => void load(cursor, true), onReset: () => void load(null, false) })] }));
89
+ return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-conversations", "aria-label": "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B", children: [_jsxs("div", { className: "dsh-qa-admin__title-row", children: [_jsxs("div", { children: [_jsx("h1", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("p", { children: props.userId === undefined
90
+ ? "Все разговоры стенда."
91
+ : "Разговоры одного пользователя." })] }), _jsx("button", { type: "button", "data-testid": "qa-admin-conversations-reload", onClick: () => void load(null, false), children: "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C" })] }), _jsxs("div", { className: "dsh-qa-admin__filters", "data-testid": "qa-admin-conversations-filters", children: [_jsx(FilterField, { label: "\u041F\u043E\u0438\u0441\u043A", testId: "qa-admin-conversations-filter-search", children: _jsx("input", { type: "search", "data-testid": "qa-admin-conversations-search", value: search, placeholder: "\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A, \u0438\u043C\u044F \u0438\u043B\u0438 \u0430\u0434\u0440\u0435\u0441", onChange: (event) => setSearch(event.currentTarget.value) }) }), _jsx(FilterField, { label: "\u041E\u0446\u0435\u043D\u043A\u0430", testId: "qa-admin-conversations-filter-rating", children: _jsxs("select", { "data-testid": "qa-admin-conversations-rating", value: rating, onChange: (event) => setRating(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), _jsx("option", { value: "positive", children: "\u0415\u0441\u0442\u044C \uD83D\uDC4D" }), _jsx("option", { value: "negative", children: "\u0415\u0441\u0442\u044C \uD83D\uDC4E" })] }) }), _jsx(FilterField, { label: "\u0420\u0430\u0437\u0431\u043E\u0440", testId: "qa-admin-conversations-filter-review", children: _jsxs("select", { "data-testid": "qa-admin-conversations-review-status", value: reviewStatus, onChange: (event) => setReviewStatus(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0439" }), _jsx("option", { value: "unreviewed", children: "\u041D\u0435 \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("option", { value: "reviewed", children: "\u0420\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("option", { value: "needs_followup", children: "\u041D\u0443\u0436\u043D\u043E \u0432\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F" })] }) }), _jsx(FilterField, { label: "\u0421 \u0434\u0430\u0442\u044B", testId: "qa-admin-conversations-filter-from", children: _jsx("input", { type: "date", "data-testid": "qa-admin-conversations-from", value: from, onChange: (event) => setFrom(event.currentTarget.value) }) }), _jsx(FilterField, { label: "\u041F\u043E \u0434\u0430\u0442\u0443", testId: "qa-admin-conversations-filter-to", children: _jsx("input", { type: "date", "data-testid": "qa-admin-conversations-to", value: to, onChange: (event) => setTo(event.currentTarget.value) }) })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", "data-testid": "qa-admin-conversations-error", role: "alert", children: error })), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-conversations-empty", children: loading ? "Загружаю…" : "Ничего не нашлось." })) : (_jsxs("table", { className: "dsh-qa-admin__table", "data-testid": "qa-admin-conversations-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440" }), _jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u044C" }), _jsx("th", { children: "\u041D\u0430\u0447\u0430\u0442" }), _jsx("th", { children: "\u0410\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C" }), _jsx("th", { children: "\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F" }), _jsx("th", { children: "\u041E\u0446\u0435\u043D\u043A\u0438" }), _jsx("th", { children: "\u0420\u0430\u0437\u0431\u043E\u0440" }), _jsx("th", {})] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { "data-testid": "qa-admin-conversations-row", children: [_jsxs("td", { "data-testid": "qa-admin-conversations-cell-title", children: [_jsx("strong", { children: row.title ?? "Без заголовка" }), _jsx("small", { children: row.conversationId })] }), _jsx("td", { children: row.displayName }), _jsx("td", { children: row.subroleId === "" ? "—" : row.subroleId }), _jsx("td", { children: formatStamp(row.createdAt) }), _jsx("td", { children: _jsx(Stamp, { value: row.updatedAt }) }), _jsx("td", { children: formatCount(row.messageCount) }), _jsxs("td", { children: ["\uD83D\uDC4D ", formatCount(row.positiveFeedback), " \u00B7 \uD83D\uDC4E", " ", formatCount(row.negativeFeedback)] }), _jsx("td", { "data-testid": "qa-admin-conversations-cell-review", children: _jsx(Badge, { tone: statusTone(row.reviewStatus), children: REVIEW_STATUS_LABELS[row.reviewStatus] }) }), _jsx("td", { children: _jsx("button", { type: "button", "data-testid": "qa-admin-conversations-open", onClick: () => props.onOpenConversation(row.conversationId), children: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C" }) })] }, row.conversationId))) })] })), _jsx(Pager, { total: total, shown: rows.length, hasMore: cursor !== null, loading: loading, onMore: () => void load(cursor, true), onReset: () => void load(null, false) })] }));
74
92
  }
75
93
  /**
76
94
  * The review viewer: the conversation as it happened, next to the reviewer's
@@ -1 +1 @@
1
- {"version":3,"file":"Conversations.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Conversations.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAUzD,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,wEAAwE;AACxE,SAAS,UAAU,CACjB,MAAsB;IAEtB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO,UAAU,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAQlC;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAwB,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAsB,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAmC,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,EAAE,IAAmB,EAAE,MAAe,EAAE,EAAE;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,KAAK,GAAwB;YACjC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YACrC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YACrC,YAAY,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY;YACvD,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;YACvD,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,WAAW,EAAE;SACrE,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,aAAa,CAC1C,KAAK,CAAC,KAAK,EACX,KAAK,EACL,IAAI,EACJ,SAAS,EACT,UAAU,CAAC,MAAM,CAClB,CAAC;QACF,yEAAyE;QACzE,0CAA0C;QAC1C,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QACtC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAClE,CAAC;IACJ,CAAC,EACD;QACE,OAAO;QACP,KAAK,CAAC,GAAG;QACT,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,MAAM;QACZ,MAAM;QACN,MAAM;QACN,YAAY;QACZ,IAAI;QACJ,EAAE;KACH,CACF,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,mBACE,SAAS,EAAC,oBAAoB,iBAClB,wBAAwB,gBACzB,wDAAW,aAEtB,cAAK,SAAS,EAAC,yBAAyB,YACtC,0BACE,kFAAkB,EAClB,sBACG,KAAK,CAAC,MAAM,KAAK,SAAS;gCACzB,CAAC,CAAC,uBAAuB;gCACzB,CAAC,CAAC,gCAAgC,GAClC,IACA,GACF,EACN,eACE,SAAS,EAAC,uBAAuB,iBACrB,gCAAgC,aAE5C,KAAC,WAAW,IACV,KAAK,EAAC,gCAAO,EACb,MAAM,EAAC,sCAAsC,YAE7C,gBACE,IAAI,EAAC,QAAQ,iBACD,+BAA+B,EAC3C,KAAK,EAAE,MAAM,EACb,WAAW,EAAC,8HAA0B,EACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GACzD,GACU,EACd,KAAC,WAAW,IACV,KAAK,EAAC,sCAAQ,EACd,MAAM,EAAC,sCAAsC,YAE7C,iCACc,+BAA+B,EAC3C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,KAA8B,CAAC,aAG/D,iBAAQ,KAAK,EAAC,EAAE,+CAAe,EAC/B,iBAAQ,KAAK,EAAC,UAAU,sDAAiB,EACzC,iBAAQ,KAAK,EAAC,UAAU,sDAAiB,IAClC,GACG,EACd,KAAC,WAAW,IACV,KAAK,EAAC,sCAAQ,EACd,MAAM,EAAC,sCAAsC,YAE7C,iCACc,sCAAsC,EAClD,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,KAA4B,CAAC,aAGnE,iBAAQ,KAAK,EAAC,EAAE,+CAAe,EAC/B,iBAAQ,KAAK,EAAC,YAAY,oFAAsB,EAChD,iBAAQ,KAAK,EAAC,UAAU,uEAAmB,EAC3C,iBAAQ,KAAK,EAAC,gBAAgB,sGAAyB,IAChD,GACG,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,iCAAQ,EAAC,MAAM,EAAC,oCAAoC,YACrE,gBACE,IAAI,EAAC,MAAM,iBACC,6BAA6B,EACzC,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GACvD,GACU,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,uCAAS,EAAC,MAAM,EAAC,kCAAkC,YACpE,gBACE,IAAI,EAAC,MAAM,iBACC,2BAA2B,EACvC,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GACrD,GACU,IACV,EACL,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,YACE,SAAS,EAAC,qBAAqB,iBACnB,8BAA8B,EAC1C,IAAI,EAAC,OAAO,YAEX,KAAK,GACJ,CACL,EACA,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACnB,YACE,SAAS,EAAC,qBAAqB,iBACnB,8BAA8B,YAEzC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,GAC3C,CACL,CAAC,CAAC,CAAC,CACF,iBACE,SAAS,EAAC,qBAAqB,iBACnB,8BAA8B,aAE1C,0BACE,yBACE,4EAAiB,EACjB,oGAAqB,EACrB,sEAAgB,EAChB,0DAAc,EACd,wFAAmB,EACnB,kFAAkB,EAClB,gEAAe,EACf,gEAAe,EACf,cAAM,IACH,GACC,EACR,0BACG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,6BAEc,4BAA4B,aAExC,6BAAgB,mCAAmC,aACjD,2BAAS,GAAG,CAAC,KAAK,IAAI,eAAe,GAAU,EAC/C,0BAAQ,GAAG,CAAC,cAAc,GAAS,IAChC,EACL,uBAAK,GAAG,CAAC,WAAW,GAAM,EAC1B,uBAAK,GAAG,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAM,EACrD,uBAAK,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,GAAM,EACrC,uBACE,KAAC,KAAK,IAAC,KAAK,EAAE,GAAG,CAAC,SAAS,GAAI,GAC5B,EACL,uBAAK,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,GAAM,EACxC,0CACM,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,0BAAO,GAAG,EAC9C,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAC/B,EACL,4BAAgB,oCAAoC,YAClD,KAAC,KAAK,IAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,YACtC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,GACjC,GACL,EACL,uBACE,iBACE,IAAI,EAAC,QAAQ,iBACD,6BAA6B,EACzC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,2DAGpD,GACN,KA/BA,GAAG,CAAC,cAAc,CAgCpB,CACN,CAAC,GACI,IACF,CACT,EACD,KAAC,KAAK,IACJ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,OAAO,EAAE,MAAM,KAAK,IAAI,EACxB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EACrC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GACrC,IACM,CACX,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAWjC;IACC,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,EAC/D,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,CAC/C,CAAC;IACF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAU,CAAC;IACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;IAE7B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACpC,yEAAyE;QACzE,wEAAwE;QACxE,4DAA4D;QAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAC9B,yHAAyH,CAC1H,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAC/C,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,cAAc,CACrB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpE,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,CACL,mBACE,SAAS,EAAC,oBAAoB,iBAClB,uBAAuB,aAEnC,YACE,SAAS,EAAC,qBAAqB,iBACnB,6BAA6B,EACzC,IAAI,EAAC,OAAO,YAEX,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAChC,EACJ,iBACE,IAAI,EAAC,QAAQ,iBACD,4BAA4B,EACxC,OAAO,EAAE,KAAK,CAAC,MAAM,4DAGd,IACD,CACX,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CACL,kBACE,SAAS,EAAC,oBAAoB,iBAClB,uBAAuB,YAEnC,YACE,SAAS,EAAC,qBAAqB,iBACnB,+BAA+B,wHAGzC,GACI,CACX,CAAC;IACJ,CAAC;IACD,OAAO,CACL,mBACE,SAAS,EAAC,oBAAoB,iBAClB,uBAAuB,gBACxB,kDAAU,aAErB,eAAK,SAAS,EAAC,yBAAyB,aACtC,0BACE,iBACE,IAAI,EAAC,QAAQ,iBACD,4BAA4B,EACxC,OAAO,EAAE,KAAK,CAAC,MAAM,8EAGd,EACT,uBAAK,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,eAAe,GAAM,EAClD,wBACG,MAAM,CAAC,OAAO,CAAC,WAAW,aAAI,GAAG,EACjC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;wCAC9B,CAAC,CAAC,oBAAoB;wCACtB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,aAC9B,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EACvC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;wCACjC,CAAC,CAAC,EAAE;wCACJ,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAChE,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS;wCACvC,CAAC,CAAC,EAAE;wCACJ,CAAC,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAC5C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,IACxD,IACA,EACL,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CACjB,eAAK,SAAS,EAAC,6BAA6B,aAC1C,iBACE,IAAI,EAAC,QAAQ,iBACD,8BAA8B,EAC1C,SAAS,EAAC,sBAAsB,EAChC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,EAAE,YAE3B,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,GACnC,EACR,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC,YACE,SAAS,EAAC,qBAAqB,iBACnB,oCAAoC,EAChD,IAAI,EAAC,OAAO,YAEX,WAAW,GACV,CACL,IACG,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,eAAK,SAAS,EAAC,4BAA4B,aACzC,eACE,SAAS,EAAC,0BAA0B,iBACxB,kCAAkC,aAE7C,MAAM,CAAC,OAAO,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3D,YACE,SAAS,EAAC,qBAAqB,iBACnB,wCAAwC,EACpD,IAAI,EAAC,OAAO,YAGV,6BAA6B,CAC3B,MAAM,CAAC,OAAO,CAAC,qBAAqB,CACrC,GAED,CACL,EACD,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,GAAI,EAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC9B,KAAC,KAAK,IAAC,MAAM,EAAC,wCAAwC,uRAE9C,CACT,CAAC,CAAC,CAAC,CACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC/B,KAAC,UAAU,IAET,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,IAFtC,OAAO,CAAC,EAAE,CAGf,CACH,CAAC,CACH,IACG,EACN,KAAC,WAAW,IACV,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,GACrC,IACE,IACE,CACX,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAgD;IACpE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IAC1C,OAAO,CACL,mBACE,SAAS,EAAC,uBAAuB,iBACrB,+BAA+B,aAE3C,uJAAgC,EAChC,cACE,SAAS,EAAC,qBAAqB,iBACnB,6BAA6B,aAEzC,wFAAmB,EACnB,uBAAK,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAM,EACzC,+IAA6B,EAC7B,uBAAK,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAM,EACzC,8FAAoB,EACpB,4BAAgB,kCAAkC,YAC/C,KAAK,CAAC,MAAM,KAAK,CAAC;4BACjB,CAAC,CAAC,oBAAoB;4BACtB,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAC/B,EACL,gEAAe,EACf,4BAAgB,mCAAmC,YAChD,MAAM,CAAC,MAAM,KAAK,CAAC;4BAClB,CAAC,CAAC,oBAAoB;4BACtB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAC3B,EACL,mIAA2B,EAC3B,4BAAgB,qCAAqC,YAClD,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAC3C,IACF,EACJ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3B,kCAAqB,6BAA6B,aAChD,6JAAiC,KAAK,CAAC,MAAM,SAAY,EACzD,YACE,SAAS,EAAC,oBAAoB,iBAClB,kCAAkC,YAE7C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GACf,IACI,CACX,EACA,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,kCAAqB,8BAA8B,aACjD,+HAA4B,MAAM,CAAC,MAAM,SAAY,EACrD,YACE,SAAS,EAAC,oBAAoB,iBAClB,mCAAmC,YAE9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAChB,IACI,CACX,IACO,CACX,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAGnB;IACC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,OAAO,CACL,mBACE,SAAS,EAAE,gDAAgD,OAAO,CAAC,IAAI,GACrE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,EAC9D,EAAE,iBACU,kBAAkB,EAC9B,EAAE,EAAE,WAAW,OAAO,CAAC,EAAE,EAAE,aAE3B,iCAAoB,uBAAuB,aACzC,gCAAoB,uBAAuB,YACxC,OAAO,CAAC,IAAI,KAAK,MAAM;4BACtB,CAAC,CAAC,cAAc;4BAChB,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;gCAC5B,CAAC,CAAC,WAAW;gCACb,CAAC,CAAC,SAAS,GACR,EACT,eAAM,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAC9B,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,GAC7C,EACN,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACpC,eACE,SAAS,EAAC,oBAAoB,iBAClB,wBAAwB,YAEnC,OAAO,CAAC,KAAK,GACT,CACR,EACA,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAC9B,KAAC,KAAK,IAAC,IAAI,EAAC,SAAS,EAAC,MAAM,EAAC,8BAA8B,2DAEnD,CACT,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACpC,gBACE,SAAS,EAAC,qBAAqB,iBACnB,wBAAwB,aAEnC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,aAAI,GAAG,EAC7C,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,mDACnC,CACR,EACA,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACrB,MAAC,KAAK,IAEJ,MAAM,EAAC,2BAA2B,EAClC,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,aAExD,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACvC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gCACpD,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAPvB,GAAG,CAAC,EAAE,CAQL,CACT,CAAC,EACD,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7B,MAAC,KAAK,IAAC,IAAI,EAAC,SAAS,EAAC,MAAM,EAAC,yBAAyB,yEACxC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,IAC1B,CACT,IACM,EACT,YACE,SAAS,EAAC,4BAA4B,iBAC1B,uBAAuB,YAElC,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GACpD,EACH,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACpB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjC,aAEE,SAAS,EAAC,uBAAuB,iBACrB,0BAA0B,qFAExB,GAAG,CAAC,OAAO,KAJpB,GAAG,GAAG,CAAC,EAAE,UAAU,CAKtB,CACL,CACF,EACA,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC/C,eACE,SAAS,EAAC,qBAAqB,iBACnB,wBAAwB,aAEpC,kBACE,IAAI,EAAC,QAAQ,iBACD,+BAA+B,mBAC5B,IAAI,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,aAMzC,cACE,SAAS,EAAE,2BACT,IAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAC7C,EAAE,EACF,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,iBACC,MAAM,YAElB,eACE,CAAC,EAAC,cAAc,EAChB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,GACE,qHACgB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,SAC/C,EACR,IAAI,CAAC,CAAC,CAAC,CACN,4BAAgB,4BAA4B,YACzC,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACvC,6BAAkC,uBAAuB,aACvD,iBACE,SAAS,EAAC,oBAAoB,iBAClB,4BAA4B,YAEvC,IAAI,CAAC,IAAI,GACH,EACR,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjC,MAAC,KAAK,IAAC,IAAI,EAAC,UAAU,EAAC,MAAM,EAAC,6BAA6B,2CAClD,IAAI,CAAC,KAAK,IACX,CACT,EACA,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtC,yBAAO,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,GAAQ,CAC/C,EACD,6BAAiB,4BAA4B,YAC1C,IAAI,CAAC,SAAS,GACX,EACL,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC,6BAAiB,8BAA8B,YAC5C,IAAI,CAAC,MAAM,GACR,CACP,KAtBM,IAAI,CAAC,MAAM,CAuBf,CACN,CAAC,GACC,CACN,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,IACO,CACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Conversations.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Conversations.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useAdminResource } from "../shared.js";
3
+ import { CoverageNotice } from "../CoverageNotice.js";
3
4
  import { FEEDBACK_REASON_LABELS, REVIEW_PRIORITY_LABELS, REVIEW_REASON_LABELS, formatCount, formatRate, formatRelative, } from "../copy.js";
4
5
  /**
5
6
  * The overview answers the four questions the admin asks on arrival: is
@@ -11,8 +12,8 @@ function Metric(props) {
11
12
  return (_jsxs("article", { className: "dsh-qa-admin__metric", "data-testid": props.testId, children: [_jsx("span", { className: "dsh-qa-admin__metric-label", "data-testid": `${props.testId}-label`, children: props.label }), _jsx("strong", { className: "dsh-qa-admin__metric-value", "data-testid": `${props.testId}-value`, children: props.value }), props.hint === undefined ? null : (_jsx("small", { className: "dsh-qa-admin__metric-hint", "data-testid": `${props.testId}-hint`, children: props.hint }))] }));
12
13
  }
13
14
  export function AdminOverview(props) {
14
- const { data, error, reload } = useAdminResource((signal) => props.api.overview(props.token, signal), [props.api, props.token]);
15
- return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-overview", "aria-label": "\u041E\u0431\u0437\u043E\u0440", children: [_jsxs("div", { className: "dsh-qa-admin__title-row", children: [_jsxs("div", { children: [_jsx("h1", { children: "\u041E\u0431\u0437\u043E\u0440" }), _jsx("p", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435, \u043E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C \u0438 \u0440\u0430\u0437\u0431\u043E\u0440 \u043E\u0442\u0432\u0435\u0442\u043E\u0432." })] }), _jsx("button", { type: "button", "data-testid": "qa-admin-overview-reload", onClick: () => void reload(), children: "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C" })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", "data-testid": "qa-admin-overview-error", role: "alert", children: error })), data === undefined ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-overview-loading", children: "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044E\u2026" })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-qa-admin__metrics", "data-testid": "qa-admin-overview-metrics", children: [_jsx(Metric, { testId: "qa-admin-metric-conversations", label: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B", value: formatCount(data.metrics.conversations), hint: `${formatCount(data.metrics.activeUsers)} пользователей` }), _jsx(Metric, { testId: "qa-admin-metric-rated", label: "\u041E\u0446\u0435\u043D\u0451\u043D\u043D\u044B\u0435 \u043E\u0442\u0432\u0435\u0442\u044B", value: formatCount(data.metrics.ratedMessages), hint: `${formatRate(data.metrics.ratingRate)} от ответов` }), _jsx(Metric, { testId: "qa-admin-metric-positive", label: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043E\u0446\u0435\u043D\u043A\u0438", value: formatRate(data.metrics.positiveRate), hint: `👍 ${formatCount(data.metrics.positiveRatings)} · 👎 ${formatCount(data.metrics.negativeRatings)}` }), _jsx(Metric, { testId: "qa-admin-metric-unreviewed", label: "\u0416\u0434\u0443\u0442 \u0440\u0430\u0437\u0431\u043E\u0440\u0430", value: formatCount(data.metrics.unreviewedNegatives), hint: `разобрано: ${formatCount(data.metrics.reviewedItems)}` })] }), _jsxs("section", { className: "dsh-qa-admin__panel", "data-testid": "qa-admin-overview-alerts", children: [_jsx("h2", { children: "\u0422\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u044F" }), data.alerts.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-overview-alerts-empty", children: "\u041D\u0438\u0447\u0435\u0433\u043E \u0441\u0440\u043E\u0447\u043D\u043E\u0433\u043E: \u043D\u0435\u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0445 \u043E\u0446\u0435\u043D\u043E\u043A \u043D\u0435\u0442." })) : (_jsx("ul", { className: "dsh-qa-admin__alerts", "data-testid": "qa-admin-overview-alert-list", children: data.alerts.map((alert, index) => (_jsx("li", { "data-testid": "qa-admin-overview-alert", className: `dsh-qa-admin__alert dsh-qa-admin__alert--${alert.level}`, children: alert.code === "unreviewed-negatives"
15
+ const { data, error, loading, reload } = useAdminResource((signal) => props.api.overview(props.token, signal), [props.api, props.token]);
16
+ return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-overview", "aria-label": "\u041E\u0431\u0437\u043E\u0440", children: [_jsxs("div", { className: "dsh-qa-admin__title-row", children: [_jsxs("div", { children: [_jsx("h1", { children: "\u041E\u0431\u0437\u043E\u0440" }), _jsx("p", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438, \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435, \u043E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C \u0438 \u0440\u0430\u0437\u0431\u043E\u0440 \u043E\u0442\u0432\u0435\u0442\u043E\u0432." })] }), _jsx("button", { type: "button", "data-testid": "qa-admin-overview-reload", onClick: () => void reload(), children: "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C" })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", "data-testid": "qa-admin-overview-error", role: "alert", children: error })), data === undefined ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-overview-loading", children: loading ? "Загружаю…" : "Данные обзора не получены." })) : (_jsxs(_Fragment, { children: [_jsx(CoverageNotice, { metrics: data.metrics }), _jsxs("div", { className: "dsh-qa-admin__metrics", "data-testid": "qa-admin-overview-metrics", children: [_jsx(Metric, { testId: "qa-admin-metric-conversations", label: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B", value: formatCount(data.metrics.conversations), hint: `${formatCount(data.metrics.activeUsers)} пользователей` }), _jsx(Metric, { testId: "qa-admin-metric-rated", label: "\u041E\u0446\u0435\u043D\u0451\u043D\u043D\u044B\u0435 \u043E\u0442\u0432\u0435\u0442\u044B", value: formatCount(data.metrics.ratedMessages), hint: `${formatRate(data.metrics.ratingRate)} от ответов` }), _jsx(Metric, { testId: "qa-admin-metric-positive", label: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043E\u0446\u0435\u043D\u043A\u0438", value: formatRate(data.metrics.positiveRate), hint: `👍 ${formatCount(data.metrics.positiveRatings)} · 👎 ${formatCount(data.metrics.negativeRatings)}` }), _jsx(Metric, { testId: "qa-admin-metric-unreviewed", label: "\u0416\u0434\u0443\u0442 \u0440\u0430\u0437\u0431\u043E\u0440\u0430", value: formatCount(data.metrics.unreviewedNegatives), hint: `разобрано: ${formatCount(data.metrics.reviewedItems)}` })] }), _jsxs("section", { className: "dsh-qa-admin__panel", "data-testid": "qa-admin-overview-alerts", children: [_jsx("h2", { children: "\u0422\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043D\u0438\u043C\u0430\u043D\u0438\u044F" }), data.alerts.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-overview-alerts-empty", children: "\u041D\u0438\u0447\u0435\u0433\u043E \u0441\u0440\u043E\u0447\u043D\u043E\u0433\u043E: \u043D\u0435\u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0445 \u043E\u0446\u0435\u043D\u043E\u043A \u043D\u0435\u0442." })) : (_jsx("ul", { className: "dsh-qa-admin__alerts", "data-testid": "qa-admin-overview-alert-list", children: data.alerts.map((alert, index) => (_jsx("li", { "data-testid": "qa-admin-overview-alert", className: `dsh-qa-admin__alert dsh-qa-admin__alert--${alert.level}`, children: alert.code === "unreviewed-negatives"
16
17
  ? `${formatCount(alert.count)} негативных оценок без разбора`
17
18
  : alert.code === "subrole-satisfaction"
18
19
  ? `Роль «${alert.subject}»: положительных ${formatRate(alert.rate ?? null)} против общей доли`
@@ -1 +1 @@
1
- {"version":3,"file":"Overview.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Overview.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Overview.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Overview.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useState } from "react";
3
+ import { CoverageNotice } from "../CoverageNotice.js";
3
4
  import { FEEDBACK_REASON_LABELS, REVIEW_STATUS_LABELS, formatCount, formatRate, formatStamp, } from "../copy.js";
4
- import { Badge, FilterField, Pager, adminErrorMessage, useAdminResource, } from "../shared.js";
5
+ import { Badge, FilterField, Pager, adminErrorMessage, adminTimeoutMessage, callWithDeadline, useAdminResource, useRequestSlot, } from "../shared.js";
5
6
  const PAGE_SIZE = 25;
6
7
  /** The feedback table: every rating against the exact answer it judged. */
7
8
  export function AdminFeedback(props) {
@@ -11,8 +12,11 @@ export function AdminFeedback(props) {
11
12
  const [rows, setRows] = useState([]);
12
13
  const [cursor, setCursor] = useState(null);
13
14
  const [total, setTotal] = useState(0);
15
+ const [error, setError] = useState();
14
16
  const [loading, setLoading] = useState(true);
17
+ const request = useRequestSlot();
15
18
  const load = useCallback(async (next, append) => {
19
+ const controller = request.start();
16
20
  setLoading(true);
17
21
  const query = {
18
22
  rating: rating === "" ? null : rating,
@@ -21,18 +25,44 @@ export function AdminFeedback(props) {
21
25
  ? null
22
26
  : reviewStatus,
23
27
  };
24
- const result = await props.api.feedback(props.token, query, next, PAGE_SIZE);
25
- setLoading(false);
26
- if (!result.ok)
27
- return;
28
- setTotal(result.value.total);
29
- setCursor(result.value.nextCursor);
30
- setRows((current) => append ? [...current, ...result.value.items] : result.value.items);
31
- }, [props.api, props.token, rating, reason, reviewStatus]);
28
+ try {
29
+ // The Host reads a log per rated conversation for the title column.
30
+ // A log that does not answer costs its row's title, not the table.
31
+ const outcome = await callWithDeadline(() => props.api.feedback(props.token, query, next, PAGE_SIZE), controller.signal);
32
+ if (controller.signal.aborted || outcome.status === "aborted")
33
+ return;
34
+ if (outcome.status === "timeout") {
35
+ setError(adminTimeoutMessage());
36
+ return;
37
+ }
38
+ setError(undefined);
39
+ const result = outcome.value;
40
+ if (!result.ok) {
41
+ setError(adminErrorMessage(result.error));
42
+ return;
43
+ }
44
+ setTotal(result.value.total);
45
+ setCursor(result.value.nextCursor);
46
+ setRows((current) => append ? [...current, ...result.value.items] : result.value.items);
47
+ }
48
+ catch (cause) {
49
+ if (controller.signal.aborted)
50
+ return;
51
+ setError(adminErrorMessage(cause));
52
+ }
53
+ finally {
54
+ if (!controller.signal.aborted)
55
+ setLoading(false);
56
+ }
57
+ }, [request, props.api, props.token, rating, reason, reviewStatus]);
32
58
  useEffect(() => {
33
59
  void load(null, false);
34
60
  }, [load]);
35
- return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-feedback", "aria-label": "\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C" }), _jsx("p", { children: "\u041E\u0446\u0435\u043D\u043A\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u2014 \u044D\u0442\u043E \u0441\u0438\u0433\u043D\u0430\u043B \u0443\u0434\u043E\u0432\u043B\u0435\u0442\u0432\u043E\u0440\u0451\u043D\u043D\u043E\u0441\u0442\u0438, \u0430 \u043D\u0435 \u0438\u0437\u043C\u0435\u0440\u0435\u043D\u0438\u0435 \u0442\u043E\u0447\u043D\u043E\u0441\u0442\u0438 \u043E\u0442\u0432\u0435\u0442\u0430." })] }) }), _jsxs("div", { className: "dsh-qa-admin__filters", "data-testid": "qa-admin-feedback-filters", children: [_jsx(FilterField, { label: "\u041E\u0446\u0435\u043D\u043A\u0430", testId: "qa-admin-feedback-filter-rating", children: _jsxs("select", { "data-testid": "qa-admin-feedback-rating", value: rating, onChange: (event) => setRating(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), _jsx("option", { value: "positive", children: "\uD83D\uDC4D" }), _jsx("option", { value: "negative", children: "\uD83D\uDC4E" })] }) }), _jsx(FilterField, { label: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430", testId: "qa-admin-feedback-filter-reason", children: _jsxs("select", { "data-testid": "qa-admin-feedback-reason", value: reason, onChange: (event) => setReason(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), Object.keys(FEEDBACK_REASON_LABELS).map((value) => (_jsx("option", { value: value, children: FEEDBACK_REASON_LABELS[value] }, value)))] }) }), _jsx(FilterField, { label: "\u0420\u0430\u0437\u0431\u043E\u0440", testId: "qa-admin-feedback-filter-review", children: _jsxs("select", { "data-testid": "qa-admin-feedback-review-status", value: reviewStatus, onChange: (event) => setReviewStatus(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0439" }), _jsx("option", { value: "unreviewed", children: "\u041D\u0435 \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("option", { value: "reviewed", children: "\u0420\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("option", { value: "needs_followup", children: "\u041D\u0443\u0436\u043D\u043E \u0432\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F" })] }) })] }), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-feedback-empty", children: loading ? "Загружаю…" : "Оценок пока нет." })) : (_jsxs("table", { className: "dsh-qa-admin__table", "data-testid": "qa-admin-feedback-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041E\u0446\u0435\u043D\u043A\u0430" }), _jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u044C" }), _jsx("th", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440" }), _jsx("th", { children: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430" }), _jsx("th", { children: "\u0414\u0430\u0442\u0430" }), _jsx("th", { children: "\u0420\u0430\u0437\u0431\u043E\u0440" }), _jsx("th", {})] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { "data-testid": "qa-admin-feedback-row", children: [_jsx("td", { "data-testid": "qa-admin-feedback-rating-value", children: row.rating === "positive" ? "👍" : "👎" }), _jsx("td", { children: row.displayName }), _jsx("td", { children: row.subroleId === "" ? "—" : row.subroleId }), _jsx("td", { "data-testid": "qa-admin-feedback-conversation", children: row.conversationTitle ?? row.conversationId }), _jsxs("td", { children: [(row.reasons ?? [])
61
+ return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-feedback", "aria-label": "\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C", children: [_jsxs("div", { className: "dsh-qa-admin__title-row", children: [_jsxs("div", { children: [_jsx("h1", { children: "\u041E\u0431\u0440\u0430\u0442\u043D\u0430\u044F \u0441\u0432\u044F\u0437\u044C" }), _jsx("p", { children: "\u041E\u0446\u0435\u043D\u043A\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u2014 \u044D\u0442\u043E \u0441\u0438\u0433\u043D\u0430\u043B \u0443\u0434\u043E\u0432\u043B\u0435\u0442\u0432\u043E\u0440\u0451\u043D\u043D\u043E\u0441\u0442\u0438, \u0430 \u043D\u0435 \u0438\u0437\u043C\u0435\u0440\u0435\u043D\u0438\u0435 \u0442\u043E\u0447\u043D\u043E\u0441\u0442\u0438 \u043E\u0442\u0432\u0435\u0442\u0430." })] }), _jsx("button", { type: "button", "data-testid": "qa-admin-feedback-reload", onClick: () => void load(null, false), children: "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C" })] }), _jsxs("div", { className: "dsh-qa-admin__filters", "data-testid": "qa-admin-feedback-filters", children: [_jsx(FilterField, { label: "\u041E\u0446\u0435\u043D\u043A\u0430", testId: "qa-admin-feedback-filter-rating", children: _jsxs("select", { "data-testid": "qa-admin-feedback-rating", value: rating, onChange: (event) => setRating(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), _jsx("option", { value: "positive", children: "\uD83D\uDC4D" }), _jsx("option", { value: "negative", children: "\uD83D\uDC4E" })] }) }), _jsx(FilterField, { label: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430", testId: "qa-admin-feedback-filter-reason", children: _jsxs("select", { "data-testid": "qa-admin-feedback-reason", value: reason, onChange: (event) => setReason(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u0430\u044F" }), Object.keys(FEEDBACK_REASON_LABELS).map((value) => (_jsx("option", { value: value, children: FEEDBACK_REASON_LABELS[value] }, value)))] }) }), _jsx(FilterField, { label: "\u0420\u0430\u0437\u0431\u043E\u0440", testId: "qa-admin-feedback-filter-review", children: _jsxs("select", { "data-testid": "qa-admin-feedback-review-status", value: reviewStatus, onChange: (event) => setReviewStatus(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0439" }), _jsx("option", { value: "unreviewed", children: "\u041D\u0435 \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("option", { value: "reviewed", children: "\u0420\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("option", { value: "needs_followup", children: "\u041D\u0443\u0436\u043D\u043E \u0432\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F" })] }) })] }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", "data-testid": "qa-admin-feedback-error", role: "alert", children: error })), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-feedback-empty", children: loading
62
+ ? "Загружаю…"
63
+ : error === undefined
64
+ ? "Оценок пока нет."
65
+ : "Оценки не загрузились." })) : (_jsxs("table", { className: "dsh-qa-admin__table", "data-testid": "qa-admin-feedback-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041E\u0446\u0435\u043D\u043A\u0430" }), _jsx("th", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u044C" }), _jsx("th", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440" }), _jsx("th", { children: "\u041F\u0440\u0438\u0447\u0438\u043D\u0430" }), _jsx("th", { children: "\u0414\u0430\u0442\u0430" }), _jsx("th", { children: "\u0420\u0430\u0437\u0431\u043E\u0440" }), _jsx("th", {})] }) }), _jsx("tbody", { children: rows.map((row) => (_jsxs("tr", { "data-testid": "qa-admin-feedback-row", children: [_jsx("td", { "data-testid": "qa-admin-feedback-rating-value", children: row.rating === "positive" ? "👍" : "👎" }), _jsx("td", { children: row.displayName }), _jsx("td", { children: row.subroleId === "" ? "—" : row.subroleId }), _jsx("td", { "data-testid": "qa-admin-feedback-conversation", children: row.conversationTitle ?? row.conversationId }), _jsxs("td", { children: [(row.reasons ?? [])
36
66
  .map((value) => FEEDBACK_REASON_LABELS[value])
37
67
  .join(", ") || "—", row.comment === undefined ? null : (_jsx("small", { children: row.comment }))] }), _jsx("td", { children: formatStamp(row.createdAt) }), _jsx("td", { "data-testid": "qa-admin-feedback-review", children: _jsx(Badge, { tone: row.reviewStatus === "reviewed" ? "positive" : "neutral", children: REVIEW_STATUS_LABELS[row.reviewStatus] }) }), _jsx("td", { children: _jsx("button", { type: "button", "data-testid": "qa-admin-feedback-open", onClick: () => props.onOpenConversation(row.conversationId, row.messageId), children: "\u041A \u043E\u0442\u0432\u0435\u0442\u0443" }) })] }, row.id))) })] })), _jsx(Pager, { total: total, shown: rows.length, hasMore: cursor !== null, loading: loading, onMore: () => void load(cursor, true), onReset: () => void load(null, false) })] }));
38
68
  }
@@ -40,7 +70,7 @@ export function AdminFeedback(props) {
40
70
  export function AdminQuality(props) {
41
71
  const resource = useAdminResource((signal) => props.api.metrics(props.token, signal), [props.api, props.token]);
42
72
  const metrics = resource.data;
43
- return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-quality", "aria-label": "\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430", children: [_jsxs("div", { className: "dsh-qa-admin__title-row", children: [_jsxs("div", { children: [_jsx("h1", { children: "\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430" }), _jsx("p", { children: "\u0414\u043E\u043B\u0438 \u0441\u0447\u0438\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u043E \u043E\u0446\u0435\u043D\u0451\u043D\u043D\u044B\u043C \u043E\u0442\u0432\u0435\u0442\u0430\u043C. \u042D\u0442\u043E \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0441\u0438\u0433\u043D\u0430\u043B, \u0430 \u043D\u0435 \u0438\u0437\u043C\u0435\u0440\u0435\u043D\u043D\u0430\u044F \u0442\u043E\u0447\u043D\u043E\u0441\u0442\u044C." })] }), _jsx("button", { type: "button", "data-testid": "qa-admin-quality-reload", onClick: () => void resource.reload(), children: "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C" })] }), resource.error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", "data-testid": "qa-admin-quality-error", role: "alert", children: adminErrorMessage(resource.error) })), metrics === undefined ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-quality-loading", children: "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044E\u2026" })) : (_jsxs(_Fragment, { children: [_jsxs("dl", { className: "dsh-qa-admin__facts dsh-qa-admin__facts--wide", "data-testid": "qa-admin-quality-facts", children: [_jsx("dt", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("dd", { "data-testid": "qa-admin-quality-conversations", children: formatCount(metrics.conversations) }), _jsx("dt", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438 \u0441 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u0430\u043C\u0438" }), _jsx("dd", { "data-testid": "qa-admin-quality-active-users", children: formatCount(metrics.activeUsers) }), _jsx("dt", { children: "\u041E\u0442\u0432\u0435\u0442\u044B \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0430" }), _jsx("dd", { "data-testid": "qa-admin-quality-assistant-messages", children: formatCount(metrics.assistantMessages) }), _jsx("dt", { children: "\u041E\u0446\u0435\u043D\u0451\u043D\u043D\u044B\u0435 \u043E\u0442\u0432\u0435\u0442\u044B" }), _jsx("dd", { "data-testid": "qa-admin-quality-rated-messages", children: formatCount(metrics.ratedMessages) }), _jsx("dt", { children: "\u0414\u043E\u043B\u044F \u043E\u0446\u0435\u043D\u0451\u043D\u043D\u044B\u0445" }), _jsx("dd", { "data-testid": "qa-admin-quality-rating-rate", children: formatRate(metrics.ratingRate) }), _jsx("dt", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445" }), _jsx("dd", { "data-testid": "qa-admin-quality-positive-ratings", children: formatCount(metrics.positiveRatings) }), _jsx("dt", { children: "\u041D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0445" }), _jsx("dd", { "data-testid": "qa-admin-quality-negative-ratings", children: formatCount(metrics.negativeRatings) }), _jsx("dt", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u0434\u043E\u043B\u044F" }), _jsx("dd", { "data-testid": "qa-admin-quality-positive-rate", children: formatRate(metrics.positiveRate) }), _jsx("dt", { children: "\u041D\u0435\u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0445" }), _jsx("dd", { "data-testid": "qa-admin-quality-unreviewed-negatives", children: formatCount(metrics.unreviewedNegatives) }), _jsx("dt", { children: "\u0420\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("dd", { "data-testid": "qa-admin-quality-reviewed-items", children: formatCount(metrics.reviewedItems) })] }), _jsxs("section", { className: "dsh-qa-admin__panel", "data-testid": "qa-admin-quality-by-subrole", children: [_jsx("h2", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u0434\u043E\u043B\u044F \u043F\u043E \u043F\u0440\u043E\u0444\u0438\u043B\u044F\u043C" }), metrics.bySubrole.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-quality-subrole-empty", children: "\u041E\u0446\u0435\u043D\u043E\u043A \u043F\u043E \u043F\u0440\u043E\u0444\u0438\u043B\u044F\u043C \u043D\u0435\u0442." })) : (_jsxs("table", { className: "dsh-qa-admin__table", "data-testid": "qa-admin-quality-subrole-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u044C" }), _jsx("th", { children: "\u041E\u0446\u0435\u043D\u0435\u043D\u043E" }), _jsx("th", { children: "\uD83D\uDC4D" }), _jsx("th", { children: "\uD83D\uDC4E" }), _jsx("th", { children: "\u0414\u043E\u043B\u044F" })] }) }), _jsx("tbody", { children: metrics.bySubrole.map((row) => (_jsxs("tr", { "data-testid": "qa-admin-quality-subrole-row", children: [_jsx("td", { children: row.label }), _jsx("td", { children: formatCount(row.rated) }), _jsx("td", { children: formatCount(row.positive) }), _jsx("td", { children: formatCount(row.negative) }), _jsx("td", { "data-testid": "qa-admin-quality-subrole-rate", children: formatRate(row.positiveRate) })] }, row.key))) })] }))] }), _jsxs("section", { className: "dsh-qa-admin__panel", "data-testid": "qa-admin-quality-issues", children: [_jsx("h2", { children: "\u041F\u0440\u043E\u0431\u043B\u0435\u043C\u044B \u043F\u043E \u0432\u0435\u0440\u0434\u0438\u043A\u0442\u0430\u043C \u0440\u0435\u0432\u044C\u044E\u0435\u0440\u043E\u0432" }), metrics.issues.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-quality-issues-empty", children: "\u0420\u0430\u0437\u0431\u043E\u0440\u043E\u0432 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442." })) : (_jsx("ul", { className: "dsh-qa-admin__issues-list", "data-testid": "qa-admin-quality-issues-list", children: metrics.issues.map((row) => (_jsxs("li", { "data-testid": "qa-admin-quality-issues-item", children: [_jsx("span", { children: row.issue }), _jsx("strong", { "data-testid": "qa-admin-quality-issues-count", children: formatCount(row.count) })] }, row.issue))) }))] }), _jsxs("section", { className: "dsh-qa-admin__panel", "data-testid": "qa-admin-quality-trend", children: [_jsx("h2", { children: "\u041E\u0446\u0435\u043D\u043A\u0438 \u043F\u043E \u0434\u043D\u044F\u043C" }), metrics.trend.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-quality-trend-empty", children: "\u041E\u0446\u0435\u043D\u043E\u043A \u043F\u043E\u043A\u0430 \u043D\u0435\u0442." })) : (_jsx("ul", { className: "dsh-qa-admin__trend", "data-testid": "qa-admin-quality-trend-list", children: metrics.trend.map((point) => (_jsxs("li", { "data-testid": "qa-admin-quality-trend-item", children: [_jsx("span", { children: point.date }), _jsxs("span", { "data-testid": "qa-admin-quality-trend-positive", children: ["\uD83D\uDC4D ", formatCount(point.positive)] }), _jsxs("span", { "data-testid": "qa-admin-quality-trend-negative", children: ["\uD83D\uDC4E ", formatCount(point.negative)] })] }, point.date))) }))] })] }))] }));
73
+ return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-quality", "aria-label": "\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430", children: [_jsxs("div", { className: "dsh-qa-admin__title-row", children: [_jsxs("div", { children: [_jsx("h1", { children: "\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430" }), _jsx("p", { children: "\u0414\u043E\u043B\u0438 \u0441\u0447\u0438\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u043E \u043E\u0446\u0435\u043D\u0451\u043D\u043D\u044B\u043C \u043E\u0442\u0432\u0435\u0442\u0430\u043C. \u042D\u0442\u043E \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0441\u0438\u0433\u043D\u0430\u043B, \u0430 \u043D\u0435 \u0438\u0437\u043C\u0435\u0440\u0435\u043D\u043D\u0430\u044F \u0442\u043E\u0447\u043D\u043E\u0441\u0442\u044C." })] }), _jsx("button", { type: "button", "data-testid": "qa-admin-quality-reload", onClick: () => void resource.reload(), children: "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C" })] }), resource.error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", "data-testid": "qa-admin-quality-error", role: "alert", children: adminErrorMessage(resource.error) })), metrics === undefined ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-quality-loading", children: resource.loading ? "Загружаю…" : "Данные аналитики не получены." })) : (_jsxs(_Fragment, { children: [_jsx(CoverageNotice, { metrics: metrics }), _jsxs("dl", { className: "dsh-qa-admin__facts dsh-qa-admin__facts--wide", "data-testid": "qa-admin-quality-facts", children: [_jsx("dt", { children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u044B" }), _jsx("dd", { "data-testid": "qa-admin-quality-conversations", children: formatCount(metrics.conversations) }), _jsx("dt", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438 \u0441 \u0440\u0430\u0437\u0433\u043E\u0432\u043E\u0440\u0430\u043C\u0438" }), _jsx("dd", { "data-testid": "qa-admin-quality-active-users", children: formatCount(metrics.activeUsers) }), _jsx("dt", { children: "\u041E\u0442\u0432\u0435\u0442\u044B \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442\u0430" }), _jsx("dd", { "data-testid": "qa-admin-quality-assistant-messages", children: formatCount(metrics.assistantMessages) }), _jsx("dt", { children: "\u041E\u0446\u0435\u043D\u0451\u043D\u043D\u044B\u0435 \u043E\u0442\u0432\u0435\u0442\u044B" }), _jsx("dd", { "data-testid": "qa-admin-quality-rated-messages", children: formatCount(metrics.ratedMessages) }), _jsx("dt", { children: "\u0414\u043E\u043B\u044F \u043E\u0446\u0435\u043D\u0451\u043D\u043D\u044B\u0445" }), _jsx("dd", { "data-testid": "qa-admin-quality-rating-rate", children: formatRate(metrics.ratingRate) }), _jsx("dt", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0445" }), _jsx("dd", { "data-testid": "qa-admin-quality-positive-ratings", children: formatCount(metrics.positiveRatings) }), _jsx("dt", { children: "\u041D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0445" }), _jsx("dd", { "data-testid": "qa-admin-quality-negative-ratings", children: formatCount(metrics.negativeRatings) }), _jsx("dt", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u0434\u043E\u043B\u044F" }), _jsx("dd", { "data-testid": "qa-admin-quality-positive-rate", children: formatRate(metrics.positiveRate) }), _jsx("dt", { children: "\u041D\u0435\u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043D\u0435\u0433\u0430\u0442\u0438\u0432\u043D\u044B\u0445" }), _jsx("dd", { "data-testid": "qa-admin-quality-unreviewed-negatives", children: formatCount(metrics.unreviewedNegatives) }), _jsx("dt", { children: "\u0420\u0430\u0437\u043E\u0431\u0440\u0430\u043D\u043E" }), _jsx("dd", { "data-testid": "qa-admin-quality-reviewed-items", children: formatCount(metrics.reviewedItems) })] }), _jsxs("section", { className: "dsh-qa-admin__panel", "data-testid": "qa-admin-quality-by-subrole", children: [_jsx("h2", { children: "\u041F\u043E\u043B\u043E\u0436\u0438\u0442\u0435\u043B\u044C\u043D\u0430\u044F \u0434\u043E\u043B\u044F \u043F\u043E \u043F\u0440\u043E\u0444\u0438\u043B\u044F\u043C" }), metrics.bySubrole.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-quality-subrole-empty", children: "\u041E\u0446\u0435\u043D\u043E\u043A \u043F\u043E \u043F\u0440\u043E\u0444\u0438\u043B\u044F\u043C \u043D\u0435\u0442." })) : (_jsxs("table", { className: "dsh-qa-admin__table", "data-testid": "qa-admin-quality-subrole-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "\u041F\u0440\u043E\u0444\u0438\u043B\u044C" }), _jsx("th", { children: "\u041E\u0446\u0435\u043D\u0435\u043D\u043E" }), _jsx("th", { children: "\uD83D\uDC4D" }), _jsx("th", { children: "\uD83D\uDC4E" }), _jsx("th", { children: "\u0414\u043E\u043B\u044F" })] }) }), _jsx("tbody", { children: metrics.bySubrole.map((row) => (_jsxs("tr", { "data-testid": "qa-admin-quality-subrole-row", children: [_jsx("td", { children: row.label }), _jsx("td", { children: formatCount(row.rated) }), _jsx("td", { children: formatCount(row.positive) }), _jsx("td", { children: formatCount(row.negative) }), _jsx("td", { "data-testid": "qa-admin-quality-subrole-rate", children: formatRate(row.positiveRate) })] }, row.key))) })] }))] }), _jsxs("section", { className: "dsh-qa-admin__panel", "data-testid": "qa-admin-quality-issues", children: [_jsx("h2", { children: "\u041F\u0440\u043E\u0431\u043B\u0435\u043C\u044B \u043F\u043E \u0432\u0435\u0440\u0434\u0438\u043A\u0442\u0430\u043C \u0440\u0435\u0432\u044C\u044E\u0435\u0440\u043E\u0432" }), metrics.issues.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-quality-issues-empty", children: "\u0420\u0430\u0437\u0431\u043E\u0440\u043E\u0432 \u043F\u043E\u043A\u0430 \u043D\u0435\u0442." })) : (_jsx("ul", { className: "dsh-qa-admin__issues-list", "data-testid": "qa-admin-quality-issues-list", children: metrics.issues.map((row) => (_jsxs("li", { "data-testid": "qa-admin-quality-issues-item", children: [_jsx("span", { children: row.issue }), _jsx("strong", { "data-testid": "qa-admin-quality-issues-count", children: formatCount(row.count) })] }, row.issue))) }))] }), _jsxs("section", { className: "dsh-qa-admin__panel", "data-testid": "qa-admin-quality-trend", children: [_jsx("h2", { children: "\u041E\u0446\u0435\u043D\u043A\u0438 \u043F\u043E \u0434\u043D\u044F\u043C" }), metrics.trend.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-quality-trend-empty", children: "\u041E\u0446\u0435\u043D\u043E\u043A \u043F\u043E\u043A\u0430 \u043D\u0435\u0442." })) : (_jsx("ul", { className: "dsh-qa-admin__trend", "data-testid": "qa-admin-quality-trend-list", children: metrics.trend.map((point) => (_jsxs("li", { "data-testid": "qa-admin-quality-trend-item", children: [_jsx("span", { children: point.date }), _jsxs("span", { "data-testid": "qa-admin-quality-trend-positive", children: ["\uD83D\uDC4D ", formatCount(point.positive)] }), _jsxs("span", { "data-testid": "qa-admin-quality-trend-negative", children: ["\uD83D\uDC4E ", formatCount(point.negative)] })] }, point.date))) }))] })] }))] }));
44
74
  }
45
75
  /** Every administrative action, newest first, from both writers. */
46
76
  export function AdminAudit(props) {
@@ -48,24 +78,51 @@ export function AdminAudit(props) {
48
78
  const [action, setAction] = useState("");
49
79
  const [cursor, setCursor] = useState(null);
50
80
  const [total, setTotal] = useState(0);
81
+ const [error, setError] = useState();
51
82
  const [loading, setLoading] = useState(true);
83
+ const request = useRequestSlot();
52
84
  const load = useCallback(async (next, append) => {
85
+ const controller = request.start();
53
86
  setLoading(true);
54
87
  const query = {
55
88
  action: action === "" ? null : action,
56
89
  };
57
- const result = await props.api.audit(props.token, query, next, PAGE_SIZE);
58
- setLoading(false);
59
- if (!result.ok)
60
- return;
61
- setTotal(result.value.total);
62
- setCursor(result.value.nextCursor);
63
- setRows((current) => append ? [...current, ...result.value.items] : result.value.items);
64
- }, [props.api, props.token, action]);
90
+ try {
91
+ const outcome = await callWithDeadline(() => props.api.audit(props.token, query, next, PAGE_SIZE), controller.signal);
92
+ if (controller.signal.aborted || outcome.status === "aborted")
93
+ return;
94
+ if (outcome.status === "timeout") {
95
+ setError(adminTimeoutMessage());
96
+ return;
97
+ }
98
+ setError(undefined);
99
+ const result = outcome.value;
100
+ if (!result.ok) {
101
+ setError(adminErrorMessage(result.error));
102
+ return;
103
+ }
104
+ setTotal(result.value.total);
105
+ setCursor(result.value.nextCursor);
106
+ setRows((current) => append ? [...current, ...result.value.items] : result.value.items);
107
+ }
108
+ catch (cause) {
109
+ if (controller.signal.aborted)
110
+ return;
111
+ setError(adminErrorMessage(cause));
112
+ }
113
+ finally {
114
+ if (!controller.signal.aborted)
115
+ setLoading(false);
116
+ }
117
+ }, [request, props.api, props.token, action]);
65
118
  useEffect(() => {
66
119
  void load(null, false);
67
120
  }, [load]);
68
- return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-audit", "aria-label": "\u0410\u0443\u0434\u0438\u0442", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u0410\u0443\u0434\u0438\u0442" }), _jsx("p", { children: "\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430, \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u0438 \u0440\u0430\u0437\u0431\u043E\u0440\u043E\u0432. \u0417\u0430\u043F\u0438\u0441\u044C \u0445\u0440\u0430\u043D\u0438\u0442 \u0441\u043D\u0438\u043C\u043E\u043A \u00AB\u0434\u043E\u00BB \u0438 \u00AB\u043F\u043E\u0441\u043B\u0435\u00BB." })] }) }), _jsx("div", { className: "dsh-qa-admin__filters", "data-testid": "qa-admin-audit-filters", children: _jsx(FilterField, { label: "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435", testId: "qa-admin-audit-filter-action", children: _jsxs("select", { "data-testid": "qa-admin-audit-action-select", value: action, onChange: (event) => setAction(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0435" }), _jsx("option", { value: "authorization.changed", children: "\u0420\u043E\u043B\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0430" }), _jsx("option", { value: "user.disabled", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043E\u0442\u043A\u043B\u044E\u0447\u0451\u043D" }), _jsx("option", { value: "user.enabled", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0432\u043A\u043B\u044E\u0447\u0451\u043D" }), _jsx("option", { value: "subrole.assignment.changed", children: "\u041D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043E" }), _jsx("option", { value: "subrole.created", children: "\u0421\u0430\u0431\u0440\u043E\u043B\u044C \u0441\u043E\u0437\u0434\u0430\u043D\u0430" }), _jsx("option", { value: "subrole.updated", children: "\u0421\u0430\u0431\u0440\u043E\u043B\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0430" }), _jsx("option", { value: "subrole.deleted", children: "\u0421\u0430\u0431\u0440\u043E\u043B\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u0430" }), _jsx("option", { value: "common_capabilities.updated", children: "\u041E\u0431\u0449\u0438\u0435 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u044B" }), _jsx("option", { value: "conversation.reviewed", children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440 \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D" }), _jsx("option", { value: "review.updated", children: "\u0420\u0430\u0437\u0431\u043E\u0440 \u043E\u0431\u043D\u043E\u0432\u043B\u0451\u043D" }), _jsx("option", { value: "review.queued", children: "\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E \u043D\u0430 \u0440\u0430\u0437\u0431\u043E\u0440" })] }) }) }), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-audit-empty", children: loading ? "Загружаю…" : "Изменений пока нет." })) : (_jsx("ol", { className: "dsh-qa-audit", "data-testid": "qa-admin-audit-list", children: rows.map((event) => (_jsxs("li", { "data-testid": "qa-admin-audit-item", children: [_jsx("time", { title: event.timestamp, children: formatStamp(event.timestamp) }), _jsx("strong", { "data-testid": "qa-admin-audit-event-action", children: event.action }), _jsx("span", { "data-testid": "qa-admin-audit-target", children: event.targetId ?? event.targetType ?? "—" }), _jsx("code", { "data-testid": "qa-admin-audit-actor", children: event.actorId }), event.before === undefined &&
121
+ return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-audit", "aria-label": "\u0410\u0443\u0434\u0438\u0442", children: [_jsxs("div", { className: "dsh-qa-admin__title-row", children: [_jsxs("div", { children: [_jsx("h1", { children: "\u0410\u0443\u0434\u0438\u0442" }), _jsx("p", { children: "\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430, \u043D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0439 \u0438 \u0440\u0430\u0437\u0431\u043E\u0440\u043E\u0432. \u0417\u0430\u043F\u0438\u0441\u044C \u0445\u0440\u0430\u043D\u0438\u0442 \u0441\u043D\u0438\u043C\u043E\u043A \u00AB\u0434\u043E\u00BB \u0438 \u00AB\u043F\u043E\u0441\u043B\u0435\u00BB." })] }), _jsx("button", { type: "button", "data-testid": "qa-admin-audit-reload", onClick: () => void load(null, false), children: "\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C" })] }), _jsx("div", { className: "dsh-qa-admin__filters", "data-testid": "qa-admin-audit-filters", children: _jsx(FilterField, { label: "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435", testId: "qa-admin-audit-filter-action", children: _jsxs("select", { "data-testid": "qa-admin-audit-action-select", value: action, onChange: (event) => setAction(event.currentTarget.value), children: [_jsx("option", { value: "", children: "\u041B\u044E\u0431\u043E\u0435" }), _jsx("option", { value: "authorization.changed", children: "\u0420\u043E\u043B\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0430" }), _jsx("option", { value: "user.disabled", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u043E\u0442\u043A\u043B\u044E\u0447\u0451\u043D" }), _jsx("option", { value: "user.enabled", children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0432\u043A\u043B\u044E\u0447\u0451\u043D" }), _jsx("option", { value: "subrole.assignment.changed", children: "\u041D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043E" }), _jsx("option", { value: "subrole.created", children: "\u0421\u0430\u0431\u0440\u043E\u043B\u044C \u0441\u043E\u0437\u0434\u0430\u043D\u0430" }), _jsx("option", { value: "subrole.updated", children: "\u0421\u0430\u0431\u0440\u043E\u043B\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0430" }), _jsx("option", { value: "subrole.deleted", children: "\u0421\u0430\u0431\u0440\u043E\u043B\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u0430" }), _jsx("option", { value: "common_capabilities.updated", children: "\u041E\u0431\u0449\u0438\u0435 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u044B" }), _jsx("option", { value: "conversation.reviewed", children: "\u0420\u0430\u0437\u0433\u043E\u0432\u043E\u0440 \u0440\u0430\u0437\u043E\u0431\u0440\u0430\u043D" }), _jsx("option", { value: "review.updated", children: "\u0420\u0430\u0437\u0431\u043E\u0440 \u043E\u0431\u043D\u043E\u0432\u043B\u0451\u043D" }), _jsx("option", { value: "review.queued", children: "\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E \u043D\u0430 \u0440\u0430\u0437\u0431\u043E\u0440" })] }) }) }), error === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__error", "data-testid": "qa-admin-audit-error", role: "alert", children: error })), rows.length === 0 ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-audit-empty", children: loading
122
+ ? "Загружаю…"
123
+ : error === undefined
124
+ ? "Изменений пока нет."
125
+ : "События не загрузились." })) : (_jsx("ol", { className: "dsh-qa-audit", "data-testid": "qa-admin-audit-list", children: rows.map((event) => (_jsxs("li", { "data-testid": "qa-admin-audit-item", children: [_jsx("time", { title: event.timestamp, children: formatStamp(event.timestamp) }), _jsx("strong", { "data-testid": "qa-admin-audit-event-action", children: event.action }), _jsx("span", { "data-testid": "qa-admin-audit-target", children: event.targetId ?? event.targetType ?? "—" }), _jsx("code", { "data-testid": "qa-admin-audit-actor", children: event.actorId }), event.before === undefined &&
69
126
  event.after === undefined ? null : (_jsxs("details", { "data-testid": "qa-admin-audit-details", children: [_jsx("summary", { children: "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0435" }), _jsxs("pre", { "data-testid": "qa-admin-audit-diff", children: [event.before ?? "—", "\n→\n", event.after ?? "—"] })] }))] }, event.id))) })), _jsx(Pager, { total: total, shown: rows.length, hasMore: cursor !== null, loading: loading, onMore: () => void load(cursor, true), onReset: () => void load(null, false) })] }));
70
127
  }
71
128
  //# sourceMappingURL=Quality.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Quality.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Quality.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Quality.js","sourceRoot":"","sources":["../../../../src/client/admin/pages/Quality.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAWtD,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,KAO7B;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAwB,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAwB,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAA2B,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,EAAE,IAAmB,EAAE,MAAe,EAAE,EAAE;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,KAAK,GAAoB;YAC7B,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YACrC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;YACrC,YAAY,EACV,YAAY,KAAK,EAAE;gBACjB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAE,YAAgD;SACxD,CAAC;QACF,IAAI,CAAC;YACH,oEAAoE;YACpE,mEAAmE;YACnE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,EAC7D,UAAU,CAAC,MAAM,CAClB,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO;YACtE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAClE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACtC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAChE,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,mBACE,SAAS,EAAC,oBAAoB,iBAClB,mBAAmB,gBACpB,iFAAgB,aAE3B,eAAK,SAAS,EAAC,yBAAyB,aACtC,0BACE,2GAAuB,EACvB,idAGI,IACA,EACN,iBACE,IAAI,EAAC,QAAQ,iBACD,0BAA0B,EACtC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,iEAG9B,IACL,EACN,eACE,SAAS,EAAC,uBAAuB,iBACrB,2BAA2B,aAEvC,KAAC,WAAW,IAAC,KAAK,EAAC,sCAAQ,EAAC,MAAM,EAAC,iCAAiC,YAClE,iCACc,0BAA0B,EACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,KAA8B,CAAC,aAG/D,iBAAQ,KAAK,EAAC,EAAE,+CAAe,EAC/B,iBAAQ,KAAK,EAAC,UAAU,6BAAY,EACpC,iBAAQ,KAAK,EAAC,UAAU,6BAAY,IAC7B,GACG,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,4CAAS,EAAC,MAAM,EAAC,iCAAiC,YACnE,iCACc,0BAA0B,EACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,KAA8B,CAAC,aAG/D,iBAAQ,KAAK,EAAC,EAAE,+CAAe,EAC7B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAwB,CAAC,GAAG,CAC9D,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,iBAAoB,KAAK,EAAE,KAAK,YAC7B,sBAAsB,CAAC,KAAK,CAAC,IADnB,KAAK,CAET,CACV,CACF,IACM,GACG,EACd,KAAC,WAAW,IAAC,KAAK,EAAC,sCAAQ,EAAC,MAAM,EAAC,iCAAiC,YAClE,iCACc,iCAAiC,EAC7C,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,aAE/D,iBAAQ,KAAK,EAAC,EAAE,+CAAe,EAC/B,iBAAQ,KAAK,EAAC,YAAY,oFAAsB,EAChD,iBAAQ,KAAK,EAAC,UAAU,uEAAmB,EAC3C,iBAAQ,KAAK,EAAC,gBAAgB,sGAAyB,IAChD,GACG,IACV,EACL,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,YACE,SAAS,EAAC,qBAAqB,iBACnB,yBAAyB,EACrC,IAAI,EAAC,OAAO,YAEX,KAAK,GACJ,CACL,EACA,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACnB,YACE,SAAS,EAAC,qBAAqB,iBACnB,yBAAyB,YAEpC,OAAO;oBACN,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,KAAK,KAAK,SAAS;wBACnB,CAAC,CAAC,kBAAkB;wBACpB,CAAC,CAAC,wBAAwB,GAC5B,CACL,CAAC,CAAC,CAAC,CACF,iBACE,SAAS,EAAC,qBAAqB,iBACnB,yBAAyB,aAErC,0BACE,yBACE,gEAAe,EACf,oGAAqB,EACrB,sEAAgB,EAChB,4EAAiB,EACjB,sEAAgB,EAChB,oDAAa,EACb,gEAAe,EACf,cAAM,IACH,GACC,EACR,0BACG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,6BAA6B,uBAAuB,aAClD,4BAAgB,gCAAgC,YAC7C,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GACrC,EACL,uBAAK,GAAG,CAAC,WAAW,GAAM,EAC1B,uBAAK,GAAG,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAM,EACrD,4BAAgB,gCAAgC,YAC7C,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,cAAc,GACzC,EACL,yBACG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;6CACjB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;6CAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EACnB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC,0BAAQ,GAAG,CAAC,OAAO,GAAS,CAC7B,IACE,EACL,uBAAK,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,GAAM,EACrC,4BAAgB,0BAA0B,YACxC,KAAC,KAAK,IACJ,IAAI,EACF,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,YAGzD,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,GACjC,GACL,EACL,uBACE,iBACE,IAAI,EAAC,QAAQ,iBACD,wBAAwB,EACpC,OAAO,EAAE,GAAG,EAAE,CACZ,KAAK,CAAC,kBAAkB,CACtB,GAAG,CAAC,cAAc,EAClB,GAAG,CAAC,SAAS,CACd,4DAII,GACN,KAxCE,GAAG,CAAC,EAAE,CAyCV,CACN,CAAC,GACI,IACF,CACT,EACD,KAAC,KAAK,IACJ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,OAAO,EAAE,MAAM,KAAK,IAAI,EACxB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EACrC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GACrC,IACM,CACX,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,KAG5B;IACC,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,EAClD,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CACzB,CAAC;IACF,MAAM,OAAO,GAAiC,QAAQ,CAAC,IAAI,CAAC;IAC5D,OAAO,CACL,mBACE,SAAS,EAAC,oBAAoB,iBAClB,kBAAkB,gBACnB,yGAAoB,aAE/B,eAAK,SAAS,EAAC,yBAAyB,aACtC,0BACE,kFAAkB,EAClB,ufAGI,IACA,EACN,iBACE,IAAI,EAAC,QAAQ,iBACD,yBAAyB,EACrC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,iEAG9B,IACL,EACL,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACrC,YACE,SAAS,EAAC,qBAAqB,iBACnB,wBAAwB,EACpC,IAAI,EAAC,OAAO,YAEX,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAChC,CACL,EACA,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,YACE,SAAS,EAAC,qBAAqB,iBACnB,0BAA0B,YAErC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,+BAA+B,GAC/D,CACL,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,GAAI,EACpC,cACE,SAAS,EAAC,+CAA+C,iBAC7C,wBAAwB,aAEpC,kFAAkB,EAClB,4BAAgB,gCAAgC,YAC7C,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,GAChC,EACL,8KAAmC,EACnC,4BAAgB,+BAA+B,YAC5C,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,GAC9B,EACL,6HAA0B,EAC1B,4BAAgB,qCAAqC,YAClD,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,GACpC,EACL,uHAAyB,EACzB,4BAAgB,iCAAiC,YAC9C,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,GAChC,EACL,2GAAuB,EACvB,4BAAgB,8BAA8B,YAC3C,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,GAC5B,EACL,0GAAsB,EACtB,4BAAgB,mCAAmC,YAChD,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,GAClC,EACL,wFAAmB,EACnB,4BAAgB,mCAAmC,YAChD,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,GAClC,EACL,mIAA2B,EAC3B,4BAAgB,gCAAgC,YAC7C,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,GAC9B,EACL,uKAAiC,EACjC,4BAAgB,uCAAuC,YACpD,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GACtC,EACL,kFAAkB,EAClB,4BAAgB,iCAAiC,YAC9C,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,GAChC,IACF,EACL,mBACE,SAAS,EAAC,qBAAqB,iBACnB,6BAA6B,aAEzC,iMAAuC,EACtC,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAChC,YACE,SAAS,EAAC,qBAAqB,iBACnB,gCAAgC,uIAG1C,CACL,CAAC,CAAC,CAAC,CACF,iBACE,SAAS,EAAC,qBAAqB,iBACnB,gCAAgC,aAE5C,0BACE,yBACE,sEAAgB,EAChB,sEAAgB,EAChB,wCAAW,EACX,wCAAW,EACX,oDAAa,IACV,GACC,EACR,0BACG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAC9B,6BAEc,8BAA8B,aAE1C,uBAAK,GAAG,CAAC,KAAK,GAAM,EACpB,uBAAK,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAM,EACjC,uBAAK,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAM,EACpC,uBAAK,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAM,EACpC,4BAAgB,+BAA+B,YAC5C,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,GAC1B,KATA,GAAG,CAAC,GAAG,CAUT,CACN,CAAC,GACI,IACF,CACT,IACO,EACV,mBACE,SAAS,EAAC,qBAAqB,iBACnB,yBAAyB,aAErC,uMAAwC,EACvC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7B,YACE,SAAS,EAAC,qBAAqB,iBACnB,+BAA+B,8GAGzC,CACL,CAAC,CAAC,CAAC,CACF,aACE,SAAS,EAAC,2BAA2B,iBACzB,8BAA8B,YAEzC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAC3B,6BAEc,8BAA8B,aAE1C,yBAAO,GAAG,CAAC,KAAK,GAAQ,EACxB,gCAAoB,+BAA+B,YAChD,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAChB,KANJ,GAAG,CAAC,KAAK,CAOX,CACN,CAAC,GACC,CACN,IACO,EACV,mBACE,SAAS,EAAC,qBAAqB,iBACnB,wBAAwB,aAEpC,sGAAuB,EACtB,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC5B,YACE,SAAS,EAAC,qBAAqB,iBACnB,8BAA8B,kGAGxC,CACL,CAAC,CAAC,CAAC,CACF,aACE,SAAS,EAAC,qBAAqB,iBACnB,6BAA6B,YAExC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC5B,6BAEc,6BAA6B,aAEzC,yBAAO,KAAK,CAAC,IAAI,GAAQ,EACzB,+BAAkB,iCAAiC,8BAC7C,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAC1B,EACP,+BAAkB,iCAAiC,8BAC7C,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAC1B,KATF,KAAK,CAAC,IAAI,CAUZ,CACN,CAAC,GACC,CACN,IACO,IACT,CACJ,IACO,CACX,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,UAAU,CAAC,KAG1B;IACC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAA+B,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,MAAM,IAAI,GAAG,WAAW,CACtB,KAAK,EAAE,IAAmB,EAAE,MAAe,EAAE,EAAE;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,KAAK,GAAiB;YAC1B,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,MAAiC;SAClE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CACpC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,EAC1D,UAAU,CAAC,MAAM,CAClB,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO;YACtE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1C,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAClB,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAClE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACtC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAC1C,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,mBACE,SAAS,EAAC,oBAAoB,iBAClB,gBAAgB,gBACjB,gCAAO,aAElB,eAAK,SAAS,EAAC,yBAAyB,aACtC,0BACE,0DAAc,EACd,8aAGI,IACA,EACN,iBACE,IAAI,EAAC,QAAQ,iBACD,uBAAuB,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,iEAG9B,IACL,EACN,cACE,SAAS,EAAC,uBAAuB,iBACrB,wBAAwB,YAEpC,KAAC,WAAW,IAAC,KAAK,EAAC,kDAAU,EAAC,MAAM,EAAC,8BAA8B,YACjE,iCACc,8BAA8B,EAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,aAEzD,iBAAQ,KAAK,EAAC,EAAE,+CAAe,EAC/B,iBAAQ,KAAK,EAAC,uBAAuB,0FAAuB,EAC5D,iBAAQ,KAAK,EAAC,eAAe,0IAA+B,EAC5D,iBAAQ,KAAK,EAAC,cAAc,oIAA8B,EAC1D,iBAAQ,KAAK,EAAC,4BAA4B,8HAEjC,EACT,iBAAQ,KAAK,EAAC,iBAAiB,sGAAyB,EACxD,iBAAQ,KAAK,EAAC,iBAAiB,4GAA0B,EACzD,iBAAQ,KAAK,EAAC,iBAAiB,sGAAyB,EACxD,iBAAQ,KAAK,EAAC,6BAA6B,mKAElC,EACT,iBAAQ,KAAK,EAAC,uBAAuB,kHAA2B,EAChE,iBAAQ,KAAK,EAAC,gBAAgB,sGAAyB,EACvD,iBAAQ,KAAK,EAAC,eAAe,+HAA8B,IACpD,GACG,GACV,EACL,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,YACE,SAAS,EAAC,qBAAqB,iBACnB,sBAAsB,EAClC,IAAI,EAAC,OAAO,YAEX,KAAK,GACJ,CACL,EACA,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACnB,YAAG,SAAS,EAAC,qBAAqB,iBAAa,sBAAsB,YAClE,OAAO;oBACN,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,KAAK,KAAK,SAAS;wBACnB,CAAC,CAAC,qBAAqB;wBACvB,CAAC,CAAC,yBAAyB,GAC7B,CACL,CAAC,CAAC,CAAC,CACF,aAAI,SAAS,EAAC,cAAc,iBAAa,qBAAqB,YAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACnB,6BAA+B,qBAAqB,aAClD,eAAM,KAAK,EAAE,KAAK,CAAC,SAAS,YACzB,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,GACxB,EACP,gCAAoB,6BAA6B,YAC9C,KAAK,CAAC,MAAM,GACN,EACT,8BAAkB,uBAAuB,YACtC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,GACrC,EACP,8BAAkB,sBAAsB,YAAE,KAAK,CAAC,OAAO,GAAQ,EAC9D,KAAK,CAAC,MAAM,KAAK,SAAS;4BAC3B,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACjC,kCAAqB,wBAAwB,aAC3C,wIAAqC,EACrC,8BAAiB,qBAAqB,aACnC,KAAK,CAAC,MAAM,IAAI,GAAG,EACnB,OAAO,EACP,KAAK,CAAC,KAAK,IAAI,GAAG,IACf,IACE,CACX,KArBM,KAAK,CAAC,EAAE,CAsBZ,CACN,CAAC,GACC,CACN,EACD,KAAC,KAAK,IACJ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,OAAO,EAAE,MAAM,KAAK,IAAI,EACxB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EACrC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GACrC,IACM,CACX,CAAC;AACJ,CAAC"}
@@ -16,6 +16,17 @@ function emptyView(choice) {
16
16
  }
17
17
  /** How many accounts the picker offers; a deployment's directory is small. */
18
18
  const PICKER_LIMIT = 100;
19
+ /**
20
+ * What the shared tab edits, said on the page itself.
21
+ *
22
+ * The store is the QA one — `<registered workspace>/.dsh/skills`, read by every
23
+ * QA session as `qa-shared` — and no write here can reach the catalog the host
24
+ * reads from its own skill directories (the `skill-filesystem` presets, shown
25
+ * in the console's «Навыки» section with the source «файл · filesystem»). That
26
+ * catalog is open beside this page, so an empty shared store read as "the stand
27
+ * has no skills" until the page named the difference.
28
+ */
29
+ const SHARED_SCOPE_NOTE = "Это отдельное хранилище QA, а не каталог навыков стенда: здесь лежат навыки, созданные в QA, и их читают все QA-сессии. Навыки, которые хост читает из своих каталогов (источник «файл · filesystem» в разделе «Навыки»), в этот список не входят и здесь не редактируются.";
19
30
  /**
20
31
  * Skill files: the deployment's shared skills, and the personal skills of one
21
32
  * named account.
@@ -63,14 +74,14 @@ export function AdminSkillFiles(props) {
63
74
  // reason and the browser is the side that knows how to phrase it.
64
75
  const headerError = failure === undefined ? undefined : adminErrorMessage(failure);
65
76
  const ready = headerError === undefined && (chosen || !personal);
66
- return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-skill-files", "aria-label": "\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0430\u0432\u044B\u043A\u043E\u0432", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0430\u0432\u044B\u043A\u043E\u0432" }), _jsx("p", { children: "\u041E\u0431\u0449\u0438\u0435 \u043D\u0430\u0432\u044B\u043A\u0438 \u0432\u0438\u0434\u043D\u044B \u043D\u0430 \u0432\u0441\u0451\u043C \u0441\u0442\u0435\u043D\u0434\u0435. \u041B\u0438\u0447\u043D\u044B\u0435 \u043D\u0430\u0432\u044B\u043A\u0438 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440 \u043F\u0440\u0430\u0432\u0438\u0442 \u043E\u0442 \u0438\u043C\u0435\u043D\u0438 \u0432\u043B\u0430\u0434\u0435\u043B\u044C\u0446\u0430 \u2014 \u0442\u043E\u0442 \u0443\u0432\u0438\u0434\u0438\u0442 \u043F\u043E\u043C\u0435\u0442\u043A\u0443 \u00AB\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043E \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u043E\u043C\u00BB. \u041A\u0430\u0436\u0434\u0430\u044F \u043F\u0440\u0430\u0432\u043A\u0430 \u043F\u043E\u043F\u0430\u0434\u0430\u0435\u0442 \u0432 \u0430\u0443\u0434\u0438\u0442." })] }) }), _jsxs("div", { className: "dsh-qa-admin__tabs", "data-testid": "qa-admin-skill-files-tabs", children: [_jsx("button", { type: "button", "data-testid": "qa-admin-skill-files-tab-shared", "aria-current": personal ? undefined : "page", onClick: () => setChoice({ kind: "shared" }), children: "\u041E\u0431\u0449\u0438\u0435 \u043D\u0430\u0432\u044B\u043A\u0438 \u0441\u0442\u0435\u043D\u0434\u0430" }), _jsx("button", { type: "button", "data-testid": "qa-admin-skill-files-tab-personal", "aria-current": personal ? "page" : undefined, onClick: () => setChoice((current) => ({
77
+ return (_jsxs("section", { className: "dsh-qa-admin__page", "data-testid": "qa-admin-skill-files", "aria-label": "\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0430\u0432\u044B\u043A\u043E\u0432", children: [_jsx("div", { className: "dsh-qa-admin__title-row", children: _jsxs("div", { children: [_jsx("h1", { children: "\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043D\u0430\u0432\u044B\u043A\u043E\u0432" }), _jsx("p", { children: "\u041E\u0431\u0449\u0438\u0435 \u043D\u0430\u0432\u044B\u043A\u0438 QA \u0432\u0438\u0434\u043D\u044B \u0432\u043E \u0432\u0441\u0435\u0445 QA-\u0441\u0435\u0441\u0441\u0438\u044F\u0445. \u041B\u0438\u0447\u043D\u044B\u0435 \u043D\u0430\u0432\u044B\u043A\u0438 \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440 \u043F\u0440\u0430\u0432\u0438\u0442 \u043E\u0442 \u0438\u043C\u0435\u043D\u0438 \u0432\u043B\u0430\u0434\u0435\u043B\u044C\u0446\u0430 \u2014 \u0442\u043E\u0442 \u0443\u0432\u0438\u0434\u0438\u0442 \u043F\u043E\u043C\u0435\u0442\u043A\u0443 \u00AB\u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043E \u0430\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440\u043E\u043C\u00BB. \u041A\u0430\u0436\u0434\u0430\u044F \u043F\u0440\u0430\u0432\u043A\u0430 \u043F\u043E\u043F\u0430\u0434\u0430\u0435\u0442 \u0432 \u0430\u0443\u0434\u0438\u0442." })] }) }), _jsxs("div", { className: "dsh-qa-admin__tabs", "data-testid": "qa-admin-skill-files-tabs", children: [_jsx("button", { type: "button", "data-testid": "qa-admin-skill-files-tab-shared", "aria-current": personal ? undefined : "page", onClick: () => setChoice({ kind: "shared" }), children: "\u041E\u0431\u0449\u0438\u0435 \u043D\u0430\u0432\u044B\u043A\u0438 QA" }), _jsx("button", { type: "button", "data-testid": "qa-admin-skill-files-tab-personal", "aria-current": personal ? "page" : undefined, onClick: () => setChoice((current) => ({
67
78
  kind: "user",
68
79
  userId: current.kind === "user" ? current.userId : null,
69
80
  })), children: "\u041B\u0438\u0447\u043D\u044B\u0435 \u043D\u0430\u0432\u044B\u043A\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F" })] }), _jsx(ErrorLine, { message: headerError, testId: "qa-admin-skill-files-error" }), personal ? (_jsxs("label", { className: "dsh-qa-admin__filter", "data-testid": "qa-admin-skill-files-filter-user", children: [_jsx("span", { children: "\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C" }), _jsxs("select", { "data-testid": "qa-admin-skill-files-user", value: choice.userId ?? "", onChange: (event) => setChoice({ kind: "user", userId: event.currentTarget.value }), children: [_jsx("option", { value: "", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u2026" }), (users.data?.items ?? []).map((row) => (_jsxs("option", { value: row.id, children: [row.displayName === "" ? row.email : row.displayName, " \u2014", " ", row.email] }, row.id)))] })] })) : null, view.data === undefined || view.data.rootPath === "" ? null : (_jsxs("p", { className: "dsh-qa-admin__facts", "data-testid": "qa-admin-skill-files-storage", children: [_jsx("span", { "data-testid": "qa-admin-skill-files-owner", children: view.data.owner === null
70
- ? "Общее хранилище стенда"
81
+ ? "Общее хранилище QA"
71
82
  : `Личное хранилище ${view.data.owner.displayName === ""
72
83
  ? view.data.owner.email
73
- : view.data.owner.displayName}` }), _jsx("span", { className: "dsh-qa-admin__mono", "data-testid": "qa-admin-skill-files-path", title: view.data.rootPath, children: view.data.rootPath })] })), personal && !chosen ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-skill-files-pick-user", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0435\u0433\u043E \u043B\u0438\u0447\u043D\u044B\u0435 \u043D\u0430\u0432\u044B\u043A\u0438." })) : null, ready ? (_jsx(QaSkillsSettingsPage
84
+ : view.data.owner.displayName}` }), _jsx("span", { className: "dsh-qa-admin__mono", "data-testid": "qa-admin-skill-files-path", title: view.data.rootPath, children: view.data.rootPath })] })), personal || view.data === undefined ? null : (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-skill-files-scope-note", children: SHARED_SCOPE_NOTE })), personal && !chosen ? (_jsx("p", { className: "dsh-qa-admin__empty", "data-testid": "qa-admin-skill-files-pick-user", children: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F, \u0447\u0442\u043E\u0431\u044B \u043E\u0442\u043A\u0440\u044B\u0442\u044C \u0435\u0433\u043E \u043B\u0438\u0447\u043D\u044B\u0435 \u043D\u0430\u0432\u044B\u043A\u0438." })) : null, ready ? (_jsx(QaSkillsSettingsPage
74
85
  // A different store is a different catalog: remounting drops the
75
86
  // loaded document, the draft and the diagnostics of the previous one.
76
87
  , { api: skillApi }, personal ? (choice.userId ?? "personal") : "shared")) : null] }));