etreschenkov 2026-01-22 13:37:44 +03:00
parent abfb805e4f
commit e6b3bdfb16
5 changed files with 104 additions and 63 deletions

View file

@ -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

View file

@ -19,7 +19,7 @@
subject_id,
phone,
error_text
FROM signals_packages_records
FROM signals_phone_fid_map
WHERE id = #{id}
</select>
@ -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'
</select>
@ -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 @@
</select>
<update id="setErrorJson" parameterType="string">
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 id="deleteByPackageId" parameterType="long">
DELETE
FROM signals_packages_records
FROM signals_phone_fid_map
WHERE package_id = #{packageId}
</delete>
@ -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}

View file

@ -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

View file

@ -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);
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;

View file

@ -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;