61 lines
2.4 KiB
MySQL
61 lines
2.4 KiB
MySQL
|
|
-- Схема для хранения сырых данных с сайтов отелей
|
|||
|
|
|
|||
|
|
-- Сырой HTML со страниц
|
|||
|
|
CREATE TABLE IF NOT EXISTS hotel_website_raw (
|
|||
|
|
id SERIAL PRIMARY KEY,
|
|||
|
|
hotel_id UUID REFERENCES hotel_main(id),
|
|||
|
|
url TEXT NOT NULL,
|
|||
|
|
page_title TEXT,
|
|||
|
|
html TEXT, -- Сырой HTML
|
|||
|
|
status_code INTEGER,
|
|||
|
|
response_time_ms INTEGER,
|
|||
|
|
depth INTEGER, -- 0 = главная, 1 = внутренняя ссылка
|
|||
|
|
crawled_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
UNIQUE(hotel_id, url)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- Метаинформация о парсинге сайта
|
|||
|
|
CREATE TABLE IF NOT EXISTS hotel_website_meta (
|
|||
|
|
hotel_id UUID PRIMARY KEY REFERENCES hotel_main(id),
|
|||
|
|
domain TEXT,
|
|||
|
|
main_url TEXT,
|
|||
|
|
pages_crawled INTEGER DEFAULT 0,
|
|||
|
|
pages_failed INTEGER DEFAULT 0,
|
|||
|
|
total_size_bytes BIGINT DEFAULT 0,
|
|||
|
|
internal_links_found INTEGER,
|
|||
|
|
crawl_status TEXT, -- 'in_progress', 'completed', 'failed'
|
|||
|
|
crawl_started_at TIMESTAMP,
|
|||
|
|
crawl_finished_at TIMESTAMP,
|
|||
|
|
error_message TEXT,
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- Обработанный текст (после очистки, для векторизации)
|
|||
|
|
CREATE TABLE IF NOT EXISTS hotel_website_processed (
|
|||
|
|
id SERIAL PRIMARY KEY,
|
|||
|
|
raw_page_id INTEGER REFERENCES hotel_website_raw(id),
|
|||
|
|
hotel_id UUID REFERENCES hotel_main(id),
|
|||
|
|
url TEXT,
|
|||
|
|
cleaned_text TEXT, -- Очищенный текст
|
|||
|
|
extracted_data JSONB, -- Телефоны, email, ИНН, ОГРН и т.д.
|
|||
|
|
has_forms BOOLEAN,
|
|||
|
|
has_booking BOOLEAN,
|
|||
|
|
text_length INTEGER,
|
|||
|
|
processed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
-- Индексы
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_website_raw_hotel_id ON hotel_website_raw(hotel_id);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_website_raw_url ON hotel_website_raw(url);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_website_meta_status ON hotel_website_meta(crawl_status);
|
|||
|
|
CREATE INDEX IF NOT EXISTS idx_website_processed_hotel_id ON hotel_website_processed(hotel_id);
|
|||
|
|
|
|||
|
|
COMMENT ON TABLE hotel_website_raw IS 'Сырой HTML со страниц сайтов отелей (исходники)';
|
|||
|
|
COMMENT ON TABLE hotel_website_meta IS 'Метаинформация о краулинге сайтов';
|
|||
|
|
COMMENT ON TABLE hotel_website_processed IS 'Обработанный текст для векторизации';
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|