Prodator · Plán sjednocení
z porady „sjednocení mapping“ 9. 7. 2026 · aktualizováno 12. 7. 2026
Sloučení OMS + ATS + Prospectly do jednoho systému. Vše níže bylo nacvičeno na lokálních kopiích tří produkčních databází; na produkci nebylo nic nasazeno.
Vaše dvě otázky
Mažeme nějaké tabulky?
Ano — ty mrtvé, nejdřív se zálohou
Pro skutečné zjednodušení se ~17 mrtvých tabulek smaže (DROP TABLE) — ale nikdy bez ověřené záložní kopie. Všech 17 je už vydumpováno (obnovitelné) do ~/p/prodator/.local-dev/pre-drop-backups/; ověřeno na kopii: smazání → obnova vrátí každý řádek. Živé tabulky se mažou až po přesměrování čtenářů; každé smazání má podmínku.
Slučujeme nějaká data?
Zatím jen přidáváme
Co je hotové dnes, jen přidává sloupce / obnovuje řádky — žádná data se nepřepisují. Skutečné slučování dat (nahrání ATS řádků kampaní do OMS, sloučení duplicitních firem podle IČO) čeká na vaše odpovědi (Q3 / Q5) a zatím neproběhlo.
🔒 Záložní pojistka. Každá tabulka určená ke SMAZÁNÍ má vlastní obnovitelný dump (základ 2026‑07‑11, 17 tabulek, 38 MB, 0700). Před skutečným smazáním na produkci se udělá čerstvý živý dump + odešle mimo stroj (stále zapisované tabulky — „Candidates“, contacts_all — se mění denně). Obnova = pg_restore -d <živá> <tabulka>-PREDROP-<datum>.dump. Plus úplné produkční kopie z 2026‑07‑11 v .local-dev a noční restic zálohy mimo stroj.
Co se stane s každou tabulkou
PŘIDAT — přidání, bezpečné
KÓD — beze změny schématu
SMAZAT 🔒 — mrtvá tabulka, zálohovaná + s podmínkou
SLOUČIT — sloučení dat, s podmínkou
← každé SMAZÁNÍ má ověřenou zálohu
Příjem kandidátů — co plní starou tabulku (dohledáno 12. 7. 2026)
Záhada vyřešena. Zapisovatel do "Candidates" (velké C) není v žádném našem systému — ani v Make (1 449 scénářů, 0 zápisů do Supabase), ani v 79 ATS edge funkcích, ani v DB, ani v žádném repu. Jsou to vlastní kariérní weby klientů (platforma „phoenix“, *-kariera.eu), které zapisují do ATS přes vlastní API klíč. 608 Typeform formulářů se rozbíhá do 4 backendů → 4 tabulek; moderní je správně, tři staré nikdy nikdo nevypnul.
Plán sjednocení — jeden webhook, jedna tabulka
Všechny Typeform formuláře ──▶ ikisww/typeform-webhook ──▶ ats.candidates (jediný zdroj pravdy)
① Sjednotit přítoky
klíčová oprava · Typeform API (zápis, nutný souhlas)
- Zapnout webhook
ats-realtime + vypnout starý, u každého formuláře
- Vlna A — 3 OMS formuláře
cos-ats (jen my)
- Vlna B — 4 formuláře kariérních webů 🔗 web tým klienta
- Vlna C — 92 Integromat formulářů (nejdřív ověřit živé)
- vratné: zpět zapnutím starého webhooku
② Zpevnit + ③ Obnovit
naše PR
- Ověřit, že jeden webhook pokryje vše (mapování kampaně, deduplikace, neplatné řádky)
- Automaticky registrovat nové formuláře na jeden endpoint
- #11 obnova osiřelých →
candidates / funnel
- Obnova unikátů z
ats_candidates/contacts_all
④ Vyřadit staré tabulky
nejdřív záloha · s podmínkou
- Smazat
"Candidates" 🔒 (#12) — po Vlně B + #11 + 7 klidných dnech
- Smazat
ats_candidates + contacts_all 🔒 — po odpojení cos-ats + přesměrování čtenářů
- vše zálohováno, smazání→obnova ověřena
8 pull requestů
Časový plán realizace
✅ Teď
hotové — vaše merge
- Mergnout #11 (obnova osiřelých)
- Mergnout #15 (odečet dní)
- Mergnout #18 (úkoly)
- Mergnout #16 / #10 / #145 (role, telefon)
- #17 kdykoliv (příprava schématu)
- po každém: Lovable nasadí migraci + přegeneruje typy
⏳ Dále
po sjednocení přítoků
- Přesměrovat formuláře → jeden webhook
- Znovu spustit #11 (dobrat mezeru)
- Sledovat „Candidates“ — 0 nových řádků / 7 dní
- Mergnout #12 (smazání)
🔒 Čeká na rozhodnutí
podmíněno vašimi odpověďmi
- Sloučení řádků kampaní — Q3
- Smazání
contacts_all 🔒 — Q2
- Smazání zrcadel + dvojčat 🔒 — přesměrování čtenářů
- Sloučení firem podle IČO — Q5
- 2 patche landing page — vaše zadání
Otevřené otázky — potřebuji od vás
- Q1 —
kde je zapisovatel Typeform→„Candidates“ VYŘEŠENO — kariérní weby klientů (*-kariera.eu), ne Make.
- Q-A — souhlas se zápisem do Typeformu (přesměrování webhooků). Jediný krok dotýkající se živé integrace; vše ostatní jsou naše PR.
- Q-B — kontakt na web tým klienta pro kariérní weby
*-kariera.eu (Vlna B — není v našich repech).
- Q-C — přístup do účtu Integromat/Make za 92 hooky
hook.integromat.com (read-only token → zmapuji je za pár minut).
- Q-D — potřebují kariérní weby ta data pro vlastní UX? Pokud ano, budou číst z
candidates; pokud ne, jen přesměrovat.
- Q2 —
contacts_all: importovat / archiv jen ke čtení / smazat 3 203 nespárovaných historií kontaktů?
- Q3 — párování řádků kampaní: potvrdit most
cos_id (264/264 sedí) + rozhodnout 4 kampaně bez cos_id.
- Q4 — odečet dní: jen
duration_days (nasazeno), nebo i active_days/contract_duration_days?
- Q5 — 9 kolizí firem se stejným IČO: vybrat u každého páru řádek, který zůstane.
- Landing page — co mají ty 2 rychlé patche vlastně dělat?