WhatsApp -> Jira Ticket Bot

This is the canonical entrypoint for the ab-ticket-bot repository.

  • Local docs module: http://127.0.0.1:18081/
  • Local jobs module: no HTTP endpoint, use logs and CSV runtime state
  • Production docs URL: https://ab-ticket-bot-docs.mathbox.90.cz/
  • Production jobs URL: no HTTP endpoint

Current Modules

  • ab-ticket-bot-jobs: long-running worker that polls WhatsApp Adapter, deduplicates messages, and creates or updates Jira issues
  • ab-ticket-bot-docs: packaging module that serves the canonical root documentation site

Canonical Project Docs

Kontext

Cilem je provozovat nastroj, ktery bude ze zprav ve WhatsApp skupine Tipy na AB testy automaticky zakladat a aktualizovat tickety v Jire.

  1. Bot sleduje zpravy ve WhatsApp skupine Tipy na AB testy.
  2. Bot zpracovava zpravy od vsech clenu skupiny (krome fromMe, tedy vlastnich odeslani bota).
  3. Bot zpracovava zpravy, ktere zacinaji prefixem ab<cislo> (napr. ab699).
  4. Prefix se vyhodnocuje pouze na zacatku zpravy. Pokud se ab<cislo> objevi uprostred textu, bot to ignoruje.
  5. Pokud zprava obsahuje vice prefixu, pouzije se prvni validni prefix na zacatku zpravy.
  6. Pokud prijde ab bez cisla nebo prefix v neplatnem formatu, zprava se ignoruje.
  7. Pro novy identifikator (napr. ab32), ktery jeste nema mapovani do Jiry, bot zajisti ticket v Jire (napojenim na existujici, nebo zalozenim noveho).
  8. Summary noveho ticketu ma pevny format Zadani A/B testu <cislo> (napr. Zadani A/B testu 32).
  9. Kazdy zpracovany prispevek se uklada do description (prvni zprava i vsechny dalsi doplneni).
  10. Pokud po zprave ab<cislo> prijde od stejneho autora zprava bez prefixu, bot ji povazuje za pokracovani posledniho aktivniho ab<cislo> od tohoto autora a prida ji do stejneho ticketu.
  11. Zprava se prida k ticketu i tehdy, kdyz je ticket starsi nebo uzavreny v Jire.
  12. Prefix x<cislo> je per autor: uzavre jen navazovani daneho autora pro ab<cislo>. Ostatni autori mohou do stejneho ticketu dal prispivat a stejny autor muze kdykoli navazovani obnovit novou explicitni zpravou ab<cislo>.
  13. Samotne x (bez cisla) na zacatku zpravy zavre aktualne aktivni ab<cislo> kontext daneho autora.
  14. Prefix ? na zacatku zpravy zpusobi, ze bot do skupiny posle kratkou napovedu k pouziti.
  15. Pri kazdem spusteni bot znovu projde historii zprav za poslednich 10 dni a dorovna nesoulady: chybejici tickety zalozi a chybejici doplneni do existujicich ticketu dopise.
  16. Bot zpravy nijak neupravuje ani nemaze.
  17. Bot reaguje na prefixy x a ab bez ohledu na velikost pismen.
  18. Tickety se zakladaji do Jira projektu Eshopy (klice ve tvaru ESH-XXXXX), issue type AB Test a label AB_testy (v Jira zobrazene jako AB testy).
  19. Pri doplneni do description bot uklada prispevky ve formatu [YYYY-MM-DD HH:mm] <text-zpravy> (bez ab<cislo>, bez autora a bez message_id), napriklad [2026-03-11 12:58] do cal?.
  20. Bot zpracovava pouze text zpravy, prilohy nezpracovava.
  21. Pokud bot zpravu uspesne zpracuje (ab create/update, x close nebo ? help), prida na puvodni zpravu reakci 🤖.

Minimalni scope MVP

  • Prijem a parsovani zprav s prefixem ab<cislo>.
  • Vytvoreni ticketu v Jire pro nove AB zadani.
  • Ukladani mapovani ab<cislo> -> Jira issue key do CSV souboru.
  • Ukladani autor kontextu (author -> active_ab_id + closed) do samostatneho CSV souboru.
  • Pri chybejicim lokalnim mapovani dohledat existujici Jira ticket a napojit mapovani.
  • Moznost doplnovat dalsi zpravy ke stavajicimu ticketu.
  • Zpetna kontrola historie za poslednich 10 dni po startu sluzby.
  • Zakladni logovani a retry pri chybe API.
  • Ukladani logu na server.

Out of scope

  1. Dalsi prace s tickety, napriklad notifikace o vyreseni, zmena stavu nebo automaticke uzavirani.
  2. Pokud je zprava po odeslani editovana nebo smazana, bot na tuto zmenu nereaguje.

Souvisejici dokumentace