CREATE TABLE IF NOT EXISTS metricas_por_contraparte_anuales (
  id                uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  contribuyente_id  uuid NOT NULL REFERENCES contribuyentes(entidad_id) ON DELETE CASCADE,
  anio              smallint NOT NULL,
  rfc_contraparte   varchar(13) NOT NULL,
  nombre_contraparte text,
  tipo              char(1),
  subtotal          numeric(18,2),
  total             numeric(18,2),
  cfdis_count       int,
  concentracion_pct numeric(5,2),
  computed_at       timestamptz DEFAULT now(),
  UNIQUE (contribuyente_id, anio, rfc_contraparte, tipo)
);
CREATE INDEX IF NOT EXISTS ix_metricas_contraparte_top ON metricas_por_contraparte_anuales(contribuyente_id, anio, tipo, total DESC);

INSERT INTO tenant_migrations (scope, version, name)
VALUES ('vertical-contable', 16, '016_metricas_por_contraparte_anuales')
ON CONFLICT (scope, version) DO NOTHING;
