Mikor jó választás a vibe coding? Belső irodai alkalmazás pár nap alatt
Egy bosszantó napi problémából néhány napos átfutással lett az egész cég által használt belső vállalati alkalmazás, fejlesztőcsapat, külön költségkeret és új infrastruktúra nélkül. Az alkalmazást egy olyan kollégánk készítette el, aki napi szinten nem kódol: a programozás AI-jal, úgynevezett vibe coding módszerrel zajlott.
Két dolog tette ezt lehetővé: a Google Workspace platform, amely a szoftverfejlesztés összetettebb részeire (a bejelentkezésre, a jogosultságkezelésre és az üzemeltetésre) kész megoldást kínált, és a mesterséges intelligencia, amely az első lépéstől a publikálásig végig vezette a kezét. A LogiNet parkolófoglalója jó példa arra, mennyit ki lehet hozni egy már meglévő platformból, ha nagy alkalmazásfejlesztési projekt helyett célzott, platformra szabott megoldásban gondolkodunk.
A probléma: parkoló foglalás Google Workspace-ben, áttekintés nélkül
Irodánkhoz több parkolóhely tartozik, amelyeket a Google Workspace-ben erőforrásként vettünk fel, így a Google Naptárból a tárgyalókhoz hasonlóan foglalhatók. Papíron ez működött, a gyakorlatban viszont nehéz volt gyorsan eldönteni, melyik hely szabad éppen, vagy ki fog leghamarabb távozni.
Először azt néztük meg, van-e erre gyári képernyő a Workspace-ben, és kiderült, hogy nincs. A beépített eszközök vagy utólagos kihasználtsági riportot adnak, vagy tárgyalókra szánt, hardverfüggő ajtókijelzőt. A piacon lévő tárgyalófoglaló rendszerek működnének, de néhány parkolóhelyre túlméretezettek és költségesek.
Első lépés: egy „buta”, de gyors próba a Google Naptárral
A legegyszerűbb út a Google Naptár beágyazási lehetősége volt: egyetlen oldalon, egymás mellett jelenítettük meg mind a parkolók naptárát. Ez fél óra alatt elkészült, és rögtön kiderült belőle, mire van valójában szükségünk.
A beágyazott naptár ugyanis csak megjelenít. Nem mondja meg, melyik hely szabad a következő órákban, nem lehet rajta foglalni, és a naptároszlopokból továbbra is a felhasználónak kell kiolvasnia a választ. A próba mégis sokat ért, mert kis téttel, gyorsan megmutatta, hogy az alapok a naptárakban már ott vannak, csak egy okosabb felület kell feléjük.
Miért Google Apps Script? A bejelentkezést és a hozzáférést a platform adja
A döntés a Google Apps Scriptre esett, mert a Workspace-en belül fut, és a nehezét a platform adja. A bejelentkezést a céges Google-fiók intézi, az alkalmazást csak a domainhez tartozó munkatársak érhetik el, és nem kell hozzá saját szerver vagy adatbázis.
A legfontosabb architektúrális döntés az volt, hogy az alkalmazás soha nem ír közvetlenül a parkolók naptárába. A foglalás a felhasználó saját naptárában jön létre, a parkoló pedig meghívottként szerepel rajta, és automatikusan visszaigazolja, pontosan úgy, ahogy a Google Naptárban egy tárgyalót foglalunk. Így senkinek nem kell külön írási jog az erőforrásokon, a foglalás a saját naptárból is kezelhető, és az igazság egyetlen forrása továbbra is a Google Naptár marad.
Vibe coding kis lépésekben: működő alkalmazás két óra alatt
Az első Apps Scriptes verzió további 1 óra alatt elkészült: egy képernyőn mutatta a parkolók aznapi foglalásait, kiemelve azt, ami éppen fut. Nagyjából két óra múlva már működő alkalmazásunk volt foglalással együtt. A bővítések és a teljes design megújítás a következő napokban készült el, a napi munka mellett, rövidebb-hosszabb blokkokban (a néhány napos átfutás alatt sem zajlott végig aktív fejlesztés).
Az új funkciók mindig kis, azonnal kipróbálható lépésekben kerültek be, így a kollégák visszajelzése a következő körben már be is épülhetett. Menet közben azt a fontos munkamódszerbeli tanulságot is levontuk, hogy AI programozásnál is érdemes előbb megtervezni a képernyőt, és csak utána kódolni.
AI programozás a gyakorlatban: hibajavításnál a képernyőkép többet mond
A kódot a mesterséges intelligencia írta, és a hibajavítás is az ő vezetésével, iteratív körökben zajlott. A hibát leírtuk, az AI megnevezte a lehetséges okokat és javított változatot készített, mi kipróbáltuk, és ha kellett, jött a következő kör. Ahol több ok is szóba jöhetett, olyan javítás készült, amely mindegyiket kezeli.
A megjelenési problémáknál hamar kiderült, hogy egy képernyőkép sokkal hatékonyabb, mint bármilyen szöveges leírás. Egy elcsúszott gomb, egy rossz szín vagy egy mobilon tördelődő fejléc szövegben nehézkesen és pontatlanul írható le, így több kör is kellett a javításhoz. Képernyőképpel az AI pontosan látta, miről van szó, és a hiba jellemzően egyetlen körben megoldódott. Kellemes meglepetés volt az is, hogy a javítások nem rontottak el más, már működő részeket.
Parkolóhely foglalás a gyakorlatban: mit tud ma az alkalmazás?
A „Mai nap” nézet: egy pillantással látszik, melyik hely szabad, meddig foglalt a többi, és a szabad helyek egy kattintással foglalhatók.
- Mai nap: egy pillantással látszik, melyik parkoló szabad a következő időszakban, és ha egyik sem, ki távozik leghamarabb.
- Napi bontás: idővonal az adott nap összes foglalásáról, az elmúlt időszak halványítva; a következő napok is lapozhatók.
- Új foglalás és Foglalásaim: foglalás, módosítás és törlés egy helyen, a saját mai és jövőbeli foglalások listájával.
- Irodai napok: az alkalmazás a Google Naptár munkavégzési helyéből látja, mely napokon jövünk be, és ezekre egy kattintással lehet foglalni.
- Vendégfoglalás: látogatónak is foglalható hely, a vendég kérésre e-mailben kap visszaigazolást, módosítási és lemondási értesítést.
- Beépített súgó: tizenegy fejezetben mutatja be a használatot, így külön betanításra nem volt szükség.
A „Napi bontás” idővonala: az összes parkoló foglalásai egy képernyőn, a függőleges vonal a pillanatnyi időt jelzi.
Kényelmi funkciók az alapokon túl
Amikor az alapok már stabilan működtek, a használat közben felmerülő igények alapján jöttek a kényelmi funkciók. Az azonnali foglalással egy éppen szabad hely egyetlen kattintással lefoglalható, űrlap kitöltése nélkül. Ha valaki tovább marad a tervezettnél, a futó foglalását szintén egy kattintással meghosszabbíthatja egy órával.
A Beállítások képernyőn mindenki megadhatja, milyen alapértékekkel induljon a foglalási űrlap: a szokásos érkezési és távozási időpontot, illetve azt, hogy vendégfoglalásnál alapból menjen-e értesítés. Így a legtöbb foglalás módosítás nélkül elküldhető.
Az „Új foglalás” űrlap a beállított alapértékekkel indul, felül a következő irodai napok, jobbra pedig azonnal látszik, ha a választott idősáv ütközik egy másik foglalással.
Külön figyelmet kapott a másodlagos naptár. Egy szinte egész napos parkolási esemény zavaró a munkára is használt elsődleges naptárban, ezért a felhasználó átállhat egy külön „Parkolásaim” naptárra. A foglalás ugyanúgy működik, csak ez a naptár egy kattintással elrejthető a Google Naptárban. Az átállást aktív foglalás mellett az alkalmazás nem engedi, hogy egyetlen foglalás se vesszen el félúton.
Belső eszköz vállalati alkalmazás szintjén: jogosultságkezelés és belső publikálás
Egy belső alkalmazás is céges adatokhoz fér hozzá, ezért a biztonsági kérdések az elejétől napirenden voltak. Végig kellett gondolni, kinek a nevében fut az alkalmazás, kinek a naptárát kérdezi le, és mi történik, ha a nevünkben e-mailt küld egy külső vendégnek. Az alkalmazás mindig a bejelentkezett felhasználó jogosultságaival dolgozik, így senki nem lát többet, mint amennyit a Google Naptárban is látna.
Az alkalmazást átköltöztettük egy saját, a céges szervezet alá tartozó Google Cloud-projektbe, ahol engedélyeztük a szükséges Google API-kat, és belső típusú hozzájárulási képernyőt állítottunk be. Ettől eltűnt az ellenőrizetlen alkalmazásokra figyelmeztető piros képernyő, az engedélykérésnél már a saját alkalmazásnév szerepel, és központilag láthatóvá váltak a hibanaplók és a kvóták.
A saját Cloud-projekt nyitotta meg az utat a közzététel felé is. A Google Workspace Marketplace SDK segítségével az alkalmazást belső alkalmazásként publikáltuk a szervezet Marketplace-én, ikonnal, leírással és adatvédelmi tájékoztatóval. Belső közzétételnél nincs szükség Google-ellenőrzésre, a jóváhagyás a saját rendszergazdánk kezében van. Így a parkolófoglaló ugyanúgy megjelenik a kollégák Google alkalmazásindítójában, mint a Gmail vagy a Naptár, és nem kell linkeket körbeküldözgetni.
Amit tanultunk: AI fejlesztésnél nem a kód volt a nehéz rész
A parkolófoglaló alkalmazás nem nagy szoftverprojekt, és éppen ez benne a lényeg. Egy valós, mindennapi problémára a már használt platformon, néhány napos átfutással, a napi munka mellett született működő megoldás. A kulcs nem egy különleges technológia volt, hanem az, hogy elkezdtük: egy gyors próbából nőtt ki minden, ami utána jött.
Visszanézve a legtanulságosabb az volt, hol húzódott valójában a nehézség. Nem a kódban: azt az AI megírta, a hibákat pedig vele közösen javítottuk. Az igazi kihívást a platform adminisztrációs felületei jelentették (a Cloud Console, a hozzájárulási képernyő, a Marketplace beállításai), ahol egy fejlesztő rutinból mozog, egy nem fejlesztő viszont könnyen elakad. Itt is az AI adott kapaszkodót, lépésről lépésre, és csak néhány ponton kellett Google-adminisztrátori jogosultság.
A mérleg másik oldalán a platform áll. Mivel a bejelentkezés, a jogosultságok, az adatok és a terjesztés készen álltak, a munka teljes egészében a valódi problémára: a parkolók áttekinthetőségére koncentrálódhatott. Egy érett platform és egy végig mellette álló AI együtt tette lehetővé, hogy egy nem fejlesztő kolléga eljusson az első ötlettől a céges alkalmazásindítóig.