This commit is contained in:
2026-04-30 12:37:01 +02:00
parent 37d54887d6
commit b3b0e882b2
14 changed files with 1324 additions and 9 deletions

View File

@@ -108,6 +108,7 @@ pub struct KbTransactionResolutionService {
trade_aggregation_service: crate::KbTradeAggregationService,
wallet_holding_observation_service: crate::KbWalletHoldingObservationService,
pair_candle_aggregation_service: crate::KbPairCandleAggregationService,
pair_analytic_signal_service: crate::KbPairAnalyticSignalService,
resolved_signatures:
std::sync::Arc<tokio::sync::Mutex<std::collections::HashSet<std::string::String>>>,
}
@@ -131,6 +132,8 @@ impl KbTransactionResolutionService {
crate::KbWalletHoldingObservationService::new(database.clone());
let pair_candle_aggregation_service =
crate::KbPairCandleAggregationService::new(database.clone());
let pair_analytic_signal_service =
crate::KbPairAnalyticSignalService::new(database.clone());
Self {
http_pool,
persistence,
@@ -144,6 +147,7 @@ impl KbTransactionResolutionService {
trade_aggregation_service,
wallet_holding_observation_service,
pair_candle_aggregation_service,
pair_analytic_signal_service,
resolved_signatures: std::sync::Arc::new(tokio::sync::Mutex::new(
std::collections::HashSet::new(),
)),
@@ -388,11 +392,21 @@ impl KbTransactionResolutionService {
Err(error) => return Err(error),
};
let pair_candle_count = pair_candle_aggregations.len();
let pair_analytic_signals_result = self
.pair_analytic_signal_service
.record_transaction_by_signature(request.signature.as_str())
.await;
let pair_analytic_signals = match pair_analytic_signals_result {
Ok(pair_analytic_signals) => pair_analytic_signals,
Err(error) => return Err(error),
};
let pair_analytic_signal_count = pair_analytic_signals.len();
let payload = serde_json::json!({
"status": "resolved",
"signature": request.signature.clone(),
"triggerMethod": request.trigger_method.clone(),
"sourceEndpointName": request.source_endpoint_name.clone(),
"triggerPayload": request.trigger_payload.clone(),
"slotHint": request.slot_hint,
"projectedTransactionId": projected_transaction_id,
"decodedEventCount": decoded_event_count,
@@ -403,7 +417,7 @@ impl KbTransactionResolutionService {
"walletHoldingCount": wallet_holding_count,
"tradeEventCount": trade_event_count,
"pairCandleCount": pair_candle_count,
"triggerPayload": request.trigger_payload.clone(),
"pairAnalyticSignalCount": pair_analytic_signal_count,
"transaction": transaction_value
});
let observation_id_result = self