@talkpilot/core-db 1.3.7 → 1.3.9

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 (199) hide show
  1. package/.claude/settings.local.json +11 -0
  2. package/.cursor/rules/development.mdc +65 -65
  3. package/DEVELOPMENT.md +141 -141
  4. package/README.md +257 -190
  5. package/README_OLD.md +160 -160
  6. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts +12 -0
  7. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts.map +1 -0
  8. package/dist/municipal/tickets/tickets.deprecated.getters.js +131 -0
  9. package/dist/municipal/tickets/tickets.deprecated.getters.js.map +1 -0
  10. package/dist/municipal/tickets/tickets.statistics.dates.d.ts +7 -0
  11. package/dist/municipal/tickets/tickets.statistics.dates.d.ts.map +1 -0
  12. package/dist/municipal/tickets/tickets.statistics.dates.js +40 -0
  13. package/dist/municipal/tickets/tickets.statistics.dates.js.map +1 -0
  14. package/dist/municipal/tickets/tickets.statistics.getters.d.ts +4 -0
  15. package/dist/municipal/tickets/tickets.statistics.getters.d.ts.map +1 -1
  16. package/dist/municipal/tickets/tickets.statistics.getters.js +30 -3
  17. package/dist/municipal/tickets/tickets.statistics.getters.js.map +1 -1
  18. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts +53 -0
  19. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts.map +1 -0
  20. package/dist/municipal/tickets/tickets.statistics.pipeline.js +112 -0
  21. package/dist/municipal/tickets/tickets.statistics.pipeline.js.map +1 -0
  22. package/dist/municipal/tickets/tickets.statistics.utils.d.ts +7 -0
  23. package/dist/municipal/tickets/tickets.statistics.utils.d.ts.map +1 -0
  24. package/dist/municipal/tickets/tickets.statistics.utils.js +40 -0
  25. package/dist/municipal/tickets/tickets.statistics.utils.js.map +1 -0
  26. package/dist/talkpilot/calls/calls.statistics.getters.d.ts.map +1 -1
  27. package/dist/talkpilot/calls/calls.statistics.getters.js +18 -18
  28. package/dist/talkpilot/calls/calls.statistics.getters.js.map +1 -1
  29. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts +12 -0
  30. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts.map +1 -0
  31. package/dist/talkpilot/calls/calls.statistics.ticketScope.js +37 -0
  32. package/dist/talkpilot/calls/calls.statistics.ticketScope.js.map +1 -0
  33. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts +17 -0
  34. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts.map +1 -0
  35. package/dist/talkpilot/calls/calls.statistics.tickets.js +33 -0
  36. package/dist/talkpilot/calls/calls.statistics.tickets.js.map +1 -0
  37. package/dist/talkpilot/calls/calls.statistics.types.d.ts +4 -1
  38. package/dist/talkpilot/calls/calls.statistics.types.d.ts.map +1 -1
  39. package/dist/utils/statistics.aggregation.d.ts +20 -0
  40. package/dist/utils/statistics.aggregation.d.ts.map +1 -0
  41. package/dist/utils/statistics.aggregation.js +43 -0
  42. package/dist/utils/statistics.aggregation.js.map +1 -0
  43. package/jest.config.js +20 -20
  44. package/package.json +46 -46
  45. package/src/__tests__/setup.ts +20 -20
  46. package/src/connection.ts +54 -54
  47. package/src/index.ts +26 -26
  48. package/src/municipal/__tests__/validation.spec.ts +62 -62
  49. package/src/municipal/cities/cities.getters.ts +50 -50
  50. package/src/municipal/cities/cities.types.ts +11 -11
  51. package/src/municipal/cities/index.ts +2 -2
  52. package/src/municipal/departmentsSubjects/departmentsSubjects.getters.ts +282 -282
  53. package/src/municipal/departmentsSubjects/departmentsSubjects.types.ts +72 -72
  54. package/src/municipal/departmentsSubjects/index.ts +9 -9
  55. package/src/municipal/index.ts +22 -22
  56. package/src/municipal/mongodb-client.ts +61 -61
  57. package/src/municipal/muniIssues/__tests__/muniIssues.setters.spec.ts +92 -92
  58. package/src/municipal/muniIssues/__tests__/muniIssues.setup.spec.ts +92 -92
  59. package/src/municipal/muniIssues/index.ts +17 -17
  60. package/src/municipal/muniIssues/muniIssues.constants.ts +18 -18
  61. package/src/municipal/muniIssues/muniIssues.getters.ts +24 -24
  62. package/src/municipal/muniIssues/muniIssues.schema.ts +66 -66
  63. package/src/municipal/muniIssues/muniIssues.setters.ts +24 -24
  64. package/src/municipal/muniIssues/muniIssues.setup.ts +65 -65
  65. package/src/municipal/muniIssues/muniIssues.types.ts +37 -37
  66. package/src/municipal/streets/index.ts +2 -2
  67. package/src/municipal/streets/streets.getters.ts +125 -125
  68. package/src/municipal/streets/streets.types.ts +18 -18
  69. package/src/municipal/systemInstructions/__tests__/getters.spec.ts +113 -113
  70. package/src/municipal/systemInstructions/__tests__/setters.spec.ts +274 -274
  71. package/src/municipal/systemInstructions/index.ts +7 -7
  72. package/src/municipal/systemInstructions/instructions.getters.ts +57 -57
  73. package/src/municipal/systemInstructions/instructions.setters.ts +119 -119
  74. package/src/municipal/systemInstructions/instructions.types.ts +30 -30
  75. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +30 -30
  76. package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +68 -51
  77. package/src/municipal/tickets/index.ts +3 -3
  78. package/src/municipal/tickets/tickets.constants.ts +8 -8
  79. package/src/municipal/tickets/tickets.getters.ts +121 -121
  80. package/src/municipal/tickets/tickets.statistics.aggregation.ts +96 -96
  81. package/src/municipal/tickets/tickets.statistics.getters.ts +109 -71
  82. package/src/municipal/tickets/tickets.types.ts +53 -53
  83. package/src/municipal/utils/types.ts +11 -11
  84. package/src/talkpilot/__tests__/db.spec.ts +38 -38
  85. package/src/talkpilot/__tests__/mongodb-client.spec.ts +18 -18
  86. package/src/talkpilot/__tests__/validation.spec.ts +68 -68
  87. package/src/talkpilot/agents/__tests__/agents.getters.spec.ts +29 -29
  88. package/src/talkpilot/agents/agents.getters.ts +34 -34
  89. package/src/talkpilot/agents/agents.types.ts +14 -14
  90. package/src/talkpilot/agents/index.ts +2 -2
  91. package/src/talkpilot/backgroundToolResults/__tests__/backgroundToolResults.getters.spec.ts +147 -147
  92. package/src/talkpilot/backgroundToolResults/backgroundToolResults.getters.ts +65 -65
  93. package/src/talkpilot/backgroundToolResults/backgroundToolResults.types.ts +23 -23
  94. package/src/talkpilot/backgroundToolResults/index.ts +2 -2
  95. package/src/talkpilot/calls/__tests__/callStats.utils.spec.ts +128 -128
  96. package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +149 -149
  97. package/src/talkpilot/calls/__tests__/calls.spec.ts +270 -270
  98. package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +375 -344
  99. package/src/talkpilot/calls/calls.constants.ts +20 -20
  100. package/src/talkpilot/calls/calls.getters.ts +248 -248
  101. package/src/talkpilot/calls/calls.statistics.getters.ts +590 -587
  102. package/src/talkpilot/calls/calls.statistics.types.ts +47 -44
  103. package/src/talkpilot/calls/calls.types.ts +119 -119
  104. package/src/talkpilot/calls/dashboard/calls.dashboard.ts +292 -292
  105. package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +57 -57
  106. package/src/talkpilot/calls/index.ts +6 -6
  107. package/src/talkpilot/clientAudioBuffers/__tests__/clientAudioBuffer.getters.spec.ts +160 -160
  108. package/src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts +117 -117
  109. package/src/talkpilot/clientAudioBuffers/clientsAudioBuffers.types.ts +25 -25
  110. package/src/talkpilot/clientAudioBuffers/index.ts +2 -2
  111. package/src/talkpilot/clients/clients.getters.ts +16 -16
  112. package/src/talkpilot/clients/clients.types.ts +14 -14
  113. package/src/talkpilot/clients/index.ts +2 -2
  114. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.getters.spec.ts +53 -53
  115. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +190 -190
  116. package/src/talkpilot/clientsConfig/clientsConfig.getters.ts +55 -55
  117. package/src/talkpilot/clientsConfig/clientsConfig.types.ts +127 -127
  118. package/src/talkpilot/clientsConfig/index.ts +2 -2
  119. package/src/talkpilot/contextNotes/__tests__/contextNotes.getters.spec.ts +176 -176
  120. package/src/talkpilot/contextNotes/contextNotes.getters.ts +86 -86
  121. package/src/talkpilot/contextNotes/contextNotes.types.ts +20 -20
  122. package/src/talkpilot/contextNotes/index.ts +2 -2
  123. package/src/talkpilot/flows/__tests__/flows.schema.spec.ts +96 -96
  124. package/src/talkpilot/flows/flows.getter.ts +14 -14
  125. package/src/talkpilot/flows/flows.schema.ts +154 -154
  126. package/src/talkpilot/flows/flows.types.ts +187 -187
  127. package/src/talkpilot/flows/index.ts +2 -2
  128. package/src/talkpilot/groups/__tests__/groups.spec.ts +90 -90
  129. package/src/talkpilot/groups/__tests__/phone.utils.spec.ts +32 -32
  130. package/src/talkpilot/groups/groups.getters.ts +30 -30
  131. package/src/talkpilot/groups/groups.types.ts +29 -29
  132. package/src/talkpilot/groups/index.ts +3 -3
  133. package/src/talkpilot/groups/phone.utils.ts +46 -46
  134. package/src/talkpilot/index.ts +31 -31
  135. package/src/talkpilot/leads/index.ts +2 -2
  136. package/src/talkpilot/leads/leads.getter.ts +6 -6
  137. package/src/talkpilot/leads/leads.schema.ts +33 -33
  138. package/src/talkpilot/leads/leads.types.ts +20 -20
  139. package/src/talkpilot/mongodb-client.ts +78 -78
  140. package/src/talkpilot/phone_numbers/__tests__/phone_numbers.spec.ts +252 -252
  141. package/src/talkpilot/phone_numbers/index.ts +2 -2
  142. package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +158 -158
  143. package/src/talkpilot/phone_numbers/phone_numbers.schema.ts +17 -17
  144. package/src/talkpilot/phone_numbers/phone_numbers.types.ts +30 -30
  145. package/src/talkpilot/plans/__tests__/plans.spec.ts +70 -70
  146. package/src/talkpilot/plans/index.ts +2 -2
  147. package/src/talkpilot/plans/plans.getters.ts +132 -132
  148. package/src/talkpilot/plans/plans.types.ts +89 -89
  149. package/src/talkpilot/products/__tests__/products.getters.spec.ts +45 -45
  150. package/src/talkpilot/products/index.ts +2 -2
  151. package/src/talkpilot/products/products.getters.ts +12 -12
  152. package/src/talkpilot/products/products.types.ts +9 -9
  153. package/src/talkpilot/results/index.ts +7 -7
  154. package/src/talkpilot/results/results.getter.ts +39 -39
  155. package/src/talkpilot/results/results.schema.ts +25 -25
  156. package/src/talkpilot/results/results.types.ts +34 -34
  157. package/src/talkpilot/retry_analyze/__tests__/retryAnalyze.getters.spec.ts +156 -156
  158. package/src/talkpilot/retry_analyze/index.ts +2 -2
  159. package/src/talkpilot/retry_analyze/retryAnalyze.getters.ts +84 -84
  160. package/src/talkpilot/retry_analyze/retryAnalyze.types.ts +13 -13
  161. package/src/talkpilot/sessions/__tests__/sessions.spec.ts +147 -147
  162. package/src/talkpilot/sessions/index.ts +2 -2
  163. package/src/talkpilot/sessions/sessions.getter.ts +92 -92
  164. package/src/talkpilot/sessions/sessions.schema.ts +34 -34
  165. package/src/talkpilot/sessions/sessions.types.ts +30 -30
  166. package/src/talkpilot/subscriptions/__tests__/subscriptions.getters.utils.spec.ts +45 -45
  167. package/src/talkpilot/subscriptions/index.ts +3 -3
  168. package/src/talkpilot/subscriptions/subscriptions.getters.ts +146 -146
  169. package/src/talkpilot/subscriptions/subscriptions.getters.utils.ts +33 -33
  170. package/src/talkpilot/subscriptions/subscriptions.types.ts +66 -66
  171. package/src/talkpilot/utils/__tests__/query.utils.spec.ts +49 -49
  172. package/src/talkpilot/utils/query.utils.ts +21 -21
  173. package/src/test-utils/db-utils.ts +26 -26
  174. package/src/test-utils/factories/index.ts +15 -15
  175. package/src/test-utils/factories/municipal/cities.ts +16 -16
  176. package/src/test-utils/factories/municipal/departmentsSubjects.ts +37 -37
  177. package/src/test-utils/factories/municipal/muniIssues.ts +32 -32
  178. package/src/test-utils/factories/municipal/streets.ts +22 -22
  179. package/src/test-utils/factories/municipal/tickets.ts +39 -39
  180. package/src/test-utils/factories/talkpilot/agents.ts +19 -19
  181. package/src/test-utils/factories/talkpilot/calls.ts +37 -37
  182. package/src/test-utils/factories/talkpilot/clientAudioBuffers.ts +20 -20
  183. package/src/test-utils/factories/talkpilot/clientsConfig.ts +18 -18
  184. package/src/test-utils/factories/talkpilot/contextNotes.ts +33 -33
  185. package/src/test-utils/factories/talkpilot/flows.ts +33 -33
  186. package/src/test-utils/factories/talkpilot/groups.ts +33 -33
  187. package/src/test-utils/factories/talkpilot/phone_numbers.ts +22 -22
  188. package/src/test-utils/factories/talkpilot/sessions.ts +35 -35
  189. package/src/test-utils/factories/websitalk/scans.ts +23 -23
  190. package/src/utils/date.utils.ts +116 -116
  191. package/src/utils/shared.types.ts +4 -4
  192. package/src/utils/validation.ts +23 -23
  193. package/src/websitalk/index.ts +15 -15
  194. package/src/websitalk/mongodb-client.ts +61 -61
  195. package/src/websitalk/scans/__tests__/scans.spec.ts +218 -218
  196. package/src/websitalk/scans/index.ts +2 -2
  197. package/src/websitalk/scans/scans.getters.ts +113 -113
  198. package/src/websitalk/scans/scans.types.ts +53 -53
  199. package/tsconfig.json +23 -23
@@ -0,0 +1,53 @@
1
+ import { CityName } from "../utils/types";
2
+ import type { SubjectItem, TicketStatsDateScope } from "./tickets.types";
3
+ export declare const isDraftSubjectIdExpr: {
4
+ $or: ({
5
+ $eq: (string | {
6
+ $type: string;
7
+ })[];
8
+ $regexMatch?: undefined;
9
+ } | {
10
+ $eq: (string | null)[];
11
+ $regexMatch?: undefined;
12
+ } | {
13
+ $regexMatch: {
14
+ input: {
15
+ $ifNull: string[];
16
+ };
17
+ regex: RegExp;
18
+ };
19
+ $eq?: undefined;
20
+ })[];
21
+ };
22
+ export declare const ticketsWithCallSidMatch: (cityName: CityName, dateScope?: TicketStatsDateScope) => {
23
+ createdAt: {
24
+ $gte: Date;
25
+ $lte: Date;
26
+ };
27
+ cityName: string;
28
+ callSid: {
29
+ $exists: boolean;
30
+ $nin: (string | null)[];
31
+ };
32
+ };
33
+ export declare const ticketsByCallSidsMatch: (cityName: CityName, callSids: string[], dateScope?: TicketStatsDateScope) => {
34
+ createdAt?: {
35
+ $gte: Date;
36
+ $lte: Date;
37
+ } | undefined;
38
+ cityName: string;
39
+ callSid: {
40
+ $in: string[];
41
+ };
42
+ };
43
+ export declare const callSidGroupStages: () => Record<string, unknown>[];
44
+ export declare const subjectGroupStages: (cityName: CityName, limit?: number) => Record<string, unknown>[];
45
+ export declare const runTicketStatsAggregate: <T>(pipeline: Record<string, unknown>[]) => Promise<T[]>;
46
+ export declare const mapCallSidRows: (rows: {
47
+ _id: unknown;
48
+ }[]) => string[];
49
+ export declare const mapSubjectRows: (rows: {
50
+ _id: unknown;
51
+ count: number;
52
+ }[]) => SubjectItem[];
53
+ //# sourceMappingURL=tickets.statistics.pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickets.statistics.pipeline.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiBzE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;CAWhC,CAAC;AA4CF,eAAO,MAAM,uBAAuB,GAClC,UAAU,QAAQ,EAClB,YAAY,oBAAoB;;;;;;;;;;CAKhC,CAAC;AAEH,eAAO,MAAM,sBAAsB,GACjC,UAAU,QAAQ,EAClB,UAAU,MAAM,EAAE,EAClB,YAAY,oBAAoB;;;;;;;;;CAKhC,CAAC;AAEH,eAAO,MAAM,kBAAkB,QAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE5D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,QAAQ,EAClB,QAAQ,MAAM,KACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAUzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,CAAC,EAC7C,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAClC,OAAO,CAAC,CAAC,EAAE,CAKb,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,KAAG,MAAM,EAChB,CAAC;AAEjD,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,KAAG,WAAW,EAMjF,CAAC"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapSubjectRows = exports.mapCallSidRows = exports.runTicketStatsAggregate = exports.subjectGroupStages = exports.callSidGroupStages = exports.ticketsByCallSidsMatch = exports.ticketsWithCallSidMatch = exports.isDraftSubjectIdExpr = void 0;
4
+ const tickets_getters_1 = require("./tickets.getters");
5
+ const tickets_statistics_utils_1 = require("./tickets.statistics.utils");
6
+ const UNCLASSIFIED = "ללא מחלקה";
7
+ const STATS_MAX_TIME_MS = 30_000;
8
+ const effectiveSubjectIdExpr = {
9
+ $ifNull: [
10
+ "$externalCallFields.event_subject_id",
11
+ {
12
+ $ifNull: [
13
+ "$externalCallFields.event_sub_subject_id",
14
+ "$externalCallFields.event_sub_subject_id2",
15
+ ],
16
+ },
17
+ ],
18
+ };
19
+ exports.isDraftSubjectIdExpr = {
20
+ $or: [
21
+ { $eq: [{ $type: "$externalCallFields.event_subject_id" }, "missing"] },
22
+ { $eq: ["$externalCallFields.event_subject_id", null] },
23
+ {
24
+ $regexMatch: {
25
+ input: { $ifNull: ["$externalCallFields.event_subject_id", ""] },
26
+ regex: /^\s*$/,
27
+ },
28
+ },
29
+ ],
30
+ };
31
+ const departmentsSubjectsLookup = (cityName) => ({
32
+ $lookup: {
33
+ from: "departmentsSubjects",
34
+ let: { sid: "$effectiveSubjectId", c: cityName },
35
+ pipeline: [
36
+ {
37
+ $match: {
38
+ $expr: {
39
+ $and: [
40
+ { $eq: ["$cityName", "$$c"] },
41
+ {
42
+ $or: [
43
+ { $eq: ["$subject_id", { $ifNull: ["$$sid", ""] }] },
44
+ { $eq: ["$sub_subject_id", { $ifNull: ["$$sid", ""] }] },
45
+ { $eq: ["$sub_subject_id2", { $ifNull: ["$$sid", ""] }] },
46
+ ],
47
+ },
48
+ ],
49
+ },
50
+ },
51
+ },
52
+ { $limit: 1 },
53
+ ],
54
+ as: "subj",
55
+ },
56
+ });
57
+ const subjectLabelExpr = {
58
+ $cond: {
59
+ if: { $gt: [{ $size: "$subj" }, 0] },
60
+ then: {
61
+ $ifNull: [{ $arrayElemAt: ["$subj.subjectName", 0] }, UNCLASSIFIED],
62
+ },
63
+ else: UNCLASSIFIED,
64
+ },
65
+ };
66
+ const ticketDateMatchStage = (dateScope) => {
67
+ const { from, to } = (0, tickets_statistics_utils_1.resolveTicketStatsDateRange)(dateScope);
68
+ return { createdAt: { $gte: from, $lte: to } };
69
+ };
70
+ const ticketsWithCallSidMatch = (cityName, dateScope) => ({
71
+ cityName,
72
+ callSid: { $exists: true, $nin: [null, ""] },
73
+ ...ticketDateMatchStage(dateScope),
74
+ });
75
+ exports.ticketsWithCallSidMatch = ticketsWithCallSidMatch;
76
+ const ticketsByCallSidsMatch = (cityName, callSids, dateScope) => ({
77
+ cityName,
78
+ callSid: { $in: callSids },
79
+ ...(dateScope ? ticketDateMatchStage(dateScope) : {}),
80
+ });
81
+ exports.ticketsByCallSidsMatch = ticketsByCallSidsMatch;
82
+ const callSidGroupStages = () => [
83
+ { $group: { _id: "$callSid" } },
84
+ ];
85
+ exports.callSidGroupStages = callSidGroupStages;
86
+ const subjectGroupStages = (cityName, limit) => {
87
+ const shouldLimit = typeof limit === "number" && limit > 0;
88
+ return [
89
+ { $addFields: { effectiveSubjectId: effectiveSubjectIdExpr } },
90
+ departmentsSubjectsLookup(cityName),
91
+ { $addFields: { subject: subjectLabelExpr } },
92
+ { $group: { _id: "$subject", count: { $sum: 1 } } },
93
+ { $sort: { count: -1 } },
94
+ ...(shouldLimit ? [{ $limit: limit }] : []),
95
+ ];
96
+ };
97
+ exports.subjectGroupStages = subjectGroupStages;
98
+ const runTicketStatsAggregate = async (pipeline) => {
99
+ const rows = await (0, tickets_getters_1.getTicketsCollection)()
100
+ .aggregate(pipeline, { maxTimeMS: STATS_MAX_TIME_MS })
101
+ .toArray();
102
+ return rows;
103
+ };
104
+ exports.runTicketStatsAggregate = runTicketStatsAggregate;
105
+ const mapCallSidRows = (rows) => rows.map((r) => String(r._id)).filter(Boolean);
106
+ exports.mapCallSidRows = mapCallSidRows;
107
+ const mapSubjectRows = (rows) => rows.map((r) => ({
108
+ subject: String(r._id),
109
+ count: r.count,
110
+ }));
111
+ exports.mapSubjectRows = mapSubjectRows;
112
+ //# sourceMappingURL=tickets.statistics.pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickets.statistics.pipeline.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { TicketStatsDateScope } from "./tickets.types";
2
+ export declare const resolveTicketStatsDateRange: (dateScope?: TicketStatsDateScope) => {
3
+ from: Date;
4
+ to: Date;
5
+ };
6
+ export declare const ticketStatsDateScopeFromYmd: (startStr: string, endStr: string, timezone: string) => TicketStatsDateScope;
7
+ //# sourceMappingURL=tickets.statistics.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickets.statistics.utils.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiC5D,eAAO,MAAM,2BAA2B,GACtC,YAAY,oBAAoB,KAC/B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAKxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,UAAU,MAAM,KACf,oBAGD,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ticketStatsDateScopeFromYmd = exports.resolveTicketStatsDateRange = void 0;
4
+ const DEFAULT_LOOKBACK_DAYS = 30;
5
+ const DAY_MS = 24 * 60 * 60 * 1000;
6
+ const formatYmdInTz = (date, timezone) => new Intl.DateTimeFormat("en-CA", { timeZone: timezone }).format(date);
7
+ const dateAtNoonUtc = (dateStr) => {
8
+ const [y, m, d] = dateStr.split("-").map(Number);
9
+ return new Date(Date.UTC(y, m - 1, d, 12, 0, 0));
10
+ };
11
+ const startOfCalendarDayInTz = (dateStr, timezone) => {
12
+ const anchor = dateAtNoonUtc(dateStr).getTime();
13
+ let low = anchor - 2 * DAY_MS;
14
+ let high = anchor + DAY_MS;
15
+ while (high - low > 1) {
16
+ const mid = Math.floor((low + high) / 2);
17
+ if (formatYmdInTz(new Date(mid), timezone) >= dateStr)
18
+ high = mid;
19
+ else
20
+ low = mid;
21
+ }
22
+ return new Date(high);
23
+ };
24
+ const endOfCalendarDayInTz = (dateStr, timezone) => {
25
+ const [y, m, d] = dateStr.split("-").map(Number);
26
+ const nextDay = new Date(Date.UTC(y, m - 1, d + 1)).toISOString().slice(0, 10);
27
+ return new Date(startOfCalendarDayInTz(nextDay, timezone).getTime() - 1);
28
+ };
29
+ const resolveTicketStatsDateRange = (dateScope) => {
30
+ const to = dateScope?.to ?? new Date();
31
+ const from = dateScope?.from ?? new Date(to.getTime() - DEFAULT_LOOKBACK_DAYS * DAY_MS);
32
+ return { from, to };
33
+ };
34
+ exports.resolveTicketStatsDateRange = resolveTicketStatsDateRange;
35
+ const ticketStatsDateScopeFromYmd = (startStr, endStr, timezone) => ({
36
+ from: startOfCalendarDayInTz(startStr, timezone),
37
+ to: endOfCalendarDayInTz(endStr, timezone),
38
+ });
39
+ exports.ticketStatsDateScopeFromYmd = ticketStatsDateScopeFromYmd;
40
+ //# sourceMappingURL=tickets.statistics.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickets.statistics.utils.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.statistics.utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"calls.statistics.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.getters.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACrB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAEV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAqKlC,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAIpE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAItE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACrC,UAAU,MAAM,EAChB,QAAQ,MAAM,KACb,kBAKF,CAAC;AA8JF,eAAO,MAAM,qBAAqB,GAChC,QAAQ,gBAAgB,KACvB,OAAO,CAAC,uBAAuB,CAqDjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,gBAAgB,EACxB,QAAQ,kBAAkB,KACzB,OAAO,CAAC,gBAAgB,EAAE,CAwD5B,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,QAAQ,gBAAgB,KACvB,OAAO,CAAC,iBAAiB,EAAE,CAY7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,QAAQ,gBAAgB,KACvB,OAAO,CAAC,uBAAuB,CA2BjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,QAAQ,gBAAgB,KAAG,OAAO,CAAC,MAAM,EAAE,CAMrF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,GACzC,UAAU,QAAQ,EAClB,QAAQ,gBAAgB,EACxB,WAAW,oBAAoB,KAC9B,OAAO,CAAC,WAAW,EAAE,CAevB,CAAC"}
1
+ {"version":3,"file":"calls.statistics.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.getters.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACrB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAEV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAwKlC,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAIpE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAItE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GACrC,UAAU,MAAM,EAChB,QAAQ,MAAM,KACb,kBAKF,CAAC;AA8JF,eAAO,MAAM,qBAAqB,GAChC,QAAQ,gBAAgB,KACvB,OAAO,CAAC,uBAAuB,CAqDjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,gBAAgB,EACxB,QAAQ,kBAAkB,KACzB,OAAO,CAAC,gBAAgB,EAAE,CAwD5B,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,QAAQ,gBAAgB,KACvB,OAAO,CAAC,iBAAiB,EAAE,CAY7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,QAAQ,gBAAgB,KACvB,OAAO,CAAC,uBAAuB,CA2BjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,QAAQ,gBAAgB,KAAG,OAAO,CAAC,MAAM,EAAE,CAMrF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,GACzC,UAAU,QAAQ,EAClB,QAAQ,gBAAgB,EACxB,WAAW,oBAAoB,KAC9B,OAAO,CAAC,WAAW,EAAE,CAevB,CAAC"}
@@ -56,7 +56,7 @@ const routingMatch = (routing) => {
56
56
  const ticketStatusMatch = (filter) => {
57
57
  if (!needsTicketStatusFilter(filter.ticketStatusFilters))
58
58
  return null;
59
- const sids = filter.callSidsWithTickets ?? [];
59
+ const sids = [...(filter.callSidTicketCounts?.keys() ?? [])];
60
60
  const openedOnly = filter.ticketStatusFilters?.includes("opened");
61
61
  return { callSid: openedOnly ? { $in: sids } : { $nin: sids } };
62
62
  };
@@ -67,10 +67,13 @@ const hourMatch = (filter) => {
67
67
  const to = parseMinuteOfDay(filter.hourTo);
68
68
  if (from == null && to == null)
69
69
  return null;
70
- // hourTo is exclusive: a call counts when minuteOfDay is in [from, to).
71
- // from > to → the range wraps past midnight: minuteOfDay >= from OR < to
72
70
  if (from != null && to != null && from > to) {
73
- return { $or: [{ minuteOfDay: { $gte: from } }, { minuteOfDay: { $lt: to } }] };
71
+ return {
72
+ $or: [
73
+ { minuteOfDay: { $gte: from }, dateLocal: { $lt: filter.endStr } },
74
+ { minuteOfDay: { $lt: to }, dateLocal: { $gt: filter.startStr } },
75
+ ],
76
+ };
74
77
  }
75
78
  const minuteOfDay = {};
76
79
  if (from != null)
@@ -275,7 +278,7 @@ const toHourlyDistribution = (rows, hourRange, daysInRange) => {
275
278
  return buckets;
276
279
  };
277
280
  const aggregateCallsSummary = async (filter) => {
278
- const hasTickets = Boolean(filter.callSidsWithTickets?.length || filter.callSidsWithDraftTickets?.length);
281
+ const hasTickets = Boolean(filter.callSidTicketCounts?.size || filter.callSidDraftTicketCounts?.size);
279
282
  const hasStatusFilter = needsTicketStatusFilter(filter.ticketStatusFilters);
280
283
  if (!hasTickets && !hasStatusFilter) {
281
284
  const result = await aggregateCalls(filter, {
@@ -293,8 +296,8 @@ const aggregateCallsSummary = async (filter) => {
293
296
  // Single pass: project per-call data, handle ticket status filter and counting in JS.
294
297
  // Avoids embedding callSidsWithTickets inside any MongoDB pipeline stage.
295
298
  const rows = await aggregateCalls({ ...filter, ticketStatusFilters: undefined }, { $project: { _id: 0, callSid: 1, callLength: 1 } }).toArray();
296
- const ticketSet = new Set(filter.callSidsWithTickets ?? []);
297
- const draftSet = new Set(filter.callSidsWithDraftTickets ?? []);
299
+ const ticketMap = filter.callSidTicketCounts ?? new Map();
300
+ const draftMap = filter.callSidDraftTicketCounts ?? new Map();
298
301
  const openedOnly = hasStatusFilter && filter.ticketStatusFilters.includes("opened");
299
302
  const notOpenedOnly = hasStatusFilter && filter.ticketStatusFilters.includes("not_opened");
300
303
  let totalCalls = 0;
@@ -303,17 +306,15 @@ const aggregateCallsSummary = async (filter) => {
303
306
  let draftTickets = 0;
304
307
  for (const row of rows) {
305
308
  const sid = row.callSid;
306
- const hasTicket = ticketSet.has(sid);
309
+ const hasTicket = ticketMap.has(sid);
307
310
  if (openedOnly && !hasTicket)
308
311
  continue;
309
312
  if (notOpenedOnly && hasTicket)
310
313
  continue;
311
314
  totalCalls += 1;
312
315
  totalDuration += row.callLength ?? 0;
313
- if (hasTicket)
314
- openTickets += 1;
315
- if (draftSet.has(sid))
316
- draftTickets += 1;
316
+ openTickets += ticketMap.get(sid) ?? 0;
317
+ draftTickets += draftMap.get(sid) ?? 0;
317
318
  }
318
319
  if (!totalCalls)
319
320
  return emptySummary();
@@ -326,17 +327,17 @@ const aggregateCallsSummary = async (filter) => {
326
327
  };
327
328
  exports.aggregateCallsSummary = aggregateCallsSummary;
328
329
  const aggregateCallsTrend = async (filter, bucket) => {
329
- const ticketSet = filter.callSidsWithTickets?.length
330
- ? new Set(filter.callSidsWithTickets)
330
+ const ticketMap = filter.callSidTicketCounts?.size
331
+ ? filter.callSidTicketCounts
331
332
  : null;
332
- if (ticketSet) {
333
+ if (ticketMap) {
333
334
  const rows = await aggregateCalls({ ...filter, ticketStatusFilters: undefined }, { $addFields: trendBucketExpr(bucket, filter.timezone) }, { $project: { _id: 0, bucket: 1, callSid: 1 } }).toArray();
334
335
  const openedOnly = needsTicketStatusFilter(filter.ticketStatusFilters) && filter.ticketStatusFilters.includes("opened");
335
336
  const notOpenedOnly = needsTicketStatusFilter(filter.ticketStatusFilters) && filter.ticketStatusFilters.includes("not_opened");
336
337
  const byBucket = new Map();
337
338
  for (const row of rows) {
338
339
  const sid = row.callSid;
339
- const hasTicket = ticketSet.has(sid);
340
+ const hasTicket = ticketMap.has(sid);
340
341
  if (openedOnly && !hasTicket)
341
342
  continue;
342
343
  if (notOpenedOnly && hasTicket)
@@ -346,8 +347,7 @@ const aggregateCallsTrend = async (filter, bucket) => {
346
347
  : String(row.bucket);
347
348
  const cur = byBucket.get(label) ?? { totalCalls: 0, openTickets: 0 };
348
349
  cur.totalCalls += 1;
349
- if (hasTicket)
350
- cur.openTickets += 1;
350
+ cur.openTickets += ticketMap.get(sid) ?? 0;
351
351
  byBucket.set(label, cur);
352
352
  }
353
353
  const mappedRows = [...byBucket.entries()]
@@ -1 +1 @@
1
- {"version":3,"file":"calls.statistics.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.getters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calls.statistics.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.getters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { TicketStatsDateScope } from "../../municipal/tickets/tickets.types";
2
+ import type { CallsStatsFilter, CallsStatsTicketScope } from "./calls.statistics.types";
3
+ declare const needsTicketStatusFilter: (filters?: CallsStatsFilter["ticketStatusFilters"]) => boolean;
4
+ export declare const ticketStatsDateScopeForFilter: (filter: CallsStatsFilter) => TicketStatsDateScope;
5
+ export declare const resolveCallsStatsTicketScope: (filter: CallsStatsFilter) => Promise<CallsStatsTicketScope | undefined>;
6
+ /** Call SIDs with a ticket among filtered calls (for opened / not_opened $match). */
7
+ export declare const resolveTicketStatusCallSids: (filter: CallsStatsFilter, scope: CallsStatsTicketScope, filteredCallSids: string[]) => Promise<string[]>;
8
+ export declare const countOpenAndDraftAmongCallSids: (scope: CallsStatsTicketScope, callSids: string[]) => Promise<import("../../municipal/tickets/tickets.types").TicketCallsCountAmongCallSids>;
9
+ export declare const ticketSidsSetAmongCallSids: (scope: CallsStatsTicketScope, callSids: string[]) => Promise<Set<string>>;
10
+ export declare const wantsTicketMetrics: (filter: CallsStatsFilter) => boolean;
11
+ export { needsTicketStatusFilter };
12
+ //# sourceMappingURL=calls.statistics.ticketScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.statistics.ticketScope.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.ticketScope.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAExF,QAAA,MAAM,uBAAuB,GAC3B,UAAU,gBAAgB,CAAC,qBAAqB,CAAC,YAMlD,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,QAAQ,gBAAgB,KACvB,oBAC2E,CAAC;AAE/E,eAAO,MAAM,4BAA4B,GACvC,QAAQ,gBAAgB,KACvB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAS3C,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,GACtC,QAAQ,gBAAgB,EACxB,OAAO,qBAAqB,EAC5B,kBAAkB,MAAM,EAAE,KACzB,OAAO,CAAC,MAAM,EAAE,CAC0D,CAAC;AAE9E,eAAO,MAAM,8BAA8B,GACzC,OAAO,qBAAqB,EAC5B,UAAU,MAAM,EAAE,2FACqD,CAAC;AAE1E,eAAO,MAAM,0BAA0B,GACrC,OAAO,qBAAqB,EAC5B,UAAU,MAAM,EAAE,KACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAGnB,CAAC;AAEJ,eAAO,MAAM,kBAAkB,GAAI,QAAQ,gBAAgB,KAAG,OAEpC,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.needsTicketStatusFilter = exports.wantsTicketMetrics = exports.ticketSidsSetAmongCallSids = exports.countOpenAndDraftAmongCallSids = exports.resolveTicketStatusCallSids = exports.resolveCallsStatsTicketScope = exports.ticketStatsDateScopeForFilter = void 0;
4
+ const clientsConfig_getters_1 = require("../clientsConfig/clientsConfig.getters");
5
+ const tickets_statistics_getters_1 = require("../../municipal/tickets/tickets.statistics.getters");
6
+ const needsTicketStatusFilter = (filters) => {
7
+ if (!filters?.length)
8
+ return false;
9
+ const hasOpened = filters.includes("opened");
10
+ const hasNotOpened = filters.includes("not_opened");
11
+ return hasOpened !== hasNotOpened;
12
+ };
13
+ exports.needsTicketStatusFilter = needsTicketStatusFilter;
14
+ const ticketStatsDateScopeForFilter = (filter) => (0, tickets_statistics_getters_1.ticketStatsDateScopeFromYmd)(filter.startStr, filter.endStr, filter.timezone);
15
+ exports.ticketStatsDateScopeForFilter = ticketStatsDateScopeForFilter;
16
+ const resolveCallsStatsTicketScope = async (filter) => {
17
+ const city = filter.cityName ??
18
+ (await (0, clientsConfig_getters_1.getClientConfig)(filter.clientId))?.products?.municipal?.cityName;
19
+ if (!city)
20
+ return undefined;
21
+ return {
22
+ city: city,
23
+ dateScope: (0, exports.ticketStatsDateScopeForFilter)(filter),
24
+ };
25
+ };
26
+ exports.resolveCallsStatsTicketScope = resolveCallsStatsTicketScope;
27
+ /** Call SIDs with a ticket among filtered calls (for opened / not_opened $match). */
28
+ const resolveTicketStatusCallSids = async (filter, scope, filteredCallSids) => (0, tickets_statistics_getters_1.findCallSidsWithTicketsAmong)(scope.city, filteredCallSids, scope.dateScope);
29
+ exports.resolveTicketStatusCallSids = resolveTicketStatusCallSids;
30
+ const countOpenAndDraftAmongCallSids = (scope, callSids) => (0, tickets_statistics_getters_1.countTicketCallsAmongCallSids)(scope.city, callSids, scope.dateScope);
31
+ exports.countOpenAndDraftAmongCallSids = countOpenAndDraftAmongCallSids;
32
+ const ticketSidsSetAmongCallSids = async (scope, callSids) => new Set(await (0, tickets_statistics_getters_1.findCallSidsWithTicketsAmong)(scope.city, callSids, scope.dateScope));
33
+ exports.ticketSidsSetAmongCallSids = ticketSidsSetAmongCallSids;
34
+ const wantsTicketMetrics = (filter) => needsTicketStatusFilter(filter.ticketStatusFilters) ||
35
+ Boolean(filter.cityName);
36
+ exports.wantsTicketMetrics = wantsTicketMetrics;
37
+ //# sourceMappingURL=calls.statistics.ticketScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.statistics.ticketScope.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.ticketScope.ts"],"names":[],"mappings":";;;AAAA,kFAAyE;AAEzE,mGAI4D;AAI5D,MAAM,uBAAuB,GAAG,CAC9B,OAAiD,EACjD,EAAE;IACF,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpD,OAAO,SAAS,KAAK,YAAY,CAAC;AACpC,CAAC,CAAC;AA6CO,0DAAuB;AA3CzB,MAAM,6BAA6B,GAAG,CAC3C,MAAwB,EACF,EAAE,CACxB,IAAA,wDAA2B,EAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAHlE,QAAA,6BAA6B,iCAGqC;AAExE,MAAM,4BAA4B,GAAG,KAAK,EAC/C,MAAwB,EACoB,EAAE;IAC9C,MAAM,IAAI,GACR,MAAM,CAAC,QAAQ;QACf,CAAC,MAAM,IAAA,uCAAe,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC1E,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO;QACL,IAAI,EAAE,IAAgB;QACtB,SAAS,EAAE,IAAA,qCAA6B,EAAC,MAAM,CAAC;KACjD,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,4BAA4B,gCAWvC;AAEF,qFAAqF;AAC9E,MAAM,2BAA2B,GAAG,KAAK,EAC9C,MAAwB,EACxB,KAA4B,EAC5B,gBAA0B,EACP,EAAE,CACrB,IAAA,yDAA4B,EAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AALjE,QAAA,2BAA2B,+BAKsC;AAEvE,MAAM,8BAA8B,GAAG,CAC5C,KAA4B,EAC5B,QAAkB,EAClB,EAAE,CAAC,IAAA,0DAA6B,EAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAH7D,QAAA,8BAA8B,kCAG+B;AAEnE,MAAM,0BAA0B,GAAG,KAAK,EAC7C,KAA4B,EAC5B,QAAkB,EACI,EAAE,CACxB,IAAI,GAAG,CACL,MAAM,IAAA,yDAA4B,EAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAC1E,CAAC;AANS,QAAA,0BAA0B,8BAMnC;AAEG,MAAM,kBAAkB,GAAG,CAAC,MAAwB,EAAW,EAAE,CACtE,uBAAuB,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAFd,QAAA,kBAAkB,sBAEJ"}
@@ -0,0 +1,17 @@
1
+ import type { CityName } from "../../municipal/utils/types";
2
+ import type { TicketStatsDateScope } from "../../municipal/tickets/tickets.types";
3
+ import type { CallsStatsFilter } from "./calls.statistics.types";
4
+ export type CallsStatsTicketScope = {
5
+ city: CityName;
6
+ dateScope: TicketStatsDateScope;
7
+ };
8
+ declare const needsTicketStatusFilter: (filters?: CallsStatsFilter["ticketStatusFilters"]) => boolean;
9
+ export declare const ticketStatsDateScopeForFilter: (filter: CallsStatsFilter) => TicketStatsDateScope;
10
+ export declare const resolveCallsStatsTicketScope: (filter: CallsStatsFilter) => Promise<CallsStatsTicketScope | undefined>;
11
+ /** Call SIDs with a ticket among filtered calls (for opened / not_opened $match). */
12
+ export declare const resolveTicketStatusCallSids: (filter: CallsStatsFilter, scope: CallsStatsTicketScope, filteredCallSids: string[]) => Promise<string[]>;
13
+ export declare const countOpenAndDraftAmongCallSids: (scope: CallsStatsTicketScope, callSids: string[]) => Promise<import("../../municipal/tickets/tickets.types").TicketCallsCountAmongCallSids>;
14
+ export declare const ticketSidsSetAmongCallSids: (scope: CallsStatsTicketScope, callSids: string[]) => Promise<Set<string>>;
15
+ export declare const wantsTicketMetrics: (filter: CallsStatsFilter) => boolean;
16
+ export { needsTicketStatusFilter };
17
+ //# sourceMappingURL=calls.statistics.tickets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.statistics.tickets.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.tickets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAM5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAAI,UAAU,gBAAgB,CAAC,qBAAqB,CAAC,YAKjF,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,QAAQ,gBAAgB,KACvB,oBAC2E,CAAC;AAE/E,eAAO,MAAM,4BAA4B,GACvC,QAAQ,gBAAgB,KACvB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAM3C,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,GACtC,QAAQ,gBAAgB,EACxB,OAAO,qBAAqB,EAC5B,kBAAkB,MAAM,EAAE,KACzB,OAAO,CAAC,MAAM,EAAE,CAKhB,CAAC;AAEJ,eAAO,MAAM,8BAA8B,GACzC,OAAO,qBAAqB,EAC5B,UAAU,MAAM,EAAE,2FACqD,CAAC;AAE1E,eAAO,MAAM,0BAA0B,GACrC,OAAO,qBAAqB,EAC5B,UAAU,MAAM,EAAE,KACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAC8D,CAAC;AAErF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,gBAAgB,KAAG,OACmB,CAAC;AAElF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.needsTicketStatusFilter = exports.wantsTicketMetrics = exports.ticketSidsSetAmongCallSids = exports.countOpenAndDraftAmongCallSids = exports.resolveTicketStatusCallSids = exports.resolveCallsStatsTicketScope = exports.ticketStatsDateScopeForFilter = void 0;
4
+ const clientsConfig_getters_1 = require("../clientsConfig/clientsConfig.getters");
5
+ const tickets_statistics_getters_1 = require("../../municipal/tickets/tickets.statistics.getters");
6
+ const needsTicketStatusFilter = (filters) => {
7
+ if (!filters?.length)
8
+ return false;
9
+ const hasOpened = filters.includes("opened");
10
+ const hasNotOpened = filters.includes("not_opened");
11
+ return hasOpened !== hasNotOpened;
12
+ };
13
+ exports.needsTicketStatusFilter = needsTicketStatusFilter;
14
+ const ticketStatsDateScopeForFilter = (filter) => (0, tickets_statistics_getters_1.ticketStatsDateScopeFromYmd)(filter.startStr, filter.endStr, filter.timezone);
15
+ exports.ticketStatsDateScopeForFilter = ticketStatsDateScopeForFilter;
16
+ const resolveCallsStatsTicketScope = async (filter) => {
17
+ const city = filter.cityName ??
18
+ (await (0, clientsConfig_getters_1.getClientConfig)(filter.clientId))?.products?.municipal?.cityName;
19
+ if (!city)
20
+ return undefined;
21
+ return { city: city, dateScope: (0, exports.ticketStatsDateScopeForFilter)(filter) };
22
+ };
23
+ exports.resolveCallsStatsTicketScope = resolveCallsStatsTicketScope;
24
+ /** Call SIDs with a ticket among filtered calls (for opened / not_opened $match). */
25
+ const resolveTicketStatusCallSids = async (filter, scope, filteredCallSids) => (0, tickets_statistics_getters_1.findCallSidsWithTicketsAmong)(scope.city, filteredCallSids, scope.dateScope);
26
+ exports.resolveTicketStatusCallSids = resolveTicketStatusCallSids;
27
+ const countOpenAndDraftAmongCallSids = (scope, callSids) => (0, tickets_statistics_getters_1.countTicketCallsAmongCallSids)(scope.city, callSids, scope.dateScope);
28
+ exports.countOpenAndDraftAmongCallSids = countOpenAndDraftAmongCallSids;
29
+ const ticketSidsSetAmongCallSids = async (scope, callSids) => new Set(await (0, tickets_statistics_getters_1.findCallSidsWithTicketsAmong)(scope.city, callSids, scope.dateScope));
30
+ exports.ticketSidsSetAmongCallSids = ticketSidsSetAmongCallSids;
31
+ const wantsTicketMetrics = (filter) => needsTicketStatusFilter(filter.ticketStatusFilters) || Boolean(filter.cityName);
32
+ exports.wantsTicketMetrics = wantsTicketMetrics;
33
+ //# sourceMappingURL=calls.statistics.tickets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls.statistics.tickets.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.tickets.ts"],"names":[],"mappings":";;;AAAA,kFAAyE;AAEzE,mGAI4D;AAS5D,MAAM,uBAAuB,GAAG,CAAC,OAAiD,EAAE,EAAE;IACpF,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpD,OAAO,SAAS,KAAK,YAAY,CAAC;AACpC,CAAC,CAAC;AA2CO,0DAAuB;AAzCzB,MAAM,6BAA6B,GAAG,CAC3C,MAAwB,EACF,EAAE,CACxB,IAAA,wDAA2B,EAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAHlE,QAAA,6BAA6B,iCAGqC;AAExE,MAAM,4BAA4B,GAAG,KAAK,EAC/C,MAAwB,EACoB,EAAE;IAC9C,MAAM,IAAI,GACR,MAAM,CAAC,QAAQ;QACf,CAAC,MAAM,IAAA,uCAAe,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;IAC1E,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,EAAE,IAAI,EAAE,IAAgB,EAAE,SAAS,EAAE,IAAA,qCAA6B,EAAC,MAAM,CAAC,EAAE,CAAC;AACtF,CAAC,CAAC;AARW,QAAA,4BAA4B,gCAQvC;AAEF,qFAAqF;AAC9E,MAAM,2BAA2B,GAAG,KAAK,EAC9C,MAAwB,EACxB,KAA4B,EAC5B,gBAA0B,EACP,EAAE,CACrB,IAAA,yDAA4B,EAC1B,KAAK,CAAC,IAAI,EACV,gBAAgB,EAChB,KAAK,CAAC,SAAS,CAChB,CAAC;AATS,QAAA,2BAA2B,+BASpC;AAEG,MAAM,8BAA8B,GAAG,CAC5C,KAA4B,EAC5B,QAAkB,EAClB,EAAE,CAAC,IAAA,0DAA6B,EAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAH7D,QAAA,8BAA8B,kCAG+B;AAEnE,MAAM,0BAA0B,GAAG,KAAK,EAC7C,KAA4B,EAC5B,QAAkB,EACI,EAAE,CACxB,IAAI,GAAG,CAAC,MAAM,IAAA,yDAA4B,EAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAJxE,QAAA,0BAA0B,8BAI8C;AAE9E,MAAM,kBAAkB,GAAG,CAAC,MAAwB,EAAW,EAAE,CACtE,uBAAuB,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AADrE,QAAA,kBAAkB,sBACmD"}
@@ -9,9 +9,12 @@ export type CallsStatsFilter = {
9
9
  hourFrom?: string;
10
10
  hourTo?: string;
11
11
  callRouting?: CallRoutingFilter[];
12
+ /** @deprecated Use callSidTicketCounts instead. */
12
13
  callSidsWithTickets?: string[];
13
- /** Call SIDs whose municipal ticket matches the draft-ticket definition (see tickets statistics getters). */
14
+ callSidTicketCounts?: Map<string, number>;
15
+ /** @deprecated Use callSidDraftTicketCounts instead. */
14
16
  callSidsWithDraftTickets?: string[];
17
+ callSidDraftTicketCounts?: Map<string, number>;
15
18
  ticketStatusFilters?: TicketStatusFilter[];
16
19
  };
17
20
  export type CallsSummaryAggregation = {
@@ -1 +1 @@
1
- {"version":3,"file":"calls.statistics.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,YAAY,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,6GAA6G;IAC7G,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"calls.statistics.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.statistics.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,YAAY,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,wDAAwD;IACxD,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,wBAAwB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /** Default server-side cap for statistics aggregations (30s). */
2
+ export declare const DEFAULT_STATS_MAX_TIME_MS = 30000;
3
+ /** Log a warning when SID arrays exceed this size (BSON / pipeline pressure). */
4
+ export declare const MAX_RECOMMENDED_SID_ARRAY_SIZE = 10000;
5
+ export type StatisticsAggregationOptions = {
6
+ maxTimeMS?: number;
7
+ };
8
+ export declare class StatisticsTimeoutError extends Error {
9
+ constructor(maxTimeMS: number);
10
+ }
11
+ export declare const resolveMaxTimeMS: (options?: StatisticsAggregationOptions) => number;
12
+ /** Builds a constant lookup object for O(1) membership checks via $getField. */
13
+ export declare const buildCallSidLookup: (callSids: string[]) => Record<string, true>;
14
+ /**
15
+ * $expr that is true when `$callSid` is in `callSids`.
16
+ * Prefer over `$in` for large arrays embedded in aggregation pipelines.
17
+ */
18
+ export declare const callSidInSetExpr: (callSids: string[]) => Record<string, unknown>;
19
+ export declare const warnIfLargeSidArray: (label: string, callSids: string[]) => void;
20
+ //# sourceMappingURL=statistics.aggregation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.aggregation.d.ts","sourceRoot":"","sources":["../../src/utils/statistics.aggregation.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD,iFAAiF;AACjF,eAAO,MAAM,8BAA8B,QAAS,CAAC;AAErD,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,SAAS,EAAE,MAAM;CAI9B;AAED,eAAO,MAAM,gBAAgB,GAAI,UAAU,4BAA4B,KAAG,MACzB,CAAC;AAElD,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CACK,CAAC;AAEjF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAW1E,CAAC;AAEH,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,IAMvE,CAAC"}