-- 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 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, -- дата последнего расчёта флагов CONSTRAINT fk_signals_user_packages FOREIGN KEY (package_id) REFERENCES signals_user_packages(id) ); -- 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) ); -- Create index on response_sent_at CREATE INDEX idx_signals_hits_response_sent_at ON signals_hits(response_sent_at);