baodev0 and Claude Opus 5.5
40bf6b54f9
feat(admin): star/tags marks, service product-type filter, campaign bulk actions, SMTP test
...
- Star (is_starred) and colored tags for services, customers, orders, invoices:
Markable trait, tags/taggables tables, PATCH administrator/marks/{type}/{key},
tag CRUD, list filters starred / tag_ids[]
- GET administrator/services accepts product_type (falls back to product type
for legacy rows without services.type)
- Mail campaigns: bulk cancel / retry failed / delete; cancelled campaigns are
skipped by SendMailCampaignRecipient
- POST administrator/settings/test-smtp sends a test email through the saved
mail transport
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 21:53:41 +07:00
..
2026-10-15 21:53:41 +07:00
2026-05-11 11:09:55 +07:00
2026-09-28 08:26:29 +07:00
2026-05-16 20:01:52 +07:00
2026-05-16 20:01:52 +07:00
2026-02-06 20:52:59 +07:00
2026-10-15 21:53:41 +07:00
2026-10-13 13:23:33 +07:00
2026-05-16 20:01:52 +07:00
2026-10-11 09:56:18 +07:00
2026-09-28 08:26:29 +07:00
2026-05-16 20:01:52 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-10-11 23:07:51 +07:00
2025-07-24 16:18:27 +07:00
2026-08-22 17:30:55 +07:00
2025-07-24 16:18:27 +07:00
2026-02-12 17:23:01 +07:00
2026-10-15 21:53:41 +07:00
2026-10-15 19:58:36 +07:00
2026-09-27 11:42:40 +07:00
2026-10-15 19:58:36 +07:00
2026-09-28 08:26:29 +07:00
2026-10-15 19:58:36 +07:00
2025-07-24 16:18:27 +07:00
2026-10-11 09:56:18 +07:00
2026-10-15 21:53:41 +07:00
2025-07-24 16:18:27 +07:00
2026-09-28 08:26:29 +07:00
2026-07-21 21:37:28 +07:00
2026-09-28 08:26:29 +07:00
2026-09-09 16:56:22 +07:00
2025-07-24 16:18:27 +07:00
2026-07-21 21:37:28 +07:00
2026-09-28 08:26:29 +07:00
2026-08-06 17:24:01 +07:00
2026-08-06 17:24:01 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-07-21 21:37:28 +07:00
2026-05-16 20:01:52 +07:00
2025-07-24 16:18:27 +07:00
2026-09-28 08:26:29 +07:00
2026-07-25 11:05:34 +07:00
2026-10-13 16:03:18 +07:00
2026-10-15 21:53:41 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-10-13 13:23:33 +07:00
2026-05-25 15:39:42 +07:00
2026-05-25 15:39:42 +07:00
2026-10-11 23:07:51 +07:00
2026-09-28 08:26:29 +07:00
2026-02-06 16:18:15 +07:00
2026-08-26 16:19:38 +07:00
2026-09-28 08:26:29 +07:00
2026-09-27 11:42:40 +07:00
2026-09-09 16:56:22 +07:00
2026-09-27 11:42:40 +07:00
2026-10-15 21:53:41 +07:00
2026-03-12 09:30:29 +07:00
2026-10-15 19:58:36 +07:00
2026-10-11 23:07:51 +07:00
2026-09-28 08:26:29 +07:00
2025-07-24 16:18:27 +07:00
2025-07-24 16:18:27 +07:00
2026-10-15 21:53:41 +07:00
2026-10-13 16:03:18 +07:00
2026-07-14 17:03:38 +07:00
2025-07-24 16:18:27 +07:00
2026-10-11 23:07:51 +07:00
2026-10-15 19:58:36 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-07-06 08:00:23 +07:00