ð§ DOMAIN_EVENTS.md - Domain Events Specification (āļĢāļēāļĒāļāļēāļĢāđāļŦāļāļļāļāļēāļĢāļāđāļāļēāļāđāļāđāļĄāļ)
This document outlines the event schema, source, consumers, and expected outcomes for SplitDeeâs event-driven architecture.
āđāļāļāļŠāļēāļĢāļāļāļąāļāļāļĩāđāļŠāļĢāļļāļāļĢāļēāļĒāļāļēāļĢāđāļŦāļāļļāļāļēāļĢāļāđ āđāļŦāļĨāđāļāļāļģāđāļāļīāļ āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāļĨāļĨāļąāļāļāđ āđāļĨāļ°āļŠāļāļēāļāļ°āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļŠāļģāļŦāļĢāļąāļāđāļāļĢāļāļŠāļĢāđāļēāļāļāļĩāđāļāļąāļāđāļāļĨāļ·āđāļāļāļāđāļ§āļĒāļāļĩāđāļ§āļāļāđ (Event-Driven Architecture) āļāļāļ SplitDee
ðđð āļ āļēāļĐāļēāđāļāļĒ (āļŠāļģāļŦāļĢāļąāļāļāļđāđāđāļāđāļāļēāļ)
1. āđāļŦāļāļļāļāļēāļĢāļāđāļĨāļāļāļ°āđāļāļĩāļĒāļāđāļĨāļ°āļāļēāļĢāļĢāļ°āļāļļāļāļąāļ§āļāļ (Authentication & User Events)
- āđāļŦāļāļļāļāļēāļĢāļāđ
UserRegistered(āļĨāļāļāļ°āđāļāļĩāļĒāļāļāļđāđāđāļāđāļāļēāļāđāļŦāļĄāđ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļāļđāđāđāļāđāļĨāļāļāļ°āđāļāļĩāļĒāļāļŠāļĄāļąāļāļĢāļāļąāļāļāļĩāļŠāļģāđāļĢāđāļāļāđāļēāļāļŦāļāđāļēāļāļāļŦāļĨāļąāļ
- āđāļŦāļĨāđāļāļāļģāđāļāļīāļāļāđāļāļĄāļđāļĨ:
RegisterUserUseCase(āļāļĢāļ°āļāļ§āļāļāļēāļĢāļĨāļāļāļ°āđāļāļĩāļĒāļāļŦāļĨāļąāļāļāđāļēāļ) - āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāđāļāļĄāļđāļĨ:
NotificationService(āļŠāđāļāļāļģāļāđāļāļāļĢāļąāļāđāļāļŦāļāđāļēāļāļāđāļāļ),AnalyticsService(āļāļąāļāļāļķāļāļŠāļāļīāļāļīāļ āļēāļāļĢāļ§āļĄ) - āļāļĨāļĨāļąāļāļāđāļĢāļ°āļāļ: āļāđāļāļĄāļđāļĨāļāļđāđāđāļāđāļāļąāļāļāļķāļāļĨāļāļāļēāļāļāđāļāļĄāļđāļĨ, āļāļąāđāļāļāđāļēāđāļāļĢāđāļāļĨāđāļŠāļēāļāļĨ āđāļĨāļ°āļĒāļīāļāļāļĩāđāļĄāļĨāļĒāļīāļāļāļĩāļāđāļāļāļĢāļąāļāđāļāđāļēāļāļīāļ§āļāļēāļāļŠāđāļ
2. āđāļŦāļāļļāļāļēāļĢāļāđāļāļĨāļļāđāļĄāđāļĨāļ°āļŠāļĄāļēāļāļīāļāļāļĨāļļāđāļĄ (Group & Membership Events)
- āđāļŦāļāļļāļāļēāļĢāļāđ
GroupCreated(āļāļąāļāļāļąāđāļāļāļĨāļļāđāļĄāđāļāļĢāđāļĒāļāļāđāļāļīāļāļŠāļģāđāļĢāđāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļāļđāđāđāļāđāļāļāļāļļāđāļĄāļŠāļĢāđāļēāļāļāļĨāļļāđāļĄāđāļāđāļāļāļāļ§āļāļāļļāļĄāđāļāļ
- āđāļŦāļĨāđāļāļāļģāđāļāļīāļāļāđāļāļĄāļđāļĨ:
CreateGroupUseCase(āļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļĢāđāļēāļāļŦāđāļāļāļāļĨāļļāđāļĄ) - āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāđāļāļĄāļđāļĨ:
PetService(āļāļģāļāļēāļĢāļāļąāļāđāļāđāļŠāļąāļāļ§āđāđāļĨāļĩāđāļĒāļāđāļĄāļāļīāđāļĨāđāļ§āļĨ 1 āļĢāđāļ§āļĄāļāļąāļāļŠāļģāļŦāļĢāļąāļāļāļĨāļļāđāļĄāđāļŦāļĄāđāļāļĩāđ) - āļāļĨāļĨāļąāļāļāđāļĢāļ°āļāļ: āļāļąāļāļāļķāļāļāđāļāļĄāļđāļĨāļāļĩāļĒāđāļāļĨāļļāđāļĄ, āļāļāļāļĢāļŦāļąāļŠāđāļāđāļēāļĢāđāļ§āļĄ 10 āļŦāļĨāļąāļ āđāļĨāļ°āļāļđāļāļāļąāļ§āđāļāļĢāļāļĢāļēāļāļīāļāļŠāļąāļāļ§āđāđāļĨāļĩāđāļĒāļāļāļĢāļ°āļāļģāļāļĨāļļāđāļĄ
- āđāļŦāļāļļāļāļēāļĢāļāđ
MemberJoined(āđāļāļ·āđāļāļāļĢāđāļ§āļĄāļŦāđāļāļāļāļĢāļāļāļĢāļŦāļąāļŠāđāļāđāļēāļāļĨāļļāđāļĄ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āđāļāļ·āđāļāļāđāļāļŦāđāļāļāļāđāļāļāļĢāļŦāļąāļŠāļāļĩāļĒāđāđāļāļ·āđāļāđāļāđāļēāļĢāđāļ§āļĄāļāļĨāļļāđāļĄāđāļāļĢāđāļāđāļēāđāļāđāļāđāļēāļĒ
- āđāļŦāļĨāđāļāļāļģāđāļāļīāļāļāđāļāļĄāļđāļĨ:
JoinGroupUseCase(āļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļ·āļāļāđāļāđāļĨāļ°āļāļķāļāļāļ·āđāļāđāļāđāļēāļŦāđāļāļ) - āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāđāļāļĄāļđāļĨ:
ChatService(āļŠāđāļāļāļĨāđāļāļāđāļāļāļāđāļāļāļ§āļēāļĄāļĢāļ°āļāļāļ§āđāļēāđāļāļ·āđāļāļāļĢāđāļ§āļĄāđāļāđāļēāļŦāđāļāļāļŠāļāļāļāļēāđāļĨāđāļ§),PetService(āļāļ§āļāđāļāđāļĄāļāļ§āļēāļĄāļĢāļąāļāļāļ·āđāļāļāļēāļĢāļĄāļāđāđāļŦāđāļāđāļāļāđāļĄāļāļī +5 āđāļāđāļĄ) - āļāļĨāļĨāļąāļāļāđāļĢāļ°āļāļ: āļāļąāļāļāļķāļāđāļāļ§āļāļĢāļ°āļ§āļąāļāļīāļŠāļĄāļēāļāļīāļāļāļĨāļļāđāļĄ āđāļĨāļ°āļĒāļīāļāđāļāļāļāļēāļĢāđāļāļĢāļēāļĒāļāļēāļāđāļāļāļĨāļļāđāļĄāđāļŦāđāļāļļāļāļāļāļāļĢāļēāļāļŠāļāļēāļāļ°āļāļąāļāļāļĩ
3. āđāļŦāļāļļāļāļēāļĢāļāđāļāļąāļāļāļķāļāļāļīāļĨāļāđāļēāđāļāđāļāđāļēāļĒ (Billing & Expense Events)
- āđāļŦāļāļļāļāļēāļĢāļāđ
BillCreated(āļāļąāļāļāļķāļāļāļīāļĨāđāļŦāļĄāđ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āđāļāđāļēāļŦāļāļĩāđāļāļāļĒāļ·āļāļĒāļąāļāļāđāļāļāļĒāļāļāđāļāļīāļāđāļĨāļ°āļŠāļąāļāļŠāđāļ§āļāļŠāđāļ§āļāđāļāđāļāļāļģāļĢāļ°āđāļāļīāļāļāļāļāđāļāļ·āđāļāļ
- āđāļŦāļĨāđāļāļāļģāđāļāļīāļāļāđāļāļĄāļđāļĨ:
CreateBillUseCase - āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāđāļāļĄāļđāļĨ:
ChatService(āļ§āļēāļāļāļēāļĢāđāļāļāļīāļĨāļŠāļĩāđāļāļĩāļĒāļ§āļŠāļģāļŦāļĢāļąāļāļāļāļāđāļēāļĒāđāļāļīāļāļāđāļēāļāļāļģāļĢāļ°āđāļāļŦāđāļāļāđāļāļāļāļāļāļāļļāļāļāļ),NotificationService(āļĒāļīāļāđāļāđāļāđāļāļ·āļāļāļāđāļ§āļāļŦāļāđāļēāļāļāļĨāļđāļāļŦāļāļĩāđāļāļļāļāļāļāļāļĩāđāļāļđāļāļŦāļēāļĢ) - āļāļĨāļĨāļąāļāļāđāļĢāļ°āļāļ: āļāļąāļāļāļķāļāļĒāļāļāļāđāļēāļāđāļĨāļ°āļāļĢāļ°āļ§āļąāļāļīāļāļēāļĢāļēāļāļŠāđāļ§āļāđāļāđāļāđāļāļīāļāļāļāļāļĨāļđāļāļŦāļāļĩāđāđāļāđāļĨāļ°āļāļāļĨāļāļĢāļ°āļāļ
- āđāļŦāļāļļāļāļēāļĢāļāđ
BillClosed(āļāļīāļāļāļīāļĨāļāļģāļĢāļ°āđāļāļīāļāļŠāļģāđāļĢāđāļāļāļĢāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļŠāļĄāļēāļāļīāļāļāļĨāļļāđāļĄāļāļļāļāļāļāļāļģāļāļēāļĢāđāļŠāļāļāļŠāļĨāļīāļāđāļāļāļāļ·āļāđāļāļīāļāļŠāļģāđāļĢāđāļāļāļĢāļāļāđāļ§āļāđāļāļāļīāļĨ
- āđāļŦāļĨāđāļāļāļģāđāļāļīāļāļāđāļāļĄāļđāļĨ:
PaymentVerificationUseCase - āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāđāļāļĄāļđāļĨ:
ChatService(āđāļāļŠāļāđāļŠāđāļāļāļēāļĢāđāļāļŠāļģāđāļĢāđāļāļāļīāļāļāļīāļĨāļāļēāļ§āļĢāļĨāļāđāļāļāļāļĨāļļāđāļĄ),PetService(āļ§āļīāđāļāļĢāļēāļ°āļŦāđāđāļ§āļĨāļēāļāļģāļĢāļ°āđāļāļīāļāđāļāļ·āđāļāļĄāļāļ XP āđāļāļāļąāļŠāđāļŦāđāđāļĨāđāļ§āļĨāļŠāļąāļāļ§āđāđāļĨāļĩāđāļĒāļāļāļĨāļļāđāļĄ) - āļāļĨāļĨāļąāļāļāđāļĢāļ°āļāļ: āļŠāđāļāļāļąāļŠāļāļīāļĨāļŦāļĨāļąāļāđāļāļĨāļĩāđāļĒāļāđāļāđāļ âsettledâ āđāļāļĨāļĩāļĒāļĢāđāļāļąāļāļāļĩāļŦāļāļĩāđāļŠāļīāđāļāđāļĨāļ°āļŠāļąāļāļ§āđāđāļĨāļĩāđāļĒāļāļāļĨāļļāđāļĄāđāļĨāđāļ§āļĨāļāļąāļ
4. āđāļŦāļāļļāļāļēāļĢāļāđāļāļĢāļ§āļāļāļģāļĢāļ°āđāļĨāļ°āļāļāļļāļĄāļąāļāļīāļŠāļĨāļīāļ (Payment & Verification Events)
- āđāļŦāļāļļāļāļēāļĢāļāđ
SlipUploaded(āļĨāļđāļāļŦāļāļĩāđāļĒāļ·āđāļāļŦāļĨāļąāļāļāļēāļāļŠāļĨāļīāļāđāļāļāđāļāļīāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļĨāļđāļāļŦāļāļĩāđāļŠāđāļāļāļāļīāļ§āļāļēāļĢāđāļāļĢāđāļāļĄāđāļāļĒāđāđāļĨāđāļ§āļāđāļēāļĒāļĢāļđāļāļŦāļĢāļ·āļāđāļĨāļ·āļāļāđāļāļĨāđāļŠāļĨāļīāļāļŠāđāļāđāļāđāļēāļĄāļē
- āđāļŦāļĨāđāļāļāļģāđāļāļīāļāļāđāļāļĄāļđāļĨ:
PaymentSubmitUseCase - āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāđāļāļĄāļđāļĨ:
AI_JobQueue(āđāļĒāļāļ āļēāļāđāļāđāļēāļāļīāļ§āļāļēāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨ OCR āļāļĢāļ§āļāđāļāļāļĢāļŦāļąāļŠāļāļīāļ§āļāļēāļĢāđāļāļąāļāđāļāļĄāļąāļāļī) - āļāļĨāļĨāļąāļāļāđāļĢāļ°āļāļ: āļŠāļąāļāļŠāđāļ§āļāļāļāļāļĨāļđāļāļŦāļāļĩāđāļāļđāļāļĨāđāļāļāđāļāđāļ âprocessingâ āđāļĨāļ°āļāļĩāļĒāđāļāļĢāļ§āļāļŠāļāļāļŠāļāļēāļāļ°āļāļąāđāļāļāđāļēāđāļāđāļ âāļĢāļāļāļĢāļ§āļāļŠāļāļâ
- āđāļŦāļāļļāļāļēāļĢāļāđ
SlipVerified(āļŠāļĨāļīāļāļāđāļēāļāļāļēāļĢāļāļāļļāļĄāļąāļāļīāļāļāđāļāđāļŠāļģāđāļĢāđāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļāļĨāļŠāļ·āļāļāđāļāļāļļāļĢāļāļĢāļĢāļĄāļāļāļēāļāļēāļĢāļāļāļāļāļĨāļąāļāļāļĢāļāļāļ§āļēāļĄāļāļĢāļīāļ
- āđāļŦāļĨāđāļāļāļģāđāļāļīāļāļāđāļāļĄāļđāļĨ:
VerifySlipUseCase - āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāđāļāļĄāļđāļĨ:
PaymentService(āļāļāļĒāļāļĄāļĢāļąāļāļāļĢāļ°āļ§āļąāļāļīāļāđāļēāļ),BillService(āđāļāļĨāļĩāļĒāļĢāđāļŠāđāļāļāļąāļŠāļĒāļāļāļāļāļāļĨāļđāļāļŦāļāļĩāđāđāļāđāļ âpaidâ),ChatService(āļĒāļīāļāļāļēāļĢāđāļāļāļīāđāļāļāļđāļāđāļāļāļŠāļĩāđāļāļĩāļĒāļ§āđāļāđāļāđāļāļ·āļāļāļāļļāļāļāļ) - āļāļĨāļĨāļąāļāļāđāļĢāļ°āļāļ: āđāļāļĨāļĩāļĒāļĢāđāļĒāļāļāļŦāļāļĩāđāļŠāļīāļāļāļāļāļāļēāļāļāļąāļāļāļĩāļāļĨāļēāļ āļāļąāļāļāļķāļāđāļāļ āđāļĨāļ°āļŠāļ·āļāđāļāļ·āđāļāļāđāļāļāļ§āļēāļĄāļāļĢāđāļāļĄāļāļīāļāļāļīāļĨāļāļīāļĨāļāđāļāđāļ
- āđāļŦāļāļļāļāļēāļĢāļāđ
PaymentRejected(āļŦāļĨāļąāļāļāļēāļāđāļāļāđāļāļīāļāđāļĄāđāļāđāļēāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļāļāļēāļāļēāļĢāļĢāļ°āļāļļāļŠāļĨāļīāļāļāļĨāļāļĄ/āļŠāļĨāļīāļāđāļāļāļāđāļģ āļŦāļĢāļ·āļāđāļāđāļēāļŦāļāļĩāđāļāļāļīāđāļŠāļāļāļĢāļ°āļ§āļąāļāļī
- āđāļĄāļāļđāļĨāļāļāļĒāļĢāļąāļāļāđāļāļĄāļđāļĨ:
NotificationService(āđāļāđāļāđāļāļ·āļāļāļĄāļ·āļāļāļ·āļāļĨāļđāļāļŦāļāļĩāđāļāļāļāļŠāļĨāļīāļāđāļĄāđāļāđāļēāļāļāļĢāļļāļāļēāļŠāđāļāđāļŦāļĄāđ),ChatService(āđāļāļīāđāļĄāļāļąāļāļāļķāļāļāļ§āļēāļĄāļĨāđāļĄāđāļŦāļĨāļ§āļĨāļāđāļāļāļāļĨāļļāđāļĄ) - āļāļĨāļĨāļąāļāļāđāļĢāļ°āļāļ: āļāļĢāļąāļāļāļĢāļļāļāļĒāļāļāļāļĨāļąāļāļĄāļēāđāļāđāļāļĒāļąāļāđāļĄāđāđāļāđāļāđāļēāļĒāđāļĨāļ°āđāļāļĢāļ·āđāļāļāļŦāļĄāļēāļĒāļāļēāļāļāļēāļāļŠāļĩāđāļāļ
5. āđāļŦāļāļļāļāļēāļĢāļāđāļŠāļąāļāļ§āđāđāļĨāļĩāđāļĒāļāđāļĄāļāļīāđāļŠāļāļĢāļąāļ (Gamification & Pet Events)
- āđāļŦāļāļļāļāļēāļĢāļāđ
PetFed(āđāļŦāđāļāļēāļŦāļēāļĢāļāđāļāļāļŠāļąāļāļ§āđāđāļĨāļĩāđāļĒāļāļāļĨāļļāđāļĄ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļŠāļĄāļēāļāļīāļāļāļāđāļāđāļāļāļĒāļāđāļāđāļāļāļāļēāļŦāļēāļĢāđāļĄāļāļī â āđāļāļīāđāļĄ HP āļŠāļąāļāļ§āđāđāļĨāļĩāđāļĒāļ +10 āđāļāđāļĄ
- āđāļŦāļāļļāļāļēāļĢāļāđ
PetHungry(āđāļĄāļāļīāļāļĢāļ°āļāđāļ§āļāļŦāļīāļ§āđāļāļ·āđāļāļāļāļēāļāļāļīāļĨāļāļķāļāđāļāđāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļāļīāļĨāļāđāļēāļāļāļģāļĢāļ°āđāļĨāļĒāļāļģāļŦāļāļāđāļ§āļĨāļēāļāļģāļŦāļāļ â āļŦāļąāļ HP āļŠāļąāļāļ§āđāđāļĨāļĩāđāļĒāļ -10 HP āļāđāļāļĒāļāļāļŦāļāļĩāđ āđāļĨāļ°āļŠāđāļāđāļāļāļāļ§āļāđāļāļ·āļāļāļāļĨāļļāđāļĄ
- āđāļŦāļāļļāļāļēāļĢāļāđ
FriendshipIncreased(āļāļ§āļēāļĄāļĢāļąāļāđāļāļ·āđāļāļāđāļāđāļāļāļēāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļāļļāļāļāļāđāļŠāļāļāđāļāļāđāļāļĨāļĩāļĒāļĢāđāđāļāļīāļāļāļĢāļāļāđāļ§āļāļāđāļ§āļāđāļ 12 āļāļĄ. â āļāļąāļāļāļķāļāļŠāļāļīāļāļīāļāļ§āļēāļĄāļĢāļąāļāđāļāļ·āđāļāļāļŠāļ°āļŠāļĄāđāļāļīāđāļĄāļāļĒāđāļēāļāļāđāļāđāļāļ·āđāļāļ
6. āđāļŦāļāļļāļāļēāļĢāļāđāļĢāļ°āļāļāļāļģāļāļēāļāļāļąāļāđāļāļĄāļąāļāļī AI (AI & Reminder Events)
- āđāļŦāļāļļāļāļēāļĢāļāđ
ReminderTriggered(āļŠāļąāđāļāļĒāļīāļāđāļāļāđāļāļ·āļāļāđāļāļīāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āđāļāļīāļāļāļīāļ§āļāļĢāļāļāļģāļĢāļ°āļŦāļĢāļ·āļāđāļāđāļēāļŦāļāļĩāđāļāļāļāļ§āļāđāļāļ·āđāļāļ â āļŠāđāļāļāļ§āļāļāļēāļĄāđāļŠāļĩāļĒāļāļāļĩāđāđāļĨāļ·āļāļ āļŦāļēāļāđāļāđāļāļĄāļĩāļĄāļāļĨāļ AI āļāļ°āđāļāđāļēāļāļīāļ§
- āđāļŦāļāļļāļāļēāļĢāļāđ
AIJobFinished(AI āļāļĢāļ°āļĄāļ§āļĨāļ āļēāļāļĄāļĩāļĄāđāļŠāļĢāđāļāļŠāļīāđāļ):- āđāļāļ·āđāļāļāđāļāđāļĢāļīāđāļĄ: āļāļēāļāļāļĢāļ§āļ OCR āļŦāļĢāļ·āļāđāļāļĩāļĒāļāļĄāļĩāļĄāļāļ§āļāđāļāļīāļāđāļŠāļĢāđāļ â āļāļąāļāļŠāđāļāļĄāļĩāļĄāļŠāļģāđāļĢāđāļāļĨāļāļŦāđāļāļāđāļāļāđāļĨāļ°āļĄāļ·āļāļāļ·āļāđāļāļ·āđāļāļ
ðŽð§ English (For AI Agents)
1. Authentication & User Events
UserRegistered- Trigger: A new user completes signup.
- Source:
RegisterUserUseCase - Consumers:
NotificationService,AnalyticsService - Expected Result: Database record persists, profile initialized, welcome email scheduled.
2. Group & Membership Events
GroupCreated- Trigger: A user clicks âCreate Groupâ on the dashboard.
- Source:
CreateGroupUseCase - Consumers:
PetService - Expected Result: Database record created, invite code generated, pet instance associated.
MemberJoined- Trigger: A user enters a valid group invite code.
- Source:
JoinGroupUseCase - Consumers:
ChatService,PetService - Expected Result: User added to
group_memberstable, group chat notified.
3. Billing & Expense Events
BillCreated- Trigger: A creator submits a new bill split.
- Source:
CreateBillUseCase - Consumers:
ChatService,NotificationService - Expected Result: Bill and associated expense shares persist.
BillClosed- Trigger: All individual expense shares associated with a bill are marked as
'paid'. - Source:
PaymentVerificationUseCase - Consumers:
ChatService,PetService - Expected Result: Bill status transitions to
settled, Mochi gains levels/XP.
- Trigger: All individual expense shares associated with a bill are marked as
4. Payment & Verification Events
SlipUploaded- Trigger: Debtor uploads a transfer slip.
- Source:
PaymentSubmitUseCase - Consumers:
AI_JobQueue - Expected Result: Share status changes to
'processing', payment record created as'pending'.
SlipVerified- Trigger: Bank API query confirms transfer validity.
- Source:
VerifySlipUseCase - Consumers:
PaymentService,BillService,ChatService - Expected Result: Balance cleared, chat logs receipt, triggers
BillClosedchecks.
PaymentRejected- Trigger: AI validation fails and creditor manually rejects the slip.
- Source:
ManualReviewUseCase - Consumers:
NotificationService,ChatService - Expected Result: Share status resets to
'unpaid', payment marked'failed'.
5. Gamification & Pet Events
PetFed- Trigger: Group member spends XP points to feed Mochi.
- Source:
PetInteractUseCase - Consumers:
PetService - Expected Result: Group XP decremented, pet HP status updated.
PetHungry- Trigger: Nightly cron finds bills that are past their due date.
- Source:
CronJobEngine - Consumers:
PetService,ChatService - Expected Result: Pet HP decremented, alerts dispatched.
FriendshipIncreased- Trigger: All roommates pay their bills within 12 hours of publishing.
- Source:
VerifySlipUseCase - Consumers:
AnalyticsService - Expected Result: Streak counter increments.
6. AI & Reminder Events
ReminderTriggered- Trigger: Deadline approach or manual trigger by creditor.
- Source:
ReminderService - Consumers:
AI_MemeJobQueue - Expected Result: Generates custom meme text and schedules message.
AIJobFinished- Trigger: Image generation or OCR engine completes processing.
- Source:
AIWorkerEngine - Consumers:
ChatService - Expected Result: Output JSON processed, notification dispatched.