***************************** Reminder trigger rule system ***************************** Reminder: en state, tidsinterval, type, besked. Indeholder GUI med HTML editor til emails. Trigger: hver gang en ordre oprettes eller en state ændres, oprettes en trigger udfra reminder. Triggeren køres når tiden udløber. Evt. gamle triggers slettes ved oprettelse af nye. ReminderExecutor: når en trigger løber ud chekkes om betingelser er opfyldt. Hvis de er, sendes der beskeder ud. Skal en Reminder opdeles i Reminder, Conditions og Action? Altså i "what happens" (i.e. new order created) og "conditions" hvis ordertype==WEBORDER and countryCode==NL, sættes "action" til SMS send besked "Tak for din ordre..." Eller er det faktisk nemmere at have et filter på hver key? Reminder template: oid: 4212421455525 name: tak for din ordre, giv os 5 stjerner, du har glemt at betale din regning msg type: email, SMS, push message recepient: runner, runner_list, customer, admin order state: pending trigger same state: 48h country: DK state: active, draft, pause, deleted language: not yet supported template: Hej ¤customer firstname¤ når en ordre ændrer state checkkes om kriterier er opfyldt. Hvis der er tale om time based changes (ordre ikke ændret state efter 2 dage) skal der oprettes en trigger per reminder, i.e. Trigger: created: man, 12:42 state: pending same state: 48h / ons, 12:42 reminder: 4212421455525 Tanker: ******************** Når state eller kriterie er opfyldt laves der en trigger. Og de eksisterende triggers for ordren slettes slettes. En timertask oprettes. skal vi lave logic operators i første version? status == paid_card OR paid_other OR paid_cash. Eller starte simpelt med copy paste? er der andet end order status change / no change der trigger? status: received, runners invited, offer received, customer accepted, order filled, order paid, all rejected Måske: state has priviously been reopened, customer has delayed 3 times, order has tag "zxy" Kan vi bruge systemet til logik? Altså som en state engine. I.e. hvis ingen runners har svaret indenfor indenfor 12 timer sender vi en nudge (dette reminder system). Men efter 24 timer ændrer vi state til no runners available. En state engine function skulle således kaldes med en ordre. Alle state changes skal kalde reminder trigger controller 3x beskeder eller 1 reminder med 3x beskeder --------------------------------------------- Simpel version: der skal være lidt logik i trigger funktionen, i.e. den smager på ordren og ved det er en web ordre, så den udsender en mail og SMS men ingen pushbesked. Dvs. GUI indeholder 3 felter til email, SMS og pushbesked og systemet sender til det rigtige endpoint. Generisk version: man tilføjer et kriterie og admin laver en besked til hver. kan man forestille sig at en kunde kun får bestemte beskeder hvis de bruger app? Eller skal informationerne ud til kunden uanset platform? Generisk trigger selector eller ovenstående simple --------------------------------------------- eller mere generisk: logic list: AND/OR hvor hvert kriterie kan indeholde multiple kriterier med AND og OR eks: Criteria group: faktura betalt List: Criteria cash OR criteria card OR criteria other Criteria: Criteria cash key: ORDER_STATE value: PAID_CASH Keys kan være ORDER_STATE (pending, paid_card, cancelled), SAME_STATE_TIME (5min, 24h, 4d), ORDER_TYPE (web, app) Bemærk: criteria groups skal så ENTEN være AND eller OR - skal man blande må man lave flere groups