Files
hotels/website_schema.sql

61 lines
2.4 KiB
MySQL
Raw Permalink Normal View History

-- Схема для хранения сырых данных с сайтов отелей
-- Сырой 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 'Обработанный текст для векторизации';