WhatsApp -> Jira Ticket Bot
This is the canonical entrypoint for the ab-ticket-bot repository.
Quick Links
- 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 issuesab-ticket-bot-docs: packaging module that serves the canonical root documentation site
Canonical Project Docs
- Development
- Project Layout
- Container Runtime Contract
- Remote Server
- Architecture Guidelines
- Data Storage
- Auth Contract
- Runtime Overview
Kontext
Cilem je provozovat nastroj, ktery bude ze zprav ve WhatsApp skupine Tipy na AB testy
automaticky zakladat a aktualizovat tickety v Jire.
Navrh zadani (pracovni verze)
- Bot sleduje zpravy ve WhatsApp skupine
Tipy na AB testy. - Bot zpracovava zpravy od vsech clenu skupiny (krome
fromMe, tedy vlastnich odeslani bota). - Bot zpracovava zpravy, ktere zacinaji prefixem
ab<cislo>(napr.ab699). - Prefix se vyhodnocuje pouze na zacatku zpravy. Pokud se
ab<cislo>objevi uprostred textu, bot to ignoruje. - Pokud zprava obsahuje vice prefixu, pouzije se prvni validni prefix na zacatku zpravy.
- Pokud prijde
abbez cisla nebo prefix v neplatnem formatu, zprava se ignoruje. - Pro novy identifikator (napr.
ab32), ktery jeste nema mapovani do Jiry, bot zajisti ticket v Jire (napojenim na existujici, nebo zalozenim noveho). - Summary noveho ticketu ma pevny format
Zadani A/B testu <cislo>(napr.Zadani A/B testu 32). - Kazdy zpracovany prispevek se uklada do
description(prvni zprava i vsechny dalsi doplneni). - Pokud po zprave
ab<cislo>prijde od stejneho autora zprava bez prefixu, bot ji povazuje za pokracovani posledniho aktivnihoab<cislo>od tohoto autora a prida ji do stejneho ticketu. - Zprava se prida k ticketu i tehdy, kdyz je ticket starsi nebo uzavreny v Jire.
- Prefix
x<cislo>je per autor: uzavre jen navazovani daneho autora proab<cislo>. Ostatni autori mohou do stejneho ticketu dal prispivat a stejny autor muze kdykoli navazovani obnovit novou explicitni zpravouab<cislo>. - Samotne
x(bez cisla) na zacatku zpravy zavre aktualne aktivniab<cislo>kontext daneho autora. - Prefix
?na zacatku zpravy zpusobi, ze bot do skupiny posle kratkou napovedu k pouziti. - 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.
- Bot zpravy nijak neupravuje ani nemaze.
- Bot reaguje na prefixy
xaabbez ohledu na velikost pismen. - Tickety se zakladaji do Jira projektu
Eshopy(klice ve tvaruESH-XXXXX), issue typeAB Testa labelAB_testy(v Jira zobrazene jakoAB testy). - Pri doplneni do
descriptionbot uklada prispevky ve formatu[YYYY-MM-DD HH:mm] <text-zpravy>(bezab<cislo>, bez autora a bezmessage_id), napriklad[2026-03-11 12:58] do cal?. - Bot zpracovava pouze text zpravy, prilohy nezpracovava.
- Pokud bot zpravu uspesne zpracuje (
abcreate/update,xclose 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 keydo 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
- Dalsi prace s tickety, napriklad notifikace o vyreseni, zmena stavu nebo automaticke uzavirani.
- Pokud je zprava po odeslani editovana nebo smazana, bot na tuto zmenu nereaguje.