[{"data":1,"prerenderedAt":193},["ShallowReactive",2],{"blog-2026-03-08-architecture":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"body":16,"_type":187,"_id":188,"_source":189,"_file":190,"_stem":191,"_extension":192},"\u002Fblog\u002F2026-03-08-architecture","blog",false,"","Архитектура TiROBOTS: как устроена AI-платформа","Vue 3 + Strapi 5 + Yandex GPT — как всё это работает вместе","2026-03-08",[12,13,14,15],"tirobots","архитектура","vue","strapi",{"type":17,"children":18,"toc":180},"root",[19,27,34,80,86,91,114,119,125,135,140,146],{"type":20,"tag":21,"props":22,"children":23},"element","p",{},[24],{"type":25,"value":26},"text","Когда я начинал TiROBOTS, стояла задача: построить платформу, которая будет легко масштабироваться и поддерживаться одним разработчиком.",{"type":20,"tag":28,"props":29,"children":31},"h2",{"id":30},"стек",[32],{"type":25,"value":33},"Стек",{"type":20,"tag":35,"props":36,"children":37},"ul",{},[38,50,60,70],{"type":20,"tag":39,"props":40,"children":41},"li",{},[42,48],{"type":20,"tag":43,"props":44,"children":45},"strong",{},[46],{"type":25,"value":47},"Frontend:",{"type":25,"value":49}," Vue 3 + Tailwind CSS",{"type":20,"tag":39,"props":51,"children":52},{},[53,58],{"type":20,"tag":43,"props":54,"children":55},{},[56],{"type":25,"value":57},"Backend:",{"type":25,"value":59}," Strapi 5 (headless CMS)",{"type":20,"tag":39,"props":61,"children":62},{},[63,68],{"type":20,"tag":43,"props":64,"children":65},{},[66],{"type":25,"value":67},"AI:",{"type":25,"value":69}," Yandex GPT для текстов, Replicate для изображений",{"type":20,"tag":39,"props":71,"children":72},{},[73,78],{"type":20,"tag":43,"props":74,"children":75},{},[76],{"type":25,"value":77},"Инфраструктура:",{"type":25,"value":79}," PM2, Nginx, Ubuntu",{"type":20,"tag":28,"props":81,"children":83},{"id":82},"почему-strapi",[84],{"type":25,"value":85},"Почему Strapi",{"type":20,"tag":21,"props":87,"children":88},{},[89],{"type":25,"value":90},"Strapi даёт из коробки:",{"type":20,"tag":35,"props":92,"children":93},{},[94,99,104,109],{"type":20,"tag":39,"props":95,"children":96},{},[97],{"type":25,"value":98},"REST и GraphQL API",{"type":20,"tag":39,"props":100,"children":101},{},[102],{"type":25,"value":103},"Админку для контент-менеджмента",{"type":20,"tag":39,"props":105,"children":106},{},[107],{"type":25,"value":108},"Систему ролей и прав",{"type":20,"tag":39,"props":110,"children":111},{},[112],{"type":25,"value":113},"Кастомные контроллеры",{"type":20,"tag":21,"props":115,"children":116},{},[117],{"type":25,"value":118},"Это позволило сосредоточиться на бизнес-логике, а не на бойлерплейте.",{"type":20,"tag":28,"props":120,"children":122},{"id":121},"архитектура-ai-пайплайна",[123],{"type":25,"value":124},"Архитектура AI-пайплайна",{"type":20,"tag":126,"props":127,"children":129},"pre",{"code":128},"Тема → Генерация текста (GPT) → Ревью (Главный редактор) → Генерация изображения (Replicate) → Публикация\n",[130],{"type":20,"tag":131,"props":132,"children":133},"code",{"__ignoreMap":7},[134],{"type":25,"value":128},{"type":20,"tag":21,"props":136,"children":137},{},[138],{"type":25,"value":139},"Каждый этап — отдельный сервис. Если AI сгенерировал плохой текст, главный редактор отправляет на переработку.",{"type":20,"tag":28,"props":141,"children":143},{"id":142},"уроки",[144],{"type":25,"value":145},"Уроки",{"type":20,"tag":147,"props":148,"children":149},"ol",{},[150,160,170],{"type":20,"tag":39,"props":151,"children":152},{},[153,158],{"type":20,"tag":43,"props":154,"children":155},{},[156],{"type":25,"value":157},"Не усложняй раньше времени.",{"type":25,"value":159}," Начал с монолита, разделю когда понадобится",{"type":20,"tag":39,"props":161,"children":162},{},[163,168],{"type":20,"tag":43,"props":164,"children":165},{},[166],{"type":25,"value":167},"AI нужен контекст.",{"type":25,"value":169}," Чем больше контекста даёшь модели, тем лучше результат",{"type":20,"tag":39,"props":171,"children":172},{},[173,178],{"type":20,"tag":43,"props":174,"children":175},{},[176],{"type":25,"value":177},"Мониторинг критичен.",{"type":25,"value":179}," Когда роботы работают 24\u002F7, нужно знать что происходит",{"title":7,"searchDepth":181,"depth":181,"links":182},2,[183,184,185,186],{"id":30,"depth":181,"text":33},{"id":82,"depth":181,"text":85},{"id":121,"depth":181,"text":124},{"id":142,"depth":181,"text":145},"markdown","content:blog:2026-03-08-architecture.md","content","blog\u002F2026-03-08-architecture.md","blog\u002F2026-03-08-architecture","md",1784082562959]