- Expédié
- 27 août 2026 à 07:42 UTC
- Auteur
- Kamo
- Commite
- 29ced39
ServiceJob a été une entité cartographiée avec des dépôts et des tests de réussite et pas de l'impossibilité de lire une ligne. Cela lui donne l'en-tête de l'UI d'ordre de travail fini Désemble déjà, de sorte que le réseau peut arrêter de générer sa propre. Formulé sur ServiceTaskBookApi/Service: String ids et cordes ISO-8601 sur le fil, orgId d'abord sur chaque méthode, chaque lecture mappée à une vue INSIDE le transaction parce que ServiceJob.visites est de Lazy, et le prédicat de locataire dans le JPQL plutôt qu'un contrôle après la charge. ServiceJobRepository déjà Portait les quatre requêtes, donc il n'est pas affecté. Deux décisions de forme que le DTO a dû prendre: - totalLabourMinutes est un nombre entier, ne flottez jamais des heures. Une tâche de 20 minutes est 0,333 heures et trois d'entre eux ne sont pas une heure; ServiceLineItem.labourMinutes plaident en faveur de la colonne et elle est également en attente. Il est résumé à partir des guichets réels des visites, qui est le seul travail qu'un emploi peut atteindre: ServiceLineItem pend d'un ordre sans lien avec un emploi. Temps d'administration, pas le temps facturé. - le commerce n'est pas la catégorie de l'UI. Dix cordes composites libres contre quinze Les constantes de ServiceTrade, et non 1:1 - "Plumbing Repair" est PLUMBING plus WorkClass.REPAIR, et le cours de travail est sur la base d'une rubrique. Le fil porte le commerce et le client rendent une étiquette. Le statut passe par ServiceJobStatusMachine et nulle part ailleurs, ce qui explique pourquoi JobInput n'a pas de membre du statut et StatusInput est son propre dossier. Un statut l'application générale serait accessible par l'intermédiaire de la mise à jour générale, Et la deuxième porte est celle que personne ne vérifie. Les tests sont comportementaux, et non les scanners à la source: le dépôt est un proxy dont findByIdForOrg honore l'ordonnance et dont la découverte BenyId ne fait délibérément pas, donc une lecture non portée est capturée comme une fuite plutôt que comme une rupture. Épreuve de mutations - assertTransition supprimée, assertTransition déplacée après setStatus, le une requête à champ d'action de type org-guichetée par findById, les minutes converties en heures, Filtre d'état déplacé hors de SQL, getVisits() gauche non lu, supprimé, et un composant «statut» ajouté à JobInput. Chacune d'elles a produit un désindésignant la propriété qu'il garde.