domovoy_bot/scraper_gis/models.py

40 lines
1.6 KiB
Python

from datetime import datetime
from sqlalchemy import Column, Integer, String, DateTime, Text, Boolean, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
Base = declarative_base()
class Document(Base):
__tablename__ = 'documents'
id = Column(Integer, primary_key=True)
file_id = Column(String(255), unique=True)
title = Column(Text)
category = Column(String(100))
gis_upload_date = Column(DateTime)
scraped_at = Column(DateTime, default=datetime.utcnow)
file_path = Column(Text)
screenshot_path = Column(Text)
is_downloaded = Column(Boolean, default=False)
file_hash = Column(String(64))
contract_id = Column(Integer, ForeignKey('contracts.id'))
class Contract(Base):
__tablename__ = 'contracts'
id = Column(Integer, primary_key=True)
gis_id = Column(String(255), unique=True) # Внутренний ID договора в ГИС
name = Column(Text) # Название/номер договора
status = Column(String(50)) # Текущий статус обработки
found_at = Column(DateTime, default=datetime.utcnow)
processed_at = Column(DateTime, nullable=True)
screenshot_main = Column(Text) # Скриншот страницы договора
documents = relationship("Document", backref="contract")
class ScraperLog(Base):
__tablename__ = 'logs'
id = Column(Integer, primary_key=True)
timestamp = Column(DateTime, default=datetime.utcnow)
action = Column(String(255))
status = Column(String(50))
message = Column(Text)