feat(scoring): composite recency decay and severity weights persisted in DB [FASE-5.1]

This commit is contained in:
2026-05-18 15:07:12 +02:00
parent 2ee59d4e18
commit 05b221a22d
13 changed files with 588 additions and 154 deletions

View File

@@ -10,7 +10,7 @@ from sqlalchemy import (
Column, String, Float, Integer, DateTime,
ForeignKey, Index, func,
)
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.dialects.postgresql import JSONB, UUID
from sqlalchemy.orm import relationship
from app.database import Base
@@ -30,6 +30,11 @@ class CoverageSnapshot(Base):
not_covered_count = Column(Integer, nullable=False)
in_progress_count = Column(Integer, nullable=False)
not_evaluated_count = Column(Integer, nullable=False)
coverage_percentage = Column(Float, nullable=False, default=0.0)
by_tactic = Column(JSONB, nullable=False, default=dict)
by_status = Column(JSONB, nullable=False, default=dict)
stale_count = Column(Integer, nullable=False, default=0)
never_tested_count = Column(Integer, nullable=False, default=0)
created_by = Column(
UUID(as_uuid=True),
ForeignKey("users.id", ondelete="SET NULL"),