|
|
|
|
@@ -14,7 +14,6 @@ import type { DemoPipeline2BackfillPayload } from "./bindings/DemoPipeline2Backf
|
|
|
|
|
import type { DemoPipeline2PairCandlesRequest } from "./bindings/DemoPipeline2PairCandlesRequest.ts";
|
|
|
|
|
import type { DemoPipeline2PairCandlesPayload } from "./bindings/DemoPipeline2PairCandlesPayload.ts";
|
|
|
|
|
import type { DemoPipeline2LocalDiagnosticsPayload } from "./bindings/DemoPipeline2LocalDiagnosticsPayload.ts";
|
|
|
|
|
import type { DemoPipeline2LocalValidationRequest } from "./bindings/DemoPipeline2LocalValidationRequest.ts";
|
|
|
|
|
import type { DemoPipeline2LocalValidationPayload } from "./bindings/DemoPipeline2LocalValidationPayload.ts";
|
|
|
|
|
import type { DemoPipeline2ProgramInstructionDiscriminatorSummaryRequest } from "./bindings/DemoPipeline2ProgramInstructionDiscriminatorSummaryRequest.ts";
|
|
|
|
|
import type { DemoPipeline2ProgramInstructionDiscriminatorSummaryPayload } from "./bindings/DemoPipeline2ProgramInstructionDiscriminatorSummaryPayload.ts";
|
|
|
|
|
@@ -52,13 +51,18 @@ interface LocalPipelineReplayResult {
|
|
|
|
|
decodeErrorCount: number;
|
|
|
|
|
detectErrorCount: number;
|
|
|
|
|
tradeAggregationErrorCount: number;
|
|
|
|
|
nonTradeMaterializationErrorCount: number;
|
|
|
|
|
pairCandleErrorCount: number;
|
|
|
|
|
analyticSignalErrorCount: number;
|
|
|
|
|
decodedEventCount: number;
|
|
|
|
|
detectionCount: number;
|
|
|
|
|
tradeEventCount: number;
|
|
|
|
|
liquidityEventCount: number;
|
|
|
|
|
poolLifecycleEventCount: number;
|
|
|
|
|
pairCandleUpsertCount: number;
|
|
|
|
|
analyticSignalUpsertCount: number;
|
|
|
|
|
transactionClassificationCount: number;
|
|
|
|
|
transactionClassificationErrorCount: number;
|
|
|
|
|
tokenMetadataUpdatedCount: number;
|
|
|
|
|
pairSymbolUpdatedCount: number;
|
|
|
|
|
resetMarketMaterializationDeletedCount: number;
|
|
|
|
|
@@ -358,7 +362,6 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
|
const replayMetadataLimitInput = document.querySelector<HTMLInputElement>("#demoPipeline2ReplayMetadataLimitInput");
|
|
|
|
|
const replayLocalPipelineButton = document.querySelector<HTMLButtonElement>("#demoPipeline2ReplayLocalPipelineButton");
|
|
|
|
|
const diagnoseLocalPipelineButton = document.querySelector<HTMLButtonElement>("#demoPipeline2DiagnoseLocalPipelineButton");
|
|
|
|
|
const validationProfileSelect = document.querySelector<HTMLSelectElement>("#demoPipeline2ValidationProfileSelect");
|
|
|
|
|
const validateLocalPipelineButton = document.querySelector<HTMLButtonElement>("#demoPipeline2ValidateLocalPipelineButton");
|
|
|
|
|
|
|
|
|
|
const discriminatorProgramIdInput = document.querySelector<HTMLInputElement>("#demoPipeline2DiscriminatorProgramIdInput");
|
|
|
|
|
@@ -405,7 +408,6 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
|
!replayMetadataLimitInput ||
|
|
|
|
|
!replayLocalPipelineButton ||
|
|
|
|
|
!diagnoseLocalPipelineButton ||
|
|
|
|
|
!validationProfileSelect ||
|
|
|
|
|
!validateLocalPipelineButton ||
|
|
|
|
|
!discriminatorProgramIdInput ||
|
|
|
|
|
!discriminatorLimitInput ||
|
|
|
|
|
@@ -618,7 +620,7 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
|
|
|
|
|
|
appendLogLine(
|
|
|
|
|
logTextarea,
|
|
|
|
|
`[ui] local pipeline replay completed: ${result.replayedTransactionCount.toString()} replayed, ${result.tradeEventCount.toString()} trades, ${result.pairCandleUpsertCount.toString()} candle upserts, resetDeleted='${result.resetMarketMaterializationDeletedCount.toString()}'`,
|
|
|
|
|
`[ui] local pipeline replay completed: ${result.replayedTransactionCount.toString()} replayed, ${result.tradeEventCount.toString()} trades, ${result.liquidityEventCount.toString()} liquidity, ${result.poolLifecycleEventCount.toString()} lifecycle, ${result.pairCandleUpsertCount.toString()} candle upserts, resetDeleted='${result.resetMarketMaterializationDeletedCount.toString()}'`,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
await refreshCatalog();
|
|
|
|
|
@@ -641,7 +643,7 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
|
|
|
|
|
|
appendLogLine(
|
|
|
|
|
logTextarea,
|
|
|
|
|
`[ui] local pipeline diagnostics completed: ${payload.summary.decodedEventCount.toString()} decoded, ${payload.summary.tradeEventCount.toString()} trades, ${payload.summary.pairCandleCount.toString()} candles, actionableMissing='${payload.summary.actionableMissingTradeEventCount.toString()}', nonActionablePairs='${payload.summary.nonActionablePairCount.toString()}', blocking='${payload.summary.blockingIssueCount.toString()}', nonTradeUseful='${payload.summary.decodedNonTradeUsefulEventCount.toString()}', nonActionableTrade='${payload.summary.decodedNonActionableTradeEventCount.toString()}', unknownEvents='${payload.summary.decodedUnknownEventCount.toString()}'`,
|
|
|
|
|
`[ui] local pipeline diagnostics completed: ${payload.summary.decodedEventCount.toString()} decoded, ${payload.summary.tradeEventCount.toString()} trades, ${payload.summary.pairCandleCount.toString()} candles, actionableMissing='${payload.summary.actionableMissingTradeEventCount.toString()}', nonActionablePairs='${payload.summary.nonActionablePairCount.toString()}', blocking='${payload.summary.blockingIssueCount.toString()}'`,
|
|
|
|
|
);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
appendLogLine(logTextarea, `[ui] local pipeline diagnostics error: ${String(error)}`);
|
|
|
|
|
@@ -651,16 +653,11 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
validateLocalPipelineButton.addEventListener("click", async () => {
|
|
|
|
|
const request: DemoPipeline2LocalValidationRequest = {
|
|
|
|
|
profileCode: validationProfileSelect.value,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
appendLogLine(logTextarea, `[ui] validating local pipeline with ${request.profileCode} profile`);
|
|
|
|
|
appendLogLine(logTextarea, "[ui] validating local pipeline");
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const payload = await invoke<DemoPipeline2LocalValidationPayload>(
|
|
|
|
|
"demo_pipeline2_validate_local_pipeline",
|
|
|
|
|
{ request },
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
localValidationTextarea.value = payload.validationJson;
|
|
|
|
|
@@ -668,7 +665,7 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
|
|
|
|
|
|
appendLogLine(
|
|
|
|
|
logTextarea,
|
|
|
|
|
`[ui] local pipeline validation completed: profile='${payload.run.validationProfileCode}' passed='${payload.run.validationPassed ? "yes" : "no"}' blocking='${payload.run.blockingIssueCount.toString()}' warnings='${payload.run.warningCount.toString()}' dexMatrix='${payload.run.report.dexSupportMatrixEntryCount.toString()}' nonTradeUseful='${payload.run.report.decodedNonTradeUsefulEventCount.toString()}' nonActionableTrade='${payload.run.report.decodedNonActionableTradeEventCount.toString()}' unknownEvents='${payload.run.report.decodedUnknownEventCount.toString()}'`,
|
|
|
|
|
`[ui] local pipeline validation completed: profile='${payload.run.validationProfileCode}' passed='${payload.run.validationPassed ? "yes" : "no"}' blocking='${payload.run.blockingIssueCount.toString()}' warnings='${payload.run.warningCount.toString()}'`,
|
|
|
|
|
);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
appendLogLine(logTextarea, `[ui] local pipeline validation error: ${String(error)}`);
|
|
|
|
|
|