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.id_type,
sup.flag_debt5000, sup.flag_debt5000,
sup.flag_90_12 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 join signals_phones_map sup on cast(spr.phone as bigint) = sup.phone
where spr.package_id = #{packageId} where spr.package_id = #{packageId}
and sup.fid is not null and sup.fid is not null

View file

@ -19,7 +19,7 @@
subject_id, subject_id,
phone, phone,
error_text error_text
FROM signals_packages_records FROM signals_phone_fid_map
WHERE id = #{id} WHERE id = #{id}
</select> </select>
@ -29,7 +29,7 @@
phone bigint phone bigint
)) ))
select distinct (package_id) 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 join signals_user_packages sup on sup.id = spr.package_id
where spr.phone_l in (select * from src) and sup.status = 'ON_MONITORING' where spr.phone_l in (select * from src) and sup.status = 'ON_MONITORING'
</select> </select>
@ -45,7 +45,7 @@
package_id bigint package_id bigint
)) ))
INSERT INSERT
INTO signals_packages_records INTO signals_phone_fid_map
(subject_id, phone, phone_l, package_id) (subject_id, phone, phone_l, package_id)
SELECT subject_id, SELECT subject_id,
phone, phone,
@ -57,7 +57,7 @@
</select> </select>
<update id="setErrorJson" parameterType="string"> <update id="setErrorJson" parameterType="string">
update signals_packages_records dst update signals_phone_fid_map dst
set error_text = src.error_text set error_text = src.error_text
FROM json_to_recordset(#{json}::json) AS src( FROM json_to_recordset(#{json}::json) AS src(
id bigint, id bigint,
@ -68,7 +68,7 @@
<delete id="deleteByPackageId" parameterType="long"> <delete id="deleteByPackageId" parameterType="long">
DELETE DELETE
FROM signals_packages_records FROM signals_phone_fid_map
WHERE package_id = #{packageId} WHERE package_id = #{packageId}
</delete> </delete>
@ -78,7 +78,7 @@
subject_id, subject_id,
phone, phone,
error_text error_text
FROM signals_packages_records FROM signals_phone_fid_map
WHERE package_id = #{packageId} WHERE package_id = #{packageId}
ORDER BY id ORDER BY id
LIMIT #{limit} OFFSET #{offset} LIMIT #{limit} OFFSET #{offset}

View file

@ -213,7 +213,7 @@
DELETE DELETE
FROM signals_phones_map spm FROM signals_phones_map spm
WHERE NOT EXISTS (SELECT 1 WHERE NOT EXISTS (SELECT 1
FROM signals_packages_records spr FROM signals_phone_fid_map spr
JOIN signals_user_packages sup JOIN signals_user_packages sup
ON sup.id = spr.package_id ON sup.id = spr.package_id
WHERE spr.phone_l = spm.phone WHERE spr.phone_l = spm.phone

View file

@ -1,43 +1,94 @@
-- Create signals_user_packages create table signals_user_packages
-- Хранит основную информацию о каждом пакете мониторинга, установленном клиентом (
CREATE TABLE signals_user_packages ( id bigserial
id SERIAL PRIMARY KEY, -- внутренний идентификатор в таблице primary key,
membercode VARCHAR(255), -- логин клиента membercode varchar(255),
package_name VARCHAR(255), -- имя пакета package_name varchar(255),
created_at TIMESTAMP, -- дата и время первичной регистрации пакета created_at timestamp,
status VARCHAR(255), -- статус пакета: ON_MONITORING, REJECTED, PROCESSING, DELETED, ERROR status varchar(255),
deactivated_at TIMESTAMP, -- дата и время удаления пакета deactivated_at timestamp,
last_downloaded_report VARCHAR(255) -- имя последнего успешно загруженного отчёта из оф. сервиса по пакету 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 alter table signals_user_packages
CREATE TABLE signals_phone_fid_map ( owner to credit_tracker_user;
id SERIAL PRIMARY KEY, -- внутренний идентификатор в таблице
package_id INTEGER NOT NULL, -- идентификатор пакета create table signals_hits
subject_id VARCHAR(255), -- идентификатор субъекта из XML (
phone VARCHAR(255), -- номер телефона id bigserial
fid VARCHAR(255), -- найденный FID или NULL primary key,
flag_debt5000 SMALLINT, -- 1, если есть активная просрочка > 5000 руб., иначе 0 package_id bigint not null
flag_90_12 SMALLINT, -- 1, если по субъекту когда-либо была просрочка 90+ дней за последний год, иначе 0 constraint fk_signals_user_packages
calculated_at TIMESTAMP, -- дата последнего расчёта флагов references signals_user_packages,
error_text TEXT, subject_id varchar(255),
CONSTRAINT fk_signals_user_packages signal_type integer,
FOREIGN KEY (package_id) response_sent_at timestamp,
REFERENCES signals_user_packages(id) report_file_name varchar(255),
phone bigint
); );
-- Create signals_hits alter table signals_hits
CREATE TABLE signals_hits ( owner to credit_tracker_user;
id SERIAL PRIMARY KEY, -- внутренний идентификатор в таблице
package_id INTEGER NOT NULL, -- идентификатор пакета create index idx_signals_hits_response_sent_at
subject_id VARCHAR(255), -- идентификатор субъекта, по которому сработал сигнал on signals_hits (response_sent_at);
signal_type INTEGER, -- тип сигнала
response_sent_at TIMESTAMP, -- дата и время формирования отчета с данным сигналом create table signals_phone_fid_map
report_file_name VARCHAR(255), -- имя XML-файла отчёта, в который вошел данный сигнал (
CONSTRAINT fk_signals_user_packages id bigserial
FOREIGN KEY (package_id) primary key,
REFERENCES signals_user_packages(id) 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 alter table signals_phone_fid_map
CREATE INDEX idx_signals_hits_response_sent_at ON signals_hits(response_sent_at); 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 alter table signals_user_packages
add LAST_SEARCHED_AT timestamp; add LAST_SEARCHED_AT timestamp;
alter table signals_user_packages alter table signals_user_packages
@ -13,13 +8,17 @@ alter table signals_user_packages
add EXTERNAL_PACKAGE_NAME varchar(255); add EXTERNAL_PACKAGE_NAME varchar(255);
alter table signals_user_packages alter table signals_user_packages
add FID_CHANGED smallint; add FID_CHANGED smallint;
alter table signals_packages_records
add phone_l bigint;
alter table signals_hits alter table signals_hits
add PHONE bigint; 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 CREATE TABLE signals_phones_map
( (
@ -41,13 +40,4 @@ CREATE TABLE signals_phones_map
ALTER TABLE signals_phones_map ALTER TABLE signals_phones_map
ADD CONSTRAINT signals_phones_map_phone_key UNIQUE (PHONE); ADD CONSTRAINT signals_phones_map_phone_key UNIQUE (PHONE);
update signals_phone_fid_map set phone_l = phone::BIGINT where phone is not null;
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