@talkpilot/core-db 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +0 -30
  2. package/dist/municipal/tickets/index.d.ts +1 -2
  3. package/dist/municipal/tickets/index.d.ts.map +1 -1
  4. package/dist/municipal/tickets/index.js +0 -1
  5. package/dist/municipal/tickets/index.js.map +1 -1
  6. package/dist/municipal/tickets/tickets.getters.d.ts +11 -0
  7. package/dist/municipal/tickets/tickets.getters.d.ts.map +1 -1
  8. package/dist/municipal/tickets/tickets.getters.js +128 -0
  9. package/dist/municipal/tickets/tickets.getters.js.map +1 -1
  10. package/dist/municipal/tickets/tickets.types.d.ts +5 -10
  11. package/dist/municipal/tickets/tickets.types.d.ts.map +1 -1
  12. package/dist/talkpilot/calls/calls.types.d.ts +2 -1
  13. package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
  14. package/dist/talkpilot/calls/calls.types.js +3 -0
  15. package/dist/talkpilot/calls/calls.types.js.map +1 -1
  16. package/dist/talkpilot/calls/dashboard/calls.dashboard.d.ts +1 -33
  17. package/dist/talkpilot/calls/dashboard/calls.dashboard.d.ts.map +1 -1
  18. package/dist/talkpilot/calls/dashboard/calls.dashboard.js +146 -131
  19. package/dist/talkpilot/calls/dashboard/calls.dashboard.js.map +1 -1
  20. package/dist/talkpilot/calls/dashboard/calls.dashboard.types.d.ts +6 -27
  21. package/dist/talkpilot/calls/dashboard/calls.dashboard.types.d.ts.map +1 -1
  22. package/dist/talkpilot/calls/index.d.ts +0 -3
  23. package/dist/talkpilot/calls/index.d.ts.map +1 -1
  24. package/dist/talkpilot/calls/index.js +0 -3
  25. package/dist/talkpilot/calls/index.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +37 -1
  28. package/src/municipal/tickets/index.ts +1 -2
  29. package/src/municipal/tickets/tickets.getters.ts +140 -0
  30. package/src/municipal/tickets/tickets.types.ts +9 -14
  31. package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +111 -8
  32. package/src/talkpilot/calls/calls.types.ts +2 -4
  33. package/src/talkpilot/calls/dashboard/calls.dashboard.ts +197 -148
  34. package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +12 -25
  35. package/src/talkpilot/calls/index.ts +0 -3
  36. package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +0 -7
  37. package/dist/municipal/tickets/tickets.constants.d.ts +0 -7
  38. package/dist/municipal/tickets/tickets.constants.d.ts.map +0 -1
  39. package/dist/municipal/tickets/tickets.constants.js +0 -10
  40. package/dist/municipal/tickets/tickets.constants.js.map +0 -1
  41. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts +0 -12
  42. package/dist/municipal/tickets/tickets.deprecated.getters.d.ts.map +0 -1
  43. package/dist/municipal/tickets/tickets.deprecated.getters.js +0 -131
  44. package/dist/municipal/tickets/tickets.deprecated.getters.js.map +0 -1
  45. package/dist/municipal/tickets/tickets.statistics.aggregation.d.ts +0 -45
  46. package/dist/municipal/tickets/tickets.statistics.aggregation.d.ts.map +0 -1
  47. package/dist/municipal/tickets/tickets.statistics.aggregation.js +0 -98
  48. package/dist/municipal/tickets/tickets.statistics.aggregation.js.map +0 -1
  49. package/dist/municipal/tickets/tickets.statistics.dates.d.ts +0 -7
  50. package/dist/municipal/tickets/tickets.statistics.dates.d.ts.map +0 -1
  51. package/dist/municipal/tickets/tickets.statistics.dates.js +0 -40
  52. package/dist/municipal/tickets/tickets.statistics.dates.js.map +0 -1
  53. package/dist/municipal/tickets/tickets.statistics.getters.d.ts +0 -9
  54. package/dist/municipal/tickets/tickets.statistics.getters.d.ts.map +0 -1
  55. package/dist/municipal/tickets/tickets.statistics.getters.js +0 -55
  56. package/dist/municipal/tickets/tickets.statistics.getters.js.map +0 -1
  57. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts +0 -53
  58. package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts.map +0 -1
  59. package/dist/municipal/tickets/tickets.statistics.pipeline.js +0 -112
  60. package/dist/municipal/tickets/tickets.statistics.pipeline.js.map +0 -1
  61. package/dist/municipal/tickets/tickets.statistics.utils.d.ts +0 -7
  62. package/dist/municipal/tickets/tickets.statistics.utils.d.ts.map +0 -1
  63. package/dist/municipal/tickets/tickets.statistics.utils.js +0 -40
  64. package/dist/municipal/tickets/tickets.statistics.utils.js.map +0 -1
  65. package/dist/talkpilot/calls/calls.constants.d.ts +0 -17
  66. package/dist/talkpilot/calls/calls.constants.d.ts.map +0 -1
  67. package/dist/talkpilot/calls/calls.constants.js +0 -20
  68. package/dist/talkpilot/calls/calls.constants.js.map +0 -1
  69. package/dist/talkpilot/calls/calls.statistics.getters.d.ts +0 -19
  70. package/dist/talkpilot/calls/calls.statistics.getters.d.ts.map +0 -1
  71. package/dist/talkpilot/calls/calls.statistics.getters.js +0 -375
  72. package/dist/talkpilot/calls/calls.statistics.getters.js.map +0 -1
  73. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts +0 -12
  74. package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts.map +0 -1
  75. package/dist/talkpilot/calls/calls.statistics.ticketScope.js +0 -37
  76. package/dist/talkpilot/calls/calls.statistics.ticketScope.js.map +0 -1
  77. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts +0 -17
  78. package/dist/talkpilot/calls/calls.statistics.tickets.d.ts.map +0 -1
  79. package/dist/talkpilot/calls/calls.statistics.tickets.js +0 -33
  80. package/dist/talkpilot/calls/calls.statistics.tickets.js.map +0 -1
  81. package/dist/talkpilot/calls/calls.statistics.types.d.ts +0 -39
  82. package/dist/talkpilot/calls/calls.statistics.types.d.ts.map +0 -1
  83. package/dist/talkpilot/calls/calls.statistics.types.js +0 -3
  84. package/dist/talkpilot/calls/calls.statistics.types.js.map +0 -1
  85. package/dist/utils/date.utils.d.ts +0 -49
  86. package/dist/utils/date.utils.d.ts.map +0 -1
  87. package/dist/utils/date.utils.js +0 -103
  88. package/dist/utils/date.utils.js.map +0 -1
  89. package/dist/utils/statistics.aggregation.d.ts +0 -20
  90. package/dist/utils/statistics.aggregation.d.ts.map +0 -1
  91. package/dist/utils/statistics.aggregation.js +0 -43
  92. package/dist/utils/statistics.aggregation.js.map +0 -1
  93. package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +0 -104
  94. package/src/municipal/tickets/tickets.constants.ts +0 -8
  95. package/src/municipal/tickets/tickets.statistics.aggregation.ts +0 -113
  96. package/src/municipal/tickets/tickets.statistics.getters.ts +0 -93
  97. package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +0 -281
  98. package/src/talkpilot/calls/calls.constants.ts +0 -20
  99. package/src/talkpilot/calls/calls.statistics.getters.ts +0 -525
  100. package/src/talkpilot/calls/calls.statistics.types.ts +0 -44
  101. package/src/utils/date.utils.ts +0 -116
package/README.md CHANGED
@@ -127,36 +127,6 @@ Refer to `DEVELOPMENT.md` for the full walkthrough, token instructions, and fact
127
127
  - After publishing, downstream repos (`CIS`, `MIS`, `TalkPilot Server`, etc.) should run `npm update @talkpilot/core-db` so they receive the latest helpers/bug fixes.
128
128
  - Cloud Build & Cloud Run jobs that depend on this package pick up the new version the next time they rebuild their container; the services pull the compiled `dist/` output and type definitions when installing the dependency.
129
129
 
130
-
131
-
132
- | Version | Note |
133
- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
134
- | 1.1.9 | Maintenance release (build, test, format). |
135
- | 1.2.0 | Added new statistics getters for call & ticket dashboards (CP-149): summary, trend, hourly, and routing for calls, plus open/draft/subject ticket stats. **Removed** the legacy getters `getTicketsCountByCityAndDateRange` and `getTicketsSubjectStats`. |
136
-
137
-
138
- ### 1.1.9
139
-
140
- 1. `npm run build`.
141
- 2. `npm run test`.
142
- 3. `npm run format`.
143
-
144
- ### 1.2.0 — Call & ticket statistics (CP-149)
145
-
146
- New call statistics getters for dashboards (summary, trend, hourly, routing) and ticket statistics scoped to the same date range (open tickets, draft tickets, subject breakdowns).
147
-
148
- **Removed**
149
-
150
- | Removed | Replacement |
151
- | --- | --- |
152
- | `getTicketsCountByCityAndDateRange` | `aggregateCallsSummary` + `findCallSidsWithTicketsByCity` |
153
- | `getTicketsSubjectStats` | `findSubjectsByCallSids` |
154
- | `SubjectStatsItem` | `SubjectItem` |
155
-
156
- **Do I need to update my app?**
157
-
158
- Yes — if you used any of the removed functions above.
159
-
160
130
  ## 🛠 CI/CD & deployment
161
131
 
162
132
  - This package is consumed by Cloud Build-based services (TalkPilot Server, MIS, CIS) as a dependency when Docker images are built. Keep `dist/` in sync with your builds because the compiled artifact is what downstream services install.
@@ -1,4 +1,3 @@
1
1
  export * from "./tickets.getters";
2
- export * from "./tickets.statistics.getters";
3
- export type { Ticket, TicketDoc, SubjectItem, TicketStatsDateScope } from "./tickets.types";
2
+ export type { Ticket, TicketDoc, SubjectStatsItem } from "./tickets.types";
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -15,5 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./tickets.getters"), exports);
18
- __exportStar(require("./tickets.statistics.getters"), exports);
19
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/municipal/tickets/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,+DAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/municipal/tickets/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
@@ -1,4 +1,5 @@
1
1
  import { CityName, Ticket } from "../index";
2
+ import type { SubjectStatsItem } from "./tickets.types";
2
3
  import { Collection, Filter, ObjectId as MongoObjectId } from "mongodb";
3
4
  /**
4
5
  * Generate a new ticket ID as a string
@@ -12,6 +13,16 @@ export declare const getTicketById: (ticketId: string) => Promise<Ticket | null>
12
13
  export declare const createTicket: (ticketData: Omit<Ticket, "_id" | "createdAt" | "updatedAt">, ticketId?: string) => Promise<MongoObjectId>;
13
14
  export declare const updateTicket: (ticketId: string, data: Partial<Omit<Ticket, "_id" | "createdAt" | "updatedAt">>) => Promise<Ticket | null>;
14
15
  export declare const deleteTicket: (ticketId: string) => Promise<boolean>;
16
+ /**
17
+ * Count tickets by city and date range (createdAt converted to given timezone).
18
+ * Used as "open" tickets count when status is not available.
19
+ */
20
+ export declare function getTicketsCountByCityAndDateRange(cityName: string, startStr: string, endStr: string, timezone: string): Promise<number>;
21
+ /**
22
+ * Count of tickets by department (subject) from departmentsSubjects. Different departments (subject_id) are grouped, and sub-subjects are unified under their department.
23
+ * Date filter: createdAt in [startStr, endStr] (in the given timezone). Fallback to "Unclassified" when no match is found in the lookup.
24
+ */
25
+ export declare function getTicketsSubjectStats(cityName: string, startStr: string, endStr: string, timezone: string): Promise<SubjectStatsItem[]>;
15
26
  export declare const findTicketByQuery: (query: Partial<Ticket>) => Promise<import("mongodb").WithId<Ticket> | null>;
16
27
  /**
17
28
  * Update ticket files by external call number
@@ -1 +1 @@
1
- {"version":3,"file":"tickets.getters.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAO,MAEnC,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,UAAU,CAAC,MAAM,CAExD,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,SAAQ,MAAM,CAAC,MAAM,CAAM,KAC1B,OAAO,CAAC,MAAM,EAAE,CAElB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,KACd,OAAO,CAAC,MAAM,EAAE,CAElB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,KACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAKvB,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,EAC3D,WAAW,MAAM,KAChB,OAAO,CAAC,aAAa,CASvB,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,UAAU,MAAM,EAChB,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,KAC7D,OAAO,CAAC,MAAM,GAAG,IAAI,CAOvB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,OAAO,CAKpE,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,OAAO,OAAO,CAAC,MAAM,CAAC,qDAE7D,CAAC;AACF;;GAEG;AACH,eAAO,MAAM,6BAA6B,GAAU,QAAQ;IAC1D,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC,OAAO,CAsBlB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAU,QAAQ;IACtD,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,KAAG,OAAO,CAAC,OAAO,CASlB,CAAC"}
1
+ {"version":3,"file":"tickets.getters.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAO,MAEnC,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,UAAU,CAAC,MAAM,CAExD,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,SAAQ,MAAM,CAAC,MAAM,CAAM,KAC1B,OAAO,CAAC,MAAM,EAAE,CAElB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,KACd,OAAO,CAAC,MAAM,EAAE,CAElB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,KACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAKvB,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,YAAY,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,EAC3D,WAAW,MAAM,KAChB,OAAO,CAAC,aAAa,CASvB,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,UAAU,MAAM,EAChB,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,KAC7D,OAAO,CAAC,MAAM,GAAG,IAAI,CAOvB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,OAAO,CAKpE,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iCAAiC,CACrD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAqG7B;AAED,eAAO,MAAM,iBAAiB,GAAU,OAAO,OAAO,CAAC,MAAM,CAAC,qDAE7D,CAAC;AACF;;GAEG;AACH,eAAO,MAAM,6BAA6B,GAAU,QAAQ;IAC1D,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC,OAAO,CAsBlB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAU,QAAQ;IACtD,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,KAAG,OAAO,CAAC,OAAO,CASlB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.clearGuestJwtByCallNumber = exports.updateTicketFilesByCallNumber = exports.findTicketByQuery = exports.deleteTicket = exports.updateTicket = exports.createTicket = exports.getTicketById = exports.findTicketsByCallSid = exports.findTickets = exports.getTicketsCollection = exports.generateTicketId = void 0;
4
+ exports.getTicketsCountByCityAndDateRange = getTicketsCountByCityAndDateRange;
5
+ exports.getTicketsSubjectStats = getTicketsSubjectStats;
4
6
  const index_1 = require("../index");
5
7
  /**
6
8
  * Generate a new ticket ID as a string
@@ -52,6 +54,132 @@ const deleteTicket = async (ticketId) => {
52
54
  return result.deletedCount > 0;
53
55
  };
54
56
  exports.deleteTicket = deleteTicket;
57
+ /**
58
+ * Count tickets by city and date range (createdAt converted to given timezone).
59
+ * Used as "open" tickets count when status is not available.
60
+ */
61
+ async function getTicketsCountByCityAndDateRange(cityName, startStr, endStr, timezone) {
62
+ const doc = await (0, exports.getTicketsCollection)()
63
+ .aggregate([
64
+ { $match: { cityName, callSid: { $exists: true, $nin: [null, ""] } } },
65
+ {
66
+ $addFields: {
67
+ dateLocal: {
68
+ $dateToString: { format: "%Y-%m-%d", date: "$createdAt", timezone },
69
+ },
70
+ },
71
+ },
72
+ { $match: { dateLocal: { $gte: startStr, $lte: endStr } } },
73
+ { $count: "n" },
74
+ ])
75
+ .next();
76
+ return doc?.n ?? 0;
77
+ }
78
+ /**
79
+ * Count of tickets by department (subject) from departmentsSubjects. Different departments (subject_id) are grouped, and sub-subjects are unified under their department.
80
+ * Date filter: createdAt in [startStr, endStr] (in the given timezone). Fallback to "Unclassified" when no match is found in the lookup.
81
+ */
82
+ async function getTicketsSubjectStats(cityName, startStr, endStr, timezone) {
83
+ const coll = (0, exports.getTicketsCollection)();
84
+ const rows = await coll
85
+ .aggregate([
86
+ { $match: { cityName } },
87
+ {
88
+ $addFields: {
89
+ dateLocal: {
90
+ $dateToString: { format: "%Y-%m-%d", date: "$createdAt", timezone },
91
+ },
92
+ },
93
+ },
94
+ { $match: { dateLocal: { $gte: startStr, $lte: endStr } } },
95
+ {
96
+ $addFields: {
97
+ effectiveSubjectId: {
98
+ $ifNull: [
99
+ "$externalCallFields.event_subject_id",
100
+ {
101
+ $ifNull: [
102
+ "$externalCallFields.event_sub_subject_id",
103
+ "$externalCallFields.event_sub_subject_id2",
104
+ ],
105
+ },
106
+ ],
107
+ },
108
+ },
109
+ },
110
+ {
111
+ $lookup: {
112
+ from: "departmentsSubjects",
113
+ let: { sid: "$effectiveSubjectId", c: cityName },
114
+ pipeline: [
115
+ {
116
+ $match: {
117
+ $expr: {
118
+ $and: [
119
+ { $eq: ["$cityName", "$$c"] },
120
+ {
121
+ $or: [
122
+ { $eq: ["$subject_id", { $ifNull: ["$$sid", ""] }] },
123
+ {
124
+ $eq: ["$sub_subject_id", { $ifNull: ["$$sid", ""] }],
125
+ },
126
+ {
127
+ $eq: ["$sub_subject_id2", { $ifNull: ["$$sid", ""] }],
128
+ },
129
+ ],
130
+ },
131
+ ],
132
+ },
133
+ },
134
+ },
135
+ { $limit: 1 },
136
+ ],
137
+ as: "subj",
138
+ },
139
+ },
140
+ {
141
+ $addFields: {
142
+ subject_id: {
143
+ $cond: {
144
+ if: { $gt: [{ $size: "$subj" }, 0] },
145
+ then: {
146
+ $ifNull: [{ $arrayElemAt: ["$subj.subject_id", 0] }, ""],
147
+ },
148
+ else: "",
149
+ },
150
+ },
151
+ subject: {
152
+ $cond: {
153
+ if: { $gt: [{ $size: "$subj" }, 0] },
154
+ then: {
155
+ $ifNull: [
156
+ { $arrayElemAt: ["$subj.subjectName", 0] },
157
+ "Unclassified",
158
+ ],
159
+ },
160
+ else: "Unclassified",
161
+ },
162
+ },
163
+ },
164
+ },
165
+ {
166
+ $group: {
167
+ _id: "$subject_id",
168
+ subject: { $first: "$subject" },
169
+ count: { $sum: 1 },
170
+ },
171
+ },
172
+ { $sort: { count: -1 } },
173
+ ])
174
+ .toArray();
175
+ const total = rows.reduce((s, r) => s + r.count, 0);
176
+ return rows.map((r) => ({
177
+ subject_name: r.subject,
178
+ subject_id: r._id,
179
+ count: r.count,
180
+ percentage: total > 0 ? Math.round((r.count / total) * 100) : 0,
181
+ }));
182
+ }
55
183
  const findTicketByQuery = async (query) => {
56
184
  return await (0, exports.getTicketsCollection)().findOne(query);
57
185
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tickets.getters.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.getters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tickets.getters.js","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.getters.ts"],"names":[],"mappings":"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"}
@@ -28,16 +28,11 @@ export type Ticket = {
28
28
  guestJwt?: string;
29
29
  };
30
30
  export type TicketDoc = WithId<Ticket>;
31
- export type SubjectItem = {
32
- subject: string;
31
+ /** Call count by department (subject). */
32
+ export type SubjectStatsItem = {
33
+ subject_name: string;
34
+ subject_id: string;
33
35
  count: number;
34
- };
35
- export type TicketStatsDateScope = {
36
- from?: Date;
37
- to?: Date;
38
- };
39
- export type TicketStatsDateRange = {
40
- from: Date;
41
- to: Date;
36
+ percentage: number;
42
37
  };
43
38
  //# sourceMappingURL=tickets.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tickets.types.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,QAAQ,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,kBAAkB,EAAE;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,EAAE,CAAC,EAAE,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,IAAI,CAAC;CACV,CAAC"}
1
+ {"version":3,"file":"tickets.types.d.ts","sourceRoot":"","sources":["../../../src/municipal/tickets/tickets.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,EAAE,QAAQ,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,kBAAkB,EAAE;QAElB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAEtC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAEvC,0CAA0C;AAC1C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { ObjectId, Sort, WithId } from "mongodb";
2
2
  import { TranscriptionSegment } from "../results";
3
3
  import { LeadProperty } from "../leads";
4
- import { CONFERENCE_ROLE_CUSTOMER, CONFERENCE_ROLE_SUPERVISOR } from "./calls.constants";
4
+ export declare const CONFERENCE_ROLE_CUSTOMER: "customer";
5
+ export declare const CONFERENCE_ROLE_SUPERVISOR: "supervisor";
5
6
  export type ConferenceRole = typeof CONFERENCE_ROLE_CUSTOMER | typeof CONFERENCE_ROLE_SUPERVISOR | null;
6
7
  export type Call = {
7
8
  callSid: string;
@@ -1 +1 @@
1
- {"version":3,"file":"calls.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calls.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONFERENCE_ROLE_SUPERVISOR = exports.CONFERENCE_ROLE_CUSTOMER = void 0;
4
+ exports.CONFERENCE_ROLE_CUSTOMER = "customer";
5
+ exports.CONFERENCE_ROLE_SUPERVISOR = "supervisor";
3
6
  //# sourceMappingURL=calls.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calls.types.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"calls.types.js","sourceRoot":"","sources":["../../../src/talkpilot/calls/calls.types.ts"],"names":[],"mappings":";;;AAIa,QAAA,wBAAwB,GAAG,UAAmB,CAAC;AAC/C,QAAA,0BAA0B,GAAG,YAAqB,CAAC"}
@@ -1,36 +1,4 @@
1
1
  import { DashboardReportQuery, DashboardReportResponse } from "./calls.dashboard.types";
2
- import { CallLengthThresholds } from "src/utils/shared.types";
3
- export declare function buildCallLengthBucketsPipeline(thresholds: CallLengthThresholds): {
4
- $group: {
5
- _id: null;
6
- short: {
7
- $sum: {
8
- $cond: (number | {
9
- $lt: (string | number)[];
10
- })[];
11
- };
12
- };
13
- medium: {
14
- $sum: {
15
- $cond: (number | {
16
- $and: ({
17
- $gte: (string | number)[];
18
- $lte?: undefined;
19
- } | {
20
- $lte: (string | number)[];
21
- $gte?: undefined;
22
- })[];
23
- })[];
24
- };
25
- };
26
- long: {
27
- $sum: {
28
- $cond: (number | {
29
- $gt: (string | number)[];
30
- })[];
31
- };
32
- };
33
- };
34
- }[];
2
+ export type { DashboardVolumeGranularity, DashboardReportQuery, DashboardReportResponse, } from "./calls.dashboard.types";
35
3
  export declare function getDashboardStats(params: DashboardReportQuery): Promise<DashboardReportResponse>;
36
4
  //# sourceMappingURL=calls.dashboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calls.dashboard.d.ts","sourceRoot":"","sources":["../../../../src/talkpilot/calls/dashboard/calls.dashboard.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,oBAAoB,EACpB,uBAAuB,EAIxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AA+E9D,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+BjC;AAgCD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CAkFlC"}
1
+ {"version":3,"file":"calls.dashboard.d.ts","sourceRoot":"","sources":["../../../../src/talkpilot/calls/dashboard/calls.dashboard.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,oBAAoB,EACpB,uBAAuB,EAGxB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAuMjC,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CAsElC"}