40-clients/ucepsa/edge-oee-demo/ops/validate_context_daily_governance_v0312.sql
2026-07-20 18:08:32 +02:00

182 lines
4.4 KiB
SQL

\pset pager off
\echo '=== 1. Objetos v0.3.12 ==='
SELECT
to_regclass(
'mv_loss_intelligence.context_governance_daily_policies'
) AS policy_table,
to_regclass(
'mv_loss_intelligence.context_governance_agenda_snapshots'
) AS snapshots_table,
to_regclass(
'mv_loss_intelligence.context_governance_agenda_snapshot_items'
) AS snapshot_items_table,
to_regclass(
'mv_reports_ucepsa_prod.li_context_governance_decision_evidence_pack_v1'
) AS evidence_pack_view,
to_regclass(
'mv_reports_ucepsa_prod.li_context_governance_daily_agenda_v1'
) AS agenda_view,
to_regclass(
'mv_reports_ucepsa_prod.li_context_governance_daily_summary_v1'
) AS summary_view,
to_regclass(
'mv_reports_ucepsa_prod.li_context_governance_agenda_snapshot_history_v1'
) AS snapshot_history_view;
\echo '=== 2. Política diaria ==='
SELECT
timezone_name,
attention_after_hours,
overdue_after_hours,
agenda_limit,
active
FROM
mv_loss_intelligence
.context_governance_daily_policies
WHERE tenant = 'ucepsa'
AND site = 'ucepsa_onpremise'
AND policy_code =
'CONTEXT_DAILY_GOVERNANCE_V1';
\echo '=== 3. Una fila de agenda por decisión pendiente ==='
SELECT
(
SELECT COUNT(*)
FROM
mv_reports_ucepsa_prod
.li_context_governance_daily_agenda_v1
) AS agenda_rows,
(
SELECT COUNT(*)
FROM
mv_reports_ucepsa_prod
.li_context_decision_group_backlog_v1
) AS decision_backlog_rows;
\echo '=== 4. Decisiones duplicadas en agenda ==='
SELECT COUNT(*) AS duplicated_agenda_decisions
FROM (
SELECT
decision_group_key,
COUNT(*) AS n
FROM
mv_reports_ucepsa_prod
.li_context_governance_daily_agenda_v1
GROUP BY decision_group_key
HAVING COUNT(*) > 1
) duplicated;
\echo '=== 5. Ranking continuo ==='
WITH ranked AS (
SELECT
agenda_rank,
ROW_NUMBER() OVER (
ORDER BY agenda_rank
) AS expected_rank
FROM
mv_reports_ucepsa_prod
.li_context_governance_daily_agenda_v1
)
SELECT COUNT(*) AS agenda_rank_mismatches
FROM ranked
WHERE agenda_rank <>
expected_rank;
\echo '=== 6. Evidencia de las tres decisiones actuales ==='
SELECT
decision_group_key,
machine_id,
linked_root_case_count,
linked_episode_count,
root_case_ids,
episode_ids,
production_orders,
odoo_workorder_ids,
operator_names,
review_owner,
review_status
FROM
mv_reports_ucepsa_prod
.li_context_governance_decision_evidence_pack_v1
WHERE decision_group_key IN (
'DECISION:UNCONFIRMED_ACTIVITY:CORT-00:20260720:1',
'DECISION:ODOO_ORDER_START_CONFLICT:CORT-00:20260720:5',
'DECISION:UNCONFIRMED_ACTIVITY:CORT-02:20260720:7'
)
ORDER BY decision_group_key;
\echo '=== 7. Resumen diario ==='
SELECT *
FROM
mv_reports_ucepsa_prod
.li_context_governance_daily_summary_v1;
\echo '=== 8. Tramos de atención válidos ==='
SELECT COUNT(*) AS invalid_attention_status_rows
FROM
mv_reports_ucepsa_prod
.li_context_governance_daily_agenda_v1
WHERE attention_status NOT IN (
'RECENT',
'ATTENTION',
'OVERDUE'
)
OR pending_age_hours < 0
OR review_due_at <
first_seen_at;
\echo '=== 9. Snapshots coherentes ==='
SELECT COUNT(*) AS snapshot_item_count_mismatches
FROM
mv_loss_intelligence
.context_governance_agenda_snapshots s
WHERE s.item_count <>
(
SELECT COUNT(*)
FROM
mv_loss_intelligence
.context_governance_agenda_snapshot_items i
WHERE i.snapshot_id =
s.snapshot_id
);
\echo '=== 10. Nada oficial ==='
SELECT
(
SELECT COUNT(*)
FROM
mv_loss_intelligence
.context_governance_agenda_snapshots
WHERE official_eligible
) AS official_snapshot_rows,
(
SELECT COUNT(*)
FROM
mv_loss_intelligence
.context_governance_agenda_snapshot_items
WHERE official_eligible
) AS official_snapshot_item_rows,
(
SELECT COUNT(*)
FROM
mv_reports_ucepsa_prod
.li_context_governance_daily_summary_v1
WHERE official_eligible
) AS official_summary_rows,
(
SELECT COUNT(*)
FROM
mv_reports_ucepsa_prod.li_operator_stop_queue_v2
) AS official_operator_queue_rows;