@fiado/type-kit 3.190.0 → 3.191.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/retailOrg/dtos/validation/validationDtos.test.ts +27 -0
- package/bin/retailOrg/dtos/validation/CollectorValidationDto.d.ts +21 -0
- package/bin/retailOrg/dtos/validation/CollectorValidationDto.js +2 -0
- package/bin/retailOrg/index.d.ts +1 -0
- package/bin/retailOrg/index.js +1 -0
- package/package.json +1 -1
- package/src/retailOrg/dtos/validation/CollectorValidationDto.ts +22 -0
- package/src/retailOrg/index.ts +1 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { RetailerValidationDto } from '../../../../../src/retailOrg/dtos/validation/RetailerValidationDto';
|
|
2
2
|
import { StoreValidationDto } from '../../../../../src/retailOrg/dtos/validation/StoreValidationDto';
|
|
3
3
|
import { RetailUserValidationDto } from '../../../../../src/retailOrg/dtos/validation/RetailUserValidationDto';
|
|
4
|
+
import { CollectorValidationDto } from '../../../../../src/retailOrg/dtos/validation/CollectorValidationDto';
|
|
4
5
|
import { RetailerTypeEnum } from '../../../../../src/retailOrg/enums/RetailerTypeEnum';
|
|
5
6
|
import { RetailerStatusEnum } from '../../../../../src/retailOrg/enums/RetailerStatusEnum';
|
|
6
7
|
import { StoreStatusEnum } from '../../../../../src/retailOrg/enums/StoreStatusEnum';
|
|
7
8
|
import { EmploymentTypeEnum } from '../../../../../src/retailOrg/enums/EmploymentTypeEnum';
|
|
8
9
|
import { RetailUserStatusEnum } from '../../../../../src/retailOrg/enums/RetailUserStatusEnum';
|
|
10
|
+
import { CollectorSeniorityEnum } from '../../../../../src/retailOrg/enums/CollectorSeniorityEnum';
|
|
9
11
|
|
|
10
12
|
describe('ValidationDtos (shapes mínimos de endpoints privados)', () => {
|
|
11
13
|
it('RetailerValidationDto acepta el shape mínimo', () => {
|
|
@@ -46,4 +48,29 @@ describe('ValidationDtos (shapes mínimos de endpoints privados)', () => {
|
|
|
46
48
|
expect(dto.employmentType).toBe(EmploymentTypeEnum.EMPLOYEE);
|
|
47
49
|
expect(dto.commissionTier).toBe('TIER_A');
|
|
48
50
|
});
|
|
51
|
+
|
|
52
|
+
it('CollectorValidationDto acepta el shape con seniority (coverageStoreIds requerido)', () => {
|
|
53
|
+
const dto: CollectorValidationDto = {
|
|
54
|
+
retailUserId: 'ru_001',
|
|
55
|
+
coverageStoreIds: ['store_001', 'store_002'],
|
|
56
|
+
collectorSeniority: CollectorSeniorityEnum.SENIOR,
|
|
57
|
+
status: RetailUserStatusEnum.ACTIVE,
|
|
58
|
+
commissionTier: 'TIER_A',
|
|
59
|
+
};
|
|
60
|
+
expect(dto.coverageStoreIds).toHaveLength(2);
|
|
61
|
+
expect(dto.collectorSeniority).toBe(CollectorSeniorityEnum.SENIOR);
|
|
62
|
+
expect(dto.status).toBe(RetailUserStatusEnum.ACTIVE);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('CollectorValidationDto acepta un cobrador SIN seniority (collectorSeniority opcional)', () => {
|
|
66
|
+
const dto: CollectorValidationDto = {
|
|
67
|
+
retailUserId: 'ru_002',
|
|
68
|
+
coverageStoreIds: [],
|
|
69
|
+
status: RetailUserStatusEnum.ACTIVE,
|
|
70
|
+
commissionTier: 'collector',
|
|
71
|
+
};
|
|
72
|
+
expect(dto.collectorSeniority).toBeUndefined();
|
|
73
|
+
expect(dto.coverageStoreIds).toHaveLength(0);
|
|
74
|
+
expect(dto.commissionTier).toBe('collector');
|
|
75
|
+
});
|
|
49
76
|
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CollectorSeniorityEnum } from '../../enums/CollectorSeniorityEnum';
|
|
2
|
+
import type { RetailUserStatusEnum } from '../../enums/RetailUserStatusEnum';
|
|
3
|
+
/**
|
|
4
|
+
* Shape mínimo de un cobrador retail que devuelve el endpoint privado de validación de cobradores
|
|
5
|
+
* (consumido por loan-collector-assignment-business vía @fiado/api-invoker) para alimentar el
|
|
6
|
+
* algoritmo de asignación de cartera.
|
|
7
|
+
*
|
|
8
|
+
* `coverageStoreIds` va requerido (siempre presente; si el cobrador aún no cubre tiendas, `[]`).
|
|
9
|
+
*
|
|
10
|
+
* `collectorSeniority` es OPCIONAL: el modelo de datos no obliga a que un usuario con
|
|
11
|
+
* `commissionTier === 'collector'` tenga seniority poblado, así que un cobrador sin seniority es
|
|
12
|
+
* válido. Las estrategias de asignación BY_STORE / BY_LOAD / ROUND_ROBIN no lo necesitan; solo
|
|
13
|
+
* BY_SENIORITY lo usa para rankear (y ahí un cobrador sin seniority simplemente no rankea).
|
|
14
|
+
*/
|
|
15
|
+
export interface CollectorValidationDto {
|
|
16
|
+
retailUserId: string;
|
|
17
|
+
coverageStoreIds: string[];
|
|
18
|
+
collectorSeniority?: CollectorSeniorityEnum;
|
|
19
|
+
status: RetailUserStatusEnum;
|
|
20
|
+
commissionTier: string;
|
|
21
|
+
}
|
package/bin/retailOrg/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from './dtos/RetailUser';
|
|
|
13
13
|
export * from './dtos/validation/RetailerValidationDto';
|
|
14
14
|
export * from './dtos/validation/StoreValidationDto';
|
|
15
15
|
export * from './dtos/validation/RetailUserValidationDto';
|
|
16
|
+
export * from './dtos/validation/CollectorValidationDto';
|
|
16
17
|
export * from './dtos/PaginatedResult';
|
|
17
18
|
export * from './dtos/requests/RetailAddressInput';
|
|
18
19
|
export * from './dtos/requests/CreateRetailerRequest';
|
package/bin/retailOrg/index.js
CHANGED
|
@@ -31,6 +31,7 @@ __exportStar(require("./dtos/RetailUser"), exports);
|
|
|
31
31
|
__exportStar(require("./dtos/validation/RetailerValidationDto"), exports);
|
|
32
32
|
__exportStar(require("./dtos/validation/StoreValidationDto"), exports);
|
|
33
33
|
__exportStar(require("./dtos/validation/RetailUserValidationDto"), exports);
|
|
34
|
+
__exportStar(require("./dtos/validation/CollectorValidationDto"), exports);
|
|
34
35
|
// Paginación genérica
|
|
35
36
|
__exportStar(require("./dtos/PaginatedResult"), exports);
|
|
36
37
|
// Request DTOs (input validado por endpoint)
|
package/package.json
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CollectorSeniorityEnum } from '../../enums/CollectorSeniorityEnum';
|
|
2
|
+
import type { RetailUserStatusEnum } from '../../enums/RetailUserStatusEnum';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Shape mínimo de un cobrador retail que devuelve el endpoint privado de validación de cobradores
|
|
6
|
+
* (consumido por loan-collector-assignment-business vía @fiado/api-invoker) para alimentar el
|
|
7
|
+
* algoritmo de asignación de cartera.
|
|
8
|
+
*
|
|
9
|
+
* `coverageStoreIds` va requerido (siempre presente; si el cobrador aún no cubre tiendas, `[]`).
|
|
10
|
+
*
|
|
11
|
+
* `collectorSeniority` es OPCIONAL: el modelo de datos no obliga a que un usuario con
|
|
12
|
+
* `commissionTier === 'collector'` tenga seniority poblado, así que un cobrador sin seniority es
|
|
13
|
+
* válido. Las estrategias de asignación BY_STORE / BY_LOAD / ROUND_ROBIN no lo necesitan; solo
|
|
14
|
+
* BY_SENIORITY lo usa para rankear (y ahí un cobrador sin seniority simplemente no rankea).
|
|
15
|
+
*/
|
|
16
|
+
export interface CollectorValidationDto {
|
|
17
|
+
retailUserId: string;
|
|
18
|
+
coverageStoreIds: string[];
|
|
19
|
+
collectorSeniority?: CollectorSeniorityEnum;
|
|
20
|
+
status: RetailUserStatusEnum;
|
|
21
|
+
commissionTier: string;
|
|
22
|
+
}
|
package/src/retailOrg/index.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from './dtos/RetailUser';
|
|
|
17
17
|
export * from './dtos/validation/RetailerValidationDto';
|
|
18
18
|
export * from './dtos/validation/StoreValidationDto';
|
|
19
19
|
export * from './dtos/validation/RetailUserValidationDto';
|
|
20
|
+
export * from './dtos/validation/CollectorValidationDto';
|
|
20
21
|
|
|
21
22
|
// Paginación genérica
|
|
22
23
|
export * from './dtos/PaginatedResult';
|