Skip to content

AURORA MAKE

Un manifiesto describe el módulo. La fábrica lo construye.

Aurora Make convierte un archivo declarativo en un módulo empresarial completo y cableado. Se describe qué es el módulo —modelos, dinero, permisos, cómo postea al libro mayor, qué siembra por empresa— y aurora:make-module emite el paquete listo para recibir lógica de dominio. El esqueleto deja de ser trabajo.

aurora:make-module cableado
$ php artisan aurora:make-module sales
SalesServiceProvider registrado
migración Invoice numeric(15,2)
permisos × roles seeder
costura de posteo posting.source
siembra por empresa CompanyCreated
packages/aurora/sales cableado
el esqueleto deja de ser trabajo

El planteamiento

La mayor parte del costo de un módulo nuevo no está en su lógica de negocio, sino en el cableado que la rodea: registrar el proveedor, crear las migraciones con los tipos correctos, declarar permisos por rol, conectar las costuras de posteo al kernel financiero, sembrar filas por defecto cuando se crea una empresa. Ese trabajo es repetitivo, fácil de equivocar y rara vez interesante. Aurora Make lo extrae a un manifiesto declarativo, module.yaml, y deja que un generador determinístico lo materialice.

El manifiesto no es plantilla descartable: es scaffold inicial más contrato. Una vez generado el módulo, la lógica de dominio se escribe a mano sobre un esqueleto verde, ya conforme a las invariantes de la plataforma. El propio manifiesto sigue siendo la fuente de verdad del wiring, y las fitness functions verifican en cada build que el código y lo declarado no han divergido.

Modelos tipados con dinero correcto por construcción

El manifiesto declara campos con tipos del dominio. money se materializa como numeric(15,2) con cast de string, de modo que el módulo nace alineado con la invariante de dinero en BCMath, nunca float. Se declaran enums, índices únicos compuestos y checks de tabla en el mismo lugar.

money → numeric(15,2)

Permisos por rol y superficie Filament

El manifiesto cruza permisos contra roles y describe la superficie de panel del módulo. El generador emite los permisos cableados al seeder de roles y el plugin Filament registrado, sin pasos manuales que olvidar entre el modelo y la pantalla.

permisos × roles

Posteo al GL por las costuras del SDK

Si el módulo postea, el manifiesto declara source y determinations. El generador conecta las costuras CreatesJournalEntries y PostsJournalEntries del Aurora Platform SDK: el kernel ejecuta el asiento, el módulo nunca importa el módulo del libro mayor ni toca journal_lines.

posting.source

Siembra por empresa al provisionar

provisions declara filas por defecto por empresa. El módulo se suscribe al evento CompanyCreated del SDK y siembra esas filas de forma idempotente cuando se crea una empresa, respetando el aislamiento schema-per-tenant.

CompanyCreated

Un module.yaml real

Identidad, target, modelos tipados, permisos, posteo y siembra por empresa en un solo archivo. aurora:make-module lo convierte en un paquete bajo packages/aurora/, ya cableado.

module.yaml
module:
  name: Sales
  target: package          # emite packages/aurora/sales (namespace Aurora\Sales)
  navigation_group: Ventas

models:
  Invoice:
    fields:
      number:       { type: string, unique_per_company: true }
      issued_at:    { type: date }
      customer_id:  { type: party_reference }
      subtotal:     { type: money }    # numeric(15,2), cast string, BCMath
      tax_total:    { type: money }
      total:        { type: money }
    indexes:
      - { columns: [company_id, number], unique: true }
    checks:
      - "total >= 0"

permissions:
  ventas.ver:     [Admin Despacho, Autorizador, Capturador, Revisor]
  ventas.crear:   [Admin Despacho, Capturador]
  ventas.postear: [Admin Despacho, Autorizador]

posting:
  source: auto_sales_invoice          # case de JournalEntrySource
  determinations:                     # cuentas resueltas por nombre canónico
    - sales.income_account
    - sales.receivable_account

provisions:                           # se siembran al crear cada empresa
  NumberingSeries:
    - { document: invoice, prefix: F, next: 1 }

Mira el loop completo

Aurora Make es el primer paso de un ciclo: del manifiesto a un módulo que orbita el libro mayor. La página Cómo funciona recorre el camino de extremo a extremo con un módulo real.