Add audience tabs, province/city filters, select-all ids, dynamic SMS tokens, and 50-sized create/send chunks. Co-authored-by: Cursor <cursoragent@cursor.com>
2.1 KiB
2.1 KiB
SMS Campaign People/Leads Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: SMS campaigns support people-only or leads-only audiences with full filters, select-all-ids, dynamic field tokens, and 50-sized create/send batches.
Architecture: Extend people/leads list filters + /ids endpoints; expand sms-campaigns create/add-recipients; personalize body via renderSmsText then tracking links; rebuild SmsCampaignsView with tabs, filters, and chunked create.
Tech Stack: NestJS/Prisma, Vue 3, @mento/shared, existing MESSAGE_AUTOMATION_FIELDS / renderSmsText.
Global Constraints
- One campaign = people XOR leads
- Select-all = all filter matches (confirm count)
- Batch size 50 for create chunks and send cron
- People province/city via company (+ addresses search)
- Dynamic tokens:
{نام}{شماره}{تاریخ}{عنوان}{شرکت} - Spec:
docs/superpowers/specs/2026-10-17-sms-campaign-people-leads-design.md
Task 1: Shared types
- Extend
CreateSmsCampaignRequestwith optionalleadIds; document XOR - Add
AddSmsCampaignRecipientsRequest,FilteredIdsResponse - Export constants if needed (
SMS_CAMPAIGN_CHUNK = 50)
Task 2: People filters + ids
PeopleService.list/listIds:province,cityon company; address contains- Controller query +
GET /people/idswith 50k cap
Task 3: Leads ids + region filter
- Ensure list supports
region; addGET /leads/ids
Task 4: SMS campaigns API
- Create with personIds XOR leadIds (max 50 first chunk; force draft if more planned via
queueNowdeferred to client) POST :id/recipients- Batch send 50 +
renderSmsTextbefore personalizeSmsBody
Task 5: Frontend SmsCampaignsView
- Tabs people/leads, filters, pagination, select-all via /ids
- Dynamic fields pill
- Chunked create then optional queue
Task 6: Verify
- shared build + api tsc/tests relevant; graphify update