-- 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, -- дата последнего расчёта флагов
                                       error_text TEXT,
                                       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);