app.bettersight.io/backend/tests/services
JasonFraser 965028e6c2 Add Excel export, rewrite Sheet pull to transposed layout, enrich battlecards
- SyncToSheet.vue: add "Download Excel" export alongside Copy rows,
  using exceljs (dynamically imported to avoid bundling ~940KB into
  AnalysePage) instead of xlsx (unpatched high-severity CVEs)
- appscript/Sync.gs: rewrite the Sheet-pull layout from column-per-field/
  row-per-competitor to the transposed layout (fields down column A,
  one column per competitor) — matches the dashboard's Copy rows/Excel
  export and the real legacy client reference sheet, which the old
  layout was never actually reconciled against. Row detection is now
  label-based and self-bootstraps a blank template on first pull.
- CLAUDE.md: correct §15 to document the transposed layout instead of
  the stale column-per-field description
- battlecard_service.py: replace two hardcoded placeholder strings
  (positioning_summary, recent_changes) with real computed data —
  actual price_history-derived recent changes, and richer product
  summaries (service levels, target audience, activities). Raise
  BATTLECARD_PRODUCT_LIMIT 10->50 and loosen prompt word caps so the
  richer input isn't compressed away
- BattlecardCard.vue: render pricing_observation, generated but never
  displayed before
- pb_migrations/009: fix battlecards.generated_at to stamp on update,
  not just create, so regenerated battlecards show an accurate
  "Updated" timestamp

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-05 23:08:06 -04:00
..
__init__.py Phase 1: data foundation — schema, repositories, services, routes, jobs 2026-07-01 12:21:04 -04:00
test_alert_service.py Phase 5 + 6: automation, content-hash change detection, semantic trip matching 2026-07-02 11:23:23 -04:00
test_analysis_service.py Add per-seat trip watchlist, fix cross-URL caching bug, and improve results table UX 2026-07-04 22:03:54 -04:00
test_auth_service.py Add per-seat trip watchlist, fix cross-URL caching bug, and improve results table UX 2026-07-04 22:03:54 -04:00
test_battlecard_service.py Add Excel export, rewrite Sheet pull to transposed layout, enrich battlecards 2026-07-05 23:08:06 -04:00
test_billing_service.py Fix critical scrape-targeting bug and harden proxy, matching, and dashboard reliability 2026-07-04 17:33:05 -04:00
test_brief_service.py Phase 1: data foundation — schema, repositories, services, routes, jobs 2026-07-01 12:21:04 -04:00
test_email_service.py Fill in missing Resend templates + Freescout support links 2026-07-01 13:32:56 -04:00
test_embedding_service.py Add per-seat trip watchlist, fix cross-URL caching bug, and improve results table UX 2026-07-04 22:03:54 -04:00
test_jobs.py Add per-seat trip watchlist, fix cross-URL caching bug, and improve results table UX 2026-07-04 22:03:54 -04:00
test_licence_service.py Phase 1: data foundation — schema, repositories, services, routes, jobs 2026-07-01 12:21:04 -04:00
test_onboarding_service.py Phase 1: data foundation — schema, repositories, services, routes, jobs 2026-07-01 12:21:04 -04:00
test_retention_service.py Fix critical scrape-targeting bug and harden proxy, matching, and dashboard reliability 2026-07-04 17:33:05 -04:00
test_trip_finder_service.py Add per-seat trip watchlist, fix cross-URL caching bug, and improve results table UX 2026-07-04 22:03:54 -04:00
test_url_utils.py Fix critical scrape-targeting bug and harden proxy, matching, and dashboard reliability 2026-07-04 17:33:05 -04:00
test_watchlist_service.py Add per-seat trip watchlist, fix cross-URL caching bug, and improve results table UX 2026-07-04 22:03:54 -04:00