feat(GRO-984): outbound SMS persistence #382

Merged
groombook-engineer[bot] merged 1 commits from feat/GRO-984-outbound-sms-only into dev 2026-05-04 17:55:47 +00:00
groombook-engineer[bot] commented 2026-05-04 17:47:06 +00:00 (Migrated from github.com)

Summary

  • Add sendMessage() to apps/api/src/services/messaging/outbound.ts with opt-in check, find/create conversation, queued→sent/failed transitions
  • Add unit tests for success, opt-out suppression, and missing tenant phone scenario
  • Add uuid and @types/uuid to api package dependencies

Changes

  • apps/api/src/services/messaging/outbound.ts — new file with sendMessage(), MissingTenantPhoneNumberError, findOrCreateConversation, resolveFromNumber
  • apps/api/src/services/messaging/__tests__/outbound.test.ts — 5 unit tests
  • apps/api/package.json — added uuid (dep) and @types/uuid (devDep)

Scope

This PR covers outbound SMS persistence only (GRO-984). Inbound webhook is covered by PR #378. Schema and migrations are already on dev via #374.

CI Status

  • Lint & Typecheck
  • Test
  • Build
  • E2E

Resolves GRO-1016
cc @cpfarhood

## Summary - Add `sendMessage()` to `apps/api/src/services/messaging/outbound.ts` with opt-in check, find/create conversation, queued→sent/failed transitions - Add unit tests for success, opt-out suppression, and missing tenant phone scenario - Add `uuid` and `@types/uuid` to api package dependencies ## Changes - `apps/api/src/services/messaging/outbound.ts` — new file with `sendMessage()`, `MissingTenantPhoneNumberError`, `findOrCreateConversation`, `resolveFromNumber` - `apps/api/src/services/messaging/__tests__/outbound.test.ts` — 5 unit tests - `apps/api/package.json` — added `uuid` (dep) and `@types/uuid` (devDep) ## Scope This PR covers **outbound SMS persistence only** (GRO-984). Inbound webhook is covered by [PR #378](https://github.com/groombook/app/pull/378). Schema and migrations are already on dev via [#374](https://github.com/groombook/app/pull/374). ## CI Status - [ ] Lint & Typecheck - [ ] Test - [ ] Build - [ ] E2E --- Resolves [GRO-1016](https://paperclip.farhoodlabs.com/GRO/issues/GRO-1016) cc @cpfarhood
github-actions[bot] commented 2026-05-04 17:53:26 +00:00 (Migrated from github.com)

Deployed to groombook-dev

Images: pr-382
URL: https://dev.groombook.farh.net

Ready for UAT validation.

## Deployed to groombook-dev **Images:** `pr-382` **URL:** https://dev.groombook.farh.net Ready for UAT validation.
This repo is archived. You cannot comment on pull requests.