From e6b3bdfb169734381a2c8a47a4ee91b0e42b37ef Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Thu, 22 Jan 2026 13:37:44 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/BKI-3241 --- .../signal/PackageRecordsJoinMapper.xml | 2 +- .../mapper/signal/PackageRecordsMapper.xml | 12 +- .../mybatis/mapper/signal/PhonesMapMapper.xml | 2 +- src/main/resources/sql/credit_tracker_db.ddl | 125 ++++++++++++------ src/main/resources/sql/v2.21.ddl | 26 ++-- 5 files changed, 104 insertions(+), 63 deletions(-) diff --git a/src/main/resources/mybatis/mapper/signal/PackageRecordsJoinMapper.xml b/src/main/resources/mybatis/mapper/signal/PackageRecordsJoinMapper.xml index 5efa8b1..fda3809 100644 --- a/src/main/resources/mybatis/mapper/signal/PackageRecordsJoinMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/PackageRecordsJoinMapper.xml @@ -34,7 +34,7 @@ sup.id_type, sup.flag_debt5000, sup.flag_90_12 - from signals_packages_records spr + from signals_phone_fid_map spr join signals_phones_map sup on cast(spr.phone as bigint) = sup.phone where spr.package_id = #{packageId} and sup.fid is not null diff --git a/src/main/resources/mybatis/mapper/signal/PackageRecordsMapper.xml b/src/main/resources/mybatis/mapper/signal/PackageRecordsMapper.xml index 4b19495..e9328b0 100644 --- a/src/main/resources/mybatis/mapper/signal/PackageRecordsMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/PackageRecordsMapper.xml @@ -19,7 +19,7 @@ subject_id, phone, error_text - FROM signals_packages_records + FROM signals_phone_fid_map WHERE id = #{id} @@ -29,7 +29,7 @@ phone bigint )) select distinct (package_id) - from signals_packages_records spr + FROM signals_phone_fid_map spr join signals_user_packages sup on sup.id = spr.package_id where spr.phone_l in (select * from src) and sup.status = 'ON_MONITORING' @@ -45,7 +45,7 @@ package_id bigint )) INSERT - INTO signals_packages_records + INTO signals_phone_fid_map (subject_id, phone, phone_l, package_id) SELECT subject_id, phone, @@ -57,7 +57,7 @@ - update signals_packages_records dst + update signals_phone_fid_map dst set error_text = src.error_text FROM json_to_recordset(#{json}::json) AS src( id bigint, @@ -68,7 +68,7 @@ DELETE - FROM signals_packages_records + FROM signals_phone_fid_map WHERE package_id = #{packageId} @@ -78,7 +78,7 @@ subject_id, phone, error_text - FROM signals_packages_records + FROM signals_phone_fid_map WHERE package_id = #{packageId} ORDER BY id LIMIT #{limit} OFFSET #{offset} diff --git a/src/main/resources/mybatis/mapper/signal/PhonesMapMapper.xml b/src/main/resources/mybatis/mapper/signal/PhonesMapMapper.xml index b9c409f..0abefbe 100644 --- a/src/main/resources/mybatis/mapper/signal/PhonesMapMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/PhonesMapMapper.xml @@ -213,7 +213,7 @@ DELETE FROM signals_phones_map spm WHERE NOT EXISTS (SELECT 1 - FROM signals_packages_records spr + FROM signals_phone_fid_map spr JOIN signals_user_packages sup ON sup.id = spr.package_id WHERE spr.phone_l = spm.phone diff --git a/src/main/resources/sql/credit_tracker_db.ddl b/src/main/resources/sql/credit_tracker_db.ddl index f79c2f4..efa00bc 100644 --- a/src/main/resources/sql/credit_tracker_db.ddl +++ b/src/main/resources/sql/credit_tracker_db.ddl @@ -1,43 +1,94 @@ --- Create signals_user_packages --- Хранит основную информацию о каждом пакете мониторинга, установленном клиентом -CREATE TABLE signals_user_packages ( - id SERIAL PRIMARY KEY, -- внутренний идентификатор в таблице - membercode VARCHAR(255), -- логин клиента - package_name VARCHAR(255), -- имя пакета - created_at TIMESTAMP, -- дата и время первичной регистрации пакета - status VARCHAR(255), -- статус пакета: ON_MONITORING, REJECTED, PROCESSING, DELETED, ERROR - deactivated_at TIMESTAMP, -- дата и время удаления пакета - last_downloaded_report VARCHAR(255) -- имя последнего успешно загруженного отчёта из оф. сервиса по пакету +create table signals_user_packages +( + id bigserial + primary key, + membercode varchar(255), + package_name varchar(255), + created_at timestamp, + status varchar(255), + deactivated_at timestamp, + last_downloaded_report varchar(255), + monitoring_at timestamp, + last_searched_at timestamp, + signal_types varchar(255), + reject_status varchar(255), + external_package_name varchar(255), + fid_changed smallint ); --- Create signals_phone_fid_map -CREATE TABLE signals_phone_fid_map ( - id SERIAL PRIMARY KEY, -- внутренний идентификатор в таблице - package_id INTEGER NOT NULL, -- идентификатор пакета - subject_id VARCHAR(255), -- идентификатор субъекта из XML - phone VARCHAR(255), -- номер телефона - fid VARCHAR(255), -- найденный FID или NULL - flag_debt5000 SMALLINT, -- 1, если есть активная просрочка > 5000 руб., иначе 0 - flag_90_12 SMALLINT, -- 1, если по субъекту когда-либо была просрочка 90+ дней за последний год, иначе – 0 - calculated_at TIMESTAMP, -- дата последнего расчёта флагов - error_text TEXT, - CONSTRAINT fk_signals_user_packages - FOREIGN KEY (package_id) - REFERENCES signals_user_packages(id) +alter table signals_user_packages + owner to credit_tracker_user; + +create table signals_hits +( + id bigserial + primary key, + package_id bigint not null + constraint fk_signals_user_packages + references signals_user_packages, + subject_id varchar(255), + signal_type integer, + response_sent_at timestamp, + report_file_name varchar(255), + phone bigint ); --- Create signals_hits -CREATE TABLE signals_hits ( - id SERIAL PRIMARY KEY, -- внутренний идентификатор в таблице - package_id INTEGER NOT NULL, -- идентификатор пакета - subject_id VARCHAR(255), -- идентификатор субъекта, по которому сработал сигнал - signal_type INTEGER, -- тип сигнала - response_sent_at TIMESTAMP, -- дата и время формирования отчета с данным сигналом - report_file_name VARCHAR(255), -- имя XML-файла отчёта, в который вошел данный сигнал - CONSTRAINT fk_signals_user_packages - FOREIGN KEY (package_id) - REFERENCES signals_user_packages(id) +alter table signals_hits + owner to credit_tracker_user; + +create index idx_signals_hits_response_sent_at + on signals_hits (response_sent_at); + +create table signals_phone_fid_map +( + id bigserial + primary key, + package_id bigint not null + constraint fk_signals_user_packages + references signals_user_packages, + subject_id varchar(255), + phone varchar(255), + fid varchar(255), + flag_debt5000 smallint, + flag_90_12 smallint, + calculated_at timestamp, + error_text text, + phone_l bigint ); --- Create index on response_sent_at -CREATE INDEX idx_signals_hits_response_sent_at ON signals_hits(response_sent_at); \ No newline at end of file +alter table signals_phone_fid_map + owner to credit_tracker_user; + +create index idx_signals_phone_fid_map_calculated_at + on signals_phone_fid_map (calculated_at); + +create table app_version +( + db_version varchar(12) +); + +alter table app_version + owner to credit_tracker_user; + +create table signals_phones_map +( + id bigserial + primary key, + fid integer, + phone bigint + unique, + name_1 varchar(255), + first varchar(255), + middle varchar(255), + birth_dt timestamp, + ser_num varchar(255), + id_type varchar(255), + flag_debt5000 smallint, + flag_90_12 smallint, + searched_at timestamp, + calculated_at timestamp +); + +alter table signals_phones_map + owner to credit_tracker_user; + diff --git a/src/main/resources/sql/v2.21.ddl b/src/main/resources/sql/v2.21.ddl index 38ad0c7..3b73e0f 100644 --- a/src/main/resources/sql/v2.21.ddl +++ b/src/main/resources/sql/v2.21.ddl @@ -1,8 +1,3 @@ -CREATE TABLE app_version -( - DB_VERSION varchar(12) -); - alter table signals_user_packages add LAST_SEARCHED_AT timestamp; alter table signals_user_packages @@ -13,13 +8,17 @@ alter table signals_user_packages add EXTERNAL_PACKAGE_NAME varchar(255); alter table signals_user_packages add FID_CHANGED smallint; -alter table signals_packages_records - add phone_l bigint; - alter table signals_hits add PHONE bigint; +alter table signals_phone_fid_map + add phone_l bigint; + +CREATE TABLE app_version +( + DB_VERSION varchar(12) +); CREATE TABLE signals_phones_map ( @@ -41,13 +40,4 @@ CREATE TABLE signals_phones_map ALTER TABLE signals_phones_map ADD CONSTRAINT signals_phones_map_phone_key UNIQUE (PHONE); - - -alter table signals_phone_fid_map rename to signals_packages_records; -alter table signals_packages_records drop column fid; -alter table signals_packages_records drop column flag_debt5000; -alter table signals_packages_records drop column flag_90_12; -alter table signals_packages_records drop column calculated_at; -alter table signals_packages_records drop column rec_uuid; -alter table signals_packages_records drop column searched_at; --- todo alter indexes and other constrains +update signals_phone_fid_map set phone_l = phone::BIGINT where phone is not null; \ No newline at end of file