feat(analytics): FRM Analytics (#4880)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
Co-authored-by: Abhitator216 <abhishek.kanojia@juspay.in>
Co-authored-by: Abhishek Kanojia <89402434+Abhitator216@users.noreply.github.com>
Co-authored-by: ivor-juspay <138492857+ivor-juspay@users.noreply.github.com>
Co-authored-by: Sampras Lopes <sampras.lopes@juspay.in>
Files to modify:


**clickhouse.rs**
  Add:
    - function: private::try_into
    - function: private::try_into
    - impl: impl TryInto<FrmFilterRow> for serde_json::Value

**core.rs**
  Modify existing code

**frm.rs**
  Add:
    - mod: pub::accumulator
    - mod: private::core
    - mod: pub::filters
    - mod: pub::metrics
    - mod: pub::types

**accumulator.rs**
  Add:
    - function: private::add_metrics_bucket
    - function: private::collect
    - function: private::add_metrics_bucket
    - function: private::collect
    - function: pub::collect
    - struct: pub::FrmMetricsAccumulator
    - struct: pub::TriggeredAttemptsAccumulator
    - struct: pub::BlockedRateAccumulator
    - trait: pub::FrmMetricAccumulator
    - impl: impl FrmMetricAccumulator for TriggeredAttemptsAccumulator
    - impl: impl FrmMetricAccumulator for BlockedRateAccumulator
    - impl: impl FrmMetricsAccumulator

**core.rs**
  Modify existing code

**filters.rs**
  Add:
    - function: pub::get_frm_filter_for_dimension
    - struct: pub::FrmFilterRow
    - trait: pub::FrmFilterAnalytics

**metrics.rs**
  Add:
    - function: private::load_metrics
    - struct: pub::FrmMetricRow
    - trait: pub::FrmMetricAnalytics
    - trait: pub::FrmMetric
    - impl: impl FrmMetric<T> for FrmMetrics
    - mod: private::frm_blocked_rate
    - mod: private::frm_triggered_attempts

**frm_blocked_rate.rs**
  Add:
    - function: private::load_metrics
    - struct: pub::FrmBlockedRate
    - impl: impl super::FrmMetric<T> for FrmBlockedRate

**frm_triggered_attempts.rs**
  Add:
    - function: private::load_metrics
    - struct: pub::FrmTriggeredAttempts
    - impl: impl super::FrmMetric<T> for FrmTriggeredAttempts

**types.rs**
  Add:
    - function: private::set_filter_clause
    - impl: impl QueryFilter<T> for FrmFilters

**lib.rs**
  Add:
    - function: pub::get_frm_metrics
    - mod: pub::frm

**query.rs**
  Modify existing code

**sqlx.rs**
  Add:
    - function: private::from_row
    - function: private::from_row
    - impl: impl super::frm::metrics::FrmMetricAnalytics for SqlxClient
    - impl: impl super::frm::filters::FrmFilterAnalytics for SqlxClient
    - impl: impl FromRow<'a, PgRow> for super::frm::metrics::FrmMetricRow
    - impl: impl FromRow<'a, PgRow> for super::frm::filters::FrmFilterRow

**types.rs**
  Add:
    - function: private::set_filter_clause
    - impl: impl QueryFilter<T> for FrmFilters

**utils.rs**
  Add:
    - function: pub::get_frm_dimensions
    - function: pub::get_frm_metrics_info

**analytics.rs**
  Add:
    - struct: pub::GetFrmMetricRequest
    - struct: pub::GetFrmFilterRequest
    - struct: pub::FrmFiltersResponse
    - struct: pub::FrmFilterValue
    - impl: impl ApiEventMetric for GetFrmMetricRequest
    - impl: impl ApiEventMetric for GetFrmFilterRequest
    - impl: impl ApiEventMetric for FrmFiltersResponse
    - impl: impl ApiEventMetric for FrmFilterValue
    - mod: pub::frm

**frm.rs**
  Add:
    - mod: pub::accumulator
    - mod: private::core
    - mod: pub::filters
    - mod: pub::metrics
    - mod: pub::types

**enums.rs**
  Add:
    - enum: pub::FraudCheckStatus
    - enum: pub::FrmTransactionType

**enums.rs**
  Add:
    - enum: pub::FraudCheckStatus
    - enum: pub::FrmTransactionType

**analytics.rs**
  Add:
    - struct: pub::GetFrmMetricRequest
    - struct: pub::GetFrmFilterRequest
    - struct: pub::FrmFiltersResponse
    - struct: pub::FrmFilterValue
    - impl: impl ApiEventMetric for GetFrmMetricRequest
    - impl: impl ApiEventMetric for GetFrmFilterRequest
    - impl: impl ApiEventMetric for FrmFiltersResponse
    - impl: impl ApiEventMetric for FrmFilterValue
    - mod: pub::frm

**db.rs**
  Modify existing code

**fraud_check.rs**
  Remove:
    - function: private::insert_fraud_check_response
    - function: private::update_fraud_check_response_with_attempt_id
    - function: private::find_fraud_check_by_payment_id
    - impl: impl FraudCheckInterface for super::KafkaStore

**kafka_store.rs**
  Modify existing code

**events.rs**
  Modify existing code

**kafka.rs**
  Add:
    - function: pub::log_fraud_check
    - mod: private::fraud_check
    - mod: private::fraud_check_event

**fraud_check.rs**
  Remove:
    - function: private::insert_fraud_check_response
    - function: private::update_fraud_check_response_with_attempt_id
    - function: private::find_fraud_check_by_payment_id
    - impl: impl FraudCheckInterface for super::KafkaStore

**fraud_check_event.rs**
  Add:
    - function: pub::from_storage
    - function: private::key
    - function: private::event_type
    - struct: pub::KafkaFraudCheckEvent
    - impl: impl KafkaFraudCheckEvent<'a>
    - impl: impl super::KafkaMessage for KafkaFraudCheckEvent<'a>