Formular u portalu
- Unos
- Popust 40 % u formularu
- Pravilo
- quote.discount: 40 > 15, odbijeno
- Prikaz
- „Preko 15 % treba odobrenje“
- Ishod
- Ništa nije sačuvano
Poslovno pravilo pišem jednom, u kodu, i ono tada važi svuda.
Neko unese popust od 40 procenata. Šta se zatim dešava ne zavisi od toga gde broj uđe.
Primer vrednosti. Koja granica važi kod vas, odlučujete vi. Ja je zapišem jednom.
Evo je, objašnjena red po red. Granica stoji jednom u kodu, a sva troja vrata je čitaju odatle.
import { z } from 'zod';// Procenti. Iznad toga odlučuje čovek.export const MAX_DISCOUNT = 15;export const QuoteLine = z.object({ item: z.string().min(1), quantity: z.number().int().min(1), discount: z.number().max(MAX_DISCOUNT),});Granica od 15 procenata stoji u redu 4 i nigde više. Ako se promeni, menjam taj jedan red, a formular, interfejs i uvoz ga prate.
Redovi 1 do 10
// Formular, interfejs i uvoz:const result = QuoteLine.safeParse(input);if (!result.success) { return reject(result.error);}Svako mesto koje prima podatke poziva istu proveru. Pogrešan broj ne stiže do baze, pa ga posle niko ne mora tražiti u izveštaju.
Redovi 11 do 15
function reject(error: z.ZodError) { log.warn('quote.discount', error.issues); return { status: 422, message: 'Preko 15 % treba odobrenje', };}Provera upisuje događaj u log sa pravilom i vrednošću. Korisnik dobija rečenicu koju razume, a ne tehničku stranicu greške.
Redovi 16 do 22
test('iznad granice pada', () => { const line = { item: 'A', quantity: 1 }; const bad = { ...line, discount: 16 }; expect(QuoteLine.safeParse(bad).success) .toBe(false);});Test proverava vrednost odmah iznad granice, a ne formulare ispred nje. Ko kasnije pomeri granicu, naiđe na ovaj test i mora svesno da potvrdi izmenu.
Redovi 23 do 28
04
Jedna funkcija, jedan sistem, jedna odgovornost.
2–12 nedelja, Fiksna cena posle tehničke provere
05
Pretvori uslugu u digitalno iskustvo.
6–12+ nedelja, Izrada i rad, posle discovery faze
Opišite mi slučaj u tri rečenice. Odgovaram sam, a razgovor traje 15 minuta.
Ili direktno: info@coderconda.com
Pre toga: tri rečenice, dva radna dana do odgovora, razgovor od 15 minuta. Kako počinje