@fiado/type-kit 3.545.0 → 3.547.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/_test_/unit/loanOfferings/prepaymentMinimum.test.ts +40 -0
- package/_test_/unit/loanRetailAudit/loanRetailAuditContracts.test.ts +139 -0
- package/bin/index.d.ts +1 -0
- package/bin/index.js +4 -1
- package/bin/loanCredit/dtos/responses/CreditCustomerListItem.d.ts +2 -0
- package/bin/loanCredit/dtos/responses/LoanBorrowerCreditItem.d.ts +2 -0
- package/bin/loanCredit/dtos/responses/LoanCreditDetail.d.ts +2 -0
- package/bin/loanCredit/dtos/responses/LoanPrepaymentQuote.d.ts +3 -1
- package/bin/loanCredit/dtos/responses/SellerCreditRow.d.ts +2 -0
- package/bin/loanOfferings/dtos/CreditPlan.d.ts +3 -0
- package/bin/loanOfferings/dtos/CreditPlan.js +8 -0
- package/bin/loanOfferings/dtos/PrepaymentMinimum.d.ts +12 -0
- package/bin/loanOfferings/dtos/PrepaymentMinimum.js +42 -0
- package/bin/loanOfferings/dtos/requests/CreateCreditPlanRequest.d.ts +3 -0
- package/bin/loanOfferings/dtos/requests/CreateCreditPlanRequest.js +8 -0
- package/bin/loanOfferings/dtos/requests/UpdateCreditPlanRequest.d.ts +3 -0
- package/bin/loanOfferings/dtos/requests/UpdateCreditPlanRequest.js +8 -0
- package/bin/loanOfferings/dtos/responses/CreditPlanResponse.d.ts +3 -0
- package/bin/loanOfferings/enums/PrepaymentMinimumModeEnum.d.ts +9 -0
- package/bin/loanOfferings/enums/PrepaymentMinimumModeEnum.js +13 -0
- package/bin/loanOfferings/index.d.ts +2 -0
- package/bin/loanOfferings/index.js +2 -0
- package/bin/loanRetailAudit/constants/auditTrailEntityTypes.d.ts +6 -0
- package/bin/loanRetailAudit/constants/auditTrailEntityTypes.js +10 -0
- package/bin/loanRetailAudit/dtos/AuditTrailChange.d.ts +8 -0
- package/bin/loanRetailAudit/dtos/AuditTrailChange.js +36 -0
- package/bin/loanRetailAudit/dtos/AuditTrailContextEntry.d.ts +5 -0
- package/bin/loanRetailAudit/dtos/AuditTrailContextEntry.js +29 -0
- package/bin/loanRetailAudit/dtos/requests/CreatePiiAccessLogRequest.d.ts +19 -0
- package/bin/loanRetailAudit/dtos/requests/CreatePiiAccessLogRequest.js +85 -0
- package/bin/loanRetailAudit/dtos/requests/ListAuditTrailQuery.d.ts +11 -0
- package/bin/loanRetailAudit/dtos/requests/ListAuditTrailQuery.js +52 -0
- package/bin/loanRetailAudit/dtos/responses/CreatePiiAccessLogResponse.d.ts +4 -0
- package/bin/loanRetailAudit/dtos/responses/CreatePiiAccessLogResponse.js +2 -0
- package/bin/loanRetailAudit/dtos/responses/ListAuditTrailResponse.d.ts +31 -0
- package/bin/loanRetailAudit/dtos/responses/ListAuditTrailResponse.js +2 -0
- package/bin/loanRetailAudit/enums/AuditTrailActionEnum.d.ts +39 -0
- package/bin/loanRetailAudit/enums/AuditTrailActionEnum.js +43 -0
- package/bin/loanRetailAudit/enums/LoanAuditEntityTypeEnum.d.ts +12 -0
- package/bin/loanRetailAudit/enums/LoanAuditEntityTypeEnum.js +16 -0
- package/bin/loanRetailAudit/enums/PiiAccessActionEnum.d.ts +5 -0
- package/bin/loanRetailAudit/enums/PiiAccessActionEnum.js +9 -0
- package/bin/loanRetailAudit/enums/PiiResourceTypeEnum.d.ts +9 -0
- package/bin/loanRetailAudit/enums/PiiResourceTypeEnum.js +13 -0
- package/bin/loanRetailAudit/enums/RetailAuditEntityTypeEnum.d.ts +17 -0
- package/bin/loanRetailAudit/enums/RetailAuditEntityTypeEnum.js +21 -0
- package/bin/loanRetailAudit/events/AuditTrailRecordedV1.d.ts +20 -0
- package/bin/loanRetailAudit/events/AuditTrailRecordedV1.js +94 -0
- package/bin/loanRetailAudit/index.d.ts +13 -0
- package/bin/loanRetailAudit/index.js +33 -0
- package/bin/retailLoan/dtos/MyCreditSummary.d.ts +2 -0
- package/package.json +1 -1
- package/src/index.ts +4 -0
- package/src/loanCredit/dtos/responses/CreditCustomerListItem.ts +2 -0
- package/src/loanCredit/dtos/responses/LoanBorrowerCreditItem.ts +2 -0
- package/src/loanCredit/dtos/responses/LoanCreditDetail.ts +2 -0
- package/src/loanCredit/dtos/responses/LoanPrepaymentQuote.ts +3 -1
- package/src/loanCredit/dtos/responses/SellerCreditRow.ts +2 -0
- package/src/loanOfferings/dtos/CreditPlan.ts +10 -1
- package/src/loanOfferings/dtos/PrepaymentMinimum.ts +28 -0
- package/src/loanOfferings/dtos/requests/CreateCreditPlanRequest.ts +10 -1
- package/src/loanOfferings/dtos/requests/UpdateCreditPlanRequest.ts +10 -1
- package/src/loanOfferings/dtos/responses/CreditPlanResponse.ts +3 -0
- package/src/loanOfferings/enums/PrepaymentMinimumModeEnum.ts +9 -0
- package/src/loanOfferings/index.ts +2 -0
- package/src/loanRetailAudit/constants/auditTrailEntityTypes.ts +12 -0
- package/src/loanRetailAudit/dtos/AuditTrailChange.ts +22 -0
- package/src/loanRetailAudit/dtos/AuditTrailContextEntry.ts +14 -0
- package/src/loanRetailAudit/dtos/requests/CreatePiiAccessLogRequest.ts +64 -0
- package/src/loanRetailAudit/dtos/requests/ListAuditTrailQuery.ts +35 -0
- package/src/loanRetailAudit/dtos/responses/CreatePiiAccessLogResponse.ts +4 -0
- package/src/loanRetailAudit/dtos/responses/ListAuditTrailResponse.ts +31 -0
- package/src/loanRetailAudit/enums/AuditTrailActionEnum.ts +39 -0
- package/src/loanRetailAudit/enums/LoanAuditEntityTypeEnum.ts +12 -0
- package/src/loanRetailAudit/enums/PiiAccessActionEnum.ts +5 -0
- package/src/loanRetailAudit/enums/PiiResourceTypeEnum.ts +9 -0
- package/src/loanRetailAudit/enums/RetailAuditEntityTypeEnum.ts +17 -0
- package/src/loanRetailAudit/events/AuditTrailRecordedV1.ts +70 -0
- package/src/loanRetailAudit/index.ts +20 -0
- package/src/retailLoan/dtos/MyCreditSummary.ts +2 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validate } from 'class-validator';
|
|
4
|
+
import {
|
|
5
|
+
PrepaymentMinimum,
|
|
6
|
+
PrepaymentMinimumModeEnum,
|
|
7
|
+
UpdateCreditPlanRequest,
|
|
8
|
+
} from '../../../src/loanOfferings/index';
|
|
9
|
+
|
|
10
|
+
const errorsOf = async (prepaymentMinimum: Record<string, unknown>): Promise<string[]> => {
|
|
11
|
+
const dto = plainToInstance(UpdateCreditPlanRequest, { prepaymentMinimum }, { excludeExtraneousValues: true });
|
|
12
|
+
const errors = await validate(dto as object);
|
|
13
|
+
return errors.flatMap((error) => (error.children ?? []).map((child) => child.property).concat(error.children?.length ? [] : [error.property]));
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
describe('UpdateCreditPlanRequest.prepaymentMinimum', () => {
|
|
17
|
+
it('tipa el mínimo del abono y conserva sus campos', async () => {
|
|
18
|
+
const dto = plainToInstance(
|
|
19
|
+
UpdateCreditPlanRequest,
|
|
20
|
+
{ prepaymentMinimum: { mode: 'PERCENT_OF_PERIOD_PAYMENT', periodPaymentPct: 0.5 } },
|
|
21
|
+
{ excludeExtraneousValues: true },
|
|
22
|
+
);
|
|
23
|
+
expect(await validate(dto as object)).toHaveLength(0);
|
|
24
|
+
expect(dto.prepaymentMinimum).toBeInstanceOf(PrepaymentMinimum);
|
|
25
|
+
expect(dto.prepaymentMinimum?.periodPaymentPct).toBe(0.5);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('acepta cualquier monto, porcentaje del pago del periodo y monto fijo', async () => {
|
|
29
|
+
expect(await errorsOf({ mode: PrepaymentMinimumModeEnum.ANY })).toEqual([]);
|
|
30
|
+
expect(await errorsOf({ mode: PrepaymentMinimumModeEnum.PERCENT_OF_PERIOD_PAYMENT, periodPaymentPct: 1 })).toEqual([]);
|
|
31
|
+
expect(await errorsOf({ mode: PrepaymentMinimumModeEnum.FIXED, amountCents: 10_000 })).toEqual([]);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('rechaza un modo desconocido, un porcentaje fuera de (0, 1] y un monto menor a un centavo', async () => {
|
|
35
|
+
expect(await errorsOf({ mode: 'HALF' })).toContain('mode');
|
|
36
|
+
expect(await errorsOf({ mode: PrepaymentMinimumModeEnum.PERCENT_OF_PERIOD_PAYMENT, periodPaymentPct: 1.5 })).toContain('periodPaymentPct');
|
|
37
|
+
expect(await errorsOf({ mode: PrepaymentMinimumModeEnum.PERCENT_OF_PERIOD_PAYMENT, periodPaymentPct: 0 })).toContain('periodPaymentPct');
|
|
38
|
+
expect(await errorsOf({ mode: PrepaymentMinimumModeEnum.FIXED, amountCents: 0 })).toContain('amountCents');
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validateSync } from 'class-validator';
|
|
4
|
+
import * as LoanRetailAudit from '../../../src/loanRetailAudit';
|
|
5
|
+
import { LoanRetailAudit as FromRoot } from '../../../src';
|
|
6
|
+
|
|
7
|
+
const {
|
|
8
|
+
AuditTrailRecordedV1,
|
|
9
|
+
CreatePiiAccessLogRequest,
|
|
10
|
+
ListAuditTrailQuery,
|
|
11
|
+
AuditTrailActionEnum,
|
|
12
|
+
LoanAuditEntityTypeEnum,
|
|
13
|
+
RetailAuditEntityTypeEnum,
|
|
14
|
+
PiiResourceTypeEnum,
|
|
15
|
+
PiiAccessActionEnum,
|
|
16
|
+
AUDIT_TRAIL_ENTITY_TYPES,
|
|
17
|
+
} = LoanRetailAudit;
|
|
18
|
+
|
|
19
|
+
function errorsOf<T extends object>(cls: new () => T, payload: Record<string, unknown>): string[] {
|
|
20
|
+
const dto = plainToInstance(cls, payload, { excludeExtraneousValues: true });
|
|
21
|
+
return validateSync(dto).map((e) => e.property);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const validEvent = {
|
|
25
|
+
eventId: '01JABCDEF0123456789XYZABCD',
|
|
26
|
+
entityType: RetailAuditEntityTypeEnum.SALE,
|
|
27
|
+
entityId: 'sale-1',
|
|
28
|
+
action: AuditTrailActionEnum.SALE_CANCEL,
|
|
29
|
+
changes: [{ field: 'status', oldValue: 'COMPLETED', newValue: 'CANCELLED' }],
|
|
30
|
+
context: [{ key: 'saleType', value: 'CASH' }],
|
|
31
|
+
performedBy: 'user-1',
|
|
32
|
+
sourceLambda: 'retail-wizard-business',
|
|
33
|
+
occurredAt: '2026-10-19T12:00:00.000Z',
|
|
34
|
+
tenantId: 'surekeep',
|
|
35
|
+
reason: 'cliente se arrepintió',
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
describe('AuditTrailRecordedV1', () => {
|
|
39
|
+
it('acepta un evento completo de Retail', () => {
|
|
40
|
+
expect(errorsOf(AuditTrailRecordedV1, validEvent)).toEqual([]);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('acepta un entityType de Loan y un alta sin oldValue ni contexto', () => {
|
|
44
|
+
expect(
|
|
45
|
+
errorsOf(AuditTrailRecordedV1, {
|
|
46
|
+
...validEvent,
|
|
47
|
+
entityType: LoanAuditEntityTypeEnum.CREDIT,
|
|
48
|
+
action: AuditTrailActionEnum.CREATE,
|
|
49
|
+
changes: [{ field: 'status', newValue: 'ACTIVE' }],
|
|
50
|
+
context: [],
|
|
51
|
+
tenantId: undefined,
|
|
52
|
+
reason: undefined,
|
|
53
|
+
}),
|
|
54
|
+
).toEqual([]);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('rechaza entityType y action fuera del catálogo', () => {
|
|
58
|
+
expect(errorsOf(AuditTrailRecordedV1, { ...validEvent, entityType: 'RetailCustomer' })).toContain('entityType');
|
|
59
|
+
expect(errorsOf(AuditTrailRecordedV1, { ...validEvent, action: 'BOOM' })).toContain('action');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('exige eventId, sourceLambda, performedBy y occurredAt ISO', () => {
|
|
63
|
+
const errors = errorsOf(AuditTrailRecordedV1, {
|
|
64
|
+
...validEvent,
|
|
65
|
+
eventId: '',
|
|
66
|
+
sourceLambda: undefined,
|
|
67
|
+
performedBy: '',
|
|
68
|
+
occurredAt: 'ayer',
|
|
69
|
+
});
|
|
70
|
+
expect(errors).toEqual(expect.arrayContaining(['eventId', 'sourceLambda', 'performedBy', 'occurredAt']));
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('valida cada cambio y cada entrada de contexto', () => {
|
|
74
|
+
expect(errorsOf(AuditTrailRecordedV1, { ...validEvent, changes: [{ oldValue: 'x' }] })).toContain('changes');
|
|
75
|
+
expect(errorsOf(AuditTrailRecordedV1, { ...validEvent, context: [{ key: 'k', value: 3 }] })).toContain('context');
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
describe('CreatePiiAccessLogRequest', () => {
|
|
80
|
+
const valid = {
|
|
81
|
+
accessId: '01JABCDEF0123456789XYZABCD',
|
|
82
|
+
occurredAt: '2026-10-19T12:00:00.000Z',
|
|
83
|
+
correlationId: 'req-1',
|
|
84
|
+
actorId: 'user-1',
|
|
85
|
+
sourceLambda: 'retail-customer-business',
|
|
86
|
+
operationName: 'publicGetCustomer',
|
|
87
|
+
action: PiiAccessActionEnum.READ,
|
|
88
|
+
resourceType: PiiResourceTypeEnum.RETAIL_CUSTOMER,
|
|
89
|
+
resourceId: 'cust-1',
|
|
90
|
+
fields: ['phone', 'curp'],
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
it('acepta un acceso de detalle y uno de listado con resourceIds', () => {
|
|
94
|
+
expect(errorsOf(CreatePiiAccessLogRequest, valid)).toEqual([]);
|
|
95
|
+
expect(errorsOf(CreatePiiAccessLogRequest, { ...valid, resourceId: '(list)', resourceIds: ['a', 'b'] })).toEqual([]);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('rechaza el resourceType viejo y una acción desconocida', () => {
|
|
99
|
+
expect(errorsOf(CreatePiiAccessLogRequest, { ...valid, resourceType: 'RetailCustomer' })).toContain('resourceType');
|
|
100
|
+
expect(errorsOf(CreatePiiAccessLogRequest, { ...valid, action: 'DELETE' })).toContain('action');
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it('exige accessId, actor, campos y fecha ISO', () => {
|
|
104
|
+
const errors = errorsOf(CreatePiiAccessLogRequest, { ...valid, accessId: '', actorId: undefined, fields: [], occurredAt: 'x' });
|
|
105
|
+
expect(errors).toEqual(expect.arrayContaining(['accessId', 'actorId', 'fields', 'occurredAt']));
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
describe('ListAuditTrailQuery', () => {
|
|
110
|
+
it('acepta entityType de Loan o Retail con orden, límite y cursor', () => {
|
|
111
|
+
expect(errorsOf(ListAuditTrailQuery, { entityType: 'CUSTOMER', entityId: 'c-1', order: 'asc', limit: '50', nextToken: 'abc' })).toEqual([]);
|
|
112
|
+
expect(errorsOf(ListAuditTrailQuery, { entityType: 'LoanParameter', entityId: 'p-1' })).toEqual([]);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('rechaza entityType desconocido, orden inválido y límite fuera de rango', () => {
|
|
116
|
+
const errors = errorsOf(ListAuditTrailQuery, { entityType: 'FOO', entityId: 'x', order: 'up', limit: '500' });
|
|
117
|
+
expect(errors).toEqual(expect.arrayContaining(['entityType', 'order', 'limit']));
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it('exige entityId', () => {
|
|
121
|
+
expect(errorsOf(ListAuditTrailQuery, { entityType: 'SALE' })).toContain('entityId');
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
describe('catálogos', () => {
|
|
126
|
+
it('AUDIT_TRAIL_ENTITY_TYPES une Loan y Retail sin repetidos', () => {
|
|
127
|
+
const all = [...Object.values(LoanAuditEntityTypeEnum), ...Object.values(RetailAuditEntityTypeEnum)];
|
|
128
|
+
expect([...AUDIT_TRAIL_ENTITY_TYPES].sort()).toEqual([...all].sort());
|
|
129
|
+
expect(new Set(all).size).toBe(all.length);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('PiiResourceTypeEnum es SCREAMING_SNAKE', () => {
|
|
133
|
+
Object.values(PiiResourceTypeEnum).forEach((v) => expect(v).toMatch(/^[A-Z][A-Z_]*$/));
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it('se exporta en la raíz como LoanRetailAudit', () => {
|
|
137
|
+
expect(FromRoot.AuditTrailRecordedV1).toBe(AuditTrailRecordedV1);
|
|
138
|
+
});
|
|
139
|
+
});
|
package/bin/index.d.ts
CHANGED
package/bin/index.js
CHANGED
|
@@ -38,7 +38,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.FiadoIncFavorite = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.MessageMoments = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.UserTags = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.AppContent = exports.App = exports.Offices = exports.Places = exports.Address = exports.Beneficiary = exports.Activity = exports.Biometrics = exports.MetamapConnector = exports.Account = exports.Crypto = void 0;
|
|
40
40
|
exports.RetailCards = exports.RetailCatalog = exports.RetailCommission = exports.RetailOrg = exports.EmailVerification = exports.NetworkConnector = exports.Modelias = exports.TotpSecurity = exports.Passport = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.WhatsappConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.UsMarketGrowthBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = exports.AppSelectionData = exports.Device = exports.Observations = exports.IssuanceBusiness = exports.Blacklist = void 0;
|
|
41
|
-
exports.Rules = exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = exports.RetailWizard = exports.RetailCustomer = void 0;
|
|
41
|
+
exports.LoanRetailAudit = exports.Rules = exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = exports.RetailWizard = exports.RetailCustomer = void 0;
|
|
42
42
|
exports.Crypto = __importStar(require("./crypto"));
|
|
43
43
|
exports.Account = __importStar(require("./account"));
|
|
44
44
|
exports.MetamapConnector = __importStar(require("./metamapConnector"));
|
|
@@ -252,3 +252,6 @@ exports.DatalakeReports = __importStar(require("./datalakeReports"));
|
|
|
252
252
|
exports.PdfRender = __importStar(require("./pdfRender"));
|
|
253
253
|
// Rules: DTOs del lambda central rules-business (catálogo, validación, generación con IA y evaluación de reglas).
|
|
254
254
|
exports.Rules = __importStar(require("./rules"));
|
|
255
|
+
// LoanRetailAudit: contrato del lambda central loan-retail-audit-business (bitácora y accesos a PII
|
|
256
|
+
// de Loan y Retail): mensaje de su cola, POST /private/pii-access-logs y GET /private/audit-trail.
|
|
257
|
+
exports.LoanRetailAudit = __importStar(require("./loanRetailAudit"));
|
|
@@ -25,6 +25,8 @@ export interface CreditCustomerCredit {
|
|
|
25
25
|
settledCreditsCount: number | null;
|
|
26
26
|
writtenOffCreditsCount: number | null;
|
|
27
27
|
outstandingBalanceCents: number | null;
|
|
28
|
+
/** Deuda total de sus créditos vivos: capital, interés e IVA que faltan de las cuotas abiertas. `null` = no aplica. */
|
|
29
|
+
totalDebtCents?: number | null;
|
|
28
30
|
arrearsDays: number | null;
|
|
29
31
|
lastPaymentAt: string | null;
|
|
30
32
|
/** Ausente en créditos sin pago desde que existe el campo: el front cae a `lastPaymentAt`. */
|
|
@@ -9,6 +9,8 @@ export interface LoanBorrowerCreditItem extends LoanCreditResponse {
|
|
|
9
9
|
paidInstallments: number;
|
|
10
10
|
/** `null` = no aplica (el crédito se canceló o caducó); `0` = ya no debe nada. */
|
|
11
11
|
outstandingBalanceCents: number | null;
|
|
12
|
+
/** Deuda total: capital, interés e IVA que faltan de las cuotas abiertas (PENDING u OVERDUE). `null` = no aplica. */
|
|
13
|
+
totalDebtCents?: number | null;
|
|
12
14
|
/** Días desde el vencimiento impago más viejo; `0` al día; `null` si no hay atraso que medir. */
|
|
13
15
|
overdueDays: number | null;
|
|
14
16
|
/** Suma del TOTAL de las cuotas vencidas impagas. Sigue a `overdueDays` en `null`/`0`. */
|
|
@@ -13,6 +13,8 @@ export interface LoanCreditDetail extends LoanCreditResponse {
|
|
|
13
13
|
financier: SaleFinancierEnum;
|
|
14
14
|
paidInstallments: number;
|
|
15
15
|
outstandingBalanceCents: number | null;
|
|
16
|
+
/** Deuda total: capital, interés e IVA que faltan de las cuotas abiertas (PENDING u OVERDUE). `null` = no aplica. */
|
|
17
|
+
totalDebtCents?: number | null;
|
|
16
18
|
overdueDays: number | null;
|
|
17
19
|
overdueAmountCents: number | null;
|
|
18
20
|
/** Cuotas vencidas impagas. `0` = nada vencido; `null` acompaña a `overdueDays` en null. */
|
|
@@ -3,8 +3,10 @@ export interface LoanPrepaymentQuote {
|
|
|
3
3
|
creditId: string;
|
|
4
4
|
/** Saldo insoluto que se le informa al cliente. */
|
|
5
5
|
outstandingCapitalCents: number;
|
|
6
|
-
/** Pago del periodo
|
|
6
|
+
/** Pago del periodo. */
|
|
7
7
|
periodPaymentCents: number;
|
|
8
|
+
/** Mínimo del abono según el plan del crédito; con mínimo `ANY`, 1 centavo. */
|
|
9
|
+
minAmountCents?: number;
|
|
8
10
|
/** Monto de liquidación anticipada: el techo del abono. */
|
|
9
11
|
settlementAmountCents: number;
|
|
10
12
|
}
|
|
@@ -17,6 +17,8 @@ export interface SellerCreditRow {
|
|
|
17
17
|
summaryUnavailable: boolean;
|
|
18
18
|
paidInstallments: number | null;
|
|
19
19
|
outstandingBalanceCents: number | null;
|
|
20
|
+
/** Deuda total: capital, interés e IVA que faltan de las cuotas abiertas (PENDING u OVERDUE). `null` = no aplica. */
|
|
21
|
+
totalDebtCents?: number | null;
|
|
20
22
|
overdueDays: number | null;
|
|
21
23
|
overdueAmountCents: number | null;
|
|
22
24
|
/** Primera cuota que todavía se debe; `null` si ya no debe nada o si el plan no se leyó. */
|
|
@@ -2,6 +2,7 @@ import { CreditPlanLevelEnum } from '../enums/CreditPlanLevelEnum';
|
|
|
2
2
|
import { CreditPlanStatusEnum } from '../enums/CreditPlanStatusEnum';
|
|
3
3
|
import { ProductTierEnum } from '../enums/ProductTierEnum';
|
|
4
4
|
import { SaleTypeEnum } from '../enums/SaleTypeEnum';
|
|
5
|
+
import { PrepaymentMinimum } from './PrepaymentMinimum';
|
|
5
6
|
/**
|
|
6
7
|
* CreditPlan — plan de crédito del catálogo SOFOM SureKeep (modelo-datos §6.1 · M6 §4).
|
|
7
8
|
* Entidad completa del dominio `loan-offerings-business` (SureKeep Fase 1 — pista Loan).
|
|
@@ -49,4 +50,6 @@ export declare class CreditPlan {
|
|
|
49
50
|
updatedBy: string;
|
|
50
51
|
createdAt: string;
|
|
51
52
|
updatedAt: string;
|
|
53
|
+
/** Mínimo del abono a capital; ausente = `ANY` (cualquier monto). */
|
|
54
|
+
prepaymentMinimum?: PrepaymentMinimum;
|
|
52
55
|
}
|
|
@@ -17,6 +17,7 @@ const CreditPlanLevelEnum_1 = require("../enums/CreditPlanLevelEnum");
|
|
|
17
17
|
const CreditPlanStatusEnum_1 = require("../enums/CreditPlanStatusEnum");
|
|
18
18
|
const ProductTierEnum_1 = require("../enums/ProductTierEnum");
|
|
19
19
|
const SaleTypeEnum_1 = require("../enums/SaleTypeEnum");
|
|
20
|
+
const PrepaymentMinimum_1 = require("./PrepaymentMinimum");
|
|
20
21
|
/**
|
|
21
22
|
* CreditPlan — plan de crédito del catálogo SOFOM SureKeep (modelo-datos §6.1 · M6 §4).
|
|
22
23
|
* Entidad completa del dominio `loan-offerings-business` (SureKeep Fase 1 — pista Loan).
|
|
@@ -182,3 +183,10 @@ __decorate([
|
|
|
182
183
|
(0, class_validator_1.Matches)(regex_1.regexIso8601, { message: 'updatedAt debe ser una fecha ISO 8601' }),
|
|
183
184
|
__metadata("design:type", String)
|
|
184
185
|
], CreditPlan.prototype, "updatedAt", void 0);
|
|
186
|
+
__decorate([
|
|
187
|
+
(0, class_transformer_1.Expose)(),
|
|
188
|
+
(0, class_validator_1.IsOptional)(),
|
|
189
|
+
(0, class_validator_1.ValidateNested)(),
|
|
190
|
+
(0, class_transformer_1.Type)(() => PrepaymentMinimum_1.PrepaymentMinimum),
|
|
191
|
+
__metadata("design:type", PrepaymentMinimum_1.PrepaymentMinimum)
|
|
192
|
+
], CreditPlan.prototype, "prepaymentMinimum", void 0);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PrepaymentMinimumModeEnum } from '../enums/PrepaymentMinimumModeEnum';
|
|
2
|
+
/**
|
|
3
|
+
* Mínimo del abono a capital de un plan. El máximo no depende del plan: es lo que falta para liquidar.
|
|
4
|
+
* Sin este campo en el plan, el mínimo es `ANY`.
|
|
5
|
+
*/
|
|
6
|
+
export declare class PrepaymentMinimum {
|
|
7
|
+
mode: PrepaymentMinimumModeEnum;
|
|
8
|
+
/** Sólo `PERCENT_OF_PERIOD_PAYMENT`: decimal sobre 1 del pago del periodo (`0.5` = 50 %). */
|
|
9
|
+
periodPaymentPct?: number | null;
|
|
10
|
+
/** Sólo `FIXED`: monto mínimo en cents. */
|
|
11
|
+
amountCents?: number | null;
|
|
12
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PrepaymentMinimum = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const PrepaymentMinimumModeEnum_1 = require("../enums/PrepaymentMinimumModeEnum");
|
|
16
|
+
/**
|
|
17
|
+
* Mínimo del abono a capital de un plan. El máximo no depende del plan: es lo que falta para liquidar.
|
|
18
|
+
* Sin este campo en el plan, el mínimo es `ANY`.
|
|
19
|
+
*/
|
|
20
|
+
class PrepaymentMinimum {
|
|
21
|
+
}
|
|
22
|
+
exports.PrepaymentMinimum = PrepaymentMinimum;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_transformer_1.Expose)(),
|
|
25
|
+
(0, class_validator_1.IsEnum)(PrepaymentMinimumModeEnum_1.PrepaymentMinimumModeEnum),
|
|
26
|
+
__metadata("design:type", String)
|
|
27
|
+
], PrepaymentMinimum.prototype, "mode", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, class_transformer_1.Expose)(),
|
|
30
|
+
(0, class_validator_1.IsOptional)(),
|
|
31
|
+
(0, class_validator_1.IsNumber)(),
|
|
32
|
+
(0, class_validator_1.Min)(0.0001),
|
|
33
|
+
(0, class_validator_1.Max)(1),
|
|
34
|
+
__metadata("design:type", Number)
|
|
35
|
+
], PrepaymentMinimum.prototype, "periodPaymentPct", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
(0, class_validator_1.IsOptional)(),
|
|
39
|
+
(0, class_validator_1.IsInt)(),
|
|
40
|
+
(0, class_validator_1.Min)(1),
|
|
41
|
+
__metadata("design:type", Number)
|
|
42
|
+
], PrepaymentMinimum.prototype, "amountCents", void 0);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CreditPlanLevelEnum } from '../../enums/CreditPlanLevelEnum';
|
|
2
2
|
import { ProductTierEnum } from '../../enums/ProductTierEnum';
|
|
3
3
|
import { SaleTypeEnum } from '../../enums/SaleTypeEnum';
|
|
4
|
+
import { PrepaymentMinimum } from '../PrepaymentMinimum';
|
|
4
5
|
/**
|
|
5
6
|
* Body de POST /credit-plans — alta de un plan (SureKeep Fase 1 — pista Loan).
|
|
6
7
|
* Campos server-assigned (`planId`, `version`, `ivaOnInterest`=0.16, `status`, auditoría) NO viajan
|
|
@@ -24,4 +25,6 @@ export declare class CreateCreditPlanRequest {
|
|
|
24
25
|
maxSciScore?: number | null;
|
|
25
26
|
validFrom?: string | null;
|
|
26
27
|
validUntil?: string | null;
|
|
28
|
+
/** Mínimo del abono a capital; ausente = sin cambios (en el alta: `ANY`). */
|
|
29
|
+
prepaymentMinimum?: PrepaymentMinimum;
|
|
27
30
|
}
|
|
@@ -15,6 +15,7 @@ const class_validator_1 = require("class-validator");
|
|
|
15
15
|
const CreditPlanLevelEnum_1 = require("../../enums/CreditPlanLevelEnum");
|
|
16
16
|
const ProductTierEnum_1 = require("../../enums/ProductTierEnum");
|
|
17
17
|
const SaleTypeEnum_1 = require("../../enums/SaleTypeEnum");
|
|
18
|
+
const PrepaymentMinimum_1 = require("../PrepaymentMinimum");
|
|
18
19
|
/**
|
|
19
20
|
* Body de POST /credit-plans — alta de un plan (SureKeep Fase 1 — pista Loan).
|
|
20
21
|
* Campos server-assigned (`planId`, `version`, `ivaOnInterest`=0.16, `status`, auditoría) NO viajan
|
|
@@ -135,3 +136,10 @@ __decorate([
|
|
|
135
136
|
(0, class_validator_1.IsString)(),
|
|
136
137
|
__metadata("design:type", String)
|
|
137
138
|
], CreateCreditPlanRequest.prototype, "validUntil", void 0);
|
|
139
|
+
__decorate([
|
|
140
|
+
(0, class_transformer_1.Expose)(),
|
|
141
|
+
(0, class_validator_1.IsOptional)(),
|
|
142
|
+
(0, class_validator_1.ValidateNested)(),
|
|
143
|
+
(0, class_transformer_1.Type)(() => PrepaymentMinimum_1.PrepaymentMinimum),
|
|
144
|
+
__metadata("design:type", PrepaymentMinimum_1.PrepaymentMinimum)
|
|
145
|
+
], CreateCreditPlanRequest.prototype, "prepaymentMinimum", void 0);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ProductTierEnum } from '../../enums/ProductTierEnum';
|
|
2
2
|
import { SaleTypeEnum } from '../../enums/SaleTypeEnum';
|
|
3
|
+
import { PrepaymentMinimum } from '../PrepaymentMinimum';
|
|
3
4
|
/**
|
|
4
5
|
* Body de PUT /credit-plans/:planId — edición parcial de parámetros del plan (todos opcionales).
|
|
5
6
|
* En F1 el PUT puede editar `min/maxSciScore` por-plan (DEC-004); el guard atómico anti-huecos
|
|
@@ -22,4 +23,6 @@ export declare class UpdateCreditPlanRequest {
|
|
|
22
23
|
maxSciScore?: number | null;
|
|
23
24
|
validFrom?: string | null;
|
|
24
25
|
validUntil?: string | null;
|
|
26
|
+
/** Mínimo del abono a capital; ausente = sin cambios (en el alta: `ANY`). */
|
|
27
|
+
prepaymentMinimum?: PrepaymentMinimum;
|
|
25
28
|
}
|
|
@@ -14,6 +14,7 @@ const class_transformer_1 = require("class-transformer");
|
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const ProductTierEnum_1 = require("../../enums/ProductTierEnum");
|
|
16
16
|
const SaleTypeEnum_1 = require("../../enums/SaleTypeEnum");
|
|
17
|
+
const PrepaymentMinimum_1 = require("../PrepaymentMinimum");
|
|
17
18
|
/**
|
|
18
19
|
* Body de PUT /credit-plans/:planId — edición parcial de parámetros del plan (todos opcionales).
|
|
19
20
|
* En F1 el PUT puede editar `min/maxSciScore` por-plan (DEC-004); el guard atómico anti-huecos
|
|
@@ -132,3 +133,10 @@ __decorate([
|
|
|
132
133
|
(0, class_validator_1.IsString)(),
|
|
133
134
|
__metadata("design:type", String)
|
|
134
135
|
], UpdateCreditPlanRequest.prototype, "validUntil", void 0);
|
|
136
|
+
__decorate([
|
|
137
|
+
(0, class_transformer_1.Expose)(),
|
|
138
|
+
(0, class_validator_1.IsOptional)(),
|
|
139
|
+
(0, class_validator_1.ValidateNested)(),
|
|
140
|
+
(0, class_transformer_1.Type)(() => PrepaymentMinimum_1.PrepaymentMinimum),
|
|
141
|
+
__metadata("design:type", PrepaymentMinimum_1.PrepaymentMinimum)
|
|
142
|
+
], UpdateCreditPlanRequest.prototype, "prepaymentMinimum", void 0);
|
|
@@ -2,6 +2,7 @@ import { CreditPlanLevelEnum } from '../../enums/CreditPlanLevelEnum';
|
|
|
2
2
|
import { CreditPlanStatusEnum } from '../../enums/CreditPlanStatusEnum';
|
|
3
3
|
import { ProductTierEnum } from '../../enums/ProductTierEnum';
|
|
4
4
|
import { SaleTypeEnum } from '../../enums/SaleTypeEnum';
|
|
5
|
+
import { PrepaymentMinimum } from '../PrepaymentMinimum';
|
|
5
6
|
/**
|
|
6
7
|
* Shape de salida de un plan de crédito (GET / POST / PUT de /credit-plans).
|
|
7
8
|
* Montos en cents; porcentajes y TNA en decimal.
|
|
@@ -32,4 +33,6 @@ export interface CreditPlanResponse {
|
|
|
32
33
|
updatedBy: string;
|
|
33
34
|
createdAt: string;
|
|
34
35
|
updatedAt: string;
|
|
36
|
+
/** Mínimo del abono a capital; ausente = `ANY` (cualquier monto). */
|
|
37
|
+
prepaymentMinimum?: PrepaymentMinimum;
|
|
35
38
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Cómo se fija el mínimo del abono a capital de un plan. */
|
|
2
|
+
export declare enum PrepaymentMinimumModeEnum {
|
|
3
|
+
/** Sin mínimo: el cliente abona el monto que quiera. */
|
|
4
|
+
ANY = "ANY",
|
|
5
|
+
/** Un porcentaje del pago del periodo (`periodPaymentPct`). */
|
|
6
|
+
PERCENT_OF_PERIOD_PAYMENT = "PERCENT_OF_PERIOD_PAYMENT",
|
|
7
|
+
/** Un monto fijo (`amountCents`). */
|
|
8
|
+
FIXED = "FIXED"
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrepaymentMinimumModeEnum = void 0;
|
|
4
|
+
/** Cómo se fija el mínimo del abono a capital de un plan. */
|
|
5
|
+
var PrepaymentMinimumModeEnum;
|
|
6
|
+
(function (PrepaymentMinimumModeEnum) {
|
|
7
|
+
/** Sin mínimo: el cliente abona el monto que quiera. */
|
|
8
|
+
PrepaymentMinimumModeEnum["ANY"] = "ANY";
|
|
9
|
+
/** Un porcentaje del pago del periodo (`periodPaymentPct`). */
|
|
10
|
+
PrepaymentMinimumModeEnum["PERCENT_OF_PERIOD_PAYMENT"] = "PERCENT_OF_PERIOD_PAYMENT";
|
|
11
|
+
/** Un monto fijo (`amountCents`). */
|
|
12
|
+
PrepaymentMinimumModeEnum["FIXED"] = "FIXED";
|
|
13
|
+
})(PrepaymentMinimumModeEnum || (exports.PrepaymentMinimumModeEnum = PrepaymentMinimumModeEnum = {}));
|
|
@@ -15,7 +15,9 @@ export * from './enums/StorePolicyPhaseEnum';
|
|
|
15
15
|
export * from './enums/SegmentStatusEnum';
|
|
16
16
|
export * from './enums/SegmentColorSlotEnum';
|
|
17
17
|
export * from './enums/SegmentFilterIdEnum';
|
|
18
|
+
export * from './enums/PrepaymentMinimumModeEnum';
|
|
18
19
|
export * from './dtos/CreditPlan';
|
|
20
|
+
export * from './dtos/PrepaymentMinimum';
|
|
19
21
|
export * from './dtos/Financier';
|
|
20
22
|
export * from './dtos/RetailerCreditPlan';
|
|
21
23
|
export * from './dtos/PromotionEffect';
|
|
@@ -32,8 +32,10 @@ __exportStar(require("./enums/StorePolicyPhaseEnum"), exports);
|
|
|
32
32
|
__exportStar(require("./enums/SegmentStatusEnum"), exports);
|
|
33
33
|
__exportStar(require("./enums/SegmentColorSlotEnum"), exports);
|
|
34
34
|
__exportStar(require("./enums/SegmentFilterIdEnum"), exports);
|
|
35
|
+
__exportStar(require("./enums/PrepaymentMinimumModeEnum"), exports);
|
|
35
36
|
// Entity DTOs
|
|
36
37
|
__exportStar(require("./dtos/CreditPlan"), exports);
|
|
38
|
+
__exportStar(require("./dtos/PrepaymentMinimum"), exports);
|
|
37
39
|
__exportStar(require("./dtos/Financier"), exports);
|
|
38
40
|
__exportStar(require("./dtos/RetailerCreditPlan"), exports);
|
|
39
41
|
__exportStar(require("./dtos/PromotionEffect"), exports);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LoanAuditEntityTypeEnum } from '../enums/LoanAuditEntityTypeEnum';
|
|
2
|
+
import { RetailAuditEntityTypeEnum } from '../enums/RetailAuditEntityTypeEnum';
|
|
3
|
+
/** Cualquier `entityType` que acepta el central, de Loan o de Retail. */
|
|
4
|
+
export type AuditTrailEntityType = LoanAuditEntityTypeEnum | RetailAuditEntityTypeEnum;
|
|
5
|
+
export declare const AUDIT_TRAIL_ENTITY_TYPES: readonly AuditTrailEntityType[];
|
|
6
|
+
export declare const AUDIT_TRAIL_MAX_PAGE_SIZE = 100;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AUDIT_TRAIL_MAX_PAGE_SIZE = exports.AUDIT_TRAIL_ENTITY_TYPES = void 0;
|
|
4
|
+
const LoanAuditEntityTypeEnum_1 = require("../enums/LoanAuditEntityTypeEnum");
|
|
5
|
+
const RetailAuditEntityTypeEnum_1 = require("../enums/RetailAuditEntityTypeEnum");
|
|
6
|
+
exports.AUDIT_TRAIL_ENTITY_TYPES = [
|
|
7
|
+
...Object.values(LoanAuditEntityTypeEnum_1.LoanAuditEntityTypeEnum),
|
|
8
|
+
...Object.values(RetailAuditEntityTypeEnum_1.RetailAuditEntityTypeEnum),
|
|
9
|
+
];
|
|
10
|
+
exports.AUDIT_TRAIL_MAX_PAGE_SIZE = 100;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AuditTrailChange = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/** Un campo que cambió; los valores van serializados a string y nunca llevan PII. */
|
|
16
|
+
class AuditTrailChange {
|
|
17
|
+
}
|
|
18
|
+
exports.AuditTrailChange = AuditTrailChange;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_transformer_1.Expose)(),
|
|
21
|
+
(0, class_validator_1.IsString)(),
|
|
22
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], AuditTrailChange.prototype, "field", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_transformer_1.Expose)(),
|
|
27
|
+
(0, class_validator_1.IsOptional)(),
|
|
28
|
+
(0, class_validator_1.IsString)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], AuditTrailChange.prototype, "oldValue", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_transformer_1.Expose)(),
|
|
33
|
+
(0, class_validator_1.IsOptional)(),
|
|
34
|
+
(0, class_validator_1.IsString)(),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], AuditTrailChange.prototype, "newValue", void 0);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AuditTrailContextEntry = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/** Dato que la acción no cambió y se guarda para leer la entrada sin abrir otra pantalla. */
|
|
16
|
+
class AuditTrailContextEntry {
|
|
17
|
+
}
|
|
18
|
+
exports.AuditTrailContextEntry = AuditTrailContextEntry;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_transformer_1.Expose)(),
|
|
21
|
+
(0, class_validator_1.IsString)(),
|
|
22
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], AuditTrailContextEntry.prototype, "key", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_transformer_1.Expose)(),
|
|
27
|
+
(0, class_validator_1.IsString)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], AuditTrailContextEntry.prototype, "value", void 0);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PiiAccessActionEnum } from '../../enums/PiiAccessActionEnum';
|
|
2
|
+
import { PiiResourceTypeEnum } from '../../enums/PiiResourceTypeEnum';
|
|
3
|
+
/** Body de `POST /private/pii-access-logs` (privateCreatePiiAccessLog); el tenant va en `?tenantId=`. */
|
|
4
|
+
export declare class CreatePiiAccessLogRequest {
|
|
5
|
+
/** ULID generado por quien llama; con `occurredAt` forma el sk, así un reintento no duplica. */
|
|
6
|
+
accessId: string;
|
|
7
|
+
occurredAt: string;
|
|
8
|
+
correlationId: string;
|
|
9
|
+
actorId: string;
|
|
10
|
+
sourceLambda: string;
|
|
11
|
+
operationName: string;
|
|
12
|
+
action: PiiAccessActionEnum;
|
|
13
|
+
resourceType: PiiResourceTypeEnum;
|
|
14
|
+
/** Id del recurso, o `(list)` en un listado con los ids en `resourceIds`. */
|
|
15
|
+
resourceId: string;
|
|
16
|
+
/** Nombres de los campos PII que viajaron; nunca sus valores. */
|
|
17
|
+
fields: string[];
|
|
18
|
+
resourceIds?: string[];
|
|
19
|
+
}
|