Regras de negócio

Índice das regras de negócio do onion-backend. Cada regra vive em rules/<escopo>/ e é expressa em Given/When/Then. R-XXX é sequencial por projeto.

ID Título Escopo Certainty Arquivo
R-001 Progresso de aula persiste direto e de forma síncrona engagements high rules/engagements/lesson_progress_direct_synchronous_persist.md
R-002 Novo usuário percorre a sequência da jornada audios high rules/audios/journey_sequence_for_new_user.md
R-003 Trava por progresso insuficiente na jornada de áudios audios high rules/audios/journey_locked_below_ninety_percent.md
R-004 Avanço na jornada por conclusão, no dia seguinte audios high rules/audios/journey_advances_next_day_after_completion.md
R-005 Re-escuta após conclusão não retrocede o usuário na jornada audios high rules/audios/journey_relisten_does_not_regress.md
R-006 Transição após o último áudio da jornada audios high rules/audios/journey_transition_after_last_audio.md
R-007 Usuário fora da jornada recebe sempre o áudio atual fora da jornada audios high rules/audios/daily_audio_outside_journey.md
R-008 Áudio fora da jornada é conteúdo diário livre audios high rules/audios/audio_outside_journey_is_free_daily_content.md
R-009 Endpoint retorna a posição atual na jornada de áudio audios high rules/audios/journey_position_endpoint.md
R-010 Model Notification é reservado a envios pontuais notifications high rules/notifications/notification_model_point_in_time_only.md
R-011 Gate de notificação de hábito libera as ondas de lembrete notifications high rules/notifications/habit_notification_gate.md
R-012 UserTrial marca converted_at quando checkout IBFT é aprovado trials high rules/trials/user_trial_converted_at_on_checkout_approval.md
R-012 Campanha inválida ou expirada bloqueia cadastro de trial trials high rules/trials/user_trial_register.md
R-013 Campanha sem trial vinculado bloqueia cadastro trials high rules/trials/user_trial_register.md
R-014 Conta existente ou trial anterior bloqueia sem revelar o motivo trials high rules/trials/user_trial_register.md
R-015 Estado do trial exposto no sign-in e no perfil trials high rules/trials/trial_state_in_auth_endpoints.md
R-016 Desbloqueio de aulas para usuário em trial trials high rules/trials/trial_lesson_unlock.md
R-017 Desbloqueio de cursos para usuário em trial trials high rules/trials/trial_course_unlock.md
R-018 Janela do trial é imutável após a criação trials high rules/trials/user_trial_dates_immutable_in_admin.md
R-019 Limite de áudios do trial é sempre igual à duração em dias trials high rules/trials/audio_limit_synced_to_duration.md
R-020 Trial da campanha é travado quando há usuários cadastrados campaigns high rules/campaigns/campaign_trial_locked_with_user_trials.md
R-021 Régua de emails de trial por percentual consumido trials high rules/trials/trial_journey_emails.md
R-022 Troca de e-mail unifica as contas quando o destino já existe accounts high rules/accounts/email_change_merges_existing_account.md

Notas de migração

  • R-001 preserva o ID que já existia no docs/RULES.md anterior. Seu conteúdo foi atualizado para a persistência síncrona introduzida em ef6bc92, que removeu o rate limit e o buffer no Redis para aulas.
  • R-002 a R-009 vêm das regras RN01–RN08 que eram indexadas em docs/audio/audio_journey/RULES.md e descritas dentro de daily-audio-journey.md. Cada uma virou um arquivo próprio; o corpo descritivo (models, state machine, configuração) ficou em reference/audios/daily_audio_journey.md.
  • R-010 e R-011 foram extraídas das seções de prosa que viviam no docs/RULES.md anterior, sob o heading “Notifications”.