@zeniai/client-epic-state 5.0.2-betaRD2 → 5.0.2-betaRR01

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 (71) hide show
  1. package/lib/entity/billPay/billTransaction/billTransactionState.d.ts +2 -2
  2. package/lib/entity/chargeCard/chargeCard.d.ts +1 -1
  3. package/lib/entity/depositAccountTransaction/depositAccountTransaction.d.ts +1 -1
  4. package/lib/entity/entityApprovalStatus/entityApprovalStatusState.d.ts +2 -2
  5. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
  6. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  7. package/lib/entity/tenant/clearAllEpic.d.ts +1 -3
  8. package/lib/entity/tenant/clearAllEpic.js +0 -4
  9. package/lib/entity/transaction/payloadTypes/transactionPayload.js +21 -0
  10. package/lib/entity/userRole/userRoleType.d.ts +2 -2
  11. package/lib/epic.d.ts +1 -5
  12. package/lib/epic.js +1 -5
  13. package/lib/esm/entity/tenant/clearAllEpic.js +0 -4
  14. package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +21 -0
  15. package/lib/esm/epic.js +1 -5
  16. package/lib/esm/index.js +0 -7
  17. package/lib/esm/reducer.js +0 -6
  18. package/lib/index.d.ts +0 -9
  19. package/lib/index.js +3 -30
  20. package/lib/reducer.d.ts +0 -6
  21. package/lib/reducer.js +0 -6
  22. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  23. package/lib/view/companyView/types/cockpitTypes.d.ts +5 -6
  24. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  25. package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +1 -1
  26. package/lib/view/onboardingView/cockpitView/types/onboardingCockpitViewTypes.d.ts +1 -1
  27. package/lib/view/reviewCompanyView/reviewCompanyViewState.d.ts +1 -1
  28. package/lib/view/spendManagement/billPay/billList/billListReducer.d.ts +1 -1
  29. package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
  30. package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetail.d.ts +1 -1
  31. package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.d.ts +4 -4
  32. package/lib/view/spendManagement/reimbursement/remiListView/remiListReducer.d.ts +1 -1
  33. package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +3 -3
  34. package/lib/view/subscriptionView/types/subscriptionTypes.d.ts +1 -1
  35. package/package.json +1 -1
  36. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerPayload.d.ts +0 -44
  37. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +0 -55
  38. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerReducer.d.ts +0 -10
  39. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +0 -51
  40. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerSelector.d.ts +0 -48
  41. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerSelector.js +0 -66
  42. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerState.d.ts +0 -52
  43. package/lib/entity/aiAccountantCustomer/aiAccountantCustomerState.js +0 -37
  44. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +0 -49
  45. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +0 -47
  46. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerSelector.js +0 -62
  47. package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerState.js +0 -31
  48. package/lib/esm/view/aiAccountantView/aiAccountantViewPayload.js +0 -2
  49. package/lib/esm/view/aiAccountantView/aiAccountantViewReducer.js +0 -149
  50. package/lib/esm/view/aiAccountantView/aiAccountantViewSelector.js +0 -72
  51. package/lib/esm/view/aiAccountantView/aiAccountantViewState.js +0 -11
  52. package/lib/esm/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.js +0 -46
  53. package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +0 -27
  54. package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +0 -47
  55. package/lib/esm/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +0 -52
  56. package/lib/view/aiAccountantView/aiAccountantViewPayload.d.ts +0 -31
  57. package/lib/view/aiAccountantView/aiAccountantViewPayload.js +0 -8
  58. package/lib/view/aiAccountantView/aiAccountantViewReducer.d.ts +0 -29
  59. package/lib/view/aiAccountantView/aiAccountantViewReducer.js +0 -153
  60. package/lib/view/aiAccountantView/aiAccountantViewSelector.d.ts +0 -14
  61. package/lib/view/aiAccountantView/aiAccountantViewSelector.js +0 -78
  62. package/lib/view/aiAccountantView/aiAccountantViewState.d.ts +0 -26
  63. package/lib/view/aiAccountantView/aiAccountantViewState.js +0 -13
  64. package/lib/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.d.ts +0 -33
  65. package/lib/view/aiAccountantView/epics/cancelAiAccountantOnboardingEpic.js +0 -50
  66. package/lib/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.d.ts +0 -23
  67. package/lib/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +0 -31
  68. package/lib/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.d.ts +0 -33
  69. package/lib/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +0 -51
  70. package/lib/view/aiAccountantView/epics/triggerAiAccountantJobEpic.d.ts +0 -28
  71. package/lib/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +0 -56
@@ -3,17 +3,16 @@ import { ZeniDate } from '../../../zeniDayJS';
3
3
  import { SubscriptionViewSortKey } from '../../subscriptionView/types/subscriptionTypes';
4
4
  import { FilterCategoryValueType } from '../helpers/cockpitHelpers';
5
5
  import { CockpitDownloadTabsID, CockpitTabsFileType } from './cockpitTabsID';
6
- export declare const toPortfolioSortKeyType: (v: string) => "companyName" | "expenses" | "runway" | "cashBalance" | "revenues" | "netIncome";
7
- export declare const toManagementSortKeyType: (v: string) => "status" | "bookCloseDate" | "companyName" | "group" | "controller" | "plans" | "monthlyRecurringRevenue" | "notes" | "taxStatus" | "preparer" | "reviewer" | "annualRecurringRevenue" | "task" | "customerSuccessManager" | "apAnalyst" | "reportSent" | "taxLead" | "satisfaction";
8
- export declare const toOnboardingSortKeyType: (v: string) => "companyName" | "notes" | "businessVerified" | "identityVerified" | "bankAccountLinked" | "customerCreated" | "groupCreated" | "qboLinked" | "enroller" | "invite" | "latestCreated";
9
- export declare const toHealthSortKeyType: (v: string) => "companyName" | "group" | "controller" | "monthlyRecurringRevenue" | "runway" | "companyEngagementMetricsUpdatedAt" | "customerSatisfactionScore" | "externalProductServiceExposure" | "netPromoterScore" | "customerSuccessManager" | "issues" | "productVerticals" | "churnProbability" | "lastReportSent" | "subscriptionDate" | "renewalDate" | "dashboardLastSeen" | "lastEngagement";
6
+ export declare const toPortfolioSortKeyType: (v: string) => "expenses" | "runway" | "companyName" | "cashBalance" | "revenues" | "netIncome";
7
+ export declare const toManagementSortKeyType: (v: string) => "status" | "bookCloseDate" | "group" | "taxStatus" | "controller" | "preparer" | "reviewer" | "annualRecurringRevenue" | "companyName" | "monthlyRecurringRevenue" | "task" | "notes" | "plans" | "customerSuccessManager" | "apAnalyst" | "reportSent" | "taxLead" | "satisfaction";
8
+ export declare const toOnboardingSortKeyType: (v: string) => "companyName" | "businessVerified" | "identityVerified" | "bankAccountLinked" | "customerCreated" | "groupCreated" | "qboLinked" | "notes" | "enroller" | "invite" | "latestCreated";
9
+ export declare const toHealthSortKeyType: (v: string) => "group" | "runway" | "controller" | "companyName" | "monthlyRecurringRevenue" | "companyEngagementMetricsUpdatedAt" | "customerSatisfactionScore" | "externalProductServiceExposure" | "netPromoterScore" | "customerSuccessManager" | "lastReportSent" | "issues" | "productVerticals" | "churnProbability" | "subscriptionDate" | "renewalDate" | "dashboardLastSeen" | "lastEngagement";
10
10
  export declare const toTaskManagerSortKeyType: (v: string) => "status" | "name" | "tags" | "createdBy" | "dueDate" | "priority" | "assignee" | "taskName";
11
11
  export type PortfolioViewSortKey = ReturnType<typeof toPortfolioSortKeyType>;
12
12
  export type ManagementViewSortKey = ReturnType<typeof toManagementSortKeyType>;
13
13
  export type OnboardingViewSortKey = ReturnType<typeof toOnboardingSortKeyType>;
14
14
  export type HealthViewSortKey = ReturnType<typeof toHealthSortKeyType>;
15
15
  export type TaskManagerViewSortKey = ReturnType<typeof toTaskManagerSortKeyType>;
16
- export type AiAccountantFilterCategoryField = 'enrollmentStatus';
17
16
  export type ManagementViewFilterCategoryField = 'controllerUserIds' | 'customerSuccessManagerUserIds' | 'preparerUserIds' | 'reviewerUserIds' | 'apAnalystUserIds' | 'taxLeadUserIds' | 'companyGroupId' | 'taxStatusCode' | 'statusCode' | 'plans' | 'annualRecurringRevenue' | 'monthlyRecurringRevenue' | 'customerSatisfaction' | 'zeniSatisfaction';
18
17
  export type SubscriptionViewFilterCategoryField = 'controllerUserIds' | 'statusCode' | 'recommendedActionCode' | 'subscriptionPlans' | 'subscriptionAddOns' | 'avg2MonthExpenses' | 'slabLowerLimit' | 'slabUpperLimit' | 'monthlyRecurringRevenue';
19
18
  export type PortfolioViewFilterCategoryField = 'netBurnOrIncome' | 'cashPosition' | 'income' | 'expenses' | 'runway';
@@ -22,7 +21,7 @@ export interface CockpitFilterCategory {
22
21
  matchingOperator: 'equal' | 'not-equal';
23
22
  values: FilterCategoryValueType[];
24
23
  valuesCombinationOperator: 'ANY' | 'ALL';
25
- field?: AiAccountantFilterCategoryField | ManagementViewFilterCategoryField | SubscriptionViewFilterCategoryField | PortfolioViewFilterCategoryField | HealthMonitorViewFilterCategoryField;
24
+ field?: ManagementViewFilterCategoryField | SubscriptionViewFilterCategoryField | PortfolioViewFilterCategoryField | HealthMonitorViewFilterCategoryField;
26
25
  }
27
26
  export interface CockpitFilters {
28
27
  categories?: CockpitFilterCategory[];
@@ -38,7 +38,7 @@ export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLoca
38
38
  export declare const mergeTabSpecificLineItems: (currentTabSpecificLineItems: TabSpecificLineItems, selectedTab: TransactionsTab, newLineItems: TabSpecificLineItems) => TabSpecificLineItems;
39
39
  export declare const getSnackbarMessageForTransactionReview: (updatedCount: number, failedCount: number, categorizedCount: number) => {
40
40
  messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update";
41
- messageText: "notification" | "failed" | "success";
41
+ messageText: "notification" | "success" | "failed";
42
42
  type: "error" | "success" | "info";
43
43
  variables: {
44
44
  variableName: string;
@@ -17,7 +17,7 @@ export interface MissingReceiptsViewUIState {
17
17
  * Kept in sync with `ManualSearchInput` in web-components (fires search only when length ≥ this).
18
18
  */
19
19
  export declare const MIN_MANUAL_TRANSACTION_SEARCH_LENGTH = 2;
20
- export declare const toBatchStatusValue: (v: string) => "pending" | "completed" | "processing";
20
+ export declare const toBatchStatusValue: (v: string) => "pending" | "processing" | "completed";
21
21
  export type BatchStatusValue = ReturnType<typeof toBatchStatusValue>;
22
22
  /** Canonical batch file statuses (API ingress may use aliases; see `parseBatchFileStatus`). */
23
23
  export declare const BATCH_FILE_STATUSES: readonly ["exact_match", "possible_matches", "no_match", "failed"];
@@ -3,7 +3,7 @@ import { CompanyWithSchema } from '../../../../entity/company/companySelector';
3
3
  import { OnboardingCustomerInfo } from '../../../../entity/onboardingCustomer/onboardingCustomerState';
4
4
  import { Tenant } from '../../../../entity/tenant/tenantState';
5
5
  import { CompanyDetailsLocalData, PrimaryContactLocalData } from '../../../spendManagement/commonSetup/setupViewState';
6
- declare const toProductGroupType: (v: string) => "other" | "bookkeeping" | "banking" | "spend_management" | "cards";
6
+ declare const toProductGroupType: (v: string) => "cards" | "other" | "bookkeeping" | "banking" | "spend_management";
7
7
  export type ProductGroupType = ReturnType<typeof toProductGroupType>;
8
8
  export declare const toProductType: (v: string) => "zeni_treasury" | "other" | "bookkeeping" | "zeni_checking" | "zeni_bill_pay" | "zeni_reimbursements" | "zeni_cards" | "zeni_payroll" | "zeni_cfo" | "zeni_tax";
9
9
  export declare const toProductTypeStrict: (v: string) => "zeni_treasury" | "other" | "bookkeeping" | "zeni_checking" | "zeni_bill_pay" | "zeni_reimbursements" | "zeni_cards" | "zeni_payroll" | "zeni_cfo" | "zeni_tax" | undefined;
@@ -3,7 +3,7 @@ import { SortOrder } from '../../commonStateTypes/selectorTypes/sortOrderTypes';
3
3
  import { OnboardingInfo } from '../../entity/company/companyStateTypes';
4
4
  import { ZeniDate } from '../../zeniDayJS';
5
5
  import { AuditSummaryPayload, ReviewCompanyPayload } from './reviewCompanyPayload';
6
- export declare const toReviewColumnKeyType: (v: string) => "companyName" | "notes" | "uncategorized" | "auditScore" | "miscategorized" | "warnings" | "vendorReview" | "reviewVendor";
6
+ export declare const toReviewColumnKeyType: (v: string) => "uncategorized" | "companyName" | "auditScore" | "miscategorized" | "notes" | "warnings" | "vendorReview" | "reviewVendor";
7
7
  export type ReviewCompanyColumnKey = ReturnType<typeof toReviewColumnKeyType>;
8
8
  export type ReviewTransactionsType = 'income' | 'expense';
9
9
  export interface AuditSummary {
@@ -21,7 +21,7 @@ export declare const fetchBillList: import("@reduxjs/toolkit").ActionCreatorWith
21
21
  period: TimePeriod;
22
22
  tab: "paid" | "pending_approval" | "scheduled" | "draft";
23
23
  error: ZeniAPIStatus<Record<string, unknown>>;
24
- }, "billList/updateBillListFailure", never, never>, updateTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "pending_approval" | "scheduled" | "draft", "billList/updateTab">, updateSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "offline", "billList/updateSubTab">, updateSelectedBillId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "billList/updateSelectedBillId">, clearBillList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"billList/clearBillList">, updateBillDetailSaveBillCode: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<SaveBillStageCode, "billList/updateBillDetailSaveBillCode">, updateBillListUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
24
+ }, "billList/updateBillListFailure", never, never>, updateTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "pending_approval" | "scheduled" | "draft", "billList/updateTab">, updateSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "offline", "billList/updateSubTab">, updateSelectedBillId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "billList/updateSelectedBillId">, clearBillList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"billList/clearBillList">, updateBillDetailSaveBillCode: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<SaveBillStageCode, "billList/updateBillDetailSaveBillCode">, updateBillListUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
25
25
  period: TimePeriod;
26
26
  uiState: Partial<BillListUIState>;
27
27
  }, "billList/updateBillListUIState">, updateSearchResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "billList/updateSearchResult">, updateFilterResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -35,7 +35,7 @@ export type SaveBillStageCode = 'draft' | 'pending_approval' | undefined;
35
35
  export declare const ALL_BILL_TABS: readonly ["paid", "pending_approval", "scheduled", "draft"];
36
36
  declare const toBillTabType: (v: string) => "paid" | "pending_approval" | "scheduled" | "draft";
37
37
  export type BillTab = ReturnType<typeof toBillTabType>;
38
- declare const toBillsSubTabType: (v: string) => "failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "offline";
38
+ declare const toBillsSubTabType: (v: string) => "rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "offline";
39
39
  export type BillsSubTabType = ReturnType<typeof toBillsSubTabType>;
40
40
  declare const toBillPaySortKeyType: (v: string) => "amount" | "status" | "name" | "dueDate" | "paymentMethod" | "invoiceNumber" | "invoiceDate";
41
41
  export declare type BillPayViewSortKey = ReturnType<typeof toBillPaySortKeyType>;
@@ -42,7 +42,7 @@ interface TwoFAState {
42
42
  otpChallenge?: string;
43
43
  phone?: string;
44
44
  }
45
- export declare const toChargeCardTransactionSortKeyType: (v: string) => "amount" | "type" | "merchant" | "paymentDate" | "receipts";
45
+ export declare const toChargeCardTransactionSortKeyType: (v: string) => "amount" | "type" | "receipts" | "merchant" | "paymentDate";
46
46
  export declare type ChargeCardTransactionSortKey = ReturnType<typeof toChargeCardTransactionSortKeyType>;
47
47
  export interface ChargeCardDetailTransactionList extends FetchStateAndError {
48
48
  isViewReceiptClickedImmediatelyAfterUploadTransactionId: Record<ID, boolean>;
@@ -52,12 +52,12 @@ export declare const fetchChargeCardDetailPage: import("@reduxjs/toolkit").Actio
52
52
  chargeCardId: ID;
53
53
  fetchState: FetchState;
54
54
  error?: ZeniAPIStatus;
55
- }, "chargeCardDetail/updatePhysicalChargeCardAttemptSuccessOrFailure">, updatePhysicalChargeCardAttempt: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[chargeCardId: string, statusCode: "failed" | "success"], {
55
+ }, "chargeCardDetail/updatePhysicalChargeCardAttemptSuccessOrFailure">, updatePhysicalChargeCardAttempt: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[chargeCardId: string, statusCode: "success" | "failed"], {
56
56
  chargeCardId: string;
57
- statusCode: "failed" | "success";
58
- }, "chargeCardDetail/updatePhysicalChargeCardAttempt", never, never>, updateDebitCardPinAttempt: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[chargeCardId: string, statusCode: "failed" | "success"], {
57
+ statusCode: "success" | "failed";
58
+ }, "chargeCardDetail/updatePhysicalChargeCardAttempt", never, never>, updateDebitCardPinAttempt: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[chargeCardId: string, statusCode: "success" | "failed"], {
59
59
  chargeCardId: string;
60
- statusCode: "failed" | "success";
60
+ statusCode: "success" | "failed";
61
61
  }, "chargeCardDetail/updateDebitCardPinAttempt", never, never>, updateDebitCardPinAttemptSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
62
62
  chargeCardId: ID;
63
63
  fetchState: FetchState;
@@ -27,7 +27,7 @@ export declare const fetchRemiList: import("@reduxjs/toolkit").ActionCreatorWith
27
27
  }, "remiList/updateRemiListFailure", never, never>, updateRemiListUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
28
28
  period: TimePeriod;
29
29
  uiState: Partial<RemiListUIState>;
30
- }, "remiList/updateRemiListUIState">, updateTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "pending_approval" | "scheduled" | "draft", "remiList/updateTab">, updateSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval", "remiList/updateSubTab">, updateSelectedRemiId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "remiList/updateSelectedRemiId">, clearRemiList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"remiList/clearRemiList">, updateRemiDetailSaveRemiCode: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<SaveRemiStageCode, "remiList/updateRemiDetailSaveRemiCode">, updateSearchResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "remiList/updateSearchResult">, updateFilterResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
30
+ }, "remiList/updateRemiListUIState">, updateTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "pending_approval" | "scheduled" | "draft", "remiList/updateTab">, updateSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval", "remiList/updateSubTab">, updateSelectedRemiId: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "remiList/updateSelectedRemiId">, clearRemiList: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"remiList/clearRemiList">, updateRemiDetailSaveRemiCode: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<SaveRemiStageCode, "remiList/updateRemiDetailSaveRemiCode">, updateSearchResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "remiList/updateSearchResult">, updateFilterResult: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
31
31
  filters: ReimbursementFilters;
32
32
  }, "remiList/updateFilterResult">, updateRemiListDownloadUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
33
33
  uiState: Partial<RemiListDownloadUIState>;
@@ -33,10 +33,10 @@ export declare const ALL_REMI_TABS: readonly ["paid", "pending_approval", "sched
33
33
  export declare const toRemiTabType: (v: string) => "paid" | "pending_approval" | "scheduled" | "draft";
34
34
  export declare const toRemiTabTypeStrict: (v: string) => "paid" | "pending_approval" | "scheduled" | "draft" | undefined;
35
35
  export type RemiTabType = ReturnType<typeof toRemiTabType>;
36
- export declare const toRemiSubTabType: (v: string) => "failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval";
37
- export declare const toRemiSubTabTypeStrict: (v: string) => "failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval" | undefined;
36
+ export declare const toRemiSubTabType: (v: string) => "rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval";
37
+ export declare const toRemiSubTabTypeStrict: (v: string) => "rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval" | undefined;
38
38
  export type RemiSubTabType = ReturnType<typeof toRemiSubTabType>;
39
- export declare const toRemiSubTabUnderScoreType: (v: string) => "failed" | "cancelled" | "rejected" | "ach" | "wire" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "my_drafts" | "awaiting_all_approval";
39
+ export declare const toRemiSubTabUnderScoreType: (v: string) => "rejected" | "failed" | "ach" | "wire" | "cancelled" | "deleted" | "overdue" | "all" | "awaiting_approval" | "awaiting_my_approval" | "my_drafts" | "awaiting_all_approval";
40
40
  export type RemiSubTabUnderScoreType = ReturnType<typeof toRemiSubTabUnderScoreType>;
41
41
  declare const toReimbursementSortKeyType: (v: string) => "amount" | "status" | "type" | "createdBy" | "submittedOn" | "reportName";
42
42
  export type ReimbursementViewSortKey = ReturnType<typeof toReimbursementSortKeyType>;
@@ -1,4 +1,4 @@
1
- export declare const toSubscriptionSortKeyType: (v: string) => "status" | "companyName" | "controller" | "plans" | "planLowerLimit" | "planHigherLimit" | "avg2MonthExpenses" | "addons" | "upgradeStatus" | "monthlyRecurringRevenue" | "notes";
1
+ export declare const toSubscriptionSortKeyType: (v: string) => "status" | "controller" | "avg2MonthExpenses" | "companyName" | "monthlyRecurringRevenue" | "notes" | "plans" | "planLowerLimit" | "planHigherLimit" | "addons" | "upgradeStatus";
2
2
  export type SubscriptionViewSortKey = ReturnType<typeof toSubscriptionSortKeyType>;
3
3
  export declare const SUBSCRIPTION_STATUS_CODES: string[];
4
4
  declare const toSubscriptionStatusCodeType: (v: string) => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.0.2-betaRD2",
3
+ "version": "5.0.2-betaRR01",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -1,44 +0,0 @@
1
- import { AiAccountantCustomer, AiAccountantEnrollment, AiAccountantJob } from './aiAccountantCustomerState';
2
- export interface AiAccountantEnrollmentPayload {
3
- status: string;
4
- accuracy?: Record<string, number>;
5
- latest_training?: string;
6
- latest_transaction_sync?: string;
7
- offboarded_at?: string;
8
- offboarded_by?: string;
9
- onboarded_at?: string;
10
- onboarded_by?: string;
11
- validation_results?: Array<{
12
- accuracy: number;
13
- model_type: string;
14
- passed: boolean;
15
- threshold: number;
16
- }>;
17
- }
18
- export interface AiAccountantCustomerPayload {
19
- company_id: string;
20
- company_name: string;
21
- tenant_id: string;
22
- bookclose_date?: string;
23
- enrollment?: AiAccountantEnrollmentPayload | null;
24
- }
25
- export interface AiAccountantJobPayload {
26
- company_id: string;
27
- created_at: string;
28
- job_id: string;
29
- operation_type: string;
30
- status: string;
31
- tenant_id: string;
32
- triggered_by: string;
33
- company_namespace?: string;
34
- completed_at?: string;
35
- error_message?: string;
36
- parameters?: Record<string, unknown>;
37
- retry_count?: number;
38
- started_at?: string;
39
- steps?: Array<Record<string, unknown>>;
40
- validation_results?: Array<Record<string, unknown>>;
41
- }
42
- export declare const toAiAccountantEnrollment: (payload: AiAccountantEnrollmentPayload) => AiAccountantEnrollment;
43
- export declare const toAiAccountantCustomer: (payload: AiAccountantCustomerPayload) => AiAccountantCustomer;
44
- export declare const toAiAccountantJob: (payload: AiAccountantJobPayload) => AiAccountantJob;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toAiAccountantJob = exports.toAiAccountantCustomer = exports.toAiAccountantEnrollment = void 0;
4
- const zeniDayJS_1 = require("../../zeniDayJS");
5
- const aiAccountantCustomerState_1 = require("./aiAccountantCustomerState");
6
- // ── Mapping functions (payload → state) ──
7
- const toAiAccountantEnrollment = (payload) => ({
8
- status: (0, aiAccountantCustomerState_1.toAiAccountantEnrollmentStatus)(payload.status),
9
- accuracy: payload.accuracy,
10
- latestTraining: payload.latest_training != null
11
- ? (0, zeniDayJS_1.date)(payload.latest_training)
12
- : undefined,
13
- latestTransactionSync: payload.latest_transaction_sync != null
14
- ? (0, zeniDayJS_1.date)(payload.latest_transaction_sync)
15
- : undefined,
16
- offboardedAt: payload.offboarded_at != null ? (0, zeniDayJS_1.date)(payload.offboarded_at) : undefined,
17
- offboardedBy: payload.offboarded_by,
18
- onboardedAt: payload.onboarded_at != null ? (0, zeniDayJS_1.date)(payload.onboarded_at) : undefined,
19
- onboardedBy: payload.onboarded_by,
20
- validationResults: payload.validation_results?.map((vr) => ({
21
- accuracy: vr.accuracy,
22
- modelType: vr.model_type,
23
- passed: vr.passed,
24
- threshold: vr.threshold,
25
- })),
26
- });
27
- exports.toAiAccountantEnrollment = toAiAccountantEnrollment;
28
- const toAiAccountantCustomer = (payload) => ({
29
- companyId: payload.company_id,
30
- companyName: payload.company_name,
31
- tenantId: payload.tenant_id,
32
- bookcloseDate: payload.bookclose_date != null ? (0, zeniDayJS_1.date)(payload.bookclose_date) : undefined,
33
- enrollment: payload.enrollment != null
34
- ? (0, exports.toAiAccountantEnrollment)(payload.enrollment)
35
- : undefined,
36
- });
37
- exports.toAiAccountantCustomer = toAiAccountantCustomer;
38
- const toAiAccountantJob = (payload) => ({
39
- companyId: payload.company_id,
40
- createdAt: (0, zeniDayJS_1.date)(payload.created_at),
41
- jobId: payload.job_id,
42
- operationType: (0, aiAccountantCustomerState_1.toAiAccountantOperationType)(payload.operation_type),
43
- status: (0, aiAccountantCustomerState_1.toAiAccountantJobStatus)(payload.status),
44
- tenantId: payload.tenant_id,
45
- triggeredBy: payload.triggered_by,
46
- companyNamespace: payload.company_namespace,
47
- completedAt: payload.completed_at != null ? (0, zeniDayJS_1.date)(payload.completed_at) : undefined,
48
- errorMessage: payload.error_message,
49
- parameters: payload.parameters,
50
- retryCount: payload.retry_count,
51
- startedAt: payload.started_at != null ? (0, zeniDayJS_1.date)(payload.started_at) : undefined,
52
- steps: payload.steps,
53
- validationResults: payload.validation_results,
54
- });
55
- exports.toAiAccountantJob = toAiAccountantJob;
@@ -1,10 +0,0 @@
1
- import { AiAccountantCustomerPayload, AiAccountantJobPayload } from './aiAccountantCustomerPayload';
2
- import { AiAccountantCustomerState } from './aiAccountantCustomerState';
3
- export declare const initialAiAccountantCustomerState: AiAccountantCustomerState;
4
- export declare const clearAllAiAccountantCustomers: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"aiAccountantCustomer/clearAllAiAccountantCustomers">, updateAiAccountantCustomers: import("@reduxjs/toolkit").ActionCreatorWithPayload<AiAccountantCustomerPayload[], "aiAccountantCustomer/updateAiAccountantCustomers">, updateAiAccountantCustomer: import("@reduxjs/toolkit").ActionCreatorWithPayload<AiAccountantCustomerPayload, "aiAccountantCustomer/updateAiAccountantCustomer">, updateAiAccountantJobs: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[tenantId: string, jobs: AiAccountantJobPayload[], append?: boolean | undefined], {
5
- tenantId: string;
6
- jobs: AiAccountantJobPayload[];
7
- append: boolean;
8
- }, "aiAccountantCustomer/updateAiAccountantJobs", never, never>;
9
- declare const _default: import("redux").Reducer<AiAccountantCustomerState>;
10
- export default _default;
@@ -1,51 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.updateAiAccountantJobs = exports.updateAiAccountantCustomer = exports.updateAiAccountantCustomers = exports.clearAllAiAccountantCustomers = exports.initialAiAccountantCustomerState = void 0;
5
- const toolkit_1 = require("@reduxjs/toolkit");
6
- const aiAccountantCustomerPayload_1 = require("./aiAccountantCustomerPayload");
7
- exports.initialAiAccountantCustomerState = {
8
- customerByTenantId: {},
9
- jobsByTenantId: {},
10
- };
11
- const aiAccountantCustomer = (0, toolkit_1.createSlice)({
12
- name: 'aiAccountantCustomer',
13
- initialState: exports.initialAiAccountantCustomerState,
14
- reducers: {
15
- updateAiAccountantCustomers(draft, action) {
16
- const newCustomerByTenantId = {};
17
- action.payload.forEach((payload) => {
18
- const customer = (0, aiAccountantCustomerPayload_1.toAiAccountantCustomer)(payload);
19
- newCustomerByTenantId[customer.tenantId] = customer;
20
- });
21
- draft.customerByTenantId = newCustomerByTenantId;
22
- },
23
- updateAiAccountantCustomer(draft, action) {
24
- const customer = (0, aiAccountantCustomerPayload_1.toAiAccountantCustomer)(action.payload);
25
- draft.customerByTenantId[customer.tenantId] = customer;
26
- },
27
- updateAiAccountantJobs: {
28
- reducer(draft, action) {
29
- const mappedJobs = action.payload.jobs.map(aiAccountantCustomerPayload_1.toAiAccountantJob);
30
- if (action.payload.append) {
31
- const existing = draft.jobsByTenantId[action.payload.tenantId] ?? [];
32
- const jobMap = new Map(existing.map((job) => [job.jobId, job]));
33
- mappedJobs.forEach((job) => jobMap.set(job.jobId, job));
34
- draft.jobsByTenantId[action.payload.tenantId] =
35
- Array.from(jobMap.values());
36
- }
37
- else {
38
- draft.jobsByTenantId[action.payload.tenantId] = mappedJobs;
39
- }
40
- },
41
- prepare(tenantId, jobs, append = false) {
42
- return { payload: { tenantId, jobs, append } };
43
- },
44
- },
45
- clearAllAiAccountantCustomers(draft) {
46
- Object.assign(draft, exports.initialAiAccountantCustomerState);
47
- },
48
- },
49
- });
50
- _a = aiAccountantCustomer.actions, exports.clearAllAiAccountantCustomers = _a.clearAllAiAccountantCustomers, exports.updateAiAccountantCustomers = _a.updateAiAccountantCustomers, exports.updateAiAccountantCustomer = _a.updateAiAccountantCustomer, exports.updateAiAccountantJobs = _a.updateAiAccountantJobs;
51
- exports.default = aiAccountantCustomer.reducer;
@@ -1,48 +0,0 @@
1
- import { ID } from '../../commonStateTypes/common';
2
- import { User } from '../user/userState';
3
- import { UserState } from '../user/userState';
4
- import { ZeniDate } from '../../zeniDayJS';
5
- import { AiAccountantCustomerState, AiAccountantEnrollmentStatus, AiAccountantJobStatus, AiAccountantOperationType } from './aiAccountantCustomerState';
6
- export interface AiAccountantEnrollmentView {
7
- status: AiAccountantEnrollmentStatus;
8
- accuracy?: Record<string, number>;
9
- latestTraining?: ZeniDate;
10
- latestTransactionSync?: ZeniDate;
11
- offboardedAt?: ZeniDate;
12
- offboardedBy?: User;
13
- onboardedAt?: ZeniDate;
14
- onboardedBy?: User;
15
- validationResults?: Array<{
16
- accuracy: number;
17
- modelType: string;
18
- passed: boolean;
19
- threshold: number;
20
- }>;
21
- }
22
- export interface AiAccountantCustomerView {
23
- averageAccuracy: number;
24
- companyId: ID;
25
- companyName: string;
26
- tenantId: ID;
27
- bookcloseDate?: ZeniDate;
28
- enrollment?: AiAccountantEnrollmentView;
29
- }
30
- export interface AiAccountantJobView {
31
- companyId: ID;
32
- createdAt: ZeniDate;
33
- jobId: ID;
34
- operationType: AiAccountantOperationType;
35
- status: AiAccountantJobStatus;
36
- tenantId: ID;
37
- companyNamespace?: string;
38
- completedAt?: ZeniDate;
39
- errorMessage?: string;
40
- parameters?: Record<string, unknown>;
41
- retryCount?: number;
42
- startedAt?: ZeniDate;
43
- steps?: Array<Record<string, unknown>>;
44
- triggeredBy?: User;
45
- validationResults?: Array<Record<string, unknown>>;
46
- }
47
- export declare function getAiAccountantCustomers(customerState: AiAccountantCustomerState, userState: UserState): AiAccountantCustomerView[];
48
- export declare function getAiAccountantJobsByTenantId(customerState: AiAccountantCustomerState, userState: UserState, tenantId: string): AiAccountantJobView[];
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAiAccountantCustomers = getAiAccountantCustomers;
4
- exports.getAiAccountantJobsByTenantId = getAiAccountantJobsByTenantId;
5
- const userSelector_1 = require("../user/userSelector");
6
- // ── Selectors ──
7
- function getAiAccountantCustomers(customerState, userState) {
8
- return Object.values(customerState.customerByTenantId).map((customer) => toCustomerView(customer, userState));
9
- }
10
- function getAiAccountantJobsByTenantId(customerState, userState, tenantId) {
11
- const jobs = customerState.jobsByTenantId[tenantId] ?? [];
12
- return jobs.map((job) => toJobView(job, userState));
13
- }
14
- // ── Helpers ──
15
- function toCustomerView(customer, userState) {
16
- return {
17
- averageAccuracy: calcAverageAccuracy(customer),
18
- companyId: customer.companyId,
19
- companyName: customer.companyName,
20
- tenantId: customer.tenantId,
21
- bookcloseDate: customer.bookcloseDate,
22
- enrollment: customer.enrollment != null
23
- ? {
24
- ...customer.enrollment,
25
- offboardedBy: customer.enrollment.offboardedBy != null
26
- ? (0, userSelector_1.getUserByUserId)(userState, customer.enrollment.offboardedBy)
27
- : undefined,
28
- onboardedBy: customer.enrollment.onboardedBy != null
29
- ? (0, userSelector_1.getUserByUserId)(userState, customer.enrollment.onboardedBy)
30
- : undefined,
31
- }
32
- : undefined,
33
- };
34
- }
35
- function toJobView(job, userState) {
36
- return {
37
- companyId: job.companyId,
38
- createdAt: job.createdAt,
39
- jobId: job.jobId,
40
- operationType: job.operationType,
41
- status: job.status,
42
- tenantId: job.tenantId,
43
- triggeredBy: job.triggeredBy != null
44
- ? (0, userSelector_1.getUserByUserId)(userState, job.triggeredBy)
45
- : undefined,
46
- companyNamespace: job.companyNamespace,
47
- completedAt: job.completedAt,
48
- errorMessage: job.errorMessage,
49
- parameters: job.parameters,
50
- retryCount: job.retryCount,
51
- startedAt: job.startedAt,
52
- steps: job.steps,
53
- validationResults: job.validationResults,
54
- };
55
- }
56
- function calcAverageAccuracy(customer) {
57
- const accuracy = customer.enrollment?.accuracy;
58
- if (accuracy == null) {
59
- return 0;
60
- }
61
- const values = Object.values(accuracy);
62
- if (values.length === 0) {
63
- return 0;
64
- }
65
- return values.reduce((sum, value) => sum + value, 0) / values.length;
66
- }
@@ -1,52 +0,0 @@
1
- import { ID } from '../../commonStateTypes/common';
2
- import { ZeniDate } from '../../zeniDayJS';
3
- export declare const toAiAccountantOperationType: (v: string) => "onboard" | "offboard" | "retrain" | "full_pipeline" | "cancel_onboarding";
4
- export type AiAccountantOperationType = ReturnType<typeof toAiAccountantOperationType>;
5
- export declare const toAiAccountantEnrollmentStatus: (v: string) => "onboarding" | "error" | "active" | "pending" | "offboarding" | "offboarded" | "failed";
6
- export type AiAccountantEnrollmentStatus = ReturnType<typeof toAiAccountantEnrollmentStatus>;
7
- export declare const toAiAccountantJobStatus: (v: string) => "failed" | "queued" | "running" | "completed" | "cancelled" | "retried";
8
- export type AiAccountantJobStatus = ReturnType<typeof toAiAccountantJobStatus>;
9
- export interface AiAccountantEnrollment {
10
- status: AiAccountantEnrollmentStatus;
11
- accuracy?: Record<string, number>;
12
- latestTraining?: ZeniDate;
13
- latestTransactionSync?: ZeniDate;
14
- offboardedAt?: ZeniDate;
15
- offboardedBy?: ID;
16
- onboardedAt?: ZeniDate;
17
- onboardedBy?: ID;
18
- validationResults?: Array<{
19
- accuracy: number;
20
- modelType: string;
21
- passed: boolean;
22
- threshold: number;
23
- }>;
24
- }
25
- export interface AiAccountantJob {
26
- companyId: ID;
27
- createdAt: ZeniDate;
28
- jobId: ID;
29
- operationType: AiAccountantOperationType;
30
- status: AiAccountantJobStatus;
31
- tenantId: ID;
32
- triggeredBy: ID;
33
- companyNamespace?: string;
34
- completedAt?: ZeniDate;
35
- errorMessage?: string;
36
- parameters?: Record<string, unknown>;
37
- retryCount?: number;
38
- startedAt?: ZeniDate;
39
- steps?: Array<Record<string, unknown>>;
40
- validationResults?: Array<Record<string, unknown>>;
41
- }
42
- export interface AiAccountantCustomer {
43
- companyId: ID;
44
- companyName: string;
45
- tenantId: ID;
46
- bookcloseDate?: ZeniDate;
47
- enrollment?: AiAccountantEnrollment;
48
- }
49
- export interface AiAccountantCustomerState {
50
- customerByTenantId: Record<ID, AiAccountantCustomer>;
51
- jobsByTenantId: Record<ID, AiAccountantJob[]>;
52
- }
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toAiAccountantJobStatus = exports.toAiAccountantEnrollmentStatus = exports.toAiAccountantOperationType = void 0;
4
- const stringToUnion_1 = require("../../commonStateTypes/stringToUnion");
5
- // ── Operation Type ──
6
- const ALL_OPERATION_TYPES = [
7
- 'onboard',
8
- 'offboard',
9
- 'retrain',
10
- 'full_pipeline',
11
- 'cancel_onboarding',
12
- ];
13
- const toAiAccountantOperationType = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_OPERATION_TYPES);
14
- exports.toAiAccountantOperationType = toAiAccountantOperationType;
15
- // ── Enrollment Status ──
16
- const ALL_ENROLLMENT_STATUSES = [
17
- 'active',
18
- 'pending',
19
- 'onboarding',
20
- 'offboarding',
21
- 'offboarded',
22
- 'failed',
23
- 'error',
24
- ];
25
- const toAiAccountantEnrollmentStatus = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_ENROLLMENT_STATUSES);
26
- exports.toAiAccountantEnrollmentStatus = toAiAccountantEnrollmentStatus;
27
- // ── Job Status ──
28
- const ALL_JOB_STATUSES = [
29
- 'queued',
30
- 'running',
31
- 'completed',
32
- 'failed',
33
- 'cancelled',
34
- 'retried',
35
- ];
36
- const toAiAccountantJobStatus = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_JOB_STATUSES);
37
- exports.toAiAccountantJobStatus = toAiAccountantJobStatus;
@@ -1,49 +0,0 @@
1
- import { date } from '../../zeniDayJS';
2
- import { toAiAccountantEnrollmentStatus, toAiAccountantJobStatus, toAiAccountantOperationType, } from './aiAccountantCustomerState';
3
- // ── Mapping functions (payload → state) ──
4
- export const toAiAccountantEnrollment = (payload) => ({
5
- status: toAiAccountantEnrollmentStatus(payload.status),
6
- accuracy: payload.accuracy,
7
- latestTraining: payload.latest_training != null
8
- ? date(payload.latest_training)
9
- : undefined,
10
- latestTransactionSync: payload.latest_transaction_sync != null
11
- ? date(payload.latest_transaction_sync)
12
- : undefined,
13
- offboardedAt: payload.offboarded_at != null ? date(payload.offboarded_at) : undefined,
14
- offboardedBy: payload.offboarded_by,
15
- onboardedAt: payload.onboarded_at != null ? date(payload.onboarded_at) : undefined,
16
- onboardedBy: payload.onboarded_by,
17
- validationResults: payload.validation_results?.map((vr) => ({
18
- accuracy: vr.accuracy,
19
- modelType: vr.model_type,
20
- passed: vr.passed,
21
- threshold: vr.threshold,
22
- })),
23
- });
24
- export const toAiAccountantCustomer = (payload) => ({
25
- companyId: payload.company_id,
26
- companyName: payload.company_name,
27
- tenantId: payload.tenant_id,
28
- bookcloseDate: payload.bookclose_date != null ? date(payload.bookclose_date) : undefined,
29
- enrollment: payload.enrollment != null
30
- ? toAiAccountantEnrollment(payload.enrollment)
31
- : undefined,
32
- });
33
- export const toAiAccountantJob = (payload) => ({
34
- companyId: payload.company_id,
35
- createdAt: date(payload.created_at),
36
- jobId: payload.job_id,
37
- operationType: toAiAccountantOperationType(payload.operation_type),
38
- status: toAiAccountantJobStatus(payload.status),
39
- tenantId: payload.tenant_id,
40
- triggeredBy: payload.triggered_by,
41
- companyNamespace: payload.company_namespace,
42
- completedAt: payload.completed_at != null ? date(payload.completed_at) : undefined,
43
- errorMessage: payload.error_message,
44
- parameters: payload.parameters,
45
- retryCount: payload.retry_count,
46
- startedAt: payload.started_at != null ? date(payload.started_at) : undefined,
47
- steps: payload.steps,
48
- validationResults: payload.validation_results,
49
- });