ddd-ts-kit/scheduling-job-name
Identifiant d'architecture : scheduling/job-name. Sévérité par défaut : error dans recommended, error dans strict.
S'applique à : chaque fichier passé au lint ; la vérification de systemActor s'applique aux fichiers *.job.ts.
Pourquoi
Section intitulée « Pourquoi »Le nom d'un job est son identité : le verrou qui limite une occurrence à une seule exécution, ses réglages, ses métriques, sa ligne dans le journal d'audit sont indexés par lui. Il est écrit une fois comme un littéral de chaîne, jamais dérivé d'un nom de classe qui peut être renommé, et il commence par le contexte auquel appartient le job, pour qu'il parte avec le contexte quand celui-ci est extrait.
- un premier argument de
@Scheduled(..)ou dejob(..)(dans une instruction qui se termine parhandledByouhandledByFactory) qui n'est pas un littéral de chaîne - un nom qui n'est pas de la forme
<context>.<job-name>: deux segments en kebab-case minuscule - un nom dont le premier segment n'est pas le contexte du fichier (dans un fichier de module, le contexte du module)
- dans un fichier
*.job.ts: un appelsystemActor(..)qui ne passe pas le nom sous lequel le job est déclaré
Incorrect :
@Scheduled('SendReminders', { every: '15m' })export class SendRemindersJob implements ScheduledJob { constructor(private readonly commands: CommandBus) {}
async run(execution: JobExecution): Promise<void> { await this.commands.execute(new SendRemindersCommand(systemActor('reminders'), execution.scheduledAt)); }}Correct :
@Scheduled('billing.send-reminders', { every: '15m' })export class SendRemindersJob implements ScheduledJob { constructor(private readonly commands: CommandBus) {}
async run(execution: JobExecution): Promise<void> { await this.commands.execute(new SendRemindersCommand(systemActor('billing.send-reminders'), execution.scheduledAt)); }}Un littéral de gabarit sans substitution compte comme un littéral de chaîne. Hors d'un contexte (main.ts, la plateforme), le format est vérifié et le premier segment est libre. Dans un fichier de job sans @Scheduled (le style explicite, où le nom est écrit dans le fichier de module), systemActor(..) doit passer un littéral qui est un nom de job du contexte du fichier.
Aucune.
rules."scheduling/job-name" à off dans ddd-ts-kit.config.json désactive la règle, et // ddd-ts-kit-disable-next-line scheduling/job-name -- <reason> désactive une ligne, exactement comme pour ddd-ts-kit check.
- Qu'un nom de job soit unique dans le projet est un fait du projet :
ddd-ts-kit checkle tient. - Dans le style explicite, le nom passé à
systemActordans le fichier du job n'est pas comparé au nom écrit dans le fichier de module.
Avec le checker de la CLI
Section intitulée « Avec le checker de la CLI »ddd-ts-kit check signale le même identifiant à partir du texte des fichiers, et est le seul à vérifier qu'un nom est unique dans tout le projet.