defmodule DaProductApp.Repo.Migrations.CreateRiskRuleHits do use Ecto.Migration def change do create table(:risk_rule_hits) do add :transaction_id, :bigint, null: false add :transaction_type, :string, null: false # 'QR' or 'POS' add :rule_id, references(:risk_rules, on_delete: :delete_all) add :merchant_id, :string add :category, :string # Cat A/B/C/D add :status, :string, default: "Hold" # 'Hold', 'Alert', 'Reviewed', 'Released', etc. add :triggered_at, :utc_datetime, null: false add :supervisor_id, :bigint add :action_taken, :string # 'Hold', 'Release', 'Request Docs', etc. add :action_at, :utc_datetime add :notes, :text add :metadata, :json # Additional context about the rule hit timestamps(type: :utc_datetime) end create index(:risk_rule_hits, [:transaction_id]) create index(:risk_rule_hits, [:transaction_type]) create index(:risk_rule_hits, [:rule_id]) create index(:risk_rule_hits, [:merchant_id]) create index(:risk_rule_hits, [:category]) create index(:risk_rule_hits, [:status]) create index(:risk_rule_hits, [:supervisor_id]) create index(:risk_rule_hits, [:triggered_at]) create unique_index(:risk_rule_hits, [:transaction_id, :rule_id, :transaction_type]) end end