Bioshi Products AI Pipeline
live

📢 Powiadomienia Slack

Co bot Czarek wysyła w którym trybie + jakie guziki dostaniesz w kanale #bioshi-products.

Typy eventów

🚀 Run start
Nowy wątek otwarty — pierwsze powiadomienie.
✅ Step done
Reply w wątku z podsumowaniem kroku.
🛂 Manual gate
Card z guzikami: ✅ Akceptuj / ❌ Odrzuć / 🛠 Popraw w Sheets.
🎉 Run done
Reply finałowy z linkami do archiwum + ZIP.
🦉 Stróż finding
Card od Czarka — nowe findings + guzik 'Odpal pipeline'.
👍 Approval ack
Reaction na klik — pipeline kontynuuje albo zatrzymuje.

🌱 Nowe produkty → tryb

Kanał: #bioshi-products · 11 powiadomień w cyklu runa
krok 1
🚀
start
zawsze
Run start — Bot otwiera wątek dla nowego runa z liczbą EAN-ów i estymacją czasu.
slack_bot_client.run_start()
krok 2
step0_konsolidacja
zawsze
Step done — Konsolidacja XML-i Merkury/BioPlanet/EkoWital zakończona — N produktów do dalej.
slack_bot_client.step_done()
krok 3
step1_klasyfikacja
zawsze
Step done — Klasyfikacja Gemini gotowa — breakdown NORMALNY/SUPLEMENTY/WARZYWA/KREATOR.
slack_bot_client.step_done()
krok 4
step2_zbierz_klasyfikacje
opcjonalne
Step done — Konsolidacja klasyfikacji do CSV per klasa.
slack_bot_client.step_done()
krok 5
step3_opisy
zawsze
Step done — Generowanie opisów pol zakończone — N opisów × 4 prompty.
slack_bot_client.step_done()
krok 6
🛂
step5_filtrowanie
zawsze
Manual gate — Card z guzikami: ✅ Akceptuj filtr / 🛠 Popraw w Sheets / ❌ Anuluj.
🔘 Akceptuj filtr🔘 Popraw w Sheets🔘 Anuluj run
slack_bot_client.manual_gate()
krok 7
step6_score
zawsze
Step done — Bioshi Score liczy — N produktów × gemini-2.5-pro multimodal.
slack_bot_client.step_done()
krok 8
step7_translate
zawsze
Step done — Tłumaczenia 23 langs gotowe + auto-widget per produkt z grade.
slack_bot_client.step_done()
krok 9
🛂
step9_weryfikacja
zawsze
Manual gate — Card z guzikami: ✅ Akceptuj weryfikację / 🛠 Popraw w Sheets / Skip (low quality only).
🔘 Akceptuj weryfikację🔘 Popraw w Sheets🔘 Skip
slack_bot_client.manual_gate()
krok 10
🛂
step10_upload
zawsze
Manual gate — Card finałowa: ✅ Wgraj do IdoSell / 🚫 Tylko archiwum.
🔘 Wgraj do IdoSell🔘 Tylko archiwum
slack_bot_client.manual_gate()
krok 11
🎉
done
zawsze
Run done — Reply finałowy: stats + Drive folder URL + ZIP URL.
slack_bot_client.run_done()

🌍 Tłumaczenia → tryb

Kanał: #bioshi-products · 8 powiadomień w cyklu runa
krok 1
🚀
start
zawsze
Run start — Bot otwiera wątek: N EAN-ów × M langów = ~K cells.
slack_bot_client.run_start()
krok 2
fetch_descriptions
zawsze
Step done — Pobranie polskich opisów z IdoSell (descriptions API) — N produktów.
slack_bot_client.step_done()
krok 3
submit_batch
zawsze
Step done — Vertex AI Batch Prediction submitted — job ID + ETA.
slack_bot_client.step_done()
krok 4
batch_done
zawsze
Step done — Batch SUCCEEDED — wyniki pobrane, K tłumaczeń × 23 langs.
slack_bot_client.step_done()
krok 5
widget_assembly
opcjonalne
Step done — Auto-widget injection dla produktów z grade A-E.
slack_bot_client.step_done()
krok 6
🛂
weryfikacja
opcjonalne
Manual gate — (opcjonalnie) Card z low-score translations do review.
🔘 Akceptuj wszystko🔘 Skip low-score🔘 Popraw w Sheets
slack_bot_client.manual_gate()
krok 7
🛂
upload_idosell
zawsze
Manual gate — Card: ✅ Wgraj na IdoSell (automatycznie kończy run).
🔘 Wgraj na IdoSell🔘 Tylko archiwum
slack_bot_client.manual_gate()
krok 8
🎉
done
zawsze
Run done — Finał: uploaded/failed stats + CSV link.
slack_bot_client.run_done()

🏷️ Bioshi Score → tryb

Kanał: #bioshi-products · 7 powiadomień w cyklu runa
krok 1
🚀
start
zawsze
Run start — Bot otwiera wątek: N produktów × multimodal Gemini Pro.
slack_bot_client.run_start()
krok 2
batch_progress
opcjonalne
Step done — Progress per batch=5 (15s delay) — N/M produktów.
slack_bot_client.step_done()
krok 3
extraction_done
zawsze
Step done — 14 pól wyciągnięte per produkt → analyzer JSON gotowy.
slack_bot_client.step_done()
krok 4
scoring
zawsze
Step done — calculate_bioshi_score() — grade A/B/C/D/E breakdown.
slack_bot_client.step_done()
krok 5
export
zawsze
Step done — products.json + products-data.js wygenerowane.
slack_bot_client.step_done()
krok 6
🛂
upload_idosell
opcjonalne
Manual gate — (opcjonalnie) Card: wgrać grade jako parameter_id=36890.
🔘 Wgraj parametry🔘 Tylko archiwum
slack_bot_client.manual_gate()
krok 7
🎉
done
zawsze
Run done — Finał: histogram A-E + Drive + JS embed URL.
slack_bot_client.run_done()

🦉 Stróż Czarek → tryb

Kanał: #bioshi-products · 2 powiadomień w cyklu runa
krok 1
🦉
scan_done
opcjonalne
Stróż finding — Po skanie z N>threshold findings — passive card w kanale (NIE w wątku).
🔘 🚀 Odpal pipeline🔘 💤 Daj spokój 24h🔘 📋 Pełna lista
slack_bot_client.stroz_finding()
krok 2
🦉
alert_threshold
opcjonalne
Stróż finding — Critical findings ≥ alert_threshold — DM do Michała (poza quiet hours).
slack_bot_client.stroz_finding()

Status bota

VM
bioshi-bot @ 35.253.102.203
us-central1-a · e2-micro · systemd
Połączenie
Slack Socket Mode
WebSocket outbound (no public ingress)
Mapping run → thread
Firestore slack_runs/
1 wątek per run_id, replies w tej samej karcie
Quiet hours
22:00 – 07:00
Bez DM-ów Michał poza godzinami pracy (chyba że threshold ×3)