feat(market-implications): add transmission chain to implication cards (#2439)

Models the causal path from geopolitical event to price impact as a
2-4 node chain on each card. Each node has a label, impact_type, and
logic sentence. Nodes are tap/click-expandable inline.

- Proto: add TransmissionNode message + field 10 on MarketImplicationCard
- Seeder: prompt addition + VALID_IMPACT_TYPES validation (>=2 node gate)
- Handler: map transmission_chain snake_case -> transmissionChain camelCase
- Client: add normalizeCard() to handle both bootstrap (snake_case) and
  API (camelCase) paths; applied at both data entry points
- Renderer: renderChain() with arrow-separated nodes; delegated click
  handler collapses same node, replaces on different node click
- Tests: 4 cases covering snake/camel conversion, absent field default,
  handler backward-compat
This commit is contained in:
Elie Habib
2026-03-28 21:17:41 +04:00
committed by GitHub
parent e257502494
commit e43292b057
10 changed files with 254 additions and 9 deletions

File diff suppressed because one or more lines are too long