VIRIDIAN Digital Banking - Ansible 4.1.8
Changelog
- Créditos Digitales: Se actualiza todos los links de los productos de QR Crédito a: https://www.baneco.com.bo/qr-credito-mype/solicitud
- Mis Finanzas: Para los clientes que hayan utilizado el módulo de Mis Finanzas ahora se puede categorizas las transacciones realizadas desde Efectivo Móvil
- Mis Finanzas: Para la notificación de tipo “El presupuesto definido para la categoría: [nombre categoría] está cerca de ser superado” se hicieron los arreglos de tal modo que solo sea enviada una vez por mes
- Mis Finanzas: Se realizan mejoras internas para mejorar el rendimiento del módulo.
- Mis Finanzas: Se implementa una nueva tarea programada encargada de depurar la tabla de transacciones de Mis Finanzas eliminando aquellos registros que por alguna razón hayan quedado en estado incorrecto (Borrador)
- Mis Finanzas: Se corrige error en el cuadre diario que causaba problemas con las transacciones que fueron categorizadas desde otros módulos como Pagos QR, Transferencias y Efectivo Móvil
- Mis Finanzas: Se corrige el error en la importación de transacciones donde la suma de la base de datos no era igual a la respuesta del banco en vdbQueryTransactionByAccount y que se debía a que en una importación previa hubo algún problema. Ahora si ocurre un problema en la importación nos aseguramos de que ningún dato quede registrado; de este modo la siguiente importación es sobre data depurada
- Mis Finanzas: Se corrigen errores en Pagos Recurrentes y Presupuesto
- Mis Finanzas: Se elimina el uso de Memory Cache y se implementa un control manual para garantizar que la importación de transacciones se realice cada 5 minutos. Esta mejora asegura un funcionamiento correcto, independientemente del número de servidores y/o instancias, optimizando la experiencia del usuario
- Mis Finanzas: Se depuran los datos del módulo para iniciar con pruebas desde cero
Tareas previas
Estas tareas pueden hacerse en cualquier horario.
Selección de versión del release
-
En el servidor de administración, ejecutar los siguientes comandos:
git fetch --all --tags -fgit checkout 4.1.8-prodPara el entorno de preproducción usar el tag 4.1.8-preprod
Descarga de imágenes docker
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook admin.yml -K -t release-warmup
Instrucciones
Habilitar el modo mantenimiento
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook admin.yml -K -t maintenance-enable
Cambios en los servidores
- Ninguno.
Cambios en base de datos
-
Ejecutar el siguiente script:
-- my_finances_account
DROP TABLE IF EXISTS my_finances_account;
CREATE TABLE IF NOT EXISTS my_finances_account (
id bigserial NOT NULL,
customer_code varchar(20) NOT NULL,
account_code varchar(40) NOT NULL,
account_type varchar(3) NOT NULL,
account_currency varchar(3) NOT NULL,
account_code_display varchar(40) NOT NULL,
account_alias varchar(40),
holder_name varchar(80),
last_query datetime year to second,
initial_balance decimal(19,2),
current_balance decimal(19,2),
user_create varchar(40),
date_create datetime year to second,
user_update varchar(40),
date_update datetime year to second,
admin_user_create varchar(40),
admin_user_update varchar(40),
admin_date_update datetime year to second,
PRIMARY KEY (id) CONSTRAINT pk_my_finances_account_id
);
CREATE INDEX idx_my_finances_account_account_code_account_type ON my_finances_account (account_code, account_type);
CREATE INDEX idx_my_finances_account_customer_code ON my_finances_account (customer_code);
CREATE INDEX idx_my_finances_account_customer_code_account_code_account_type ON my_finances_account (customer_code, account_code, account_type);
-- my_finances_assign
DROP TABLE IF EXISTS my_finances_assign;
CREATE TABLE IF NOT EXISTS my_finances_assign (
id bigserial NOT NULL,
customer_code varchar(20) NOT NULL,
account_code varchar(40) NOT NULL,
debit_credit varchar(1) NOT NULL,
group_type varchar(40) NOT NULL,
transaction_data varchar(250),
bank_requester varchar(10),
account_requester varchar(40),
category_code varchar(20) NOT NULL,
PRIMARY KEY (id) CONSTRAINT pk_manager_history_id
);
CREATE INDEX idx_my_finances_assign_customer_code ON my_finances_assign (customer_code);
CREATE INDEX idx_my_finances_assign_similar_by_requester ON my_finances_assign (customer_code, account_code, debit_credit, group_type, bank_requester, account_requester);
CREATE INDEX idx_my_finances_assign_similar_by_trn_data ON my_finances_assign (customer_code, account_code, debit_credit, group_type, transaction_data);
CREATE INDEX idx_my_finances_assign_similar_exclude_account ON my_finances_assign (customer_code, debit_credit, group_type, bank_requester, account_requester);
-- my_finances_balance
DROP TABLE IF EXISTS my_finances_balance;
CREATE TABLE IF NOT EXISTS my_finances_balance (
id bigserial NOT NULL,
customer_code varchar(20) NOT NULL,
account_code varchar(40) NOT NULL,
account_type varchar(3) NOT NULL,
process_date date NOT NULL,
balance decimal(19,2) NOT NULL,
balance_local decimal(19,2) NOT NULL,
user_create varchar(40),
date_create datetime year to second,
user_update varchar(40),
date_update datetime year to second,
admin_user_create varchar(40),
admin_user_update varchar(40),
admin_date_update datetime year to second,
PRIMARY KEY (id) CONSTRAINT pk_my_finances_balance_id
);
CREATE INDEX idx_my_finances_balance_customer_code ON my_finances_balance (customer_code);
CREATE INDEX idx_my_finances_balance_customer_code_account ON my_finances_balance (customer_code, account_code, account_type);
CREATE INDEX idx_my_finances_balance_get_balance ON my_finances_balance (customer_code, account_code, account_type, process_date);
-- my_finances_budget
DROP TABLE IF EXISTS my_finances_budget;
CREATE TABLE IF NOT EXISTS my_finances_budget (
id bigserial NOT NULL,
customer_code varchar(20) NOT NULL,
category_code varchar(20) NOT NULL,
limit_amount decimal(19,2) NOT NULL,
available_amount decimal(19,2) NOT NULL,
spent_amount decimal(19,2) NOT NULL,
notify smallint NOT NULL,
year int NOT NULL,
month int NOT NULL,
period int NOT NULL,
last_exceeded_period int NOT NULL,
last_warning_period int NOT NULL,
user_create varchar(40),
date_create datetime year to second,
user_update varchar(40),
date_update datetime year to second,
admin_user_create varchar(40),
admin_user_update varchar(40),
admin_date_update datetime year to second,
PRIMARY KEY (id) CONSTRAINT pk_my_finances_budget_id
);
CREATE INDEX idx_my_finances_budget_customer_code ON my_finances_budget (customer_code);
CREATE INDEX idx_my_finances_budget_customer_code_period ON my_finances_budget (customer_code, period);
CREATE INDEX idx_my_finances_budget_customer_code_period_category_code ON my_finances_budget (customer_code, period, category_code);
-- my_finances_control
DROP TABLE IF EXISTS my_finances_control;
CREATE TABLE IF NOT EXISTS my_finances_control (
id bigserial NOT NULL,
customer_code varchar(20) NOT NULL,
importation_complete smallint NOT NULL,
last_update_date datetime year to second,
user_create varchar(40),
date_create datetime year to second,
user_update varchar(40),
date_update datetime year to second,
admin_user_create varchar(40),
admin_user_update varchar(40),
admin_date_update datetime year to second,
PRIMARY KEY (id) CONSTRAINT pk_my_finances_control_id
);
CREATE INDEX idx_my_finances_control_customer_code ON my_finances_control (customer_code);
CREATE INDEX idx_my_finances_control_importation_complete ON my_finances_control (importation_complete);
CREATE INDEX idx_my_finances_control_last_update_date ON my_finances_control (last_update_date);
-- my_finances_monthly_data
DROP TABLE IF EXISTS my_finances_monthly_data;
CREATE TABLE IF NOT EXISTS my_finances_monthly_data (
id bigserial NOT NULL,
account_code varchar(40) NOT NULL,
account_type varchar(3) NOT NULL,
customer_code varchar(20) NOT NULL,
year int NOT NULL,
month int NOT NULL,
period int NOT NULL,
total_amount decimal(19,2) NOT NULL,
spending_amount decimal(19,2) NOT NULL,
incoming_amount decimal(19,2) NOT NULL,
balance_amount decimal(19,2) NOT NULL,
total_amount_local decimal(19,2) NOT NULL,
spending_amount_local decimal(19,2) NOT NULL,
incoming_amount_local decimal(19,2) NOT NULL,
balance_amount_local decimal(19,2) NOT NULL,
user_create varchar(40),
date_create datetime year to second,
user_update varchar(40),
date_update datetime year to second,
admin_user_create varchar(40),
admin_user_update varchar(40),
admin_date_update datetime year to second,
PRIMARY KEY (id) CONSTRAINT pk_my_finances_monthly_data_id
);
CREATE INDEX idx_my_finances_monthly_data_customer_code ON my_finances_monthly_data (customer_code);
CREATE INDEX idx_my_finances_monthly_data_customer_code_period ON my_finances_monthly_data (customer_code, period);
CREATE INDEX idx_my_finances_monthly_data_customer_code_account_code ON my_finances_monthly_data (customer_code, account_code, account_type);
CREATE INDEX idx_my_finances_monthly_data_customer_code_account_code_period ON my_finances_monthly_data (customer_code, account_code, account_type, period);
-- my_finances_recurrent
DROP TABLE IF EXISTS my_finances_recurrent;
CREATE TABLE IF NOT EXISTS my_finances_recurrent (
id bigserial NOT NULL,
customer_code varchar(20) NOT NULL,
group_type varchar(40) NOT NULL,
transaction_data varchar(250),
pay_day int NOT NULL,
last_payment_local decimal(19,2) NOT NULL,
notify smallint NOT NULL,
last_warning_period int NOT NULL,
user_create varchar(40),
date_create datetime year to second,
user_update varchar(40),
date_update datetime year to second,
admin_user_create varchar(40),
admin_user_update varchar(40),
admin_date_update datetime year to second,
PRIMARY KEY (id) CONSTRAINT pk_my_finances_recurrent_id
);
CREATE INDEX idx_my_finances_recurrent_customer_code ON my_finances_recurrent (customer_code);
CREATE INDEX idx_my_finances_recurrent_customer_code_group_type_transaction_data ON my_finances_recurrent (customer_code, group_type, transaction_data);
CREATE INDEX idx_my_finances_recurrent_notify_pay_day ON my_finances_recurrent (notify, pay_day);
-- my_finances_transaction
DROP TABLE IF EXISTS my_finances_transaction;
CREATE TABLE IF NOT EXISTS my_finances_transaction (
id bigserial NOT NULL,
reference_id varchar(40) NOT NULL,
account_code varchar(40) NOT NULL,
account_type varchar(3) NOT NULL,
account_code_display varchar(40),
account_currency varchar(3),
customer_code varchar(20) NOT NULL,
trn_type_description varchar(100),
mcc varchar(40),
category_code varchar(20) NOT NULL,
type varchar(20) NOT NULL,
group_type varchar(40) NOT NULL,
transaction_data varchar(200),
year int NOT NULL,
month int NOT NULL,
day int NOT NULL,
trn_date datetime year to second,
period int NOT NULL,
debit_credit varchar(1) NOT NULL,
currency varchar(3) NOT NULL,
amount decimal(19,2) NOT NULL,
amount_local decimal(19,2) NOT NULL,
note varchar(250),
office varchar(100),
reassigned_category smallint NOT NULL,
reconciled smallint NOT NULL,
customer_comment varchar(250),
user_create varchar(40),
date_create datetime year to second,
user_update varchar(40),
date_update datetime year to second,
admin_user_create varchar(40),
admin_user_update varchar(40),
admin_date_update datetime year to second,
PRIMARY KEY (id) CONSTRAINT pk_my_finances_transaction_id
);
CREATE INDEX idx_my_finances_transaction_reference_id ON my_finances_transaction (reference_id);
CREATE INDEX idx_my_finances_transaction_customer_code ON my_finances_transaction (customer_code);
CREATE INDEX idx_my_finances_transaction_period_date_create ON my_finances_transaction (period, date_create);
CREATE INDEX idx_my_finances_transaction_customer_code_period ON my_finances_transaction (customer_code, period);
CREATE INDEX idx_my_finances_transaction_customer_code_account_code ON my_finances_transaction (customer_code, account_code, account_type);
CREATE INDEX idx_my_finances_transaction_customer_code_account_code_period ON my_finances_transaction (customer_code, account_code, account_type, period);
CREATE INDEX idx_my_finances_transaction_by_day ON my_finances_transaction (customer_code, account_code, account_type, year, month, day);
CREATE INDEX idx_my_finances_transaction_customer_code_account_reference_id ON my_finances_transaction (customer_code, account_code, account_type, reference_id);
CREATE INDEX idx_my_finances_transaction_customer_code_period_type_category_code ON my_finances_transaction (customer_code, period, type, category_code);
CREATE INDEX idx_my_finances_transaction_customer_code_period_currency_type_category_code ON my_finances_transaction (customer_code, period, currency, type, category_code);
CREATE INDEX idx_my_finances_transaction_customer_code_period_account_code_type_category_code ON my_finances_transaction (customer_code, period, account_code, account_type, type, category_code);
CREATE INDEX idx_my_finances_transaction_customer_code_period_type ON my_finances_transaction (customer_code, period, type);
CREATE INDEX idx_my_finances_transaction_customer_code_period_type_currency ON my_finances_transaction (customer_code, period, type, currency);
CREATE INDEX idx_my_finances_transaction_customer_code_account_code_period_type ON my_finances_transaction (customer_code, account_code, account_type, period, type);
CREATE INDEX idx_my_finances_transaction_customer_code_account_code_trn_date ON my_finances_transaction (customer_code, account_code, account_type, trn_date);
CREATE INDEX idx_my_finances_transaction_customer_code_group_type_period_type ON my_finances_transaction (customer_code, group_type, period, type);
CREATE INDEX idx_my_finances_transaction_customer_code_transaction_data_type ON my_finances_transaction (customer_code, transaction_data, type);
CREATE INDEX idx_my_finances_transaction_customer_code_group_type_transaction_data_type ON my_finances_transaction (customer_code, group_type, transaction_data, type);
CREATE INDEX idx_my_finances_transaction_customer_code_period_group_type_transaction_data_type ON my_finances_transaction (customer_code, period, group_type, transaction_data, type);
CREATE INDEX idx_my_finances_transaction_customer_code_period_category_code ON my_finances_transaction (customer_code, period, category_code);
CREATE INDEX idx_my_finances_transaction_customer_code_period_category_code_account_code ON my_finances_transaction (customer_code, period, category_code, account_code, account_type);
CREATE INDEX idx_my_finances_transaction_customer_code_period_category_code_currency ON my_finances_transaction (customer_code, period, category_code, currency);
Cambios en kafka
- Ninguno.
Cambios en vault
- Ninguno.
Cambios en configuración
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook config.yml -K -t vdb-deploy
Cambios en rutas
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook routes.yml -K -t vdb-public-deploy
Cambios en spring
- Ninguno.
Cambios en backend
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook vdb.yml -K -t backend-deploy
Cambios en frontend
- Ninguno.
Cambios en gateways
- Ninguno.
Verificación de componentes
-
En los servidores de aplicaciones, ejecutar el siguiente comando:
docker ps -vs -
Revisar el output del comando y asegurarse de que todos los docker containers tengan un status UP y no haya ningún docker container detenido.
Limpieza de archivos generados por el release
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook admin.yml -K -t cleanup
Deshabilitar el modo mantenimiento
-
En el servidor de administración, ejecutar el siguiente comando ansible:
ansible-playbook admin.yml -K -t maintenance-disable
Resumen de versiones
| componente | release 4.1.7 | release 4.1.8 |
|---|---|---|
| viridian-config-properties | 8.9.0-bec | |
| vdb-config-properties | 8.16.0-bec | 8.17.1-bec |
| cobalt-config-properties | 8.1.0-bec | |
| server-config | 8.1.0-bec | |
| server-eureka | 8.1.0-bec | |
| vdb-routes-public | 8.6.0-bec | 8.7.0-bec |
| vdb-routes-internal | 8.1.0-bec | |
| vdb-routes-bank | 8.1.2-bec | |
| cobalt-routes-public | 8.1.0-bec | |
| cobalt-routes-internal | 8.1.0-bec | |
| jade-routes-public | 8.1.0-bec | |
| gateway-public | 8.5.0-bec | |
| gateway-internal | 8.3.0-bec | |
| bank-gateway | 8.3.0-bec | |
| bank-service | 8.1.0-bec | |
| batchpayments-api | 8.3.0-bec | |
| batchpayments-hosted | 8.2.0-bec | |
| beneficiaries-api | 8.2.1-bec | |
| digitalcredit-api | 8.4.0-bec | |
| digitalpay-qr | 8.9.0-bec | |
| guaranteebond-api | 8.2.0-bec | |
| manager-api | 8.14.1-bec | |
| manager-hosted | 8.7.0-bec | 8.8.0-bec |
| myfinances-api | 8.5.0-bec | 8.6.2-bec |
| notifications-hosted | 8.7.0-bec | |
| onboarding-api | 8.10.0-bec | |
| servicepayments-api | 8.1.0-bec | |
| statements-api | 8.2.0-bec | |
| trade-api | 8.1.0-bec | |
| transactions-api | 8.5.0-bec | 8.6.0-bec |
| transactions-hosted | 8.1.0-bec | |
| utilities-api | 8.4.0-bec | 8.5.0-bec |
| wiretransfer-api | 8.1.0-bec | |
| insurance-agents | 8.1.0-bec | |
| insurance-sales | 8.1.0-bec | |
| assistant-requests | 8.1.0-bec | |
| frontend-vdb | 5.9.0-bec | |
| frontend-vdb-2 | 5.1.5-bec | |
| frontend-admin | 1.18.0-bec | |
| frontend-kiosk | 2.2.0-bec |