feat: Robot ecosystem v1.2.6 - Google Search RAG & Master-Merge logic stabilized

This commit is contained in:
2026-02-17 22:44:57 +00:00
parent 2def6b2201
commit b11b9bce87
25 changed files with 3192 additions and 789 deletions

View File

@@ -1,4 +1,4 @@
from sqlalchemy import Column, Integer, String, JSON, UniqueConstraint, text, Boolean, DateTime, ForeignKey, Numeric
from sqlalchemy import Column, Integer, String, JSON, UniqueConstraint, text, Boolean, DateTime, ForeignKey, Numeric, Index
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.db.base_class import Base
@@ -41,10 +41,11 @@ class ModelFeatureMap(Base):
value = Column(String(100))
class VehicleModelDefinition(Base):
"""MDM Master rekordok"""
"""MDM Master rekordok - Kibővítve Deduplikációs és Évjárat mezőkkel (v1.2.5)"""
__tablename__ = "vehicle_model_definitions"
__table_args__ = (
UniqueConstraint('make', 'technical_code', 'vehicle_type', name='uix_make_tech_type'),
Index('idx_vmd_lookup', 'make', 'technical_code'),
{"schema": "data"}
)
@@ -58,28 +59,46 @@ class VehicleModelDefinition(Base):
vehicle_type_id = Column(Integer, ForeignKey("data.vehicle_types.id"))
vehicle_class = Column(String(50))
# --- LOGISZTIKAI ÉS TECHNIKAI FIX OSZLOPOK (v1.9) ---
# --- ÚJ MEZŐK AZ INTELLIGENS ÖSSZEFÉSÜLÉSHEZ ---
# Ha ez a rekord egy duplikátum, itt tároljuk, melyik az eredeti (Master) rekord
parent_id = Column(Integer, ForeignKey("data.vehicle_model_definitions.id"), nullable=True)
# Gyártási intervallum meghatározása
year_from = Column(Integer, nullable=True, index=True)
year_to = Column(Integer, nullable=True, index=True)
# Alternatív elnevezések kereshetőséghez (pl. ["Tracer 9", "MT-09 Tracer"])
synonyms = Column(JSON, server_default=text("'[]'::jsonb"))
# -----------------------------------------------
# --- LOGISZTIKAI ÉS TECHNIKAI FIX OSZLOPOK ---
engine_capacity = Column(Integer, index=True)
power_kw = Column(Integer, index=True)
max_weight_kg = Column(Integer, index=True) # Össztömeg
max_weight_kg = Column(Integer, index=True)
axle_count = Column(Integer) # Tengelyek száma (Teher/Busz)
payload_capacity_kg = Column(Integer) # Teherbírás
cargo_volume_m3 = Column(Numeric(10, 2)) # Raktér térfogat
cargo_length_mm = Column(Integer) # Raktér méretek
axle_count = Column(Integer)
payload_capacity_kg = Column(Integer)
cargo_volume_m3 = Column(Numeric(10, 2))
cargo_length_mm = Column(Integer)
cargo_width_mm = Column(Integer)
cargo_height_mm = Column(Integer)
# --------------------------------------------------
# ----------------------------------------------
specifications = Column(JSON, server_default=text("'{}'::jsonb"))
features_json = Column(JSON, server_default=text("'{}'::jsonb")) # Összesített gyorseléréshez
features_json = Column(JSON, server_default=text("'{}'::jsonb"))
status = Column(String(20), server_default="unverified")
status = Column(String(20), server_default="unverified") # unverified, ai_enriched, duplicate, manual_check
is_master = Column(Boolean, default=False)
source = Column(String(50))
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
# Kapcsolatok
v_type_rel = relationship("VehicleType", back_populates="definitions")
# Önmagára hivatkozó kapcsolat a duplikációk kezeléséhez
master_record = relationship("VehicleModelDefinition", remote_side=[id], backref="merged_variants")
# Meglévő kapcsolatok megtartása
variants = relationship("AssetCatalog", back_populates="master_definition")