tighten backend regression coverage
Add targeted tests for rejection paths, settlement overrides, and key analytics flows, and align localization/research docs with the shipped contract.
This commit is contained in:
@@ -30,41 +30,18 @@
|
||||
| `feed.next_round_body` | Next round body |
|
||||
| `feed.watch_preview` | Watch preview CTA |
|
||||
| `feed.round_ready` | Round ready label |
|
||||
| `feed.title` | Feed title |
|
||||
| `feed.subtitle` | Feed subtitle |
|
||||
| `feed.hero_title` | Feed hero title |
|
||||
| `feed.hero_subtitle` | Feed hero subtitle |
|
||||
| `feed.lock_label` | Feed lock label |
|
||||
| `feed.odds_label` | Feed odds label |
|
||||
| `feed.cta` | Feed CTA |
|
||||
| `round.countdown_label` | Countdown label |
|
||||
| `round.locked_label` | Locked label |
|
||||
| `round.selection_prompt` | Selection prompt |
|
||||
| `round.selection_confirmed` | Selection accepted |
|
||||
| `round.selection_submitting` | Selection submitting |
|
||||
| `round.odds_label` | Odds label |
|
||||
| `round.title` | Round title |
|
||||
| `round.subtitle` | Round subtitle |
|
||||
| `round.video_placeholder` | Video placeholder |
|
||||
| `round.preview_label` | Preview label |
|
||||
| `round.primary_cta` | Round confirm CTA |
|
||||
| `round.home` | Home outcome label |
|
||||
| `round.away` | Away outcome label |
|
||||
| `reveal.title` | Reveal title |
|
||||
| `reveal.subtitle` | Reveal subtitle |
|
||||
| `reveal.status` | Reveal status |
|
||||
| `reveal.cta` | Reveal CTA |
|
||||
| `result.title` | Result title |
|
||||
| `result.selection_label` | Result selection label |
|
||||
| `result.outcome_label` | Result outcome label |
|
||||
| `result.win` | Winning result label |
|
||||
| `result.lose` | Losing result label |
|
||||
| `result.user_selection` | Result selection label |
|
||||
| `result.outcome` | Result outcome label |
|
||||
| `result.next_round` | Next round CTA |
|
||||
| `result.subtitle` | Result subtitle |
|
||||
| `result.selection_label` | Result selection label |
|
||||
| `result.outcome_label` | Result outcome label |
|
||||
| `result.win` | Winning result label |
|
||||
| `result.lose` | Losing result label |
|
||||
| `settings.title` | Settings title |
|
||||
| `settings.language` | Language setting |
|
||||
| `settings.haptics` | Haptics setting |
|
||||
@@ -73,3 +50,8 @@
|
||||
| `errors.network` | Network error copy |
|
||||
| `errors.playback` | Playback error copy |
|
||||
| `errors.session_expired` | Session expired copy |
|
||||
|
||||
## Validation
|
||||
|
||||
- English and Swedish bundles must contain the same keys
|
||||
- Empty values are not allowed
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# Research Export Path
|
||||
|
||||
## Goal
|
||||
|
||||
Export study data without adding JSONB or ad hoc blobs.
|
||||
|
||||
## Source Tables
|
||||
|
||||
- `sessions`
|
||||
- `experiment_assignments`
|
||||
- `bet_intents`
|
||||
- `settlements`
|
||||
- `analytics_events`
|
||||
- `analytics_event_attributes`
|
||||
|
||||
## Recommended Export Shape
|
||||
|
||||
- `session_id`
|
||||
- `user_id`
|
||||
- `experiment_variant`
|
||||
- `locale_code`
|
||||
- `event_name`
|
||||
- `occurred_at`
|
||||
- `attribute_key`
|
||||
- `attribute_value`
|
||||
|
||||
## Export Flow
|
||||
|
||||
1. Join relational tables into a flat study dataset.
|
||||
2. Filter by session, date range, or experiment variant.
|
||||
3. Write CSV for quick review or Parquet for downstream analysis.
|
||||
4. Keep the export job read-only and repeatable.
|
||||
|
||||
## Notes
|
||||
|
||||
- Use the server clock for ordering and latency calculations.
|
||||
- Prefer one row per analytics event with child attribute expansion.
|
||||
- Keep locale and variant fields in every export.
|
||||
Reference in New Issue
Block a user