feat: add leader research agent
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
-- Leader Research Agent performance fixture and query plan helper.
|
||||
-- Intended for a disposable local/test database after migrations have run.
|
||||
-- It seeds at least 100 candidates, 10k activity events, and 10k paper trades,
|
||||
-- then runs EXPLAIN on the hot list/detail paths.
|
||||
|
||||
SET @now_ms = UNIX_TIMESTAMP(CURRENT_TIMESTAMP(3)) * 1000;
|
||||
|
||||
WITH RECURSIVE seq(n) AS (
|
||||
SELECT 1
|
||||
UNION ALL
|
||||
SELECT n + 1 FROM seq WHERE n < 10000
|
||||
)
|
||||
INSERT IGNORE INTO leader_research_candidate (
|
||||
normalized_wallet,
|
||||
research_state,
|
||||
source,
|
||||
score,
|
||||
score_version,
|
||||
agent_owned,
|
||||
provenance,
|
||||
first_seen_at,
|
||||
last_source_seen_at,
|
||||
last_transition_at,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
SELECT
|
||||
CONCAT('0x', LPAD(HEX(n), 40, '0')),
|
||||
CASE WHEN n % 5 = 0 THEN 'TRIAL_READY' WHEN n % 3 = 0 THEN 'PAPER' ELSE 'CANDIDATE' END,
|
||||
'PERF_FIXTURE',
|
||||
60 + (n % 40),
|
||||
'research-copyability-v1',
|
||||
1,
|
||||
'AGENT_CREATED',
|
||||
@now_ms - 3600000,
|
||||
@now_ms - 60000,
|
||||
@now_ms - 60000,
|
||||
@now_ms,
|
||||
@now_ms
|
||||
FROM seq
|
||||
WHERE n <= 100;
|
||||
|
||||
WITH RECURSIVE seq(n) AS (
|
||||
SELECT 1
|
||||
UNION ALL
|
||||
SELECT n + 1 FROM seq WHERE n < 10000
|
||||
)
|
||||
INSERT IGNORE INTO leader_activity_event (
|
||||
source,
|
||||
source_event_id,
|
||||
stable_event_key,
|
||||
normalized_wallet,
|
||||
market_id,
|
||||
asset,
|
||||
side,
|
||||
price,
|
||||
size,
|
||||
amount,
|
||||
event_time,
|
||||
raw_payload_hash,
|
||||
payload_summary,
|
||||
usable_for_discovery,
|
||||
usable_for_paper,
|
||||
paper_processing_status,
|
||||
processing_attempts,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
SELECT
|
||||
'PERF_FIXTURE',
|
||||
CONCAT('perf-event-', n),
|
||||
CONCAT('perf-event-', n),
|
||||
CONCAT('0x', LPAD(HEX(1 + (n % 100)), 40, '0')),
|
||||
CONCAT('condition-', n % 200),
|
||||
CONCAT('asset-', n % 200),
|
||||
IF(n % 2 = 0, 'BUY', 'SELL'),
|
||||
0.45,
|
||||
10,
|
||||
4.5,
|
||||
@now_ms - (n * 1000),
|
||||
SHA2(CONCAT('perf-event-', n), 256),
|
||||
CONCAT('perf event ', n),
|
||||
1,
|
||||
1,
|
||||
'NEW',
|
||||
0,
|
||||
@now_ms,
|
||||
@now_ms
|
||||
FROM seq;
|
||||
|
||||
WITH RECURSIVE seq(n) AS (
|
||||
SELECT 1
|
||||
UNION ALL
|
||||
SELECT n + 1 FROM seq WHERE n < 10000
|
||||
)
|
||||
INSERT IGNORE INTO leader_paper_session (
|
||||
id,
|
||||
candidate_id,
|
||||
status,
|
||||
started_at,
|
||||
trade_count,
|
||||
filtered_count,
|
||||
open_exposure,
|
||||
copyable_pnl,
|
||||
max_drawdown,
|
||||
unknown_valuation_exposure,
|
||||
confirmed_zero_exposure,
|
||||
filtered_ratio,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
SELECT
|
||||
n,
|
||||
1 + (n % 100),
|
||||
'ACTIVE',
|
||||
@now_ms - 604800000,
|
||||
100,
|
||||
5,
|
||||
100,
|
||||
10,
|
||||
-3,
|
||||
5,
|
||||
0,
|
||||
0.0476,
|
||||
@now_ms,
|
||||
@now_ms
|
||||
FROM seq
|
||||
WHERE n <= 100;
|
||||
|
||||
WITH RECURSIVE seq(n) AS (
|
||||
SELECT 1
|
||||
UNION ALL
|
||||
SELECT n + 1 FROM seq WHERE n < 10000
|
||||
)
|
||||
INSERT IGNORE INTO leader_paper_trade (
|
||||
session_id,
|
||||
candidate_id,
|
||||
leader_trade_id,
|
||||
market_id,
|
||||
side,
|
||||
leader_price,
|
||||
leader_size,
|
||||
simulated_price,
|
||||
simulated_size,
|
||||
simulated_amount,
|
||||
fill_assumption,
|
||||
quote_confidence,
|
||||
quote_source,
|
||||
quote_timestamp,
|
||||
filter_result,
|
||||
valuation_status,
|
||||
event_time,
|
||||
created_at
|
||||
)
|
||||
SELECT
|
||||
1 + (n % 100),
|
||||
1 + (n % 100),
|
||||
CONCAT('perf-trade-', n),
|
||||
CONCAT('condition-', n % 200),
|
||||
IF(n % 2 = 0, 'BUY', 'SELL'),
|
||||
0.45,
|
||||
10,
|
||||
0.45,
|
||||
2,
|
||||
1,
|
||||
'LEADER_PRICE',
|
||||
'MEDIUM',
|
||||
'perf',
|
||||
@now_ms,
|
||||
'PASSED',
|
||||
IF(n % 20 = 0, 'UNKNOWN', 'AVAILABLE'),
|
||||
@now_ms - (n * 1000),
|
||||
@now_ms
|
||||
FROM seq;
|
||||
|
||||
EXPLAIN SELECT * FROM leader_research_candidate WHERE research_state IN ('PAPER', 'TRIAL_READY') ORDER BY updated_at DESC LIMIT 50;
|
||||
EXPLAIN SELECT * FROM leader_activity_event WHERE paper_processing_status IN ('NEW', 'RETRYABLE') AND usable_for_paper = 1 ORDER BY event_time ASC LIMIT 200;
|
||||
EXPLAIN SELECT * FROM leader_paper_trade WHERE session_id = 1 ORDER BY event_time DESC LIMIT 100;
|
||||
EXPLAIN SELECT * FROM leader_research_event ORDER BY created_at DESC LIMIT 100;
|
||||
Reference in New Issue
Block a user