@dakkitor/api-contracts 1.1.154 → 1.5.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.
- package/dist/abilities/abilities.contract.d.ts +55 -1
- package/dist/abilities/abilities.contract.d.ts.map +1 -1
- package/dist/abilities/abilities.contract.js +95 -1
- package/dist/abilities/abilities.contract.spec.d.ts +2 -0
- package/dist/abilities/abilities.contract.spec.d.ts.map +1 -0
- package/dist/abilities/abilities.contract.spec.js +145 -0
- package/dist/abilities/admin-dashboard.abilities.test.d.ts +2 -0
- package/dist/abilities/admin-dashboard.abilities.test.d.ts.map +1 -0
- package/dist/abilities/admin-dashboard.abilities.test.js +33 -0
- package/dist/abilities/admin.abilities.json +19 -0
- package/dist/abilities/bot.abilities.json +13 -4
- package/dist/abilities/first-agent.abilities.json +330 -70
- package/dist/abilities/interconnection.abilities.json +75 -0
- package/dist/abilities/kpi.abilities.json +68 -0
- package/dist/abilities/office-manager.abilities.json +111 -0
- package/dist/abilities/outreach-service.abilities.json +14 -0
- package/dist/abilities/second-agent.abilities.json +430 -43
- package/dist/abilities/team-leads.json +71 -6
- package/dist/abilities/worker-curator.abilities.json +233 -0
- package/dist/actives/actives.contract.d.ts +15521 -19793
- package/dist/actives/actives.contract.d.ts.map +1 -1
- package/dist/actives/actives.contract.js +517 -114
- package/dist/agent-client-links/agent-client-links.contract.d.ts +1431 -291
- package/dist/agent-client-links/agent-client-links.contract.d.ts.map +1 -1
- package/dist/auth/auth.contract.d.ts +1050 -81
- package/dist/auth/auth.contract.d.ts.map +1 -1
- package/dist/auth/auth.contract.js +115 -3
- package/dist/bookings/booking-worker-summary.spec.d.ts +2 -0
- package/dist/bookings/booking-worker-summary.spec.d.ts.map +1 -0
- package/dist/bookings/booking-worker-summary.spec.js +25 -0
- package/dist/bookings/bookings.contract.d.ts +21631 -27105
- package/dist/bookings/bookings.contract.d.ts.map +1 -1
- package/dist/bookings/bookings.contract.js +383 -91
- package/dist/bookings/bookings.contract.spec.d.ts +2 -0
- package/dist/bookings/bookings.contract.spec.d.ts.map +1 -0
- package/dist/bookings/bookings.contract.spec.js +11 -0
- package/dist/bookings/job-lock.spec.d.ts +2 -0
- package/dist/bookings/job-lock.spec.d.ts.map +1 -0
- package/dist/bookings/job-lock.spec.js +56 -0
- package/dist/bot-parse-cache/bot-parse-cache.contract.d.ts +232 -0
- package/dist/bot-parse-cache/bot-parse-cache.contract.d.ts.map +1 -0
- package/dist/bot-parse-cache/bot-parse-cache.contract.js +64 -0
- package/dist/call-history/call-history.contract.d.ts +1336 -767
- package/dist/call-history/call-history.contract.d.ts.map +1 -1
- package/dist/call-history/call-history.contract.js +86 -10
- package/dist/calls-feed/calls-feed.contract.d.ts +417 -0
- package/dist/calls-feed/calls-feed.contract.d.ts.map +1 -0
- package/dist/calls-feed/calls-feed.contract.js +32 -0
- package/dist/client-contacts/client-contacts.contract.d.ts +410 -226
- package/dist/client-contacts/client-contacts.contract.d.ts.map +1 -1
- package/dist/client-contacts/client-contacts.contract.js +35 -4
- package/dist/clients/clients.contract.d.ts +227 -73
- package/dist/clients/clients.contract.d.ts.map +1 -1
- package/dist/clients/clients.contract.js +45 -21
- package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +2908 -1834
- package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts.map +1 -1
- package/dist/collaboration-checkings/collaboration-checkings.contract.js +14 -9
- package/dist/collaborations/collaborations.contract.d.ts +2676 -1409
- package/dist/collaborations/collaborations.contract.d.ts.map +1 -1
- package/dist/collaborations/collaborations.contract.js +33 -9
- package/dist/common/call-rating.schema.d.ts.map +1 -1
- package/dist/common/call-rating.schema.js +4 -2
- package/dist/common/common-schemas.d.ts +59 -11
- package/dist/common/common-schemas.d.ts.map +1 -1
- package/dist/common/common-schemas.js +55 -29
- package/dist/common/error-schemas.d.ts +2 -2
- package/dist/common/pagination-query.schema.d.ts +13 -2
- package/dist/common/pagination-query.schema.d.ts.map +1 -1
- package/dist/common/pagination-query.schema.js +21 -2
- package/dist/common/pagination-query.schema.spec.d.ts +2 -0
- package/dist/common/pagination-query.schema.spec.d.ts.map +1 -0
- package/dist/common/pagination-query.schema.spec.js +53 -0
- package/dist/companies/companies.contract.d.ts +53 -28
- package/dist/companies/companies.contract.d.ts.map +1 -1
- package/dist/companies/companies.contract.js +11 -10
- package/dist/crews/crews.contract.d.ts +1010 -196
- package/dist/crews/crews.contract.d.ts.map +1 -1
- package/dist/crews/crews.contract.js +98 -17
- package/dist/crews/crews.contract.spec.d.ts +2 -0
- package/dist/crews/crews.contract.spec.d.ts.map +1 -0
- package/dist/crews/crews.contract.spec.js +67 -0
- package/dist/cron-executions/cron-executions.contract.d.ts +988 -59
- package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -1
- package/dist/cron-executions/cron-executions.contract.js +127 -7
- package/dist/curated-worker-leads/__tests__/disposition-reason.spec.d.ts +2 -0
- package/dist/curated-worker-leads/__tests__/disposition-reason.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/__tests__/disposition-reason.spec.js +40 -0
- package/dist/curated-worker-leads/candidate-coordination-snapshot.spec.d.ts +2 -0
- package/dist/curated-worker-leads/candidate-coordination-snapshot.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/candidate-coordination-snapshot.spec.js +16 -0
- package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +21650 -0
- package/dist/curated-worker-leads/candidate-coordination.contract.d.ts.map +1 -0
- package/dist/curated-worker-leads/candidate-coordination.contract.js +921 -0
- package/dist/curated-worker-leads/candidate-coordination.contract.spec.d.ts +2 -0
- package/dist/curated-worker-leads/candidate-coordination.contract.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/candidate-coordination.contract.spec.js +51 -0
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +2364 -0
- package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts.map +1 -0
- package/dist/curated-worker-leads/candidate-edit-session.contract.js +173 -0
- package/dist/curated-worker-leads/consent-queue.contract.d.ts +4497 -0
- package/dist/curated-worker-leads/consent-queue.contract.d.ts.map +1 -0
- package/dist/curated-worker-leads/consent-queue.contract.js +201 -0
- package/dist/curated-worker-leads/contact-history.spec.d.ts +2 -0
- package/dist/curated-worker-leads/contact-history.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/contact-history.spec.js +88 -0
- package/dist/curated-worker-leads/contact-session.contract.spec.d.ts +2 -0
- package/dist/curated-worker-leads/contact-session.contract.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/contact-session.contract.spec.js +315 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts +489 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts.map +1 -0
- package/dist/curated-worker-leads/curated-worker-lead-config.contract.js +88 -0
- package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts +135 -0
- package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts.map +1 -0
- package/dist/curated-worker-leads/curated-worker-leads.contract.js +32 -0
- package/dist/curated-worker-leads/job-candidate-cards.spec.d.ts +2 -0
- package/dist/curated-worker-leads/job-candidate-cards.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/job-candidate-cards.spec.js +157 -0
- package/dist/curated-worker-leads/job-candidates.spec.d.ts +2 -0
- package/dist/curated-worker-leads/job-candidates.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/job-candidates.spec.js +140 -0
- package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.d.ts +2 -0
- package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.d.ts.map +1 -0
- package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.js +19 -0
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts +18547 -0
- package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -0
- package/dist/curated-worker-leads/jobs-tab.contract.js +672 -0
- package/dist/curated-worker-leads/lead-agent-area.contract.d.ts +348 -0
- package/dist/curated-worker-leads/lead-agent-area.contract.d.ts.map +1 -0
- package/dist/curated-worker-leads/lead-agent-area.contract.js +51 -0
- package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +1116 -0
- package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts.map +1 -0
- package/dist/curated-worker-leads/owned-jobs-tab.contract.js +93 -0
- package/dist/curated-workers/curated-filter-additions.spec.d.ts +2 -0
- package/dist/curated-workers/curated-filter-additions.spec.d.ts.map +1 -0
- package/dist/curated-workers/curated-filter-additions.spec.js +17 -0
- package/dist/curated-workers/curated-job-seeking.spec.d.ts +2 -0
- package/dist/curated-workers/curated-job-seeking.spec.d.ts.map +1 -0
- package/dist/curated-workers/curated-job-seeking.spec.js +53 -0
- package/dist/curated-workers/curated-workers-id-documents.spec.d.ts +2 -0
- package/dist/curated-workers/curated-workers-id-documents.spec.d.ts.map +1 -0
- package/dist/curated-workers/curated-workers-id-documents.spec.js +38 -0
- package/dist/curated-workers/curated-workers.contract.d.ts +6160 -1906
- package/dist/curated-workers/curated-workers.contract.d.ts.map +1 -1
- package/dist/curated-workers/curated-workers.contract.js +333 -51
- package/dist/dashboards/agent-daily-metrics.contract.d.ts +10 -10
- package/dist/dashboards/agent-daily-metrics.contract.js +1 -1
- package/dist/dashboards/dashboard-widgets.contract.d.ts +3777 -473
- package/dist/dashboards/dashboard-widgets.contract.d.ts.map +1 -1
- package/dist/dashboards/dashboard-widgets.contract.js +527 -29
- package/dist/dashboards/dashboard.contract.d.ts +8 -8
- package/dist/document-intake/document-intake.contract.d.ts +3132 -0
- package/dist/document-intake/document-intake.contract.d.ts.map +1 -0
- package/dist/document-intake/document-intake.contract.js +418 -0
- package/dist/export-jobs/export-jobs.contract.d.ts +3928 -0
- package/dist/export-jobs/export-jobs.contract.d.ts.map +1 -0
- package/dist/export-jobs/export-jobs.contract.js +240 -0
- package/dist/exports-events/exports-events.schemas.d.ts +90 -0
- package/dist/exports-events/exports-events.schemas.d.ts.map +1 -0
- package/dist/exports-events/exports-events.schemas.js +56 -0
- package/dist/files/files.contract.d.ts +133 -126
- package/dist/files/files.contract.d.ts.map +1 -1
- package/dist/files/files.contract.js +8 -0
- package/dist/health/health.contract.d.ts +4 -4
- package/dist/index.d.ts +86 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -1
- package/dist/interactions/interactions.contract.d.ts +162 -0
- package/dist/interactions/interactions.contract.d.ts.map +1 -0
- package/dist/interactions/interactions.contract.js +42 -0
- package/dist/job-clusters/job-clusters.contract.d.ts +1584 -0
- package/dist/job-clusters/job-clusters.contract.d.ts.map +1 -0
- package/dist/job-clusters/job-clusters.contract.js +133 -0
- package/dist/jobs/jobs.contract.d.ts +16662 -8628
- package/dist/jobs/jobs.contract.d.ts.map +1 -1
- package/dist/jobs/jobs.contract.js +403 -190
- package/dist/jobs/jobs.contract.spec.d.ts +2 -0
- package/dist/jobs/jobs.contract.spec.d.ts.map +1 -0
- package/dist/jobs/jobs.contract.spec.js +70 -0
- package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +75 -75
- package/dist/lead-assignments/lead-assignments.contract.d.ts +2933 -1122
- package/dist/lead-assignments/lead-assignments.contract.d.ts.map +1 -1
- package/dist/lead-assignments/lead-assignments.contract.js +29 -7
- package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +328 -64
- package/dist/lead-distribution/agent-lead-distribution.contract.d.ts.map +1 -1
- package/dist/lead-distribution/agent-lead-distribution.contract.js +1 -1
- package/dist/lead-distribution/lead-distribution-config.contract.d.ts +31 -31
- package/dist/leads/leads.contract.d.ts +830 -368
- package/dist/leads/leads.contract.d.ts.map +1 -1
- package/dist/leads/leads.contract.js +106 -26
- package/dist/locations/locations.contract.d.ts +36 -36
- package/dist/notifications/notifications.contract.d.ts +1039 -0
- package/dist/notifications/notifications.contract.d.ts.map +1 -0
- package/dist/notifications/notifications.contract.js +110 -0
- package/dist/offices/offices.contract.d.ts +210 -60
- package/dist/offices/offices.contract.d.ts.map +1 -1
- package/dist/offices/offices.contract.js +18 -4
- package/dist/outreach/__tests__/outreach-claim.test.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-claim.test.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-claim.test.js +98 -0
- package/dist/outreach/__tests__/outreach-confirm-release.test.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-confirm-release.test.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-confirm-release.test.js +98 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-contract-additions.spec.js +78 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-requests.contract.spec.js +64 -0
- package/dist/outreach/__tests__/outreach-routes.test.d.ts +2 -0
- package/dist/outreach/__tests__/outreach-routes.test.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach-routes.test.js +57 -0
- package/dist/outreach/__tests__/outreach.schemas.test.d.ts +2 -0
- package/dist/outreach/__tests__/outreach.schemas.test.d.ts.map +1 -0
- package/dist/outreach/__tests__/outreach.schemas.test.js +144 -0
- package/dist/outreach/outreach-requests.contract.d.ts +1108 -0
- package/dist/outreach/outreach-requests.contract.d.ts.map +1 -0
- package/dist/outreach/outreach-requests.contract.js +134 -0
- package/dist/outreach/outreach-requests.schemas.d.ts +49 -0
- package/dist/outreach/outreach-requests.schemas.d.ts.map +1 -0
- package/dist/outreach/outreach-requests.schemas.js +60 -0
- package/dist/outreach/outreach.contract.d.ts +819 -0
- package/dist/outreach/outreach.contract.d.ts.map +1 -0
- package/dist/outreach/outreach.contract.js +195 -0
- package/dist/outreach/outreach.schemas.d.ts +118 -0
- package/dist/outreach/outreach.schemas.d.ts.map +1 -0
- package/dist/outreach/outreach.schemas.js +135 -0
- package/dist/own-research/own-research.contract.d.ts +1356 -552
- package/dist/own-research/own-research.contract.d.ts.map +1 -1
- package/dist/own-research/own-research.contract.js +14 -3
- package/dist/postcodes/postcodes.contract.d.ts +16 -16
- package/dist/proofs/proof-category.enum.d.ts +4 -0
- package/dist/proofs/proof-category.enum.d.ts.map +1 -0
- package/dist/proofs/proof-category.enum.js +5 -0
- package/dist/proofs/proof-entity-type.enum.d.ts +4 -0
- package/dist/proofs/proof-entity-type.enum.d.ts.map +1 -0
- package/dist/proofs/proof-entity-type.enum.js +5 -0
- package/dist/proofs/proof-type.enum.d.ts +28 -0
- package/dist/proofs/proof-type.enum.d.ts.map +1 -0
- package/dist/proofs/proof-type.enum.js +14 -0
- package/dist/proofs/proofs.contract.d.ts +3009 -0
- package/dist/proofs/proofs.contract.d.ts.map +1 -0
- package/dist/proofs/proofs.contract.js +92 -0
- package/dist/proofs/proofs.dtos.d.ts +1319 -0
- package/dist/proofs/proofs.dtos.d.ts.map +1 -0
- package/dist/proofs/proofs.dtos.js +178 -0
- package/dist/qualifications/qualifications.contract.d.ts +94 -94
- package/dist/realtime/data-changed.d.ts +21 -0
- package/dist/realtime/data-changed.d.ts.map +1 -0
- package/dist/realtime/data-changed.js +37 -0
- package/dist/shared/booking-history.schema.d.ts +27 -0
- package/dist/shared/booking-history.schema.d.ts.map +1 -0
- package/dist/shared/booking-history.schema.js +22 -0
- package/dist/shared/booking-history.spec.d.ts +2 -0
- package/dist/shared/booking-history.spec.d.ts.map +1 -0
- package/dist/shared/booking-history.spec.js +44 -0
- package/dist/shared/contact-suppressions.contract.d.ts +22 -0
- package/dist/shared/contact-suppressions.contract.d.ts.map +1 -0
- package/dist/shared/contact-suppressions.contract.js +13 -0
- package/dist/shared/live-booking.schema.d.ts +57 -0
- package/dist/shared/live-booking.schema.d.ts.map +1 -0
- package/dist/shared/live-booking.schema.js +34 -0
- package/dist/shared/summary-schemas.d.ts +218 -0
- package/dist/shared/summary-schemas.d.ts.map +1 -0
- package/dist/shared/summary-schemas.js +56 -0
- package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.d.ts +2 -0
- package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.d.ts.map +1 -0
- package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.js +20 -0
- package/dist/sheets-sync/__tests__/tab-sync-config.schema.test.d.ts +2 -0
- package/dist/sheets-sync/__tests__/tab-sync-config.schema.test.d.ts.map +1 -0
- package/dist/sheets-sync/__tests__/tab-sync-config.schema.test.js +41 -0
- package/dist/sheets-sync/sheets-sync-events.schemas.d.ts +43 -0
- package/dist/sheets-sync/sheets-sync-events.schemas.d.ts.map +1 -0
- package/dist/sheets-sync/sheets-sync-events.schemas.js +29 -0
- package/dist/sheets-sync/sheets-sync.contract.d.ts +7258 -0
- package/dist/sheets-sync/sheets-sync.contract.d.ts.map +1 -0
- package/dist/sheets-sync/sheets-sync.contract.js +323 -0
- package/dist/telegram/telegram.contract.d.ts +727 -0
- package/dist/telegram/telegram.contract.d.ts.map +1 -0
- package/dist/telegram/telegram.contract.js +75 -0
- package/dist/trades/trade-rate-assessment.d.ts +18 -0
- package/dist/trades/trade-rate-assessment.d.ts.map +1 -0
- package/dist/trades/trade-rate-assessment.js +46 -0
- package/dist/trades/trade-rate-assessment.spec.d.ts +2 -0
- package/dist/trades/trade-rate-assessment.spec.d.ts.map +1 -0
- package/dist/trades/trade-rate-assessment.spec.js +223 -0
- package/dist/trades/trades.contract.d.ts +111 -0
- package/dist/trades/trades.contract.d.ts.map +1 -1
- package/dist/trades/trades.contract.js +49 -1
- package/dist/trades/trades.contract.spec.d.ts +2 -0
- package/dist/trades/trades.contract.spec.d.ts.map +1 -0
- package/dist/trades/trades.contract.spec.js +173 -0
- package/dist/user-access-grants/build-user-access-grant-rules.d.ts +10 -0
- package/dist/user-access-grants/build-user-access-grant-rules.d.ts.map +1 -0
- package/dist/user-access-grants/build-user-access-grant-rules.js +69 -0
- package/dist/user-access-grants/build-user-access-grant-rules.spec.d.ts +2 -0
- package/dist/user-access-grants/build-user-access-grant-rules.spec.d.ts.map +1 -0
- package/dist/user-access-grants/build-user-access-grant-rules.spec.js +77 -0
- package/dist/user-access-grants/user-access-grant-templates.json +454 -0
- package/dist/user-access-grants/user-access-grants.contract.d.ts +3886 -0
- package/dist/user-access-grants/user-access-grants.contract.d.ts.map +1 -0
- package/dist/user-access-grants/user-access-grants.contract.js +189 -0
- package/dist/user-access-grants/user-access-grants.contract.spec.d.ts +2 -0
- package/dist/user-access-grants/user-access-grants.contract.spec.d.ts.map +1 -0
- package/dist/user-access-grants/user-access-grants.contract.spec.js +149 -0
- package/dist/users/users.contract.d.ts +1959 -349
- package/dist/users/users.contract.d.ts.map +1 -1
- package/dist/users/users.contract.js +222 -37
- package/dist/users/users.contract.spec.d.ts +2 -0
- package/dist/users/users.contract.spec.d.ts.map +1 -0
- package/dist/users/users.contract.spec.js +103 -0
- package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +4609 -0
- package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -0
- package/dist/worker-identity-cases/worker-identity-cases.contract.js +409 -0
- package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts +1511 -0
- package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts.map +1 -0
- package/dist/worker-merge-proposals/worker-merge-proposals.contract.js +150 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +1106 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts.map +1 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.js +85 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.spec.d.ts +2 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.spec.d.ts.map +1 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.spec.js +216 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts +453 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts.map +1 -0
- package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.js +109 -0
- package/dist/workers/do-not-contact.contract.d.ts +46 -0
- package/dist/workers/do-not-contact.contract.d.ts.map +1 -0
- package/dist/workers/do-not-contact.contract.js +41 -0
- package/dist/workers/do-not-contact.contract.spec.d.ts +2 -0
- package/dist/workers/do-not-contact.contract.spec.d.ts.map +1 -0
- package/dist/workers/do-not-contact.contract.spec.js +47 -0
- package/dist/workers/duplicate-group-worker.spec.d.ts +2 -0
- package/dist/workers/duplicate-group-worker.spec.d.ts.map +1 -0
- package/dist/workers/duplicate-group-worker.spec.js +34 -0
- package/dist/workers/filter-exact-flags.spec.d.ts +2 -0
- package/dist/workers/filter-exact-flags.spec.d.ts.map +1 -0
- package/dist/workers/filter-exact-flags.spec.js +37 -0
- package/dist/workers/worker-source-attribution.contract.spec.d.ts +2 -0
- package/dist/workers/worker-source-attribution.contract.spec.d.ts.map +1 -0
- package/dist/workers/worker-source-attribution.contract.spec.js +442 -0
- package/dist/workers/worker-source.spec.d.ts +2 -0
- package/dist/workers/worker-source.spec.d.ts.map +1 -0
- package/dist/workers/worker-source.spec.js +13 -0
- package/dist/workers/worker-status-facets.spec.d.ts +2 -0
- package/dist/workers/worker-status-facets.spec.d.ts.map +1 -0
- package/dist/workers/worker-status-facets.spec.js +34 -0
- package/dist/workers/workers.contract.d.ts +19534 -5969
- package/dist/workers/workers.contract.d.ts.map +1 -1
- package/dist/workers/workers.contract.js +1096 -113
- package/dist/workers/workers.contract.spec.d.ts +2 -0
- package/dist/workers/workers.contract.spec.d.ts.map +1 -0
- package/dist/workers/workers.contract.spec.js +31 -0
- package/package.json +5 -4
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Provides role-specific widgets for First Agent (FA) and Second Agent (SA).
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.dashboardWidgetsContract = exports.CollaborationsTrendSchema = exports.WorkersTrendSchema = exports.CallPerformanceTrendSchema = exports.BookingsTrendSchema = exports.ActivesTrendSchema = exports.AdminSaAggregateSchema = exports.AdminFaAggregateSchema = exports.SaActivesWidgetSchema = exports.SaBookingsWidgetSchema = exports.SaWorkersWidgetSchema = exports.FaBookingsWidgetSchema = exports.FaActivesWidgetSchema = exports.AllAgentsCallHistoryQuerySchema = exports.FaCallHistoryWidgetSchema = exports.FaCheckingsWidgetSchema = exports.FaClientsWidgetSchema = exports.FaPipelineWidgetSchema = exports.TrendDataPointSchema = exports.DateRangeQuerySchema = exports.DashboardWidgetQuerySchema = void 0;
|
|
10
|
+
exports.dashboardWidgetsContract = exports.LeadActivityTrendSchema = exports.LeadActivityOutcomeKeySchema = exports.ProofsTrendSchema = exports.ProofsWidgetSchema = exports.CollaborationsTrendSchema = exports.JobsTrendSchema = exports.WorkersTrendSchema = exports.CallPerformanceTrendSchema = exports.BookingsTrendSchema = exports.ActivesTrendSchema = exports.AdminSaAggregateSchema = exports.AdminFaAggregateSchema = exports.SaActivesWidgetSchema = exports.SaBookingsWidgetSchema = exports.SaWorkersWidgetSchema = exports.FaJobsWidgetSchema = exports.FaBookingsWidgetSchema = exports.FaActivesWidgetSchema = exports.AllAgentsCallHistoryQuerySchema = exports.AgentStatsSortFieldSchema = exports.FaCallHistoryWidgetSchema = exports.FaCheckingsWidgetSchema = exports.FaClientsWidgetSchema = exports.FaPipelineWidgetSchema = exports.TrendDataPointSchema = exports.RoleScopedDateRangeQuerySchema = exports.AgentTrendQuerySchema = exports.DateRangeOfficeQuerySchema = exports.DateRangeQuerySchema = exports.DashboardWidgetQuerySchema = void 0;
|
|
11
11
|
const core_1 = require("@ts-rest/core");
|
|
12
12
|
const zod_1 = require("zod");
|
|
13
13
|
const pagination_schema_1 = require("../common/pagination.schema");
|
|
@@ -17,6 +17,9 @@ const collaborations_contract_1 = require("../collaborations/collaborations.cont
|
|
|
17
17
|
const bookings_contract_1 = require("../bookings/bookings.contract");
|
|
18
18
|
const actives_contract_1 = require("../actives/actives.contract");
|
|
19
19
|
const call_rating_schema_1 = require("../common/call-rating.schema");
|
|
20
|
+
const common_schemas_1 = require("../common/common-schemas");
|
|
21
|
+
const users_contract_1 = require("../users/users.contract");
|
|
22
|
+
const proof_type_enum_1 = require("../proofs/proof-type.enum");
|
|
20
23
|
const c = (0, core_1.initContract)();
|
|
21
24
|
// =============================================================================
|
|
22
25
|
// COMMON SCHEMAS
|
|
@@ -29,6 +32,11 @@ exports.DashboardWidgetQuerySchema = zod_1.z.object({
|
|
|
29
32
|
.string()
|
|
30
33
|
.optional()
|
|
31
34
|
.describe('Date in YYYY-MM-DD format. Defaults to today if not provided.'),
|
|
35
|
+
office: zod_1.z
|
|
36
|
+
.string()
|
|
37
|
+
.uuid()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('Filter by office ID. Omit for all accessible offices.'),
|
|
32
40
|
});
|
|
33
41
|
/**
|
|
34
42
|
* Date range filter for historical queries
|
|
@@ -37,6 +45,35 @@ exports.DateRangeQuerySchema = zod_1.z.object({
|
|
|
37
45
|
startDate: zod_1.z.string().describe('Start date in YYYY-MM-DD format'),
|
|
38
46
|
endDate: zod_1.z.string().describe('End date in YYYY-MM-DD format'),
|
|
39
47
|
});
|
|
48
|
+
/**
|
|
49
|
+
* Date range + office filter for admin aggregate trends.
|
|
50
|
+
*/
|
|
51
|
+
exports.DateRangeOfficeQuerySchema = exports.DateRangeQuerySchema.extend({
|
|
52
|
+
office: zod_1.z
|
|
53
|
+
.string()
|
|
54
|
+
.uuid()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Filter by office ID. Omit for all accessible offices.'),
|
|
57
|
+
});
|
|
58
|
+
/** Date range + the agent's role (FA/SA), for per-agent admin trend lookups. */
|
|
59
|
+
exports.AgentTrendQuerySchema = exports.DateRangeQuerySchema.extend({
|
|
60
|
+
role: zod_1.z
|
|
61
|
+
.enum(['FA', 'SA'])
|
|
62
|
+
.optional()
|
|
63
|
+
.describe('Agent role for role-scoped metrics'),
|
|
64
|
+
});
|
|
65
|
+
/**
|
|
66
|
+
* Date range + an optional self role scope for personal trends that exist in
|
|
67
|
+
* both the FA and SA widget sections (actives, bookings). When omitted the
|
|
68
|
+
* server falls back to the caller's default role. A role the caller does not
|
|
69
|
+
* hold is ignored server-side.
|
|
70
|
+
*/
|
|
71
|
+
exports.RoleScopedDateRangeQuerySchema = exports.DateRangeQuerySchema.extend({
|
|
72
|
+
role: zod_1.z
|
|
73
|
+
.enum(['FA', 'SA'])
|
|
74
|
+
.optional()
|
|
75
|
+
.describe('Self role scope (FA/SA) for the requesting user'),
|
|
76
|
+
});
|
|
40
77
|
/**
|
|
41
78
|
* Common trend data point for time-series charts
|
|
42
79
|
*/
|
|
@@ -111,18 +148,88 @@ exports.FaCallHistoryWidgetSchema = zod_1.z.object({
|
|
|
111
148
|
.describe('Own research leads that already existed in system'),
|
|
112
149
|
ownResearchLeadsNew: zod_1.z.number().describe('Own research leads new to system'),
|
|
113
150
|
});
|
|
151
|
+
exports.AgentStatsSortFieldSchema = zod_1.z.enum([
|
|
152
|
+
'agentName',
|
|
153
|
+
'activesFaActive',
|
|
154
|
+
'activesFaOthers',
|
|
155
|
+
'activesSaActive',
|
|
156
|
+
'activesSaOthers',
|
|
157
|
+
'bookingsFaAttempts',
|
|
158
|
+
'bookingsFaFailed',
|
|
159
|
+
'bookingsFaInProgress',
|
|
160
|
+
'bookingsFaCompleted',
|
|
161
|
+
'bookingsFaCancelled',
|
|
162
|
+
'bookingsSaAttempts',
|
|
163
|
+
'bookingsSaFailed',
|
|
164
|
+
'bookingsSaInProgress',
|
|
165
|
+
'bookingsSaCompleted',
|
|
166
|
+
'bookingsSaCancelled',
|
|
167
|
+
'callsOnDate',
|
|
168
|
+
'efficientCalls',
|
|
169
|
+
'conversionsOnDate',
|
|
170
|
+
'dailyConversionRate',
|
|
171
|
+
'performanceScore',
|
|
172
|
+
'ownResearchLeadsAdded',
|
|
173
|
+
'jobsCreatedOnDate',
|
|
174
|
+
'jobsTotalOpenPositions',
|
|
175
|
+
'jobsFilledPositions',
|
|
176
|
+
'workersAddedToday',
|
|
177
|
+
'consentLeadsActioned',
|
|
178
|
+
'consentConsented',
|
|
179
|
+
'consentDeclined',
|
|
180
|
+
'consentWrongNumber',
|
|
181
|
+
'consentSnoozed',
|
|
182
|
+
'offersSent',
|
|
183
|
+
'offersBooked',
|
|
184
|
+
]);
|
|
114
185
|
/**
|
|
115
186
|
* Query parameters for all agents call history endpoint
|
|
116
187
|
*/
|
|
117
188
|
exports.AllAgentsCallHistoryQuerySchema = pagination_query_schema_1.PaginationQuerySchema.extend({
|
|
189
|
+
// The admin agent-stats table renders every agent in one unpaginated grid, so
|
|
190
|
+
// it asks for the whole set at once rather than the shared MAX_PAGE_SIZE.
|
|
191
|
+
limit: zod_1.z.coerce
|
|
192
|
+
.number()
|
|
193
|
+
.int()
|
|
194
|
+
.min(1)
|
|
195
|
+
.max(1000)
|
|
196
|
+
.default(50)
|
|
197
|
+
.describe('The number of items to return per page.'),
|
|
118
198
|
date: zod_1.z
|
|
119
199
|
.string()
|
|
120
200
|
.optional()
|
|
121
201
|
.describe('Date in YYYY-MM-DD format. Defaults to today if not provided.'),
|
|
202
|
+
startDate: zod_1.z
|
|
203
|
+
.string()
|
|
204
|
+
.optional()
|
|
205
|
+
.describe('Range start (YYYY-MM-DD). When set with endDate and != endDate, the table aggregates over the range.'),
|
|
206
|
+
endDate: zod_1.z.string().optional().describe('Range end (YYYY-MM-DD).'),
|
|
122
207
|
view: zod_1.z
|
|
123
208
|
.enum(['FA', 'SA'])
|
|
124
209
|
.optional()
|
|
125
210
|
.describe('Filter by agent view context (FA or SA).'),
|
|
211
|
+
sort: (0, common_schemas_1.createSortArraySchema)(exports.AgentStatsSortFieldSchema)
|
|
212
|
+
.optional()
|
|
213
|
+
.describe('Sort order. Array of {field, order} objects.'),
|
|
214
|
+
search: zod_1.z
|
|
215
|
+
.string()
|
|
216
|
+
.optional()
|
|
217
|
+
.describe('Search agent name (case-insensitive partial match).'),
|
|
218
|
+
office: zod_1.z
|
|
219
|
+
.array(zod_1.z.string().uuid())
|
|
220
|
+
.optional()
|
|
221
|
+
.describe('Filter by office IDs.'),
|
|
222
|
+
status: users_contract_1.UserStatusSchema.optional()
|
|
223
|
+
.default('ACTIVE')
|
|
224
|
+
.describe('Filter by agent account status. Defaults to ACTIVE.'),
|
|
225
|
+
minScore: zod_1.z.coerce
|
|
226
|
+
.number()
|
|
227
|
+
.optional()
|
|
228
|
+
.describe('Minimum performance score filter.'),
|
|
229
|
+
maxScore: zod_1.z.coerce
|
|
230
|
+
.number()
|
|
231
|
+
.optional()
|
|
232
|
+
.describe('Maximum performance score filter.'),
|
|
126
233
|
});
|
|
127
234
|
/**
|
|
128
235
|
* FA Actives Widget - Today's active workers (FA perspective)
|
|
@@ -133,19 +240,76 @@ exports.FaActivesWidgetSchema = zod_1.z.object({
|
|
|
133
240
|
byStatusFa: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
|
|
134
241
|
}),
|
|
135
242
|
});
|
|
243
|
+
// Reusable shape for "forToday" / "createdToday" buckets.
|
|
244
|
+
// `includeOfficeSplits` adds the FA/SA/FaSa optional splits (admin aggregates only).
|
|
245
|
+
const bookingsCountsBlock = (includeOfficeSplits) => zod_1.z.object({
|
|
246
|
+
total: zod_1.z.number(),
|
|
247
|
+
byStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
|
|
248
|
+
byCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
|
|
249
|
+
/**
|
|
250
|
+
* Bookings that start on this day AND were created on this day (booked and
|
|
251
|
+
* starting same-day). A subset of the start-side count, so the share of
|
|
252
|
+
* today's starts = sameDay / starting. Only populated for the `forToday`
|
|
253
|
+
* bucket (meaningless for `createdToday`).
|
|
254
|
+
*/
|
|
255
|
+
sameDay: zod_1.z.number().optional(),
|
|
256
|
+
...(includeOfficeSplits
|
|
257
|
+
? {
|
|
258
|
+
byStatusFa: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()).optional(),
|
|
259
|
+
byStatusSa: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()).optional(),
|
|
260
|
+
byStatusFaSa: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()).optional(),
|
|
261
|
+
byCategoryFa: zod_1.z
|
|
262
|
+
.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number())
|
|
263
|
+
.optional(),
|
|
264
|
+
byCategorySa: zod_1.z
|
|
265
|
+
.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number())
|
|
266
|
+
.optional(),
|
|
267
|
+
byCategoryFaSa: zod_1.z
|
|
268
|
+
.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number())
|
|
269
|
+
.optional(),
|
|
270
|
+
}
|
|
271
|
+
: {}),
|
|
272
|
+
});
|
|
136
273
|
/**
|
|
137
274
|
* FA Bookings Widget - Booking management (FA perspective)
|
|
138
275
|
*/
|
|
139
276
|
exports.FaBookingsWidgetSchema = zod_1.z.object({
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
277
|
+
forToday: bookingsCountsBlock(false),
|
|
278
|
+
createdToday: bookingsCountsBlock(false),
|
|
279
|
+
ongoingBookings: zod_1.z.number(),
|
|
280
|
+
startingToday: zod_1.z.number(),
|
|
281
|
+
pendingConfirmation: zod_1.z.number(),
|
|
282
|
+
upcomingStarts: zod_1.z.number(),
|
|
283
|
+
});
|
|
284
|
+
/**
|
|
285
|
+
* FA Jobs Widget - Job metrics for a single First Agent
|
|
286
|
+
*/
|
|
287
|
+
exports.FaJobsWidgetSchema = zod_1.z.object({
|
|
288
|
+
totalCreated: zod_1.z
|
|
289
|
+
.number()
|
|
290
|
+
.describe('Jobs created by this agent on the selected date'),
|
|
291
|
+
totalOpenPositions: zod_1.z
|
|
292
|
+
.number()
|
|
293
|
+
.describe('Sum of positions across jobs that were AVAILABLE at any point during the selected date'),
|
|
294
|
+
availableJobs: zod_1.z
|
|
295
|
+
.number()
|
|
296
|
+
.describe('Count of distinct jobs that were AVAILABLE at any point during the selected date'),
|
|
297
|
+
filledPositions: zod_1.z.number().describe('Positions filled on the selected date'),
|
|
298
|
+
transitionCounts: zod_1.z
|
|
299
|
+
.record(zod_1.z.string(), zod_1.z.number())
|
|
300
|
+
.describe('Job status transitions on the selected date'),
|
|
301
|
+
fillRate: zod_1.z
|
|
302
|
+
.number()
|
|
303
|
+
.describe('Sourcing fill-rate over jobs CLOSED on the selected date: filledForRate / total positions (0 when no closes). Declared-filled counts as fully filled; booking-filled capped at total.'),
|
|
304
|
+
positionsAdjusted: zod_1.z
|
|
305
|
+
.number()
|
|
306
|
+
.describe('Count of position-count changes (POSITIONS_CHANGED) on the selected date'),
|
|
307
|
+
positionsNetChange: zod_1.z
|
|
144
308
|
.number()
|
|
145
|
-
.describe('
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
309
|
+
.describe('Net positions added/removed across adjustments on the selected date'),
|
|
310
|
+
overbookedCount: zod_1.z
|
|
311
|
+
.number()
|
|
312
|
+
.describe('Count of jobs closed on the selected date with more bookings than positions'),
|
|
149
313
|
});
|
|
150
314
|
// =============================================================================
|
|
151
315
|
// SECOND AGENT (SA) WIDGET SCHEMAS
|
|
@@ -161,15 +325,12 @@ exports.SaWorkersWidgetSchema = zod_1.z.object({
|
|
|
161
325
|
* SA Bookings Widget - Booking management (SA perspective)
|
|
162
326
|
*/
|
|
163
327
|
exports.SaBookingsWidgetSchema = zod_1.z.object({
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
startingToday: zod_1.z.number().describe('Bookings with startDate equal to today'),
|
|
171
|
-
waitingForConfirmation: zod_1.z.number(),
|
|
172
|
-
upcomingStarts: zod_1.z.number().describe('All future bookings not starting today'),
|
|
328
|
+
forToday: bookingsCountsBlock(false),
|
|
329
|
+
createdToday: bookingsCountsBlock(false),
|
|
330
|
+
ongoingBookings: zod_1.z.number(),
|
|
331
|
+
startingToday: zod_1.z.number(),
|
|
332
|
+
pendingConfirmation: zod_1.z.number(),
|
|
333
|
+
upcomingStarts: zod_1.z.number(),
|
|
173
334
|
});
|
|
174
335
|
/**
|
|
175
336
|
* SA Actives Widget - Today's active workers (SA perspective)
|
|
@@ -190,12 +351,16 @@ exports.AdminFaAggregateSchema = zod_1.z.object({
|
|
|
190
351
|
actives: zod_1.z.object({
|
|
191
352
|
/** Flat structure (unlike per-agent FaActivesWidgetSchema which nests under 'today') */
|
|
192
353
|
total: zod_1.z.number(),
|
|
193
|
-
|
|
354
|
+
/**
|
|
355
|
+
* Actives grouped by unified status, counting every active in scope (FA OR SA
|
|
356
|
+
* in office). Replaces the former separate byStatusFa/byStatusSa breakdowns now
|
|
357
|
+
* that the FA/SA status fields are unified into a single `status`.
|
|
358
|
+
*/
|
|
359
|
+
byStatus: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
|
|
194
360
|
}),
|
|
195
361
|
bookings: zod_1.z.object({
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
byCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
|
|
362
|
+
forToday: bookingsCountsBlock(true),
|
|
363
|
+
createdToday: bookingsCountsBlock(true),
|
|
199
364
|
ongoingBookings: zod_1.z.number(),
|
|
200
365
|
startingToday: zod_1.z.number(),
|
|
201
366
|
pendingConfirmation: zod_1.z.number(),
|
|
@@ -251,6 +416,35 @@ exports.AdminFaAggregateSchema = zod_1.z.object({
|
|
|
251
416
|
.number()
|
|
252
417
|
.describe('Own research leads new to system'),
|
|
253
418
|
}),
|
|
419
|
+
jobs: zod_1.z.object({
|
|
420
|
+
totalOpenPositions: zod_1.z
|
|
421
|
+
.number()
|
|
422
|
+
.describe('Sum of positions across jobs that were AVAILABLE at any point during the selected date, across all FA agents'),
|
|
423
|
+
availableJobs: zod_1.z
|
|
424
|
+
.number()
|
|
425
|
+
.describe('Count of distinct jobs that were AVAILABLE at any point during the selected date, across all FA agents'),
|
|
426
|
+
createdToday: zod_1.z
|
|
427
|
+
.number()
|
|
428
|
+
.describe('Jobs created on this date across all FA agents'),
|
|
429
|
+
filledPositions: zod_1.z
|
|
430
|
+
.number()
|
|
431
|
+
.describe('Filled positions (current booking state, window-scoped)'),
|
|
432
|
+
transitionCounts: zod_1.z
|
|
433
|
+
.record(zod_1.z.string(), zod_1.z.number())
|
|
434
|
+
.describe('Aggregated status transition counts for the date'),
|
|
435
|
+
fillRate: zod_1.z
|
|
436
|
+
.number()
|
|
437
|
+
.describe('Sourcing fill-rate over jobs CLOSED on the selected date: filledForRate / total positions (0 when no closes). Declared-filled counts as fully filled; booking-filled capped at total.'),
|
|
438
|
+
positionsAdjusted: zod_1.z
|
|
439
|
+
.number()
|
|
440
|
+
.describe('Count of position-count changes (POSITIONS_CHANGED) on the selected date'),
|
|
441
|
+
positionsNetChange: zod_1.z
|
|
442
|
+
.number()
|
|
443
|
+
.describe('Net positions added/removed across adjustments on the selected date'),
|
|
444
|
+
overbookedCount: zod_1.z
|
|
445
|
+
.number()
|
|
446
|
+
.describe('Count of jobs closed on the selected date with more bookings than positions'),
|
|
447
|
+
}),
|
|
254
448
|
agentCount: zod_1.z
|
|
255
449
|
.number()
|
|
256
450
|
.describe('Number of FA agents included in aggregation'),
|
|
@@ -265,12 +459,11 @@ exports.AdminSaAggregateSchema = zod_1.z.object({
|
|
|
265
459
|
byStatusSa: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
|
|
266
460
|
}),
|
|
267
461
|
bookings: zod_1.z.object({
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
byCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
|
|
462
|
+
forToday: bookingsCountsBlock(true),
|
|
463
|
+
createdToday: bookingsCountsBlock(true),
|
|
271
464
|
ongoingBookings: zod_1.z.number(),
|
|
272
465
|
startingToday: zod_1.z.number(),
|
|
273
|
-
|
|
466
|
+
pendingConfirmation: zod_1.z.number(),
|
|
274
467
|
upcomingStarts: zod_1.z.number(),
|
|
275
468
|
}),
|
|
276
469
|
workers: zod_1.z.object({
|
|
@@ -300,13 +493,24 @@ exports.ActivesTrendSchema = zod_1.z.object({
|
|
|
300
493
|
}),
|
|
301
494
|
});
|
|
302
495
|
/**
|
|
303
|
-
* Bookings trend data for charts
|
|
496
|
+
* Bookings trend data for charts.
|
|
497
|
+
*
|
|
498
|
+
* Per day we expose TWO views of the same timeline:
|
|
499
|
+
* - created* : bookings CREATED on that day (the line) — `total`/`byStatus`
|
|
500
|
+
* kept under their legacy names for backward compatibility.
|
|
501
|
+
* - forDay* : bookings whose startDate OR endDate is that day (the stacked
|
|
502
|
+
* bars), grouped by category, with per-status detail for tooltips.
|
|
304
503
|
*/
|
|
305
504
|
exports.BookingsTrendSchema = zod_1.z.object({
|
|
306
505
|
data: zod_1.z.array(zod_1.z.object({
|
|
307
506
|
date: zod_1.z.string(),
|
|
507
|
+
// created-on-this-day (the line)
|
|
308
508
|
total: zod_1.z.number(),
|
|
309
509
|
byStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
|
|
510
|
+
// for-this-day = startDate OR endDate on this day (the stacked bars)
|
|
511
|
+
forDayTotal: zod_1.z.number(),
|
|
512
|
+
forDayByCategory: zod_1.z.record(bookings_contract_1.BookingCategoryEnumSchema, zod_1.z.number()),
|
|
513
|
+
forDayByStatus: zod_1.z.record(bookings_contract_1.BookingTypeSchema, zod_1.z.number()),
|
|
310
514
|
})),
|
|
311
515
|
summary: zod_1.z.object({
|
|
312
516
|
averageDaily: zod_1.z.number(),
|
|
@@ -323,6 +527,9 @@ exports.CallPerformanceTrendSchema = zod_1.z.object({
|
|
|
323
527
|
averageRating: zod_1.z.number(),
|
|
324
528
|
conversionRate: zod_1.z.number(),
|
|
325
529
|
performanceScore: zod_1.z.number(),
|
|
530
|
+
// calls grouped by rating weight (0–10; "unrated" bucket for null) — the
|
|
531
|
+
// stacked-bar breakdown in the range chart.
|
|
532
|
+
ratingBreakdown: zod_1.z.record(zod_1.z.string(), zod_1.z.number()),
|
|
326
533
|
})),
|
|
327
534
|
summary: zod_1.z.object({
|
|
328
535
|
averageDailyCalls: zod_1.z.number(),
|
|
@@ -344,6 +551,25 @@ exports.WorkersTrendSchema = zod_1.z.object({
|
|
|
344
551
|
averagePerDay: zod_1.z.number(),
|
|
345
552
|
}),
|
|
346
553
|
});
|
|
554
|
+
/**
|
|
555
|
+
* Jobs trend data for charts (FA). created/day bars; open positions is the
|
|
556
|
+
* positions available during each date (date-scoped); filled is a per-day flow.
|
|
557
|
+
*/
|
|
558
|
+
exports.JobsTrendSchema = zod_1.z.object({
|
|
559
|
+
data: zod_1.z.array(zod_1.z.object({
|
|
560
|
+
date: zod_1.z.string(),
|
|
561
|
+
created: zod_1.z.number(),
|
|
562
|
+
openPositions: zod_1.z.number(),
|
|
563
|
+
filled: zod_1.z.number(),
|
|
564
|
+
fillRate: zod_1.z.number().describe('Sourcing fill-rate for the date'),
|
|
565
|
+
})),
|
|
566
|
+
summary: zod_1.z.object({
|
|
567
|
+
totalCreated: zod_1.z.number(),
|
|
568
|
+
totalFilled: zod_1.z.number(),
|
|
569
|
+
endOpenPositions: zod_1.z.number(),
|
|
570
|
+
fillRate: zod_1.z.number().describe('Sourcing fill-rate over the range'),
|
|
571
|
+
}),
|
|
572
|
+
});
|
|
347
573
|
/**
|
|
348
574
|
* Collaborations trend data for charts (FA only)
|
|
349
575
|
*/
|
|
@@ -359,6 +585,74 @@ exports.CollaborationsTrendSchema = zod_1.z.object({
|
|
|
359
585
|
}),
|
|
360
586
|
});
|
|
361
587
|
// =============================================================================
|
|
588
|
+
// PROOFS WIDGET + TREND SCHEMAS
|
|
589
|
+
// =============================================================================
|
|
590
|
+
/** Per-category breakdown: a total plus per-platform (section-type) counts. */
|
|
591
|
+
const ProofPostBreakdownSchema = zod_1.z.object({
|
|
592
|
+
total: zod_1.z.number(),
|
|
593
|
+
byType: zod_1.z.record(proof_type_enum_1.PostTypeEnum, zod_1.z.number()),
|
|
594
|
+
});
|
|
595
|
+
const ProofBookingBreakdownSchema = zod_1.z.object({
|
|
596
|
+
total: zod_1.z.number(),
|
|
597
|
+
byType: zod_1.z.record(proof_type_enum_1.BookingTypeEnum, zod_1.z.number()),
|
|
598
|
+
});
|
|
599
|
+
/**
|
|
600
|
+
* Proofs widget — section-entry counts split by category, each broken down by
|
|
601
|
+
* platform/type. Used by the per-user widget and the admin total.
|
|
602
|
+
*/
|
|
603
|
+
exports.ProofsWidgetSchema = zod_1.z.object({
|
|
604
|
+
post: ProofPostBreakdownSchema,
|
|
605
|
+
booking: ProofBookingBreakdownSchema,
|
|
606
|
+
total: zod_1.z.number().describe('post.total + booking.total'),
|
|
607
|
+
});
|
|
608
|
+
/**
|
|
609
|
+
* Proofs trend — per-date post/booking breakdowns over a range. Bars use
|
|
610
|
+
* post.total/booking.total; the per-platform byType detail feeds the tooltip.
|
|
611
|
+
*/
|
|
612
|
+
exports.ProofsTrendSchema = zod_1.z.object({
|
|
613
|
+
data: zod_1.z.array(zod_1.z.object({
|
|
614
|
+
date: zod_1.z.string(),
|
|
615
|
+
post: ProofPostBreakdownSchema,
|
|
616
|
+
booking: ProofBookingBreakdownSchema,
|
|
617
|
+
total: zod_1.z.number(),
|
|
618
|
+
})),
|
|
619
|
+
summary: zod_1.z.object({
|
|
620
|
+
totalPost: zod_1.z.number(),
|
|
621
|
+
totalBooking: zod_1.z.number(),
|
|
622
|
+
total: zod_1.z.number(),
|
|
623
|
+
averageDaily: zod_1.z.number(),
|
|
624
|
+
}),
|
|
625
|
+
});
|
|
626
|
+
/**
|
|
627
|
+
* Lead activity outcome keys (curated lead event types)
|
|
628
|
+
*/
|
|
629
|
+
exports.LeadActivityOutcomeKeySchema = zod_1.z.enum([
|
|
630
|
+
'CONSENTED',
|
|
631
|
+
'DECLINED',
|
|
632
|
+
'WRONG_NUMBER',
|
|
633
|
+
'SNOOZED',
|
|
634
|
+
'OFFER_SENT',
|
|
635
|
+
'BOOKED',
|
|
636
|
+
'BOOKING_CANCELLED',
|
|
637
|
+
'TOO_FAR',
|
|
638
|
+
'NOT_INTERESTED',
|
|
639
|
+
]);
|
|
640
|
+
/**
|
|
641
|
+
* Lead activity trend data for charts (curated leads, by outcome).
|
|
642
|
+
*/
|
|
643
|
+
exports.LeadActivityTrendSchema = zod_1.z.object({
|
|
644
|
+
data: zod_1.z.array(zod_1.z.object({
|
|
645
|
+
date: zod_1.z.string(),
|
|
646
|
+
total: zod_1.z.number(),
|
|
647
|
+
byOutcome: zod_1.z.record(exports.LeadActivityOutcomeKeySchema, zod_1.z.number()),
|
|
648
|
+
})),
|
|
649
|
+
summary: zod_1.z.object({
|
|
650
|
+
averageDaily: zod_1.z.number(),
|
|
651
|
+
peakDay: zod_1.z.string().nullable(),
|
|
652
|
+
peakValue: zod_1.z.number(),
|
|
653
|
+
}),
|
|
654
|
+
});
|
|
655
|
+
// =============================================================================
|
|
362
656
|
// API CONTRACT ROUTER
|
|
363
657
|
// =============================================================================
|
|
364
658
|
exports.dashboardWidgetsContract = c.router({
|
|
@@ -425,6 +719,48 @@ exports.dashboardWidgetsContract = c.router({
|
|
|
425
719
|
summary: 'Get FA bookings widget data',
|
|
426
720
|
description: 'Returns booking management summary for First Agent dashboard',
|
|
427
721
|
},
|
|
722
|
+
getFaJobs: {
|
|
723
|
+
method: 'GET',
|
|
724
|
+
path: '/widgets/fa/jobs',
|
|
725
|
+
query: exports.DashboardWidgetQuerySchema,
|
|
726
|
+
responses: {
|
|
727
|
+
200: exports.FaJobsWidgetSchema,
|
|
728
|
+
},
|
|
729
|
+
summary: 'Get FA jobs widget data',
|
|
730
|
+
description: 'Returns job metrics (created, open positions, filled, transitions) for First Agent dashboard',
|
|
731
|
+
},
|
|
732
|
+
getProofs: {
|
|
733
|
+
method: 'GET',
|
|
734
|
+
path: '/widgets/proofs',
|
|
735
|
+
query: exports.DashboardWidgetQuerySchema,
|
|
736
|
+
responses: { 200: exports.ProofsWidgetSchema },
|
|
737
|
+
summary: 'Get the current user’s proofs widget data',
|
|
738
|
+
description: 'Counts proofs (split POST/BOOKING) where forUserId = current user and proofDate = the selected date.',
|
|
739
|
+
},
|
|
740
|
+
getProofsTrend: {
|
|
741
|
+
method: 'GET',
|
|
742
|
+
path: '/trends/proofs',
|
|
743
|
+
query: exports.DateRangeQuerySchema,
|
|
744
|
+
responses: { 200: exports.ProofsTrendSchema },
|
|
745
|
+
summary: 'Get the current user’s proofs trend',
|
|
746
|
+
description: 'Per-date POST/BOOKING proof counts (by proofDate) over a range.',
|
|
747
|
+
},
|
|
748
|
+
getAdminProofs: {
|
|
749
|
+
method: 'GET',
|
|
750
|
+
path: '/widgets/admin/proofs',
|
|
751
|
+
query: exports.DashboardWidgetQuerySchema,
|
|
752
|
+
responses: { 200: exports.ProofsWidgetSchema },
|
|
753
|
+
summary: 'Get aggregate proofs total across in-scope agents (Admin)',
|
|
754
|
+
description: 'Counts proofs (split POST/BOOKING) for all agents in the office/CASL scope on a date.',
|
|
755
|
+
},
|
|
756
|
+
getAdminProofsTrend: {
|
|
757
|
+
method: 'GET',
|
|
758
|
+
path: '/trends/admin/proofs',
|
|
759
|
+
query: exports.DateRangeOfficeQuerySchema,
|
|
760
|
+
responses: { 200: exports.ProofsTrendSchema },
|
|
761
|
+
summary: 'Get aggregate proofs trend across in-scope agents (Admin)',
|
|
762
|
+
description: 'Per-date POST/BOOKING proof totals across the office’s agents.',
|
|
763
|
+
},
|
|
428
764
|
// -------------------------------------------------------------------------
|
|
429
765
|
// SECOND AGENT (SA) WIDGETS
|
|
430
766
|
// -------------------------------------------------------------------------
|
|
@@ -461,6 +797,18 @@ exports.dashboardWidgetsContract = c.router({
|
|
|
461
797
|
// -------------------------------------------------------------------------
|
|
462
798
|
// ADMIN WIDGETS
|
|
463
799
|
// -------------------------------------------------------------------------
|
|
800
|
+
getAccessibleOffices: {
|
|
801
|
+
method: 'GET',
|
|
802
|
+
path: '/widgets/admin/accessible-offices',
|
|
803
|
+
responses: {
|
|
804
|
+
200: zod_1.z.array(zod_1.z.object({
|
|
805
|
+
id: zod_1.z.string().uuid(),
|
|
806
|
+
name: zod_1.z.string(),
|
|
807
|
+
})),
|
|
808
|
+
},
|
|
809
|
+
summary: 'Get offices accessible for dashboard filtering',
|
|
810
|
+
description: 'Returns offices the current user can view stats for. Admins see all offices; office managers see only their managed offices.',
|
|
811
|
+
},
|
|
464
812
|
getAdminAgentStats: {
|
|
465
813
|
method: 'GET',
|
|
466
814
|
path: '/widgets/admin/agent-stats',
|
|
@@ -469,6 +817,10 @@ exports.dashboardWidgetsContract = c.router({
|
|
|
469
817
|
200: (0, pagination_schema_1.createPaginatedResponseSchema)(zod_1.z.object({
|
|
470
818
|
agentId: zod_1.z.string().uuid(),
|
|
471
819
|
agentName: zod_1.z.string(),
|
|
820
|
+
officeName: zod_1.z
|
|
821
|
+
.string()
|
|
822
|
+
.nullable()
|
|
823
|
+
.describe('Agent office name, null if unassigned'),
|
|
472
824
|
// Actives (FA)
|
|
473
825
|
activesFaTotal: zod_1.z.number(),
|
|
474
826
|
activesFaByStatus: zod_1.z.record(actives_contract_1.ActiveStatusSchema, zod_1.z.number()),
|
|
@@ -525,6 +877,43 @@ exports.dashboardWidgetsContract = c.router({
|
|
|
525
877
|
workersAddedToday: zod_1.z
|
|
526
878
|
.number()
|
|
527
879
|
.describe('Workers added by this agent on the selected date'),
|
|
880
|
+
// Jobs
|
|
881
|
+
jobsCreatedOnDate: zod_1.z
|
|
882
|
+
.number()
|
|
883
|
+
.describe('Jobs created by this agent on the selected date'),
|
|
884
|
+
jobsTotalOpenPositions: zod_1.z
|
|
885
|
+
.number()
|
|
886
|
+
.describe('Positions available on the selected date'),
|
|
887
|
+
jobsFilledPositions: zod_1.z
|
|
888
|
+
.number()
|
|
889
|
+
.describe('Filled positions (current booking state)'),
|
|
890
|
+
jobsTransitionCounts: zod_1.z
|
|
891
|
+
.record(zod_1.z.string(), zod_1.z.number())
|
|
892
|
+
.describe('Job status transitions on this date'),
|
|
893
|
+
jobsFillRate: zod_1.z
|
|
894
|
+
.number()
|
|
895
|
+
.describe('Sourcing fill-rate for jobs closed on the date'),
|
|
896
|
+
jobsPositionsAdjusted: zod_1.z
|
|
897
|
+
.number()
|
|
898
|
+
.describe('Position-count changes on the date'),
|
|
899
|
+
jobsOverbooked: zod_1.z
|
|
900
|
+
.number()
|
|
901
|
+
.describe('Jobs closed overbooked on the date'),
|
|
902
|
+
// Proofs per platform (section-type), forUserId-attributed, proofDate-scoped
|
|
903
|
+
proofsPostByType: zod_1.z
|
|
904
|
+
.record(proof_type_enum_1.PostTypeEnum, zod_1.z.number())
|
|
905
|
+
.describe('Post-type section counts for the date'),
|
|
906
|
+
proofsBookingByType: zod_1.z
|
|
907
|
+
.record(proof_type_enum_1.BookingTypeEnum, zod_1.z.number())
|
|
908
|
+
.describe('Booking-type section counts for the date'),
|
|
909
|
+
// Consent queue activity (curated lead outcomes) + offers
|
|
910
|
+
consentLeadsActioned: zod_1.z.number(),
|
|
911
|
+
consentConsented: zod_1.z.number(),
|
|
912
|
+
consentDeclined: zod_1.z.number(),
|
|
913
|
+
consentWrongNumber: zod_1.z.number(),
|
|
914
|
+
consentSnoozed: zod_1.z.number(),
|
|
915
|
+
offersSent: zod_1.z.number(),
|
|
916
|
+
offersBooked: zod_1.z.number(),
|
|
528
917
|
})),
|
|
529
918
|
},
|
|
530
919
|
summary: 'Get daily stats for all agents (Admin)',
|
|
@@ -556,7 +945,7 @@ exports.dashboardWidgetsContract = c.router({
|
|
|
556
945
|
getActivesTrend: {
|
|
557
946
|
method: 'GET',
|
|
558
947
|
path: '/trends/actives',
|
|
559
|
-
query: exports.
|
|
948
|
+
query: exports.RoleScopedDateRangeQuerySchema,
|
|
560
949
|
responses: {
|
|
561
950
|
200: exports.ActivesTrendSchema,
|
|
562
951
|
},
|
|
@@ -566,7 +955,7 @@ exports.dashboardWidgetsContract = c.router({
|
|
|
566
955
|
getBookingsTrend: {
|
|
567
956
|
method: 'GET',
|
|
568
957
|
path: '/trends/bookings',
|
|
569
|
-
query: exports.
|
|
958
|
+
query: exports.RoleScopedDateRangeQuerySchema,
|
|
570
959
|
responses: {
|
|
571
960
|
200: exports.BookingsTrendSchema,
|
|
572
961
|
},
|
|
@@ -603,4 +992,113 @@ exports.dashboardWidgetsContract = c.router({
|
|
|
603
992
|
summary: 'Get collaborations historical trend (FA only)',
|
|
604
993
|
description: 'Returns time-series data for collaborations over a date range',
|
|
605
994
|
},
|
|
995
|
+
getJobsTrend: {
|
|
996
|
+
method: 'GET',
|
|
997
|
+
path: '/trends/jobs',
|
|
998
|
+
query: exports.DateRangeQuerySchema,
|
|
999
|
+
responses: {
|
|
1000
|
+
200: exports.JobsTrendSchema,
|
|
1001
|
+
},
|
|
1002
|
+
summary: 'Get jobs historical trend (FA)',
|
|
1003
|
+
description: 'Returns time-series data for job creation, fills and open positions over a date range',
|
|
1004
|
+
},
|
|
1005
|
+
getAdminBookingsTrend: {
|
|
1006
|
+
method: 'GET',
|
|
1007
|
+
path: '/trends/admin/bookings',
|
|
1008
|
+
query: exports.DateRangeOfficeQuerySchema,
|
|
1009
|
+
responses: {
|
|
1010
|
+
200: exports.BookingsTrendSchema,
|
|
1011
|
+
},
|
|
1012
|
+
summary: 'Get admin aggregate bookings trend',
|
|
1013
|
+
description: 'Bookings trend aggregated across the office first agents over a date range',
|
|
1014
|
+
},
|
|
1015
|
+
getAdminActivesTrend: {
|
|
1016
|
+
method: 'GET',
|
|
1017
|
+
path: '/trends/admin/actives',
|
|
1018
|
+
query: exports.DateRangeOfficeQuerySchema,
|
|
1019
|
+
responses: {
|
|
1020
|
+
200: exports.ActivesTrendSchema,
|
|
1021
|
+
},
|
|
1022
|
+
summary: 'Get admin aggregate actives trend',
|
|
1023
|
+
description: 'Actives trend aggregated across the office first agents',
|
|
1024
|
+
},
|
|
1025
|
+
getAdminCallPerformanceTrend: {
|
|
1026
|
+
method: 'GET',
|
|
1027
|
+
path: '/trends/admin/call-performance',
|
|
1028
|
+
query: exports.DateRangeOfficeQuerySchema,
|
|
1029
|
+
responses: {
|
|
1030
|
+
200: exports.CallPerformanceTrendSchema,
|
|
1031
|
+
},
|
|
1032
|
+
summary: 'Get admin aggregate call performance trend',
|
|
1033
|
+
description: 'Call performance trend aggregated across the office first agents',
|
|
1034
|
+
},
|
|
1035
|
+
getAdminJobsTrend: {
|
|
1036
|
+
method: 'GET',
|
|
1037
|
+
path: '/trends/admin/jobs',
|
|
1038
|
+
query: exports.DateRangeOfficeQuerySchema,
|
|
1039
|
+
responses: {
|
|
1040
|
+
200: exports.JobsTrendSchema,
|
|
1041
|
+
},
|
|
1042
|
+
summary: 'Get admin aggregate jobs trend',
|
|
1043
|
+
description: 'Jobs trend aggregated across the office first agents',
|
|
1044
|
+
},
|
|
1045
|
+
getAdminWorkersTrend: {
|
|
1046
|
+
method: 'GET',
|
|
1047
|
+
path: '/trends/admin/workers',
|
|
1048
|
+
query: exports.DateRangeOfficeQuerySchema,
|
|
1049
|
+
responses: {
|
|
1050
|
+
200: exports.WorkersTrendSchema,
|
|
1051
|
+
},
|
|
1052
|
+
summary: 'Get admin aggregate workers trend',
|
|
1053
|
+
description: 'Workers trend aggregated across the office second agents',
|
|
1054
|
+
},
|
|
1055
|
+
getLeadActivityTrend: {
|
|
1056
|
+
method: 'GET',
|
|
1057
|
+
path: '/trends/lead-activity',
|
|
1058
|
+
query: zod_1.z.object({ startDate: zod_1.z.string(), endDate: zod_1.z.string() }),
|
|
1059
|
+
responses: { 200: exports.LeadActivityTrendSchema },
|
|
1060
|
+
summary: "Current user's curated lead activity trend",
|
|
1061
|
+
},
|
|
1062
|
+
getAdminLeadActivityTrend: {
|
|
1063
|
+
method: 'GET',
|
|
1064
|
+
path: '/trends/admin/lead-activity',
|
|
1065
|
+
query: exports.DateRangeOfficeQuerySchema,
|
|
1066
|
+
responses: { 200: exports.LeadActivityTrendSchema },
|
|
1067
|
+
summary: 'Admin aggregate curated lead activity trend',
|
|
1068
|
+
},
|
|
1069
|
+
getAgentBookingsTrend: {
|
|
1070
|
+
method: 'GET',
|
|
1071
|
+
path: '/trends/agent/:agentId/bookings',
|
|
1072
|
+
query: exports.AgentTrendQuerySchema,
|
|
1073
|
+
responses: { 200: exports.BookingsTrendSchema },
|
|
1074
|
+
summary: 'Per-agent bookings trend (admin)',
|
|
1075
|
+
},
|
|
1076
|
+
getAgentActivesTrend: {
|
|
1077
|
+
method: 'GET',
|
|
1078
|
+
path: '/trends/agent/:agentId/actives',
|
|
1079
|
+
query: exports.AgentTrendQuerySchema,
|
|
1080
|
+
responses: { 200: exports.ActivesTrendSchema },
|
|
1081
|
+
summary: 'Per-agent actives trend (admin)',
|
|
1082
|
+
},
|
|
1083
|
+
getAgentCallPerformanceTrend: {
|
|
1084
|
+
method: 'GET',
|
|
1085
|
+
path: '/trends/agent/:agentId/call-performance',
|
|
1086
|
+
query: exports.DateRangeQuerySchema,
|
|
1087
|
+
responses: { 200: exports.CallPerformanceTrendSchema },
|
|
1088
|
+
summary: 'Per-agent call performance trend (admin)',
|
|
1089
|
+
},
|
|
1090
|
+
getAgentJobsTrend: {
|
|
1091
|
+
method: 'GET',
|
|
1092
|
+
path: '/trends/agent/:agentId/jobs',
|
|
1093
|
+
query: exports.DateRangeQuerySchema,
|
|
1094
|
+
responses: { 200: exports.JobsTrendSchema },
|
|
1095
|
+
summary: 'Per-agent jobs trend (admin)',
|
|
1096
|
+
},
|
|
1097
|
+
getAgentWorkersTrend: {
|
|
1098
|
+
method: 'GET',
|
|
1099
|
+
path: '/trends/agent/:agentId/workers',
|
|
1100
|
+
query: exports.DateRangeQuerySchema,
|
|
1101
|
+
responses: { 200: exports.WorkersTrendSchema },
|
|
1102
|
+
summary: 'Per-agent workers trend (admin)',
|
|
1103
|
+
},
|
|
606
1104
|
});
|