gm-mcp 1.0.7
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/README.md +60 -0
- package/dist/env.d.ts +36 -0
- package/dist/env.js +49 -0
- package/dist/helpers/currency.d.ts +1 -0
- package/dist/helpers/currency.js +43 -0
- package/dist/helpers/extract-date.d.ts +5 -0
- package/dist/helpers/extract-date.js +13 -0
- package/dist/helpers/extract-month.d.ts +4 -0
- package/dist/helpers/extract-month.js +17 -0
- package/dist/helpers/index.d.ts +3 -0
- package/dist/helpers/index.js +19 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +83 -0
- package/dist/services/gimo.service.d.ts +3 -0
- package/dist/services/gimo.service.js +48 -0
- package/dist/services/lark.service.d.ts +109 -0
- package/dist/services/lark.service.js +162 -0
- package/dist/services/lending.service.d.ts +19 -0
- package/dist/services/lending.service.js +96 -0
- package/dist/services/types/gimo.type.d.ts +177 -0
- package/dist/services/types/gimo.type.js +2 -0
- package/dist/services/types/index.d.ts +2 -0
- package/dist/services/types/index.js +18 -0
- package/dist/services/types/lending.type.d.ts +168 -0
- package/dist/services/types/lending.type.js +21 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +39 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +17 -0
- package/dist/tools/statistic-x3.d.ts +26 -0
- package/dist/tools/statistic-x3.js +337 -0
- package/package.json +35 -0
- package/src/env.ts +45 -0
- package/src/helpers/currency.ts +8 -0
- package/src/helpers/extract-date.ts +10 -0
- package/src/helpers/extract-month.ts +14 -0
- package/src/helpers/index.ts +3 -0
- package/src/index.ts +104 -0
- package/src/services/gimo.service.ts +31 -0
- package/src/services/lark.service.ts +122 -0
- package/src/services/lending.service.ts +107 -0
- package/src/services/types/gimo.type.ts +184 -0
- package/src/services/types/index.ts +2 -0
- package/src/services/types/lending.type.ts +181 -0
- package/src/test.ts +38 -0
- package/src/tools/index.ts +1 -0
- package/src/tools/statistic-x3.ts +378 -0
- package/tsconfig.json +115 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GimoLending } from "./types";
|
|
2
|
+
export declare function listApplication(p: GimoLending.FilterApplication): Promise<{
|
|
3
|
+
content: GimoLending.Application[];
|
|
4
|
+
size: number;
|
|
5
|
+
total_elements: number;
|
|
6
|
+
total_pages: number;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function statisticLoan(p: GimoLending.FilterLoan): Promise<GimoLending.LoanStatistic>;
|
|
9
|
+
export declare function statisticX3(p: GimoLending.FilterApplication): Promise<{
|
|
10
|
+
total: number;
|
|
11
|
+
total_appraisal: number;
|
|
12
|
+
total_approval: number;
|
|
13
|
+
total_confrimed: number;
|
|
14
|
+
total_rejected: number;
|
|
15
|
+
total_signed: number;
|
|
16
|
+
total_closed: number;
|
|
17
|
+
total_dibursed: number;
|
|
18
|
+
loan_statistic: GimoLending.LoanStatistic;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.listApplication = listApplication;
|
|
16
|
+
exports.statisticLoan = statisticLoan;
|
|
17
|
+
exports.statisticX3 = statisticX3;
|
|
18
|
+
const axios_1 = __importDefault(require("axios"));
|
|
19
|
+
const env_1 = require("../env");
|
|
20
|
+
const types_1 = require("./types");
|
|
21
|
+
function getAccessToken() {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
const url = `${(0, env_1.getEnv)().DASH_URL}/api/v1/auth/admin/login`;
|
|
24
|
+
return axios_1.default
|
|
25
|
+
.post(url, {
|
|
26
|
+
password: (0, env_1.getEnv)().PASSWORD,
|
|
27
|
+
username: (0, env_1.getEnv)().USER_NAME,
|
|
28
|
+
})
|
|
29
|
+
.then((res) => res.data.access_token);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function listApplication(p) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const url = `${(0, env_1.getEnv)().LENDING_URL}/api/v1/admin/lending/application/pagination`;
|
|
35
|
+
const access_token = yield getAccessToken();
|
|
36
|
+
return axios_1.default
|
|
37
|
+
.get(url, {
|
|
38
|
+
headers: {
|
|
39
|
+
Authorization: "Bearer " + access_token,
|
|
40
|
+
},
|
|
41
|
+
params: Object.assign(Object.assign({}, p), { sort: "created_at,DESC" }),
|
|
42
|
+
})
|
|
43
|
+
.then((res) => res.data.result);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function statisticLoan(p) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const url = `${(0, env_1.getEnv)().LENDING_URL}/api/v1/admin/lending/instance/pagination`;
|
|
49
|
+
const access_token = yield getAccessToken();
|
|
50
|
+
return axios_1.default
|
|
51
|
+
.get(url, {
|
|
52
|
+
headers: {
|
|
53
|
+
Authorization: "Bearer " + access_token,
|
|
54
|
+
},
|
|
55
|
+
params: Object.assign(Object.assign({}, p), { sort: "created_at,DESC" }),
|
|
56
|
+
})
|
|
57
|
+
.then((res) => res.data.result.loan_instance_list_statistics);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function statisticX3(p) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
const { created_from, created_to } = p;
|
|
63
|
+
try {
|
|
64
|
+
const { content: applications, total_elements } = yield listApplication({
|
|
65
|
+
created_to,
|
|
66
|
+
created_from,
|
|
67
|
+
size: 1000000,
|
|
68
|
+
});
|
|
69
|
+
const loan_statistic = yield statisticLoan({
|
|
70
|
+
disbursementTimeFrom: created_from,
|
|
71
|
+
disbursementTimeTo: created_to,
|
|
72
|
+
});
|
|
73
|
+
const total_appraisal = applications.filter((item) => item.status === types_1.GimoLending.LendingApplicationStatus.APPRAISAL).length;
|
|
74
|
+
const total_approval = applications.filter((item) => item.status === types_1.GimoLending.LendingApplicationStatus.APPROVAL).length;
|
|
75
|
+
const total_confrimed = applications.filter((item) => item.status === types_1.GimoLending.LendingApplicationStatus.CONFIRMED).length;
|
|
76
|
+
const total_rejected = applications.filter((item) => item.status === types_1.GimoLending.LendingApplicationStatus.REJECTED).length;
|
|
77
|
+
const total_signed = applications.filter((item) => item.status === types_1.GimoLending.LendingApplicationStatus.SIGNED).length;
|
|
78
|
+
const total_closed = applications.filter((item) => item.status === types_1.GimoLending.LendingApplicationStatus.CLOSED).length;
|
|
79
|
+
const total_dibursed = applications.filter((item) => item.disbursement_status === types_1.GimoLending.LoanDisbursementStatus.DISBURSED).length;
|
|
80
|
+
return {
|
|
81
|
+
total: total_elements,
|
|
82
|
+
total_appraisal,
|
|
83
|
+
total_approval,
|
|
84
|
+
total_confrimed,
|
|
85
|
+
total_rejected,
|
|
86
|
+
total_signed,
|
|
87
|
+
total_closed,
|
|
88
|
+
total_dibursed,
|
|
89
|
+
loan_statistic,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
export declare namespace Gimo {
|
|
2
|
+
interface LoginRes {
|
|
3
|
+
user_id: number;
|
|
4
|
+
access_token: string;
|
|
5
|
+
access_token_expires_at: number;
|
|
6
|
+
token_type: string;
|
|
7
|
+
change_password_token: string;
|
|
8
|
+
require_change_password: string;
|
|
9
|
+
}
|
|
10
|
+
interface CustomerEWA {
|
|
11
|
+
customer_id: number;
|
|
12
|
+
customer_full_name: string;
|
|
13
|
+
customer_code?: string;
|
|
14
|
+
identify_number?: string;
|
|
15
|
+
employee_id?: number;
|
|
16
|
+
employee_code?: string;
|
|
17
|
+
partner_id?: number;
|
|
18
|
+
partner_name?: string;
|
|
19
|
+
debt_collection_type?: string;
|
|
20
|
+
onboard_method?: string;
|
|
21
|
+
verification_status?: string;
|
|
22
|
+
working_status: string;
|
|
23
|
+
dda_status?: string;
|
|
24
|
+
ewa_longest_over_due_day: string;
|
|
25
|
+
ewa_debt_amount?: number;
|
|
26
|
+
ewa_status?: string;
|
|
27
|
+
customer_phone_number: string;
|
|
28
|
+
created_at: string;
|
|
29
|
+
updated_at: string;
|
|
30
|
+
bank_full_name?: string;
|
|
31
|
+
bank_id?: number;
|
|
32
|
+
bank_name?: string;
|
|
33
|
+
bank_acc_number?: string;
|
|
34
|
+
customer_service_id?: number;
|
|
35
|
+
}
|
|
36
|
+
interface Customer {
|
|
37
|
+
id: number;
|
|
38
|
+
ewa_customer_id?: number;
|
|
39
|
+
customer_code?: string;
|
|
40
|
+
avatar?: string;
|
|
41
|
+
phone_number?: string;
|
|
42
|
+
full_name?: string;
|
|
43
|
+
dda_code?: string;
|
|
44
|
+
active?: boolean;
|
|
45
|
+
created_at?: string;
|
|
46
|
+
created_by?: string;
|
|
47
|
+
verified_at?: string;
|
|
48
|
+
is_verified?: boolean;
|
|
49
|
+
customer_ewa_id?: number;
|
|
50
|
+
link_employees?: LinkedEmployee[];
|
|
51
|
+
}
|
|
52
|
+
interface EmployeeV1 {
|
|
53
|
+
id: number;
|
|
54
|
+
active: boolean;
|
|
55
|
+
suspend: boolean;
|
|
56
|
+
gender: string;
|
|
57
|
+
birth_date: Date;
|
|
58
|
+
status: string;
|
|
59
|
+
code: string;
|
|
60
|
+
partner_id: number;
|
|
61
|
+
organization_id: number;
|
|
62
|
+
organization_name: number;
|
|
63
|
+
partner_name: string;
|
|
64
|
+
mobile_phone: string;
|
|
65
|
+
first_name: string;
|
|
66
|
+
middle_name: string;
|
|
67
|
+
last_name: string;
|
|
68
|
+
id_number: string;
|
|
69
|
+
bank_id: number;
|
|
70
|
+
bank_name: string;
|
|
71
|
+
bank_first_name: string;
|
|
72
|
+
bank_middle_name: string;
|
|
73
|
+
bank_last_name: string;
|
|
74
|
+
bank_full_name: string;
|
|
75
|
+
bank_acc_number: string;
|
|
76
|
+
start_date: string;
|
|
77
|
+
id_issued_date: Date;
|
|
78
|
+
id_issued_by: string;
|
|
79
|
+
number_of_dependents: number;
|
|
80
|
+
married_status: boolean;
|
|
81
|
+
mail_address: string;
|
|
82
|
+
address: string;
|
|
83
|
+
position: string;
|
|
84
|
+
wage: number;
|
|
85
|
+
full_name: string;
|
|
86
|
+
customer_code: string;
|
|
87
|
+
customer_id: number;
|
|
88
|
+
rules: any[];
|
|
89
|
+
total_contract_disbursed: number;
|
|
90
|
+
verified: boolean;
|
|
91
|
+
total_disbursed_contract_in_pay_period: number;
|
|
92
|
+
disbursed_contract_in_month: boolean;
|
|
93
|
+
bank_acc_verified: boolean;
|
|
94
|
+
updated_at: Date;
|
|
95
|
+
created_at: Date;
|
|
96
|
+
remaining_amount: number;
|
|
97
|
+
employee_timekeepers: any[];
|
|
98
|
+
has_income_from_attendance: boolean;
|
|
99
|
+
dda_code?: string;
|
|
100
|
+
dda_status?: string;
|
|
101
|
+
reason?: string;
|
|
102
|
+
seniority?: number;
|
|
103
|
+
partner?: any;
|
|
104
|
+
cancel_dda_count?: number;
|
|
105
|
+
}
|
|
106
|
+
interface EmployeeInfo {
|
|
107
|
+
employee_id: number;
|
|
108
|
+
employee_code?: string;
|
|
109
|
+
verified?: boolean;
|
|
110
|
+
employee?: EmployeeV1 & {
|
|
111
|
+
onboard_id?: number;
|
|
112
|
+
};
|
|
113
|
+
link_employees?: LinkedEmployee[];
|
|
114
|
+
partner_id?: number;
|
|
115
|
+
partner?: any;
|
|
116
|
+
}
|
|
117
|
+
interface LinkedEmployee {
|
|
118
|
+
employee_id: number;
|
|
119
|
+
employee_code: string;
|
|
120
|
+
partner_id: number;
|
|
121
|
+
partner_name: string;
|
|
122
|
+
partner_onboard_method?: string;
|
|
123
|
+
verification_status: boolean;
|
|
124
|
+
work_status: boolean;
|
|
125
|
+
verification_time?: string;
|
|
126
|
+
debt_collection?: string;
|
|
127
|
+
onboard_id?: number;
|
|
128
|
+
allow_access?: boolean;
|
|
129
|
+
status?: string;
|
|
130
|
+
reason?: string;
|
|
131
|
+
seniority?: number;
|
|
132
|
+
}
|
|
133
|
+
interface Contract {
|
|
134
|
+
[key: string]: any;
|
|
135
|
+
}
|
|
136
|
+
interface PaymentTxn {
|
|
137
|
+
code?: string;
|
|
138
|
+
ref_transaction_id?: number;
|
|
139
|
+
ref_transaction_code?: string;
|
|
140
|
+
bank_integration_name?: string;
|
|
141
|
+
transfer_type?: string;
|
|
142
|
+
ref_customer_id?: number;
|
|
143
|
+
customer_code?: string;
|
|
144
|
+
customer_name?: string;
|
|
145
|
+
customer_phone?: string;
|
|
146
|
+
bank_account_number?: string;
|
|
147
|
+
bank_account_name?: string;
|
|
148
|
+
bank_name?: string;
|
|
149
|
+
amount?: number;
|
|
150
|
+
ref_product_id?: number;
|
|
151
|
+
ref_product_name?: string;
|
|
152
|
+
response_time: string;
|
|
153
|
+
trace_key?: string;
|
|
154
|
+
status?: string;
|
|
155
|
+
service_source?: string;
|
|
156
|
+
request_time?: string;
|
|
157
|
+
updated_at?: string;
|
|
158
|
+
debit_resource_number?: string;
|
|
159
|
+
display_error_message?: string;
|
|
160
|
+
suggestion_message?: string;
|
|
161
|
+
request_logs?: any[];
|
|
162
|
+
partner_id?: number;
|
|
163
|
+
[key: string]: any;
|
|
164
|
+
}
|
|
165
|
+
interface ContractWithTxn extends Contract {
|
|
166
|
+
transactions: PaymentTxn[];
|
|
167
|
+
}
|
|
168
|
+
interface AccountingCustomer {
|
|
169
|
+
customer_fee_amount: number;
|
|
170
|
+
outstanding_balance: number;
|
|
171
|
+
partner_fee_amount: number;
|
|
172
|
+
total_actual_amount: number;
|
|
173
|
+
total_contract_number: number;
|
|
174
|
+
total_fee_amount: number;
|
|
175
|
+
total_request_amount: number;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./gimo.type"), exports);
|
|
18
|
+
__exportStar(require("./lending.type"), exports);
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
export declare namespace GimoLending {
|
|
2
|
+
interface Application {
|
|
3
|
+
id: string;
|
|
4
|
+
fund_provider_code: string;
|
|
5
|
+
product_scheme_name: any;
|
|
6
|
+
status: string;
|
|
7
|
+
bank_id: number;
|
|
8
|
+
bank_account_number: string;
|
|
9
|
+
bank_code: string;
|
|
10
|
+
bank_account_name: string;
|
|
11
|
+
loan_request: LoanRequest;
|
|
12
|
+
loan_offer?: LoanOffer;
|
|
13
|
+
loan_instance: any;
|
|
14
|
+
customer_info?: CustomerInfo;
|
|
15
|
+
underwriting_decision_result: UnderwritingDecisionResult;
|
|
16
|
+
suspend_registration_reason?: string;
|
|
17
|
+
suspend_registration_until?: string;
|
|
18
|
+
disbursement_time?: string;
|
|
19
|
+
disbursement_status?: string;
|
|
20
|
+
contract_error_code?: string;
|
|
21
|
+
reject_message?: string;
|
|
22
|
+
contract_status?: string;
|
|
23
|
+
created_at: string;
|
|
24
|
+
updated_at: string;
|
|
25
|
+
created_by: string;
|
|
26
|
+
updated_by: string;
|
|
27
|
+
}
|
|
28
|
+
interface FilterApplication {
|
|
29
|
+
created_from?: string;
|
|
30
|
+
created_to?: string;
|
|
31
|
+
page?: number;
|
|
32
|
+
size?: number;
|
|
33
|
+
sort?: string;
|
|
34
|
+
[key: string]: any;
|
|
35
|
+
}
|
|
36
|
+
interface FilterLoan {
|
|
37
|
+
disbursementTimeFrom?: string;
|
|
38
|
+
disbursementTimeTo?: string;
|
|
39
|
+
page?: number;
|
|
40
|
+
size?: number;
|
|
41
|
+
sort?: string;
|
|
42
|
+
[key: string]: any;
|
|
43
|
+
}
|
|
44
|
+
interface LoanStatistic {
|
|
45
|
+
total_disbursement_amount: number;
|
|
46
|
+
total_interest_amount: number;
|
|
47
|
+
total_payment_amount: number;
|
|
48
|
+
}
|
|
49
|
+
interface LoanOffer {
|
|
50
|
+
id: string;
|
|
51
|
+
loan_offer_amount?: number | null;
|
|
52
|
+
interest_rate: number;
|
|
53
|
+
repayment_amount_per_repayment: number;
|
|
54
|
+
repayment_frequency_type: string;
|
|
55
|
+
repayment_every: number;
|
|
56
|
+
number_of_repayments: number;
|
|
57
|
+
offer_at: string;
|
|
58
|
+
offer_expire_at: string;
|
|
59
|
+
created_by: string;
|
|
60
|
+
created_at: string;
|
|
61
|
+
updated_by: string;
|
|
62
|
+
updated_at: string;
|
|
63
|
+
offer_emi?: number;
|
|
64
|
+
}
|
|
65
|
+
interface LoanRequest {
|
|
66
|
+
id: string;
|
|
67
|
+
submit_form_id: number;
|
|
68
|
+
loan_request_amount?: number | null;
|
|
69
|
+
interest_rate: number;
|
|
70
|
+
repayment_amount_per_repayment: number;
|
|
71
|
+
repayment_frequency_type: string;
|
|
72
|
+
repayment_every: number;
|
|
73
|
+
number_of_repayments: number;
|
|
74
|
+
created_by: string;
|
|
75
|
+
created_at: string;
|
|
76
|
+
updated_by: string;
|
|
77
|
+
updated_at: string;
|
|
78
|
+
request_emi?: number;
|
|
79
|
+
}
|
|
80
|
+
interface CustomerInfo {
|
|
81
|
+
customer_service_id: number;
|
|
82
|
+
customer_code: string;
|
|
83
|
+
customer_ewa_id: number;
|
|
84
|
+
phone_number: string;
|
|
85
|
+
full_name: string;
|
|
86
|
+
occupation: string;
|
|
87
|
+
partner_id: number;
|
|
88
|
+
partner_name: string;
|
|
89
|
+
position: any;
|
|
90
|
+
average_income: number;
|
|
91
|
+
sector_income: number;
|
|
92
|
+
address: string;
|
|
93
|
+
province_code: string;
|
|
94
|
+
province_name: string;
|
|
95
|
+
ward_code: string;
|
|
96
|
+
ward_name: string;
|
|
97
|
+
district_code: string;
|
|
98
|
+
district_name: string;
|
|
99
|
+
marital_status: string;
|
|
100
|
+
ekyc_request_id: number;
|
|
101
|
+
id_front_image: string;
|
|
102
|
+
id_back_image: string;
|
|
103
|
+
id_issue_date: string;
|
|
104
|
+
id_issue_loc: string;
|
|
105
|
+
identification_number?: number;
|
|
106
|
+
contact_person_list: ContactPersonList[];
|
|
107
|
+
tem_address?: string;
|
|
108
|
+
tem_district_code?: string;
|
|
109
|
+
tem_district_name?: string;
|
|
110
|
+
tem_province_code?: string;
|
|
111
|
+
tem_province_name?: string;
|
|
112
|
+
tem_ward_code?: string;
|
|
113
|
+
tem_ward_name?: string;
|
|
114
|
+
}
|
|
115
|
+
interface ContactPersonList {
|
|
116
|
+
full_name: string;
|
|
117
|
+
phone_number: string;
|
|
118
|
+
relation_ship: string;
|
|
119
|
+
identification_number?: string;
|
|
120
|
+
}
|
|
121
|
+
interface UnderwritingDecisionResult {
|
|
122
|
+
hard_rule?: {
|
|
123
|
+
error_message: string;
|
|
124
|
+
screen_solution: string;
|
|
125
|
+
trace_id: string;
|
|
126
|
+
hard_rule_criteria: HardRuleCriteria[];
|
|
127
|
+
pass: boolean;
|
|
128
|
+
};
|
|
129
|
+
segment_rule?: SegmentRuleCriteria;
|
|
130
|
+
}
|
|
131
|
+
interface HardRuleCriteria {
|
|
132
|
+
criteria: string;
|
|
133
|
+
is_passed: boolean;
|
|
134
|
+
key: string;
|
|
135
|
+
key_banned: string;
|
|
136
|
+
value: any;
|
|
137
|
+
}
|
|
138
|
+
interface SegmentRuleCriteria {
|
|
139
|
+
portfolio: string;
|
|
140
|
+
product_scheme: any;
|
|
141
|
+
income: number;
|
|
142
|
+
seniority: number;
|
|
143
|
+
}
|
|
144
|
+
enum LendingApplicationStatus {
|
|
145
|
+
APPRAISAL = "APPRAISAL",
|
|
146
|
+
APPROVAL = "APPROVAL",
|
|
147
|
+
CONFIRMED = "CONFIRMED",
|
|
148
|
+
REJECTED = "REJECTED",
|
|
149
|
+
SIGNED = "SIGNED",
|
|
150
|
+
CLOSED = "CLOSED"
|
|
151
|
+
}
|
|
152
|
+
enum LoanDisbursementStatus {
|
|
153
|
+
DISBURSING = "DISBURSING",
|
|
154
|
+
DISBURSED = "DISBURSED",
|
|
155
|
+
FAILED = "FAILED"
|
|
156
|
+
}
|
|
157
|
+
interface StatisticX3 {
|
|
158
|
+
total?: number;
|
|
159
|
+
total_appraisal?: number;
|
|
160
|
+
total_approval?: number;
|
|
161
|
+
total_confrimed?: number;
|
|
162
|
+
total_rejected?: number;
|
|
163
|
+
total_signed?: number;
|
|
164
|
+
total_closed?: number;
|
|
165
|
+
total_dibursed?: number;
|
|
166
|
+
loan_statistic?: GimoLending.LoanStatistic;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GimoLending = void 0;
|
|
4
|
+
var GimoLending;
|
|
5
|
+
(function (GimoLending) {
|
|
6
|
+
let LendingApplicationStatus;
|
|
7
|
+
(function (LendingApplicationStatus) {
|
|
8
|
+
LendingApplicationStatus["APPRAISAL"] = "APPRAISAL";
|
|
9
|
+
LendingApplicationStatus["APPROVAL"] = "APPROVAL";
|
|
10
|
+
LendingApplicationStatus["CONFIRMED"] = "CONFIRMED";
|
|
11
|
+
LendingApplicationStatus["REJECTED"] = "REJECTED";
|
|
12
|
+
LendingApplicationStatus["SIGNED"] = "SIGNED";
|
|
13
|
+
LendingApplicationStatus["CLOSED"] = "CLOSED";
|
|
14
|
+
})(LendingApplicationStatus = GimoLending.LendingApplicationStatus || (GimoLending.LendingApplicationStatus = {}));
|
|
15
|
+
let LoanDisbursementStatus;
|
|
16
|
+
(function (LoanDisbursementStatus) {
|
|
17
|
+
LoanDisbursementStatus["DISBURSING"] = "DISBURSING";
|
|
18
|
+
LoanDisbursementStatus["DISBURSED"] = "DISBURSED";
|
|
19
|
+
LoanDisbursementStatus["FAILED"] = "FAILED";
|
|
20
|
+
})(LoanDisbursementStatus = GimoLending.LoanDisbursementStatus || (GimoLending.LoanDisbursementStatus = {}));
|
|
21
|
+
})(GimoLending || (exports.GimoLending = GimoLending = {}));
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/test.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const env_1 = require("./env");
|
|
13
|
+
function setupTest() {
|
|
14
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
(0, env_1.ensureEnvVariables)();
|
|
16
|
+
const sendMessageToLark = (0, env_1.getEnv)().SEND_MESSAGE_TO_LARK;
|
|
17
|
+
// const reuslt = await statisticX3TodayTool({ sendMessageToLark: false });
|
|
18
|
+
// console.log(reuslt);
|
|
19
|
+
// const reuslt = await statisticX3Tool({ sendMessageToLark: false, date: "11/06/2025" });
|
|
20
|
+
// console.log(reuslt);
|
|
21
|
+
// const reuslt = await statisticX3WeekTool({ sendMessageToLark: false });
|
|
22
|
+
// console.log(reuslt);
|
|
23
|
+
// const reuslt = await statisticX3YesterdayTool({ sendMessageToLark: false });
|
|
24
|
+
// console.log(reuslt);
|
|
25
|
+
// const reuslt = await statisticX3RangeTool({
|
|
26
|
+
// sendMessageToLark: sendMessageToLark,
|
|
27
|
+
// startDateStr: "10-06-2025",
|
|
28
|
+
// endDateStr: "20-06-2025",
|
|
29
|
+
// });
|
|
30
|
+
// console.log(reuslt);
|
|
31
|
+
// const inovationMess =
|
|
32
|
+
// "Một tuần làm việc sắp kết thúc, tất cả chúng ta đều đã rất nỗ lực và cố gắng. Hãy cùng điểm nhanh lại những thông số của dự án nhé. Dành thời gian cho bản thân và nạp năng lượng cho tuần mới nhé cả nhé GIMO";
|
|
33
|
+
// const inovationMess2 = "end of week";
|
|
34
|
+
// await sendMessageToX3Group({ text: inovationMess });
|
|
35
|
+
// await statisticX3WeekTool({ sendMessageToLark: true });
|
|
36
|
+
// console.log('done');
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
setupTest();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './statistic-x3';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./statistic-x3"), exports);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CallToolResult } from "@modelcontextprotocol/sdk/types";
|
|
2
|
+
export declare function statisticX3TodayTool(options: {
|
|
3
|
+
sendMessageToLark: boolean;
|
|
4
|
+
}): Promise<CallToolResult>;
|
|
5
|
+
export declare function statisticX3YesterdayTool(options: {
|
|
6
|
+
sendMessageToLark: boolean;
|
|
7
|
+
}): Promise<CallToolResult>;
|
|
8
|
+
export declare function statisticX3WeekTool(options: {
|
|
9
|
+
sendMessageToLark: boolean;
|
|
10
|
+
}): Promise<CallToolResult>;
|
|
11
|
+
export declare function statisticX3Tool(options: {
|
|
12
|
+
sendMessageToLark: boolean;
|
|
13
|
+
date: string;
|
|
14
|
+
}): Promise<CallToolResult>;
|
|
15
|
+
export declare function statisticX3RangeTool(options: {
|
|
16
|
+
sendMessageToLark: boolean;
|
|
17
|
+
startDateStr: string;
|
|
18
|
+
endDateStr: string;
|
|
19
|
+
}): Promise<CallToolResult>;
|
|
20
|
+
export declare function statisticX3MonthTool(options: {
|
|
21
|
+
month: string;
|
|
22
|
+
sendMessageToLark: boolean;
|
|
23
|
+
}): Promise<CallToolResult>;
|
|
24
|
+
export declare function statisticX3ThisMonthTool(options: {
|
|
25
|
+
sendMessageToLark: boolean;
|
|
26
|
+
}): Promise<CallToolResult>;
|