Skip to main content

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

  1. En el servidor de administración, ejecutar los siguientes comandos:

    git fetch --all --tags -f
    git checkout 4.1.8-prod

    Para el entorno de preproducción usar el tag 4.1.8-preprod

Descarga de imágenes docker

  1. En el servidor de administración, ejecutar el siguiente comando ansible:

    ansible-playbook admin.yml -K -t release-warmup

Instrucciones

Habilitar el modo mantenimiento

  1. En el servidor de administración, ejecutar el siguiente comando ansible:

    ansible-playbook admin.yml -K -t maintenance-enable

Cambios en los servidores

  1. Ninguno.

Cambios en base de datos

  1. 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

  1. Ninguno.

Cambios en vault

  1. Ninguno.

Cambios en configuración

  1. En el servidor de administración, ejecutar el siguiente comando ansible:

    ansible-playbook config.yml -K -t vdb-deploy

Cambios en rutas

  1. En el servidor de administración, ejecutar el siguiente comando ansible:

    ansible-playbook routes.yml -K -t vdb-public-deploy

Cambios en spring

  1. Ninguno.

Cambios en backend

  1. En el servidor de administración, ejecutar el siguiente comando ansible:

    ansible-playbook vdb.yml -K -t backend-deploy

Cambios en frontend

  1. Ninguno.

Cambios en gateways

  1. Ninguno.

Verificación de componentes

  1. En los servidores de aplicaciones, ejecutar el siguiente comando:

    docker ps -vs
  2. 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

  1. En el servidor de administración, ejecutar el siguiente comando ansible:

    ansible-playbook admin.yml -K -t cleanup

Deshabilitar el modo mantenimiento

  1. En el servidor de administración, ejecutar el siguiente comando ansible:

    ansible-playbook admin.yml -K -t maintenance-disable

Resumen de versiones

componenterelease 4.1.7release 4.1.8
viridian-config-properties8.9.0-bec
vdb-config-properties8.16.0-bec8.17.1-bec
cobalt-config-properties8.1.0-bec
server-config8.1.0-bec
server-eureka8.1.0-bec
vdb-routes-public8.6.0-bec8.7.0-bec
vdb-routes-internal8.1.0-bec
vdb-routes-bank8.1.2-bec
cobalt-routes-public8.1.0-bec
cobalt-routes-internal8.1.0-bec
jade-routes-public8.1.0-bec
gateway-public8.5.0-bec
gateway-internal8.3.0-bec
bank-gateway8.3.0-bec
bank-service8.1.0-bec
batchpayments-api8.3.0-bec
batchpayments-hosted8.2.0-bec
beneficiaries-api8.2.1-bec
digitalcredit-api8.4.0-bec
digitalpay-qr8.9.0-bec
guaranteebond-api8.2.0-bec
manager-api8.14.1-bec
manager-hosted8.7.0-bec8.8.0-bec
myfinances-api8.5.0-bec8.6.2-bec
notifications-hosted8.7.0-bec
onboarding-api8.10.0-bec
servicepayments-api8.1.0-bec
statements-api8.2.0-bec
trade-api8.1.0-bec
transactions-api8.5.0-bec8.6.0-bec
transactions-hosted8.1.0-bec
utilities-api8.4.0-bec8.5.0-bec
wiretransfer-api8.1.0-bec
insurance-agents8.1.0-bec
insurance-sales8.1.0-bec
assistant-requests8.1.0-bec
frontend-vdb5.9.0-bec
frontend-vdb-25.1.5-bec
frontend-admin1.18.0-bec
frontend-kiosk2.2.0-bec