SGEProduto · Domínio · Desenvolvimento
Repositório

technical-reference · implemented

Provider — AppServiceProvider

Bootstrap global de Eloquent, Activity Log, migrations, locale, timezone e moeda.

Boot atual

  • Associa Activity a ActivityPolicy, instala observers Eloquent para DatabaseNotification e Media e acrescenta ator, conta e vínculo às propriedades de cada evento. O ator vem do vínculo ativo, da conta, de terminal ou de system conforme o contexto.
  • Bloqueia atualização e exclusão de Activity pelo Model e impede activitylog:clean para preservar o histórico sem recursão. A proteção não cobre SQL direto.
  • Guarda de comandos migrate*: bloqueia migrations, rollback, refresh, reset e instalação fora de PostgreSQL.
  • Model::preventLazyLoading(! app()->isProduction()): denuncia lazy loading em desenvolvimento/testes e deixa produção sem essa proteção.
  • setlocale(LC_ALL, config('app.locale').'.UTF-8'): define locale do processo.
  • date_default_timezone_set(config('app.timezone')): define timezone padrão do PHP.
  • Number::useCurrency(config('app.currency')): define moeda padrão para Number.
  • Number::useLocale(config('app.locale')): define locale padrão para formatação numérica.

O DateHelper depende do timezone da configuração; o CurrencyHelper usa defaults compatíveis, mas aceita sobrescrita.

Checklist

  • Configurar autoria e metadados de conta/vínculo/sistema para eventos do Activity Log.
  • Proteger o histórico contra alteração/exclusão Eloquent e desabilitar a limpeza do pacote.
  • Auditar notificações e mídia por allowlist, sem copiar payloads privados.
  • Ativar proteção contra N+1 fora de produção.
  • Exigir PostgreSQL para comandos de migration.
  • Configurar locale, timezone, moeda e números.
  • Testar comportamento com locale/timezone usados no CI e produção.
  • Confirmar que todos os ambientes possuem app.currency definido.
  • Documentar exceções de performance antes de desativar preventLazyLoading.
  • Não adicionar inicialização de domínio pesado neste Provider.