🧠 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_members table, 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.

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 BillClosed checks.
  • 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.