fix: competitor lookup uses ticker join instead of UUID comparison
This commit is contained in:
@@ -58,10 +58,13 @@ class CompetitiveSignalRecord:
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
_COMPETITOR_LOOKUP_QUERY = """
|
||||
SELECT company_a_id, company_b_id, strength
|
||||
FROM competitor_relationships
|
||||
WHERE (company_a_id = $1 OR company_b_id = $1)
|
||||
AND active = TRUE
|
||||
SELECT cr.company_a_id, cr.company_b_id, cr.strength,
|
||||
ca.ticker AS ticker_a, cb.ticker AS ticker_b
|
||||
FROM competitor_relationships cr
|
||||
JOIN companies ca ON ca.id = cr.company_a_id
|
||||
JOIN companies cb ON cb.id = cr.company_b_id
|
||||
WHERE (ca.ticker = $1 OR cb.ticker = $1)
|
||||
AND cr.active = TRUE
|
||||
"""
|
||||
|
||||
_INSERT_SIGNAL_QUERY = """
|
||||
@@ -117,12 +120,12 @@ async def propagate_signals(
|
||||
|
||||
# Step 2: For each competitor, query cross-company patterns
|
||||
for row in rows:
|
||||
company_a = str(row["company_a_id"])
|
||||
company_b = str(row["company_b_id"])
|
||||
ticker_a = row["ticker_a"]
|
||||
ticker_b = row["ticker_b"]
|
||||
rel_strength = float(row["strength"])
|
||||
|
||||
# Determine the competitor ticker (the other side of the relationship)
|
||||
competitor_ticker = company_b if company_a == ticker else company_a
|
||||
competitor_ticker = ticker_b if ticker_a == ticker else ticker_a
|
||||
|
||||
# Threshold gating (Req 4.5)
|
||||
if rel_strength < cfg.propagation_strength_threshold:
|
||||
|
||||
Reference in New Issue
Block a user