Skip to content

Add call logging dashboard#1

Merged
creativeux merged 6 commits into
mainfrom
feature/call-logging
Mar 5, 2026
Merged

Add call logging dashboard#1
creativeux merged 6 commits into
mainfrom
feature/call-logging

Conversation

@creativeux

@creativeux creativeux commented Mar 5, 2026

Copy link
Copy Markdown
Owner

Summary

  • Fetch CDR (Call Detail Records) from VoIP.ms API and display as a parent-friendly call log
  • Full backend implementation: models, client (getCDR), repository (mapping + stats), service (concurrent fetch + merge), router (GET /api/calls with validation)
  • Full frontend implementation: useCallLog hook, CallLog page with stats cards, All/Missed filter tabs, formatted phone numbers, relative timestamps, disposition badges, date range picker, client-side pagination
  • Added react-router-dom with nav bar and /calls route
  • 29 backend tests + 9 frontend tests, all passing
  • Added quality-gate standard enforcing lint/format/test checks before task completion

Test plan

  • Backend: backend/.venv/bin/pytest backend/tests/ -q — 34 passed
  • Backend lint: backend/.venv/bin/ruff check backend/ — all passed
  • Backend format: backend/.venv/bin/ruff format --check backend/ — all passed
  • Frontend: cd frontend && pnpm test — 11 passed
  • Frontend lint: eslint — no issues
  • Frontend format: prettier — all passed
  • Manual: verify call log page renders with live VoIP.ms credentials
  • Manual: verify date picker filters and Missed tab work correctly

🤖 Generated with Claude Code

@creativeux creativeux self-assigned this Mar 5, 2026
@creativeux creativeux changed the title Feature/call logging Add call logging dashboard Mar 5, 2026
@creativeux creativeux merged commit 57d87d3 into main Mar 5, 2026
2 checks passed
@creativeux creativeux deleted the feature/call-logging branch March 5, 2026 04:24
creativeux added a commit that referenced this pull request Jul 1, 2026
Address PR #28 review nit #1: TestFetchLineDiagnostics only asserted
degradation for the registration sub-call. Add the cases that moved out of
the old service tests when orchestration relocated to the repository:
sub-account-fail → None, did-routing-fail → None, servers-info-fail → empty
POP map (IDs unresolved), and all-four-fail → fully degraded. None raise.

Also record the two non-blocking review follow-ups (dedupe CDR error
classification onto classify_provider_error; diagnostics-route defense-in-depth)
in the rollout trace for a later wave.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
creativeux added a commit that referenced this pull request Jul 1, 2026
Address PR #29 review should-fix #1: the empty-accounts read-back path
collapsed two distinct RemediationResult.detail strings into one, emitting
"...max_expiry is still  after update" (double space) instead of the original
"...could not retrieve sub-account after update" — an observable /api change.

- MaxExpiryOutcome.actual is now str | None (None = read-back returned no
  account); the service maps None → "could not retrieve sub-account after
  update", a value mismatch → "max_expiry is still {actual} after update".
- Restore the service-level empty-verify detail assertion (review #2) and fix
  the repo test to assert actual is None.
- Nit: restore exc_info=True on the router's unreachable/upstream remediation
  log lines (dropped stack context).

Full suite 708 passed; ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant