[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"media-detail-with-another-ai-agent-oformlyaet-zakaz-katalog-ostatki-oplata":3},{"media":4,"anotherMedia":657},{"id":5,"documentId":6,"title":7,"date":8,"description":9,"order":10,"slug":11,"showOnMainPage":12,"createdAt":13,"updatedAt":14,"publishedAt":15,"locale":16,"media_areas":17,"cover":610,"content":652},266,"xigmp6s4a3rypjza7nyd2jyu","AI-агент оформляет заказ: готов ли интернет-магазин отдать ему каталог, остатки и оплату","2026-09-03",null,1,"ai-agent-oformlyaet-zakaz-katalog-ostatki-oplata",true,"2026-09-03T08:28:16.365Z","2026-09-03T12:51:46.475Z","2026-09-03T12:51:46.548Z","ru",[18,91],{"id":19,"documentId":20,"title":21,"slug":22,"order":23,"createdAt":24,"updatedAt":24,"publishedAt":25,"locale":16,"media":26,"localizations":90},33,"xhke7f1vzoqyx9nzqc1sukc6","e-commerce","ecommerce-blog",500,"2026-08-31T12:06:40.235Z","2026-08-31T12:06:40.258Z",[27,36,45,46,55,64,73,81],{"id":28,"documentId":29,"title":30,"date":31,"description":9,"order":10,"slug":32,"showOnMainPage":12,"createdAt":33,"updatedAt":34,"publishedAt":35,"locale":16},310,"zm2xqct6baoxjz7jsy605ztw","Duolingo прибавил 23% ежедневной аудитории. Что интернет-магазин может забрать у совы\n","2026-08-31","duolingo-23-rosta-gamifikaciya-dlya-magazina","2026-08-31T08:37:31.518Z","2026-09-14T12:31:11.576Z","2026-09-14T12:31:11.708Z",{"id":37,"documentId":38,"title":39,"date":40,"description":9,"order":10,"slug":41,"showOnMainPage":12,"createdAt":42,"updatedAt":43,"publishedAt":44,"locale":16},336,"xujodhmvw1zxpvpcqahtklmc","Когда D2C становится выгоднее маркетплейса: расчёт по заказам\n","2026-08-28","kogda-d2c-vygodnee-marketpleysa-raschet-po-zakazam","2026-08-27T14:24:12.532Z","2026-09-17T22:22:16.654Z","2026-09-17T22:22:16.749Z",{"id":5,"documentId":6,"title":7,"date":8,"description":9,"order":10,"slug":11,"showOnMainPage":12,"createdAt":13,"updatedAt":14,"publishedAt":15,"locale":16},{"id":47,"documentId":48,"title":49,"date":50,"description":9,"order":23,"slug":51,"showOnMainPage":12,"createdAt":52,"updatedAt":53,"publishedAt":54,"locale":16},311,"v3w411p7i1i1btgcmn7pwxl7","Цена уже изменилась, остаток ещё старый: где ломается единый кабинет селлера","2026-09-11","edinyy-kabinet-sellera-dlya-marketpleysov","2026-09-11T14:35:28.405Z","2026-09-14T15:33:57.800Z","2026-09-14T15:33:57.871Z",{"id":56,"documentId":57,"title":58,"date":59,"description":9,"order":60,"slug":61,"showOnMainPage":12,"createdAt":62,"updatedAt":62,"publishedAt":63,"locale":16},317,"ekx4n93yajvm1hk8iqyzw4ju","Tinder обновил рекомендации. Почему маркетплейсу мало фильтров и сортировки","2026-09-15",3,"-obnovleniya-tinder-kak-marketpleys-uluchshaet-rekomendatsii-i-sortirovku","2026-09-15T16:47:04.947Z","2026-09-15T16:47:05.044Z",{"id":65,"documentId":66,"title":67,"date":68,"description":9,"order":10,"slug":69,"showOnMainPage":12,"createdAt":70,"updatedAt":71,"publishedAt":72,"locale":16},321,"k6ijlgqkm5unejznzmeyo4vg","Интеграция с маркетплейсами и ERP: как синхронизировать заказы, статусы и остатки\n","2026-09-16","integraciya-marketpleysov-i-erp","2026-09-16T11:08:28.748Z","2026-09-16T11:31:18.295Z","2026-09-16T11:31:18.405Z",{"id":74,"documentId":75,"title":76,"date":77,"description":9,"order":23,"slug":78,"showOnMainPage":12,"createdAt":79,"updatedAt":79,"publishedAt":80,"locale":16},348,"vhvm4rgi4utkvdl5lsn236cb","Омниканальная платформа: как объединить клиентов, заказы и остатки","2026-09-20","omnikanalnaya-platforma-kak-obedinit-klientov-zakazy-i-ostatki","2026-09-20T15:23:08.467Z","2026-09-20T15:23:08.536Z",{"id":82,"documentId":83,"title":84,"date":85,"description":9,"order":23,"slug":86,"showOnMainPage":12,"createdAt":87,"updatedAt":88,"publishedAt":89,"locale":16},352,"nlh8oehrwqcexi2atoqykh3s","Как мы для онлайн-школы выбирали между коробкой, конструктором и стройкой с нуля — и что из этого выходит по деньгам\n","2026-07-27","-vybor-mezhdu-korobkoy-konstruktorom-i-stroykoy-onlayn-shkoly","2026-07-27T15:09:01.113Z","2026-09-20T16:12:21.034Z","2026-09-20T16:12:21.186Z",[],{"id":92,"documentId":93,"title":94,"slug":95,"order":23,"createdAt":96,"updatedAt":96,"publishedAt":97,"locale":16,"media":98,"localizations":609},2,"ei24o3vyhndi1hqwqhnd61p0","Все","ALL","2026-02-25T07:47:50.713Z","2026-02-25T07:47:50.739Z",[99,110,120,129,139,148,157,166,175,185,194,204,213,222,231,240,249,258,267,276,285,294,303,304,313,322,331,339,347,355,364,372,382,392,401,410,419,428,437,446,455,464,465,466,475,484,485,494,502,511,520,528,535,543,551,552,559,566,567,568,576,584,592,600,608],{"id":100,"documentId":101,"title":102,"date":103,"description":104,"order":105,"slug":106,"showOnMainPage":12,"createdAt":107,"updatedAt":108,"publishedAt":109,"locale":16},194,"ogd13ylii6xd51tsg0yg5vjm","Мы регулярно участвуем в премиях \u2028и рейтингах ","2025-12-12","В этом году мы не «надеялись на победу» — мы за ней поехали",600,"my-regulyarno-uchastvuem-v-premiyah-i-rejtingah-1","2026-02-27T13:43:43.450Z","2026-07-30T14:49:41.482Z","2026-07-30T14:49:41.550Z",{"id":111,"documentId":112,"title":113,"date":114,"description":115,"order":105,"slug":116,"showOnMainPage":12,"createdAt":117,"updatedAt":118,"publishedAt":119,"locale":16},188,"ydsmydf287a3yxdji1i4r5z1","еще одна победа!","2025-12-04","Проект Qtim — приложение «Дневник» для «Онлайн-школы №1» — занял третье место в Рейтинге Рунета.","eshhe-odna-pobeda","2026-03-04T07:03:38.855Z","2026-07-30T14:47:13.394Z","2026-07-30T14:47:13.435Z",{"id":121,"documentId":122,"title":123,"date":124,"description":9,"order":105,"slug":125,"showOnMainPage":12,"createdAt":126,"updatedAt":127,"publishedAt":128,"locale":16},189,"zx8hvq7xvwm6a72a8wvncuft","Workspace объявил результаты рейтинга ","2026-10-10","workspace-obyavil-rezultaty-rejtinga","2026-03-04T09:37:49.436Z","2026-07-30T14:47:33.683Z","2026-07-30T14:47:33.742Z",{"id":130,"documentId":131,"title":132,"date":133,"description":134,"order":105,"slug":135,"showOnMainPage":12,"createdAt":136,"updatedAt":137,"publishedAt":138,"locale":16},193,"r3pwx014em719gtwicw9p36t"," церемония награждения премии «Золотой сайт»","2024-12-20","Онлайн-школа №1 забирает все награды","czeremoniya-nagrazhdeniya-premii-zolotoj-sajt","2026-03-04T10:16:10.453Z","2026-07-30T14:49:27.733Z","2026-07-30T14:49:27.815Z",{"id":140,"documentId":141,"title":142,"date":143,"description":9,"order":23,"slug":144,"showOnMainPage":12,"createdAt":145,"updatedAt":146,"publishedAt":147,"locale":16},136,"ej9r23ghy5qy8etbvuujvhun","ФНС проверяет реальность ИТ-разработок","2026-03-25","fns-proveryaet-realnost-it-razrabotok-chto-mozhno-uspet-za-30-dnej","2026-03-25T09:35:43.649Z","2026-05-27T09:11:19.129Z","2026-05-27T09:11:19.211Z",{"id":149,"documentId":150,"title":151,"date":152,"description":9,"order":23,"slug":153,"showOnMainPage":12,"createdAt":154,"updatedAt":155,"publishedAt":156,"locale":16},135,"px232j10z8907syoldwzbqnw","Почему рынку в 2026 году нужен не статус ИТ-компании, а доказуемый продукт","2026-03-27","pochemu-v-2026-godu-vazhen-ne-status-it-kompanii-a-realnyj-produkt","2026-03-27T15:41:14.276Z","2026-05-27T09:11:04.501Z","2026-05-27T09:11:04.562Z",{"id":158,"documentId":159,"title":160,"date":161,"description":9,"order":23,"slug":162,"showOnMainPage":12,"createdAt":163,"updatedAt":164,"publishedAt":165,"locale":16},149,"gbefdj7617jkuhdg2uiw6ifn","Сколько стоит разработка MVP в 2026","2026-03-26","stoimost-razrabotki-mvp-v-2026-godu","2026-03-27T16:29:20.000Z","2026-05-27T09:17:03.014Z","2026-05-27T09:17:03.107Z",{"id":167,"documentId":168,"title":169,"date":170,"description":9,"order":23,"slug":171,"showOnMainPage":12,"createdAt":172,"updatedAt":173,"publishedAt":174,"locale":16},134,"rl2huy6muohp1clo4cvg00zz","Рынок готовых платформ попадает в зону давления","2026-03-31","rynok-gotovyh-platform-pod-davleniem","2026-03-31T16:00:40.688Z","2026-05-27T09:10:09.516Z","2026-05-27T09:10:09.576Z",{"id":176,"documentId":177,"title":178,"date":179,"description":180,"order":105,"slug":181,"showOnMainPage":12,"createdAt":182,"updatedAt":183,"publishedAt":184,"locale":16},192,"slc42o5s3klmtwkvvzyjfji5","Забрали сразу две награды на премии «Золотое приложение»","2026-04-01","Две награды. Два разных проекта. Два сильных результата.\n","media-3","2026-04-03T07:26:17.360Z","2026-07-30T14:49:14.439Z","2026-07-30T14:49:14.576Z",{"id":186,"documentId":187,"title":188,"date":189,"description":9,"order":23,"slug":190,"showOnMainPage":12,"createdAt":191,"updatedAt":192,"publishedAt":193,"locale":16},156,"qu6e4sgiy5zjcz548x1mija8","Почему EdTech-проектам рискованно строиться на чужой платформе","2026-04-10","riski-edtech-proektov-na-chuzhikh-platformakh","2026-04-10T14:54:48.320Z","2026-05-27T11:20:55.448Z","2026-05-27T11:20:55.519Z",{"id":195,"documentId":196,"title":197,"date":198,"description":9,"order":199,"slug":200,"showOnMainPage":12,"createdAt":201,"updatedAt":202,"publishedAt":203,"locale":16},195,"ersgie5e85wpniq47fuqbstp","Почему дешевые обходные схемы становятся дорогими","2026-04-14",300,"pochemu-deshevye-shemy-obkhoda-privodyat-k-vysokim-zatratam","2026-04-14T13:00:12.314Z","2026-07-30T14:50:35.406Z","2026-07-30T14:50:35.453Z",{"id":205,"documentId":206,"title":207,"date":208,"description":9,"order":23,"slug":209,"showOnMainPage":12,"createdAt":210,"updatedAt":211,"publishedAt":212,"locale":16},153,"g5b2wxj7re10lyayjsqbpd9j","Как понять, чем компания реально управляет в своем ИТ-продукте","2026-04-15","kak-proverit-upravlenie-it-produktom-v-kompanii","2026-04-15T15:10:47.274Z","2026-05-27T11:14:52.446Z","2026-05-27T11:14:52.512Z",{"id":214,"documentId":215,"title":216,"date":217,"description":9,"order":23,"slug":218,"showOnMainPage":12,"createdAt":219,"updatedAt":220,"publishedAt":221,"locale":16},155,"iemgcvwws2lyzyz8qref9ebq","Где заканчивается внедрение и начинается собственный продукт","2026-04-23","vnedrenie-korobochnyh-resheniy-i-sobstvennyy-produkt-dlya-biznesa","2026-04-23T12:45:27.057Z","2026-05-27T11:20:11.958Z","2026-05-27T11:20:12.051Z",{"id":223,"documentId":224,"title":225,"date":226,"description":9,"order":23,"slug":227,"showOnMainPage":12,"createdAt":228,"updatedAt":229,"publishedAt":230,"locale":16},151,"ebwajdbr53mo5mno9n9hy44c","AI-агенты в продакшене: экономия или новая статья расходов","2026-04-29","ai-agenty-v-biznese","2026-04-29T15:00:44.149Z","2026-05-27T11:12:37.292Z","2026-05-27T11:12:37.378Z",{"id":232,"documentId":233,"title":234,"date":235,"description":9,"order":23,"slug":236,"showOnMainPage":12,"createdAt":237,"updatedAt":238,"publishedAt":239,"locale":16},137,"h713429nv5nf42hksety3udo","Как выбрать подрядчика по разработке: чек-лист от компании с 280+ проектами","2026-05-12","kak-vybrat-podryadchika-po-razrabotke","2026-05-12T14:27:43.934Z","2026-05-27T09:11:52.833Z","2026-05-27T09:11:52.888Z",{"id":241,"documentId":242,"title":243,"date":244,"description":9,"order":23,"slug":245,"showOnMainPage":12,"createdAt":246,"updatedAt":247,"publishedAt":248,"locale":16},160,"fleu8iabwalh7dwbfkxuew4p","Flutter в продакшене: где появляется экономия","2026-06-23","flutter-v-razrabotke-ekonomiya-na-mobilnykh-prilozheniyakh","2026-06-23T13:14:39.410Z","2026-06-23T13:18:38.472Z","2026-06-23T13:18:38.525Z",{"id":250,"documentId":251,"title":252,"date":253,"description":9,"order":23,"slug":254,"showOnMainPage":12,"createdAt":255,"updatedAt":256,"publishedAt":257,"locale":16},175,"g0rbfiyvtlpoh0wlalq8dsyp","Когда бизнесу пора переходить от идеи к MVP","2026-07-03","kogda-biznesu-stoit-perehodit-ot-idei-k-mvp","2026-07-03T14:26:20.648Z","2026-07-27T08:28:26.249Z","2026-07-27T08:28:26.319Z",{"id":259,"documentId":260,"title":261,"date":262,"description":9,"order":199,"slug":263,"showOnMainPage":12,"createdAt":264,"updatedAt":265,"publishedAt":266,"locale":16},256,"txt60k65mnql530q38z0path","Когда онлайн-школе пора менять стандартную LMS\n","2026-07-13","kogda-onlajn-shkole-stoit-smenit-standartnuyu-lms","2026-07-13T14:45:31.490Z","2026-08-31T12:15:47.434Z","2026-08-31T12:15:47.500Z",{"id":268,"documentId":269,"title":270,"date":271,"description":9,"order":92,"slug":272,"showOnMainPage":12,"createdAt":273,"updatedAt":274,"publishedAt":275,"locale":16},338,"b82vt0dmoot3vi0yo5y3j435","Как посчитать бюджет RAG и не переплатить за модель","2026-07-14","kak-rasschitat-byudzet-rag-i-izbezhat-lishnikh-zatrat","2026-07-14T12:01:48.568Z","2026-09-17T22:42:53.015Z","2026-09-17T22:42:53.076Z",{"id":277,"documentId":278,"title":279,"date":280,"description":9,"order":23,"slug":281,"showOnMainPage":12,"createdAt":282,"updatedAt":283,"publishedAt":284,"locale":16},257,"jknljxwtbcr6umo95k5onfcq","Мы выбрали для EdTech ту же технологию, что и Pornhub. Потому что тормоза всем мешают","2026-07-17","-tekhnologiya-pornhub-dlya-edtech","2026-07-17T13:13:00.710Z","2026-08-31T12:17:25.061Z","2026-08-31T12:17:25.155Z",{"id":286,"documentId":287,"title":288,"date":289,"description":9,"order":10,"slug":290,"showOnMainPage":12,"createdAt":291,"updatedAt":292,"publishedAt":293,"locale":16},297,"yazmsp31df1ggv8saaix8dkd","«Тут почти стандартно, пара нюансов»: как эта фраза убивает экономику подписки\n","2026-07-22","-tut-pochti-standartno-para-nyuansov-kak-eta-fraza-ubivaet-ekonomiku-podpiski","2026-07-22T11:46:36.625Z","2026-09-13T23:21:38.544Z","2026-09-13T23:21:38.602Z",{"id":295,"documentId":296,"title":297,"date":298,"description":9,"order":23,"slug":299,"showOnMainPage":12,"createdAt":300,"updatedAt":301,"publishedAt":302,"locale":16},258,"gnlxdx5dl5wgdemt91xm57j9","4 продукта на NestJS: где стек сработал, а где мы ушли на Go\n","2026-07-23","-produkty-na-nestjs-i-go","2026-07-23T15:10:53.621Z","2026-08-31T12:18:05.700Z","2026-08-31T12:18:05.791Z",{"id":82,"documentId":83,"title":84,"date":85,"description":9,"order":23,"slug":86,"showOnMainPage":12,"createdAt":87,"updatedAt":88,"publishedAt":89,"locale":16},{"id":305,"documentId":306,"title":307,"date":308,"description":9,"order":23,"slug":309,"showOnMainPage":12,"createdAt":310,"updatedAt":311,"publishedAt":312,"locale":16},349,"u6ilvydbctqytrf7heo2scno","Кнопка «Войти» за миллионы: когда бизнесу правда нужна своя ВКС\n","2026-07-28","-knopka-voiti-za-milliony-kogda-biznesu-pravda-nuzhna-svoya-vks","2026-07-28T13:47:41.153Z","2026-09-20T15:32:52.781Z","2026-09-20T15:32:52.885Z",{"id":314,"documentId":315,"title":316,"date":317,"description":9,"order":60,"slug":318,"showOnMainPage":12,"createdAt":319,"updatedAt":320,"publishedAt":321,"locale":16},292,"dcenjtj61ta9j4xssc9be8n4","AI-чатбот за 2 недели: что проверить до сметы на 2 млн","2026-07-30","-ai-chatbot-chto-proverit-pered-razrabotkoy","2026-07-30T13:23:01.866Z","2026-09-13T22:34:22.404Z","2026-09-13T22:34:22.481Z",{"id":323,"documentId":324,"title":325,"date":326,"description":9,"order":10,"slug":327,"showOnMainPage":12,"createdAt":328,"updatedAt":329,"publishedAt":330,"locale":16},303,"k77qvgjbwvomrrx4tn51benn","Почему похожие интернет-магазины отличаются по стоимости в несколько раз","2026-07-31","-pochemu-pohozhie-internet-magaziny-otlichayutsya-po-stoimosti-v-neskolko-raz","2026-07-31T16:11:46.552Z","2026-09-14T11:00:11.859Z","2026-09-14T11:00:11.926Z",{"id":332,"documentId":333,"title":334,"date":335,"description":9,"order":23,"slug":336,"showOnMainPage":12,"createdAt":337,"updatedAt":337,"publishedAt":338,"locale":16},200,"myvt92baeeu5v8avnec7dqxv","Кнопка стала красивее, товара всё равно нет: почему редизайн не спасает продажи в e-commerce","2026-08-03","-redizayn-interfeysa-v-e-commerce","2026-08-03T15:04:24.695Z","2026-08-03T15:04:24.753Z",{"id":340,"documentId":341,"title":342,"date":343,"description":9,"order":23,"slug":344,"showOnMainPage":12,"createdAt":345,"updatedAt":345,"publishedAt":346,"locale":16},202,"a4ckp7tbgmtv0utmia4b808l","Новая роль — новый проект: когда личные кабинеты пора собирать в экосистему","2026-08-04","-lichnye-kabineti-v-ekosisteme-optimizatsiya-protsessov","2026-08-04T14:13:59.695Z","2026-08-04T14:13:59.762Z",{"id":348,"documentId":349,"title":350,"date":351,"description":9,"order":60,"slug":352,"showOnMainPage":12,"createdAt":353,"updatedAt":353,"publishedAt":354,"locale":16},204,"k14jk3d9zgf69tmumdlcoh2f","Сколько стоит AI после релиза: токены, контекст, хранение и контроль качества","2026-08-05","-stoimost-ai-posle-reliza-tokeny-kontekst-khranenie-i-kontrol-kachestva","2026-08-05T17:49:43.277Z","2026-08-05T17:49:43.342Z",{"id":356,"documentId":357,"title":358,"date":359,"description":9,"order":92,"slug":360,"showOnMainPage":12,"createdAt":361,"updatedAt":362,"publishedAt":363,"locale":16},339,"jdz6gl00sz72z0egu84yf8cn","16 млн за полгода: аутсорс или штат в 2026 году","2026-08-06","-autsorsing-ili-shtat-sravnenie-zatrat","2026-08-06T17:30:36.209Z","2026-09-17T22:44:36.382Z","2026-09-17T22:44:36.451Z",{"id":365,"documentId":366,"title":367,"date":368,"description":9,"order":23,"slug":369,"showOnMainPage":12,"createdAt":370,"updatedAt":370,"publishedAt":371,"locale":16},210,"imbbxnbft75duehba72yjk23","Любая правка — мини-проект: 6 признаков, что корпоративный сайт пора пересобирать","2026-08-10","-priznaki-neobhodimosti-peresborki-korporativnogo-sajta","2026-08-11T23:47:18.300Z","2026-08-11T23:47:18.367Z",{"id":373,"documentId":374,"title":375,"date":376,"description":9,"order":377,"slug":378,"showOnMainPage":12,"createdAt":379,"updatedAt":380,"publishedAt":381,"locale":16},351,"heaihqewz8dlu9x3ninbdiqq","GetCourse, iSpring или своя LMS: когда онлайн-школе нужна отдельная платформа","2026-08-11",5,"-getcourse-ispring-ili-svoya-lms-vybor-platformy-dlya-onlayn-shkoly","2026-08-11T23:59:00.384Z","2026-09-20T15:59:44.965Z","2026-09-20T15:59:45.057Z",{"id":383,"documentId":384,"title":385,"date":386,"description":9,"order":387,"slug":388,"showOnMainPage":12,"createdAt":389,"updatedAt":390,"publishedAt":391,"locale":16},332,"wcg59mzuex1spvgeegxdhn63","В дашборде план выполнен, в кассе денег нет: почему CRM показывает несколько версий бизнеса","2026-08-12",4,"-pochemu-crm-pokazyvaet-raznye-versii-biznesa","2026-08-12T22:13:44.432Z","2026-09-17T22:01:25.093Z","2026-09-17T22:01:25.160Z",{"id":393,"documentId":394,"title":395,"date":396,"description":9,"order":92,"slug":397,"showOnMainPage":12,"createdAt":398,"updatedAt":399,"publishedAt":400,"locale":16},350,"mpxer9aw8jjq44rby7j47pwi","Стоимость разработки интеграции — API, CRM, 1С и внешние сервисы\n","2026-08-13","stoimost-razrabotki-integracii-api-crm-1s-i-vneshnie-servisy","2026-08-18T10:36:53.371Z","2026-09-20T15:45:50.010Z","2026-09-20T15:45:50.144Z",{"id":402,"documentId":403,"title":404,"date":405,"description":9,"order":10,"slug":406,"showOnMainPage":12,"createdAt":407,"updatedAt":408,"publishedAt":409,"locale":16},304,"vvxg6n1kmg9y7k6143t9gm8o","1 октября в прод: что 12 платформам придётся перестроить из-за нового закона","2026-08-14","novyy-zakon-dlya-platform-12-servisov","2026-08-18T10:59:43.550Z","2026-09-14T12:10:46.768Z","2026-09-14T12:10:46.844Z",{"id":411,"documentId":412,"title":413,"date":414,"description":9,"order":10,"slug":415,"showOnMainPage":12,"createdAt":416,"updatedAt":417,"publishedAt":418,"locale":16},305,"z5gc803xpd7jutuksh8q0er3","97% компаний создают учебный контент сами: следующий дефицит EdTech — подготовка преподавателей","2026-08-17","97-kompaniy-sozdayut-uchebnyy-kontent-sami-podgotovka-prepodavateley","2026-08-18T11:17:37.963Z","2026-09-14T12:11:38.758Z","2026-09-14T12:11:38.812Z",{"id":420,"documentId":421,"title":422,"date":423,"description":9,"order":23,"slug":424,"showOnMainPage":12,"createdAt":425,"updatedAt":426,"publishedAt":427,"locale":16},309,"fm5glwnple0jwjkmo8gvldan","Сколько стоит мобильное приложение в 2026 году: почему сметы отличаются втрое\n","2026-08-18","stoimost-razrabotki-mobilnogo-prilozheniya-2026-smeta","2026-08-18T11:31:22.195Z","2026-09-14T12:19:58.030Z","2026-09-14T12:19:58.102Z",{"id":429,"documentId":430,"title":431,"date":432,"description":9,"order":10,"slug":433,"showOnMainPage":12,"createdAt":434,"updatedAt":435,"publishedAt":436,"locale":16},306,"x28rh3zoj50o59tcgvzve415","AI-агенты внутри компании: где нужны доступы, ограничения и человек на проверке","2026-08-19","ai-agenty-v-kompanii-dostupy-i-kontrol","2026-08-18T14:05:29.647Z","2026-09-14T12:13:14.538Z","2026-09-14T12:13:14.626Z",{"id":438,"documentId":439,"title":440,"date":441,"description":9,"order":10,"slug":442,"showOnMainPage":12,"createdAt":443,"updatedAt":444,"publishedAt":445,"locale":16},275,"cs2j0db6ed7l2zglni926s05","Как проверить AI-навык кандидата: тестовое, критерии и красные флаги","2026-08-21","proverka-ai-navyka-kandidata-testovoe-kriterii","2026-08-19T13:56:11.468Z","2026-09-09T12:26:24.517Z","2026-09-09T12:26:24.590Z",{"id":447,"documentId":448,"title":449,"date":450,"description":9,"order":10,"slug":451,"showOnMainPage":12,"createdAt":452,"updatedAt":453,"publishedAt":454,"locale":16},307,"qh3qmzfp2ceif4xf3tdoi9ap","Один товар, три цены и очередь согласований: чем B2B-маркетплейс отличается от интернет-магазина","2026-08-26","b2b-marketpleys-otlichiya-ot-internet-magazina","2026-08-26T09:04:07.905Z","2026-09-14T12:16:42.675Z","2026-09-14T12:16:42.754Z",{"id":456,"documentId":457,"title":458,"date":459,"description":9,"order":10,"slug":460,"showOnMainPage":12,"createdAt":461,"updatedAt":462,"publishedAt":463,"locale":16},308,"w8n42241rgavwtld0dn1fvcl","Один статус «готовится» запускает цепочку потерь: где ломается экономика приложения доставки","2026-08-27","gde-prilozhenie-sedaet-marzhu","2026-08-26T14:56:30.346Z","2026-09-14T12:18:58.975Z","2026-09-14T12:18:59.071Z",{"id":37,"documentId":38,"title":39,"date":40,"description":9,"order":10,"slug":41,"showOnMainPage":12,"createdAt":42,"updatedAt":43,"publishedAt":44,"locale":16},{"id":28,"documentId":29,"title":30,"date":31,"description":9,"order":10,"slug":32,"showOnMainPage":12,"createdAt":33,"updatedAt":34,"publishedAt":35,"locale":16},{"id":467,"documentId":468,"title":469,"date":470,"description":9,"order":10,"slug":471,"showOnMainPage":12,"createdAt":472,"updatedAt":473,"publishedAt":474,"locale":16},341,"lb4x4pfodc0sbnv9umz0b32a","Закрыл ноутбук, открыл телефон — и начал заново: где теряется контекст пользователя\n","2026-09-01","gde-teryaetsya-kontekst-polzovatelya","2026-08-31T12:47:31.448Z","2026-09-17T23:18:23.484Z","2026-09-17T23:18:23.551Z",{"id":476,"documentId":477,"title":478,"date":479,"description":9,"order":10,"slug":480,"showOnMainPage":12,"createdAt":481,"updatedAt":482,"publishedAt":483,"locale":16},337,"pbpm1u7r2yocuobuig7aows1","После оффера оценка кандидата пропадает: как связать найм, обучение и эффективность","2026-09-02","kak-svyazat-naym-obuchenie-i-effektivnost","2026-09-02T08:28:55.851Z","2026-09-17T22:35:13.146Z","2026-09-17T22:35:13.232Z",{"id":5,"documentId":6,"title":7,"date":8,"description":9,"order":10,"slug":11,"showOnMainPage":12,"createdAt":13,"updatedAt":14,"publishedAt":15,"locale":16},{"id":486,"documentId":487,"title":488,"date":489,"description":9,"order":10,"slug":490,"showOnMainPage":12,"createdAt":491,"updatedAt":492,"publishedAt":493,"locale":16},268,"ono02gti54gmgguq55q3eqfl","Мобильная LMS: как понять, что отдельному приложению есть работа\n","2026-09-04","mobilnaya-lms-otdelnoe-prilozhenie","2026-09-03T14:02:36.259Z","2026-09-04T12:25:32.211Z","2026-09-04T12:25:32.283Z",{"id":495,"documentId":496,"title":497,"date":498,"description":9,"order":10,"slug":499,"showOnMainPage":12,"createdAt":500,"updatedAt":500,"publishedAt":501,"locale":16},270,"tia92neitxsmtmvtu3k6ox2x","Пилот с планом на рост: как подготовить цифровой продукт к масштабированию","2026-09-07","pilot-s-planom-na-rost-masshtabirovanie","2026-09-07T13:11:01.617Z","2026-09-07T13:11:01.691Z",{"id":503,"documentId":504,"title":505,"date":506,"description":9,"order":10,"slug":507,"showOnMainPage":12,"createdAt":508,"updatedAt":509,"publishedAt":510,"locale":16},274,"mfzw1oxq307h7hldor2v71hh","Реклама сработала, сайт лёг: как проверить предел системы до пикового трафика","2026-09-08","reklama-srabotala-sayt-lyog-pikovyy-trafik","2026-09-08T11:25:13.641Z","2026-09-08T12:47:04.929Z","2026-09-08T12:47:04.999Z",{"id":512,"documentId":513,"title":514,"date":515,"description":9,"order":10,"slug":516,"showOnMainPage":12,"createdAt":517,"updatedAt":518,"publishedAt":519,"locale":16},277,"dqf6p9puiqfz6u2djss216vw","Баллы списались дважды: где ломается программа лояльности под нагрузкой","2026-09-09","programmnaya-loyalnost-pod-nagruzkoy","2026-09-08T11:39:39.209Z","2026-09-09T12:52:38.507Z","2026-09-09T12:52:38.592Z",{"id":521,"documentId":522,"title":523,"date":50,"description":9,"order":10,"slug":524,"showOnMainPage":12,"createdAt":525,"updatedAt":526,"publishedAt":527,"locale":16},279,"zttjv8sbmge05zro1ok576xe","Что IT-аудит находит в проекте перед релизом","it-audit-pered-relizom","2026-09-08T11:52:07.373Z","2026-09-11T12:36:23.593Z","2026-09-11T12:36:23.659Z",{"id":529,"documentId":530,"title":531,"date":50,"description":9,"order":23,"slug":532,"showOnMainPage":12,"createdAt":533,"updatedAt":533,"publishedAt":534,"locale":16},281,"ggdl1zmuuohkn3ubgxqu5wdz","Этапы разработки сайта: 7 контрольных точек от идеи до запуска","etapy-razrabotki-sayta-ot-idei-do-zapuska","2026-09-11T14:21:51.168Z","2026-09-11T14:21:51.261Z",{"id":536,"documentId":537,"title":538,"date":539,"description":9,"order":23,"slug":540,"showOnMainPage":12,"createdAt":541,"updatedAt":541,"publishedAt":542,"locale":16},299,"vc9i1ztfpn2yrd5nx782zp3z","Этапы разработки дизайна сайта: как создать привлекательный и функциональный веб-дизайн","2026-09-13","etapy-razrabotki-dizayna-sayta-kak-sozdat-privlekatelnyy-i-funktsionalnyy-veb-dizayn","2026-09-13T23:38:47.063Z","2026-09-13T23:38:47.130Z",{"id":544,"documentId":545,"title":546,"date":547,"description":9,"order":23,"slug":548,"showOnMainPage":12,"createdAt":549,"updatedAt":549,"publishedAt":550,"locale":16},301,"mj85w3jsdizxt9gpk1ngf564","Сколько стоит тестирование приложения и что влияет на цену","2026-09-14","skolko-stoit-testirovanie-prilozheniya-i-chto-vliyaet-na-tsenu","2026-09-14T09:26:29.005Z","2026-09-14T09:26:29.084Z",{"id":47,"documentId":48,"title":49,"date":50,"description":9,"order":23,"slug":51,"showOnMainPage":12,"createdAt":52,"updatedAt":53,"publishedAt":54,"locale":16},{"id":553,"documentId":554,"title":555,"date":547,"description":9,"order":23,"slug":556,"showOnMainPage":12,"createdAt":557,"updatedAt":557,"publishedAt":558,"locale":16},313,"yv49ig9l4j8vggzenf8rdxm3","Этапы управления проектом по разработке сайта или приложения","etapy-upravleniya-proektom-po-razrabotke-sayta-ili-prilozheniya","2026-09-14T15:36:41.687Z","2026-09-14T15:36:41.763Z",{"id":560,"documentId":561,"title":562,"date":547,"description":9,"order":23,"slug":563,"showOnMainPage":12,"createdAt":564,"updatedAt":564,"publishedAt":565,"locale":16},315,"nze9zg24dgc33oo464j2wo8v","Как искусственный интеллект меняет бизнес-процессы: от автоматизации до анализа данных","kak-iskusstvennyy-intellekt-menyaet-biznes-protsessy-ot-avtomatizatsii-do-analiza-dannykh","2026-09-14T21:35:44.550Z","2026-09-14T21:35:44.618Z",{"id":56,"documentId":57,"title":58,"date":59,"description":9,"order":60,"slug":61,"showOnMainPage":12,"createdAt":62,"updatedAt":62,"publishedAt":63,"locale":16},{"id":65,"documentId":66,"title":67,"date":68,"description":9,"order":10,"slug":69,"showOnMainPage":12,"createdAt":70,"updatedAt":71,"publishedAt":72,"locale":16},{"id":569,"documentId":570,"title":571,"date":572,"description":9,"order":23,"slug":573,"showOnMainPage":12,"createdAt":574,"updatedAt":574,"publishedAt":575,"locale":16},325,"zlz1zsbmf9t62lq9upjoh71o","Как правильно оценить разработку сайта и приложения\n","2026-09-17","kak-pravilno-otsenit-razrabotku-sayta-i-prilozheniya","2026-09-17T10:47:34.140Z","2026-09-17T10:47:34.227Z",{"id":577,"documentId":578,"title":579,"date":572,"description":9,"order":23,"slug":580,"showOnMainPage":12,"createdAt":581,"updatedAt":582,"publishedAt":583,"locale":16},330,"hk18zy8rgkffyo6py89yhijb","Как выбрать платформу для онлайн-школы","kak-vybrat-platformu-dlya-onlajn-shkoly","2026-09-17T11:02:32.852Z","2026-09-17T13:50:45.671Z","2026-09-17T13:50:45.748Z",{"id":585,"documentId":586,"title":587,"date":572,"description":9,"order":10,"slug":588,"showOnMainPage":12,"createdAt":589,"updatedAt":590,"publishedAt":591,"locale":16},331,"m3jg0ix87senqmdibgb089zk","Настройка резервного копирования: как проверить восстановление сервиса\n","rezervnoe-kopirovanie-proverka-vosstanovleniya","2026-09-17T08:38:21.082Z","2026-09-17T14:08:08.647Z","2026-09-17T14:08:08.708Z",{"id":593,"documentId":594,"title":595,"date":596,"description":9,"order":10,"slug":597,"showOnMainPage":12,"createdAt":598,"updatedAt":598,"publishedAt":599,"locale":16},343,"c4qw6xwuehgz8lo5zyabldkb","Платформа обучения сотрудников: почему курс заканчивается раньше рабочего результата","2026-09-18","platforma-obucheniya-sotrudnikov-rabochiy-rezultat","2026-09-18T10:17:38.082Z","2026-09-18T10:17:38.173Z",{"id":601,"documentId":602,"title":603,"date":596,"description":9,"order":10,"slug":604,"showOnMainPage":12,"createdAt":605,"updatedAt":606,"publishedAt":607,"locale":16},346,"fbzwk8k4u0jwlm6l2b9o2jr3","Как превращать результаты пользовательских интервью в задачи для бэклога","rezultaty-polzovatelskih-intervyu-v-zadachi-backloga","2026-09-18T13:05:14.859Z","2026-09-18T13:44:06.866Z","2026-09-18T13:44:06.944Z",{"id":74,"documentId":75,"title":76,"date":77,"description":9,"order":23,"slug":78,"showOnMainPage":12,"createdAt":79,"updatedAt":79,"publishedAt":80,"locale":16},[],{"id":611,"documentId":612,"name":613,"alternativeText":9,"caption":9,"width":614,"height":614,"formats":615,"hash":644,"ext":617,"mime":620,"size":645,"url":646,"previewUrl":9,"provider":647,"provider_metadata":9,"createdAt":648,"updatedAt":648,"publishedAt":648,"related":649},694,"zbr3rwphnt7py6h0deqoy0fx","photo_2026-09-03 15.47.52.jpeg",1200,{"large":616,"small":625,"medium":631,"thumbnail":638},{"ext":617,"url":618,"hash":619,"mime":620,"name":621,"path":9,"size":622,"width":623,"height":623,"sizeInBytes":624},".jpeg","https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_03_15_47_52_53bd4540a1.jpeg","large_photo_2026_09_03_15_47_52_53bd4540a1","image\u002Fjpeg","large_photo_2026-09-03 15.47.52.jpeg",54.61,1000,54608,{"ext":617,"url":626,"hash":627,"mime":620,"name":628,"path":9,"size":629,"width":23,"height":23,"sizeInBytes":630},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_03_15_47_52_53bd4540a1.jpeg","small_photo_2026_09_03_15_47_52_53bd4540a1","small_photo_2026-09-03 15.47.52.jpeg",18.39,18391,{"ext":617,"url":632,"hash":633,"mime":620,"name":634,"path":9,"size":635,"width":636,"height":636,"sizeInBytes":637},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_03_15_47_52_53bd4540a1.jpeg","medium_photo_2026_09_03_15_47_52_53bd4540a1","medium_photo_2026-09-03 15.47.52.jpeg",34.65,750,34647,{"ext":617,"url":639,"hash":640,"mime":620,"name":641,"path":9,"size":642,"width":186,"height":186,"sizeInBytes":643},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_03_15_47_52_53bd4540a1.jpeg","thumbnail_photo_2026_09_03_15_47_52_53bd4540a1","thumbnail_photo_2026-09-03 15.47.52.jpeg",3.41,3410,"photo_2026_09_03_15_47_52_53bd4540a1",67.55,"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_03_15_47_52_53bd4540a1.jpeg","aws-s3","2026-09-03T12:50:00.228Z",[650],{"__type":651,"id":5,"documentId":6,"title":7,"date":8,"description":9,"order":10,"slug":11,"showOnMainPage":12,"createdAt":13,"updatedAt":14,"publishedAt":15,"locale":16},"api::media.media",[653],{"__component":654,"id":655,"text":656},"media.text",228,"\u003Cp class=\"p1\">Покупатель пишет: «Найди мне чёрную куртку без натурального меха, до 20 тысяч рублей, с доставкой к субботе. Если итоговая цена выше 18 тысяч — сначала спроси». Дальше он хочет увидеть готовый заказ, а не восемь вкладок, три почти одинаковые модели и промокод, который оказался недействителен уже перед оплатой.\u003C\u002Fp>\u003Cp class=\"p1\">Для AI-агента такой запрос звучит как маршрут: понять требования, найти подходящий вариант, проверить остаток, посчитать доставку, получить разрешение на списание и оформить покупку. Для интернет-магазина это проверка всей системы: данные о товаре, остатке, цене, доставке и оплате должны совпадать в каталоге, ERP и складском контуре.\u003C\u002Fp>\u003Cp class=\"p1\">Когда покупатель передаёт часть заказа AI-агенту, интернет-магазину приходится пересматривать не только интерфейс, но и саму архитектуру взаимодействия с клиентом. Агенту нужны актуальные данные, понятные правила и безопасный способ выполнять действия от имени покупателя. Поэтому задача начинается не с кнопки «Подключить AI», а с проверки того, готовы ли каталог, остатки, цены, доставка и оплата работать как единая система.\u003Cbr>\u003Cbr>\u003Cstrong>Покупатель уходит из интерфейса. Магазин остаётся продавцом\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Первые рабочие стандарты уже показывают, как будет устроен такой заказ. OpenAI и Stripe опубликовали Agentic Commerce Protocol: агент ведёт пользователя через выбор и подтверждение, а магазин принимает или отклоняет заказ, проводит платёж через свою систему и отвечает за доставку, возврат и поддержку.\u003C\u002Fp>\u003Cp class=\"p1\">UCP (Universal Commerce Protocol) создаётся как отраслевой стандарт. Среди соразработчиков — Google, Shopify, Amazon, Microsoft, Meta, Salesforce, Stripe, Walmart, Target и Etsy; в туризме и доставке участвуют Booking.com, Expedia, Marriott, DoorDash и Uber Eats. UCP охватывает поиск, корзину, связь с аккаунтом, оформление и управление заказом. Такой состав показывает, что агентный канал уже развивается на уровне рыночной инфраструктуры.\u003C\u002Fp>\u003Cp class=\"p1\">Для e-commerce это шесть вопросов к бэкенду: что именно продаём, где товар лежит, сколько он стоит сейчас, как его доставить, кто разрешил платёж и что произошло после него. В финале те же вопросы превратятся в шесть контрактов, по которым можно ограничить пилот.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Комиссия — только одна строка в экономике агентного канала\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Сейчас для Shopify-магазинов продажи через ChatGPT проходят в checkout продавца, а справка Shopify указывает: дополнительной комиссии нет. В марте OpenAI вернула оформление на сайт магазина. Прежняя модель показывает, почему комиссию всё равно стоит закладывать в расчёт: тариф Instant Checkout начал действовать 2026-01-26 и составлял 4% с каждой завершённой покупки. Вместе с эквайрингом Shopify Payments общая ставка могла доходить до 9,2%; Google AI Mode, Gemini и Microsoft Copilot тогда проводили оформление без дополнительного сбора, сообщали PYMNTS и RetailBrew. Коммерческая схема изменилась примерно за два месяца, поэтому рядом со ставкой фиксируют дату, платформу и платёжный сценарий.\u003C\u002Fp>\u003Cp class=\"p1\">Конверсию в оплату считают как долю завершённых покупок среди заказов, которые агент передал в checkout. Если платформа показывает только оплаченные заказы, магазин не увидит отказы и не поймёт, где теряются покупатели. До пилота нужно согласовать знаменатель метрики и события, доступные в аналитике.\u003C\u002Fp>\u003Cp class=\"p1\">Маржу считают после комиссии канала, эквайринга, возвратов и поддержки. Заказов может стать больше, а прибыли — меньше, если вместе с ними растут возвраты и обращения. Для сравнения берут одинаковые категории, регионы и способы доставки, чтобы состав трафика не исказил вывод.\u003C\u002Fp>\u003Cp class=\"p1\">Средний чек помогает проверить, сохранилась ли допродажа. Агент сам решает, какие товары показать, поэтому у магазина меньше контроля над выкладкой, комплектами и предложением аксессуаров. В пилоте сравнивают сумму и состав заказа: сколько покупок содержат дополнительные позиции.\u003C\u002Fp>\u003Cp class=\"p1\">Доля покупателей, с которыми магазин сможет продолжить коммуникацию, зависит от прав на данные. UCP позволяет передавать атрибуцию, но не задаёт модель и окно учёта. Протокол также не гарантирует магазину историю поиска, отклонённые варианты и полный диалог. Право использовать контактные данные в CRM и программе лояльности нужно закрепить в договоре с платформой до пилота.\u003C\u002Fp>\u003Cp class=\"p1\">Комиссия и эти четыре показателя дают пять строк экономики канала. Технически успешный заказ подтверждает работу интеграции; окупаемость покажут все пять строк вместе.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Атрибуты становятся новой витриной для AI-агента\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-03 15.47.50.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_03_15_47_50_beb22f190b.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_03_15_47_50_beb22f190b.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_03_15_47_50_beb22f190b.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_03_15_47_50_beb22f190b.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_03_15_47_50_beb22f190b.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Человек может открыть карточку «Куртка North» и сам заметить, что графитовый цвет почти чёрный, размер M закончился, зато L доступен в соседнем магазине. Агенту нужны отдельные сущности: товар, вариант, цвет, размер, состав, цена, идентификатор склада и способы получения.\u003C\u002Fp>\u003Cp class=\"p1\">В спецификации каталога UCP товар отделён от варианта, который действительно можно купить. Вариант имеет свой идентификатор, цену и доступность; этот же идентификатор передаётся в сессию оформления заказа. Такая связка защищает от ситуации, когда агент рекомендует одну куртку, а в корзину отправляет её тёзку другого размера.\u003C\u002Fp>\u003Cp class=\"p1\">Для маркетолога меняется единица продажи. Агент не видит визуальную иерархию карточки и работает с тем, что можно разобрать как данные: атрибутами, ограничениями, условиями доставки и возврата. Описание «глубокий благородный оттенок для уверенных образов» помогает человеку представить вещь. Агенту нужны код цвета, состав, признак натурального меха и доступный размер.\u003C\u002Fp>\u003Cp class=\"p1\">Изображения, отзывы и редакционные материалы продолжают формировать спрос и доверие. В момент выбора внутри агентного канала видимость и конверсия зависят от полноты и точности товарных данных. Если у конкурента структурированы атрибуты, актуальны остатки и формализованы правила возврата, его товар проще сравнить и безопаснее добавить в заказ. Языковая модель интерпретирует запрос; финальный выбор привязывают к правилам и стабильным ID.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>«В наличии» живёт до первого запроса на доставку\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Остаток редко равен одному числу. Есть физическое количество на складе, доступный остаток с учётом резервов, витринные экземпляры, возвраты на проверке и товары в корзинах других покупателей. Ещё один слой добавляет логистика: позиция лежит в Казани, но не успевает к субботе в Санкт-Петербург.\u003C\u002Fp>\u003Cp class=\"p1\">Поэтому агенту мало ответа available: true. Ему нужны доступность конкретного варианта, адрес или зона доставки, способ получения, срок и момент, до которого расчёт остаётся действительным. Каталог помогает найти кандидата. Сессия оформления заказа повторно проверяет условия и возвращает состояние, которому магазин готов доверять в транзакции.\u003C\u002Fp>\u003Cp class=\"p1\">В UCP это разделено прямо: ответ каталога отражает текущие условия, но не считается обязательством продать; авторитетным становится ответ сессии оформления заказа. Для архитектуры это означает два правила. Остатки нужно получать из операционного контура, а перед оплатой — перепроверять. Если товар резервируется, у резерва должны быть срок жизни, причина снятия и связь с этой сессией.\u003C\u002Fp>\u003Cp class=\"p1\">Иначе два агента одновременно купят последний размер M. Куртка одна, а система успеет подтвердить её двум покупателям.\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-03 15.47.49.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_03_15_47_49_31604df9b8.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_03_15_47_49_31604df9b8.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_03_15_47_49_31604df9b8.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_03_15_47_49_31604df9b8.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_03_15_47_49_31604df9b8.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">\u003Cstrong>Цена меняется быстрее, чем агент дочитывает правила акции\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">В каталоге агент увидел 17 990 рублей. Затем покупатель назвал адрес, выбрал доставку, применил промокод и вошёл в программу лояльности. Итог зависит от региона, способа получения, налогов, персональной скидки, состава корзины и времени действия акции.\u003C\u002Fp>\u003Cp class=\"p1\">Магазину нужен единый сервис расчёта, который возвращает полную цену по строкам: товар, скидка, доставка, налог и итог. Ответ должен содержать валюту и целые значения в минимальных денежных единицах, чтобы 17 990 рублей не превратились в 17 990 копеек из-за творческого прочтения поля amount.\u003C\u002Fp>\u003Cp class=\"p1\">Сервис оформления заказа обязан возвращать актуальное состояние после каждого изменения. Если сумма выросла выше разрешённых 18 тысяч, агент останавливается и просит подтверждение. Если товара больше нет, предлагает заменить вариант или отменить сессию. Новую сумму нельзя проводить без повторного подтверждения: иначе магазин получает спор с покупателем и банком.\u003C\u002Fp>\u003Cp class=\"p1\">Здесь особенно опасны параллельные калькуляторы. Сайт считает скидку в одном сервисе, мобильное приложение — в другом, маркетплейс получает ночную выгрузку, а агенту собирают четвёртую формулу. Новый канал быстро найдёт все расхождения. Лучше дать ему тот же расчёт, на котором уже живёт основное оформление заказа.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Платёж требует лимита и доказательства полномочий\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Фраза «агент оплатит сам» звучит удобно до первого вопроса: кто разрешил ему потратить именно эту сумму именно в этом магазине? Платёжные схемы для агентной торговли заменяют реквизиты карты ограниченными полномочиями.\u003C\u002Fp>\u003Cp class=\"p1\">Например, Shared Payment Tokens от Stripe позволяют выпустить токен для конкретного продавца с ограничением по сумме и сроку действия. SPT находятся в статусе Public preview: механизм доступен для пилота без закрытого приглашения. Это ещё не GA, поэтому интеграция должна учитывать возможные изменения API. Магазин получает платёжный инструмент без исходных реквизитов карты. В сценарии с курткой разрешение может выглядеть так: один платёж этому продавцу, максимум 18 тысяч рублей, токен действует несколько минут.\u003C\u002Fp>\u003Cp class=\"p1\">Есть и задача распознавания самого агента. Протокол Trusted Agent Protocol от Visa описывает подписи, по которым магазин может проверить доверенного агента, связанное с покупателем поручение и платёжный контейнер. Без такой проверки продавец не отличит авторизованного агента от обычного автоматизированного трафика. Цепочку доверия настраивают до выдачи доступа к оплате.\u003C\u002Fp>\u003Cp class=\"p1\">У автономности должен быть стоп-кран. В правилах задают продавца, категорию, лимит, срок, допустимость замены и условия обязательного подтверждения. Дорогая покупка, первая транзакция, изменение цены или невозвратный товар возвращают управление человеку. Поручение и применённые правила связывают с заказом, чтобы лимит можно было доказать после транзакции.\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-03 15.47.56.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_03_15_47_56_ebcefd093a.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_03_15_47_56_ebcefd093a.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_03_15_47_56_ebcefd093a.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_03_15_47_56_ebcefd093a.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_03_15_47_56_ebcefd093a.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">\u003Cstrong>Повторный запрос не должен заказать две куртки\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Агенты будут повторять запросы. Сеть оборвалась после отправки платежа, ответ задержался, клиент не понял, создался ли заказ, и попробовал ещё раз. Для обычной страницы это неприятный крайний случай. Для программного клиента — штатное поведение.\u003C\u002Fp>\u003Cp class=\"p1\">Поэтому операции с последствиями должны поддерживать идемпотентность. Агент отправляет уникальный ключ, а магазин при повторе возвращает прежний результат вместо второго списания и нового заказа. В актуальной спецификации ACP такой ключ обязателен для создания, обновления, завершения и отмены сессии оформления заказа.\u003C\u002Fp>\u003Cp class=\"p1\">Сессию оформления заказа полезно хранить как конечный автомат с понятными состояниями: собирается, ждёт данных, готова к оплате, требует подтверждения, завершена, отменена. Переходы проверяет сервер. Агент не может перескочить от подбора товара к оплате, если адрес не прошёл валидацию или магазин ещё не подтвердил итог.\u003C\u002Fp>\u003Cp class=\"p1\">Логи тоже меняются. Для каждого действия нужны идентификаторы пользователя, агента, поручения, сессии оформления заказа, заказа и платежа. Тогда спор «я просил до 18 тысяч, откуда взялось 21 400?» разбирается по цепочке событий с точными состояниями и временем.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>После оплаты агенту понадобятся статусы и возврат\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">После успешной оплаты заказ могут собирать частями, переносить между складами, отменять из-за брака, выдавать в пункте или отправлять курьером. Покупатель захочет спросить того же агента: «Где куртка?» Через неделю — «Как вернуть размер?»\u003C\u002Fp>\u003Cp class=\"p1\">Магазину нужен API жизненного цикла заказа: стабильный ID, состав, статусы, трекинг, документы, правила отмены и возврата. События лучше передавать асинхронно, а текущий статус всегда уметь получить повторным запросом. Агент может объяснить событие человеческим языком, но факт «передан в доставку» приходит из системы управления заказами, складом или самой службы доставки.\u003C\u002Fp>\u003Cp class=\"p1\">Поддержка тоже остаётся в контуре продавца. Агент должен знать, в каких случаях он может отменить заказ по поручению, когда запросить подтверждение и когда передать диалог оператору. Передача оператору вместе с контекстом становится частью контракта, который проверяют до запуска.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Шесть вопросов к бэкенду становятся шестью контрактами\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Для пилота сначала проходим путь заказа и проверяем шесть границ системы. Выбор большой языковой модели остаётся следующим шагом. Агент работает через версионируемый API-слой с идентификаторами запросов и логами; каталог, WMS, расчёт цены, платёжный и заказной контуры остаются источниками данных:\u003C\u002Fp>\u003Col>\u003Cli data-list-item-id=\"e96128d046f2a4b57000b7053f8c8a5c1\">\u003Cp class=\"p1\">Каталог. У товара и каждого покупаемого варианта есть стабильные ID, структурированные атрибуты, ограничения и ссылки на правила продажи.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"efbad9b43c19efbae1a4f5c7c935c17cd\">\u003Cp class=\"p1\">Доступность. Система отвечает по варианту, складу, региону и способу получения, умеет перепроверить остаток и поставить ограниченный по времени резерв.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"ea107ac8fd1415c7efa5c13dfbf66dae7\">\u003Cp class=\"p1\">Цена. Один расчёт собирает товары, скидки, доставку и налоги; сервис оформления возвращает авторитетный итог после любого изменения.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e56395455b6b9574b622d25c23b56e781\">\u003Cp class=\"p1\">Полномочия и оплата. Магазин распознаёт агента, проверяет согласие покупателя и принимает ограниченный платёжный токен без доступа к исходным реквизитам.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"ec24a723fbe5d375a87a157775b56fc78\">\u003Cp class=\"p1\">Заказ. Повторный запрос безопасен, сессия оформления и заказ проходят по формализованным состояниям, каждое действие оставляет след в аудите.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"ecae88c439253e6c28c2208cb5dd81883\">\u003Cp class=\"p1\">Дальнейший путь. Агент может получить статус, запустить разрешённую отмену или возврат и передать исключение человеку вместе с контекстом.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Fol>\u003Cp class=\"p1\">\u003Cstrong>Пилот ограничивают одним продающим маршрутом\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Стартовый сценарий — одна категория с понятными вариантами, один регион, один способ доставки и верхний лимит заказа. Пользователь подтверждает состав и итоговую сумму; нестандартная скидка, замена товара, частичная доставка или ошибка интеграции передают заказ оператору. Если остатки обновляются раз в сутки, маршрут заканчивается передачей корзины человеку. Автономную оплату подключают после резервов, правил, токенов и аудита.\u003C\u002Fp>\u003Cp class=\"p1\">На таком маршруте быстро видны реальные разрывы: каталог не различает товар и SKU, ERP отдаёт остаток без резервов, промокод рассчитывается только во фронтенде, платёж создаётся отдельно от заказа. После стабильного цикла добавляют по одному измерению — категорию, регион, способ получения, программу лояльности или более высокий лимит. Так команда понимает, какой контракт изменился и где искать ошибку.\u003C\u002Fp>",[658,706,754],{"createdAt":491,"id":486,"documentId":487,"title":488,"date":489,"description":9,"order":10,"slug":490,"showOnMainPage":12,"updatedAt":492,"publishedAt":493,"locale":16,"cover":659,"content":692,"media_event":9,"media_areas":696,"seo":9,"localizations":705},{"id":660,"documentId":661,"name":662,"alternativeText":9,"caption":9,"width":614,"height":614,"formats":663,"hash":688,"ext":617,"mime":620,"size":689,"url":690,"previewUrl":9,"provider":647,"provider_metadata":9,"createdAt":691,"updatedAt":691,"publishedAt":691},698,"k50ygwpde7r8rzi8dtisstrl","photo_2026-09-04 15.05.29.jpeg",{"large":664,"small":670,"medium":676,"thumbnail":682},{"ext":617,"url":665,"hash":666,"mime":620,"name":667,"path":9,"size":668,"width":623,"height":623,"sizeInBytes":669},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_04_15_05_29_fbe6a08339.jpeg","large_photo_2026_09_04_15_05_29_fbe6a08339","large_photo_2026-09-04 15.05.29.jpeg",94.54,94539,{"ext":617,"url":671,"hash":672,"mime":620,"name":673,"path":9,"size":674,"width":23,"height":23,"sizeInBytes":675},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_04_15_05_29_fbe6a08339.jpeg","small_photo_2026_09_04_15_05_29_fbe6a08339","small_photo_2026-09-04 15.05.29.jpeg",33.22,33219,{"ext":617,"url":677,"hash":678,"mime":620,"name":679,"path":9,"size":680,"width":636,"height":636,"sizeInBytes":681},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_04_15_05_29_fbe6a08339.jpeg","medium_photo_2026_09_04_15_05_29_fbe6a08339","medium_photo_2026-09-04 15.05.29.jpeg",62.01,62014,{"ext":617,"url":683,"hash":684,"mime":620,"name":685,"path":9,"size":686,"width":186,"height":186,"sizeInBytes":687},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_04_15_05_29_fbe6a08339.jpeg","thumbnail_photo_2026_09_04_15_05_29_fbe6a08339","thumbnail_photo_2026-09-04 15.05.29.jpeg",5.53,5526,"photo_2026_09_04_15_05_29_fbe6a08339",114.91,"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_04_15_05_29_fbe6a08339.jpeg","2026-09-04T12:23:31.977Z",[693],{"__component":654,"id":694,"text":695},230,"\u003Cp class=\"p1\">Родитель открывает расписание двух детей между станциями метро. Ему нужна минута: проверить уроки на завтра, оценки и домашние задания. Если в этот момент показать ему мобильную версию всей LMS с курсами, отчётами и инструментами преподавателя, получится экскурсия по школе вместо ответа на простой вопрос.\u003C\u002Fp>\u003Cp class=\"p1\">Запрос «к веб-версии нужно ещё приложение» звучит просто. Но за ним стоят отдельная разработка и выпуск, проверка на разных устройствах, публикация в App Store и Google Play и дальнейшая поддержка после обновлений.\u003C\u002Fp>\u003Cp class=\"p1\">Поэтому начинать стоит не с решения «делаем приложение», а с учебной ситуации. Что именно телефон должен изменить для ученика, преподавателя или родителя? Если ответ сводится к уменьшенной копии личного кабинета, сначала стоит привести в порядок мобильный веб. В Qtim мы придерживаемся этого подхода при разработке EdTech-платформ: сначала определяем сценарий и его ценность для пользователя, а уже затем выбираем технологический формат.\u003Cbr>\u003Cbr>\u003Cstrong>Телефон должен получить отдельную задачу\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Отдельное приложение имеет смысл при двух условиях. Смартфон даёт учебному сценарию полезную возможность за пределами браузера. Человек возвращается к этому сценарию достаточно часто, чтобы установка окупилась удобством.\u003C\u002Fp>\u003Cp class=\"p1\">Рабочий критерий такой: учебный путь должен заметно выигрывать от телефона хотя бы в одном месте. Если выигрыша нет, приложение добавит продукту второй цикл выпуска, а ученику — ещё одну иконку.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>PWA хватает для коротких возвращений с телефона\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Основной учебный путь часто хорошо живёт в браузере. Ученик переходит по ссылке, входит в кабинет, смотрит урок, сдаёт тест и возвращается к расписанию. Ему не приходится искать сервис в сторе и разбираться с разрешениями до первого занятия.\u003C\u002Fp>\u003Cp class=\"p1\">Между адаптивным вебом и полноценным приложением есть PWA — сайт, который можно вынести на домашний экран и частично использовать без сети. Общий разбор выбора для первой версии я делал в отдельной статье. Такой формат подходит, когда учебный путь остаётся браузерным, а мобильному сценарию нужны уведомления и часть материалов без сети.\u003C\u002Fp>\u003Cp class=\"p1\">Например, расписание, короткие тесты и конспекты можно оставить в PWA, если ученик открывает их с телефона несколько раз в неделю. Если он часами учится без сети, выполняет задания и затем продолжает курс с другого устройства, нужен более строгий контур хранения и синхронизации. Тогда мы отдельно сравниваем PWA и приложение на целевых устройствах.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Формат онлайн-урока определяет устройство\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Демонстрацию экрана, работу с файлами и параллельное задание удобнее проходить за ноутбуком. Разговорная практика в дороге или частые подключения с телефона дают мобильному клиенту понятную работу. Один вебинар в месяц — лишний экзамен на любовь к установкам.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Офлайн начинается после кнопки «Скачать»\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Офлайн-доступ оправдан, когда обучение регулярно продолжается в дороге или в местах с нестабильной связью. Студент заранее сохраняет видео, аудио, конспект или задания, занимается без сети, а после подключения отправляет прогресс на сервер.\u003C\u002Fp>\u003Cp class=\"p1\">Мы заранее описываем, какие материалы доступны без интернета, сколько места они занимают, как обновляются и что произойдёт при работе с двух устройств. Простое правило «последняя синхронизация победила» может вместе со старой версией стереть развёрнутый ответ. Такой сюрприз в учебный план обычно не включают.\u003C\u002Fp>\u003Cp class=\"p1\">Если связь мешает изредка, достаточно дать возможность скачать отдельные материалы. Полноценная синхронизация нужна там, где без неё регулярно обрывается основной путь ученика.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Шесть курсов в вебе: карточки ещё не делают приложение\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Короткие занятия хорошо ложатся на телефон: повторить карточки, пройти один тест, разобрать ошибки.\u003C\u002Fp>\u003Cp class=\"p1\">В \u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fqtim.pro\u002Fprojects\u002Fstudycats\">«Стадикэтс»\u003C\u002Fa> мы за пять месяцев объединили шесть курсов в одну веб-платформу на Nuxt.js и NestJS. В кабинете есть пробники, домашние задания, карточки для повторения, статистика и игровые механики. Приложения у проекта нет: весь учебный контур работает в вебе.\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-04 15.05.28.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_04_15_05_28_de67b338c1.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_04_15_05_28_de67b338c1.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_04_15_05_28_de67b338c1.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_04_15_05_28_de67b338c1.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_04_15_05_28_de67b338c1.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Мобильный путь станет осмысленным, если ученики начнут возвращаться к карточкам с телефона по несколько раз в день и браузер будет мешать этим коротким заходам. Для пробника за компьютером раз в неделю большой экран полезнее места в сторе. Список функций задаёт возможности продукта, а формат определяет реальное поведение аудитории.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>460 экзаменов с камерой — и ни одного мобильного клиента\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Камера и микрофон часто выглядят готовым аргументом в пользу смартфона. В учебном задании они действительно могут быть полезны: сфотографировать решение, записать устный ответ или снять выполнение упражнения. Но устройство выбирают по всему процессу, а не по одной кнопке.\u003C\u002Fp>\u003Cp class=\"p1\">В \u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fqtim.pro\u002Fprojects\u002Fattestation-platform\">платформе аттестации\u003C\u002Fa> для Университета Льва Толстого экзаменационный контур вынесен в отдельный клиент: кандидат проверяет камеру и микрофон, включает запись видео, звука и экрана, затем сдаёт письменную или устную часть. Мобильного клиента в проекте нет. Экзамен проходит на площадке, в корпусе и аудитории, с фиксацией личности и записью экрана. Устройство здесь определяет регламент.\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-04 15.05.31.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_04_15_05_31_2bc03c00a0.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_04_15_05_31_2bc03c00a0.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_04_15_05_31_2bc03c00a0.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_04_15_05_31_2bc03c00a0.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_04_15_05_31_2bc03c00a0.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Через платформу прошли около 460 кандидатов. До разработки мы описали весь путь записи: создание файла, временное хранение, загрузку, доступ проверяющего и удаление. Камера занимает один элемент интерфейса; большая часть системы начинает работать после нажатия.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Три месяца на дневник, а не на всю LMS\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-04 15.05.26.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_04_15_05_26_d4041ddd9c.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_04_15_05_26_d4041ddd9c.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_04_15_05_26_d4041ddd9c.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_04_15_05_26_d4041ddd9c.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_04_15_05_26_d4041ddd9c.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Отдельный мобильный контур часто нужен конкретной роли. Родитель заходит на минуту: посмотреть расписание, оценки, домашние задания, посещаемость или запись занятия. Редактор курсов и инструменты преподавателя только удлинят этот маршрут.\u003C\u002Fp>\u003Cp class=\"p1\">Так мы разделили контуры в «Онлайн-школе №1». Учебное ядро осталось в вебе, а для родителей мы собрали \u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fqtim.pro\u002Fprojects\u002Fonlayn-shkola-1-mobile\">мобильный дневник \u003C\u002Fa>на Flutter поверх NestJS-бэкенда действующей платформы. Первую версию (MVP) сделали за три месяца. В неё вошли расписание, оценки, домашние задания, посещаемость, записи занятий и переключение между детьми в одном аккаунте.\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-04 15.05.32.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_04_15_05_32_ebf1f4dffb.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_04_15_05_32_ebf1f4dffb.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_04_15_05_32_ebf1f4dffb.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_04_15_05_32_ebf1f4dffb.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_04_15_05_32_ebf1f4dffb.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Главный экран собирает данные сразу из четырёх модулей: расписания, посещаемости, заданий и оценок. Сервер формирует агрегированную сводку и отдаёт её одним запросом, поэтому приложение не собирает экран по частям. Отдельно настроили часовые пояса: родитель видит уроки и сроки в своём времени, без смещения по серверу.\u003C\u002Fp>\u003Cp class=\"p1\">У каждой роли остался короткий маршрут, а общие данные живут в одном бэкенде. Получилось ровно то разделение, с которого началась статья: уроки — в вебе, дневник — в телефоне.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Пуши подождали до второй волны\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Оплату и чаты тоже перенесли на следующие этапы: ежедневный родительский сценарий уже работал без дополнительных функций.\u003C\u002Fp>\u003Cp class=\"p1\">Одни пуши мобильную разработку не оправдывают. Перед запуском мы проговариваем действие после каждого уведомления и метрику, по которой поймём его пользу: открыл ли родитель новое задание, увидел ли перенос урока, посмотрел ли комментарий учителя. Иначе приложение пополнит коллекцию каналов, которые пользователь отключает вместе со всеми остальными.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Копия веб-кабинета превращает каждое изменение в два выпуска\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">У приложения появляется собственная жизнь ещё до публикации. Команда настраивает сертификаты и подписи, готовит страницы в сторах, запрашивает разрешения и проверяет сборки на разных устройствах. После запуска этот цикл повторяется с каждым заметным обновлением.\u003C\u002Fp>\u003Cp class=\"p1\">Flutter позволяет вести один мобильный продукт для iOS и Android, когда экраны и основная логика совпадают. Публикация, тестирование и часть интеграций с возможностями телефона всё равно остаются раздельными. Полная копия веб-кабинета заставит каждую новую роль, оценку или отчёт приезжать сразу в два интерфейса.\u003C\u002Fp>\u003Cp class=\"p1\">Поэтому бэкенд строим по принципу API-first: бизнес-логика, роли, права, прогресс и аналитика остаются на сервере, а веб и приложение используют общий серверный API как разные клиенты. Такой подход позволяет добавить мобильный сценарий после проверки спроса, не перевозя LMS целиком в новый интерфейс.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Пять вопросов отделяют учебный сценарий от списка экранов\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli data-list-item-id=\"e88604eff0cae8795af8d6fb01f2f3aef\">\u003Cp class=\"p1\">В какой момент обучения человек берёт телефон: по дороге к занятию, во время задания или между уроками?\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"eaac7b5fef06ee4e16f274454f78dbf7f\">\u003Cp class=\"p1\">Какую короткую задачу он должен завершить за один заход?\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e2ad00b4055f223da7fdd0c5ef8b9ecbf\">\u003Cp class=\"p1\">Что мешает пройти этот путь в мобильном браузере: связь, работа с файлами, камера, микрофон или переход из уведомления?\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"eba6298a6320f10e6a7fcc9ed6c0cc457\">\u003Cp class=\"p1\">Кому нужен мобильный маршрут — ученику, родителю, преподавателю или куратору — и какая часть LMS нужна этой роли?К\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e94357be0dcf6406f2a8fc59e563284b5\">\u003Cp class=\"p1\">акая учебная метрика покажет результат: регулярность занятий, выполненные задания, пропуски или обращения в поддержку?\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp class=\"p1\">Ответы обычно приводят к одному из четырёх вариантов: адаптивный веб, PWA, отдельное мобильное приложение или специализированный клиент для контролируемого процесса. Название технологии появляется после маршрута пользователя.\u003C\u002Fp>\u003Cp>Если в школе уже есть повторяемый сценарий, для которого телефон действительно нужен, начинать стоит с него. Определить учебный путь, разделить задачи между вебом и мобильным контуром и только после этого выбирать формат разработки — приложение, адаптивный веб или их сочетание. Так мобильный продукт решает конкретную задачу пользователя, а не просто становится копией LMS на другом экране.\u003Cbr>&nbsp;\u003C\u002Fp>",[697,698],{"id":92,"documentId":93,"title":94,"slug":95,"order":23,"createdAt":96,"updatedAt":96,"publishedAt":97,"locale":16},{"id":699,"documentId":700,"title":701,"slug":702,"order":23,"createdAt":703,"updatedAt":703,"publishedAt":704,"locale":16},27,"x6rulaa9s3473663k7mutmd7","EdTech ","ed-tech","2026-07-30T14:30:19.041Z","2026-07-30T14:30:19.062Z",[],{"createdAt":500,"id":495,"documentId":496,"title":497,"date":498,"description":9,"order":10,"slug":499,"showOnMainPage":12,"updatedAt":500,"publishedAt":501,"locale":16,"cover":707,"content":740,"media_event":9,"media_areas":744,"seo":9,"localizations":753},{"id":708,"documentId":709,"name":710,"alternativeText":9,"caption":9,"width":614,"height":614,"formats":711,"hash":736,"ext":617,"mime":620,"size":737,"url":738,"previewUrl":9,"provider":647,"provider_metadata":9,"createdAt":739,"updatedAt":739,"publishedAt":739},710,"djlqc54odkt8h2c7o9wlaoq7","photo_2026-09-07 15.20.03.jpeg",{"large":712,"small":718,"medium":724,"thumbnail":730},{"ext":617,"url":713,"hash":714,"mime":620,"name":715,"path":9,"size":716,"width":623,"height":623,"sizeInBytes":717},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_07_15_20_03_2b6cdbd0e9.jpeg","large_photo_2026_09_07_15_20_03_2b6cdbd0e9","large_photo_2026-09-07 15.20.03.jpeg",46.39,46393,{"ext":617,"url":719,"hash":720,"mime":620,"name":721,"path":9,"size":722,"width":23,"height":23,"sizeInBytes":723},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_07_15_20_03_2b6cdbd0e9.jpeg","small_photo_2026_09_07_15_20_03_2b6cdbd0e9","small_photo_2026-09-07 15.20.03.jpeg",15.71,15714,{"ext":617,"url":725,"hash":726,"mime":620,"name":727,"path":9,"size":728,"width":636,"height":636,"sizeInBytes":729},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_07_15_20_03_2b6cdbd0e9.jpeg","medium_photo_2026_09_07_15_20_03_2b6cdbd0e9","medium_photo_2026-09-07 15.20.03.jpeg",29.65,29654,{"ext":617,"url":731,"hash":732,"mime":620,"name":733,"path":9,"size":734,"width":186,"height":186,"sizeInBytes":735},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_07_15_20_03_2b6cdbd0e9.jpeg","thumbnail_photo_2026_09_07_15_20_03_2b6cdbd0e9","thumbnail_photo_2026-09-07 15.20.03.jpeg",2.69,2687,"photo_2026_09_07_15_20_03_2b6cdbd0e9",56.72,"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_07_15_20_03_2b6cdbd0e9.jpeg","2026-09-07T13:10:58.669Z",[741],{"__component":654,"id":742,"text":743},232,"\u003Cp class=\"p1\">На демо руководитель проводит тестовый заказ: оплата проходит, отчёт открывается, команда кивает — пилот готов. Через неделю менеджер просит добавить корпоративного клиента, ограничить ему права и подтянуть данные из системы учёта 1С. Первая реальная правка затрагивает половину системы.\u003C\u002Fp>\u003Cp class=\"p1\">Проблема обычно начинается раньше большого трафика: второй сценарий, новая роль или интеграция могут затронуть решения, принятые специально для демонстрации. Поэтому до запуска стоит зафиксировать то, что дорого переделывать, а функции и мощности наращивать после подтверждения спроса.\u003C\u002Fp>\u003Cp class=\"p1\">Пилот с планом на рост — это не уменьшенная версия будущего продукта, а способ проверить узкую гипотезу, сохранив возможность развивать систему дальше. В Qtim такой подход позволяет заранее определить архитектурные решения, границы первой версии и точки, которые должны выдержать следующий этап развития продукта. Ниже — о том, что стоит предусмотреть до первого пользователя, а что можно отложить до подтверждённого спроса.\u003Cbr>\u003Cbr>&nbsp;\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-07 15.19.58.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_07_15_19_58_3cb90eba68.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_07_15_19_58_3cb90eba68.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_07_15_19_58_3cb90eba68.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_07_15_19_58_3cb90eba68.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_07_15_19_58_3cb90eba68.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">\u003Cstrong>Пилот выдержал демо. Первое изменение оказалось сложнее\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">У пилота одна работа: дать бизнесу основание продолжить проект, изменить гипотезу или остановиться. Для ИИ-чатбота таким тестом может быть один процесс — ответы на типовые вопросы сотрудников по ограниченной базе знаний. Для маркетплейса — путь от поиска товара до оплаты. Для образовательного сервиса — покупка курса, доступ к уроку и фиксация прогресса.\u003C\u002Fp>\u003Cp class=\"p1\">До разработки мы фиксируем три вещи: какое действие проверяем, по какой метрике судим о результате и что сделаем при каждом исходе. После пилота команда расширяет сценарий, меняет его или закрывает идею. Формулировка «покажем продукт пользователям и посмотрим» оставляет слишком много свободы для творческой интерпретации. Особенно когда бюджет уже потрачен и всем очень хочется увидеть успех.\u003C\u002Fp>\u003Cp class=\"p1\">Граница первой версии проходит по пользовательской ценности. Для проверки ИИ-чатбота мы подключаем ограниченную базу знаний, настраиваем один-два сценария и прогоняем тестовые диалоги. Систему управления клиентами (CRM), сложную модель ролей, несколько каналов и полный мониторинг качества добавляем после ответа на главный вопрос: помогает ли бот выбранному процессу.\u003C\u002Fp>\u003Cp class=\"p1\">Функций нужно мало, а технических развилок уже несколько. На демо их почти не видно. Зато от них зависит стоимость каждого следующего изменения.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Пять решений, которые дешевле принять до первого пользователя\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-07 15.20.02.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_07_15_20_02_1b2b3f993e.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_07_15_20_02_1b2b3f993e.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_07_15_20_02_1b2b3f993e.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_07_15_20_02_1b2b3f993e.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_07_15_20_02_1b2b3f993e.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Col>\u003Cli data-list-item-id=\"ec90e71d5a07fb3fb2605bf905f5cac6e\">\u003Cp class=\"p1\">Какие сущности и статусы живут в продукте. Пользователь, организация, заказ, тариф, попытка, урок и платёж должны иметь понятные связи. Если на старте заказ привязали прямо к одному человеку, появление корпоративного кабинета заставит переделывать права, отчёты и историю операций. Интерфейс можно перекрасить за один цикл разработки. Ошибка в модели данных расходится по всей системе.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"edf9aeaa0250c13a227c160d39a5dd096\">\u003Cp class=\"p1\">Где заканчивается один модуль и начинается другой. Каталог, оплата, доступы, уведомления и отчёты меняются с разной скоростью. Чёткие границы позволяют развивать их по отдельности, даже если весь пилот пока работает в одном приложении. Микросервисы для этого не обязательны. Нужна структура, в которой платёжное правило не прячется внутри кнопки, а проверка доступа не размазана по десятку экранов.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e6732caa6e990606053298b85c2306b43\">\u003Cp class=\"p1\">Как интерфейсы обращаются к серверной логике. Мы строим продукт по принципу API-first: веб-интерфейс, мобильное приложение и партнёрский кабинет обращаются к бизнес-правилам через единый программный интерфейс (API). Новый канал подключается к готовому ядру без переноса логики. Если гипотезу можно проверить в браузере, веб-версия быстрее доводит пользователя до действия. Мобильное приложение добавляем, когда сценарий зависит от функций устройства или частых возвращений.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"ec2adb8c80338d6a2453f38550fb2a862\">\u003Cp class=\"p1\">Кто что может видеть и менять. В пилоте нередко хватает администратора и пользователя. Модель прав всё равно стоит отделить от названий ролей. Тогда завтра можно дать менеджеру доступ только к своим клиентам, куратору — к одной группе, а бухгалтеру — к платежам без переписывания каждого обработчика. В проектах на серверном фреймворке NestJS мы разделяем две проверки: guard решает, можно ли войти в сценарий, а политика доступа — можно ли выполнить действие над конкретным объектом.\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e268634e14f9bfd0949ab0ac2149777c2\">\u003Cp class=\"p1\">Какие события покажут, что пилот работает. Счётчик регистраций мало говорит о ценности. Нужны события основного пути: пользователь нашёл товар, закончил настройку, получил ответ, оплатил доступ или вернулся к следующему занятию. Рядом нужны технические сигналы — ошибки, время ответа и сбои интеграций. Без них команда спорит о впечатлениях, а причина отвалов остаётся где-то между журналами событий и догадками.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Fol>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-07 15.20.01.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_07_15_20_01_3d95f315e8.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_07_15_20_01_3d95f315e8.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_07_15_20_01_3d95f315e8.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_07_15_20_01_3d95f315e8.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_07_15_20_01_3d95f315e8.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Если пилот держится на памяти одного разработчика, план масштабирования подозрительно совпадает с его календарём. Схема данных, короткая документация, тестовая среда и понятная выкладка выглядят скучно. Именно эти вещи позволяют другой команде продолжить продукт без археологической экспедиции по коду.\u003Cbr>\u003Cbr>\u003Cstrong>Микросервисы раньше нагрузки масштабируют только смету\u003C\u002Fstrong>\u003Cbr>\u003Cbr>Подготовка к росту легко превращается в попытку заранее построить финальную систему. Появляются отдельные сервисы, инфраструктура на Kubernetes для управления контейнерами, несколько мобильных приложений, универсальная админка и расчёт нагрузки на аудиторию, которой пока нет. Пилот дорожает, срок ответа на гипотезу отодвигается.\u003C\u002Fp>\u003Cp class=\"p1\">Первой версии чаще хватает модульной структуры, согласованной схемы данных, API для основного сценария, базовых прав и мониторинга: журналов событий, метрик и оповещений. Мы разделяем такой контур по мере появления реальных причин: части продукта нужно выпускать независимо, нагрузка на один участок мешает остальным или командам требуются отдельные зоны ответственности.\u003C\u002Fp>\u003Cp class=\"p1\">В кейсе Онлайн-школы №1 продуктовая логика — роли, авторизация, расписание и записи занятий — осталась на серверной платформе NestJS. Видеосвязь потребовала другого контура: WebRTC передаёт медиапоток, а SFU маршрутизирует его между участниками. Медиаконтур вынесли на язык Go, когда граница задачи стала понятна. У решения есть цена: отдельная среда исполнения, сборка, выкладка, мониторинг и распределённая отладка. Её платят ради изоляции конкретного узкого места.\u003C\u002Fp>\u003Cp class=\"p1\">С мобильной частью действует тот же принцип. Если основной путь целиком проходит в браузере, первую версию можно запустить по ссылке. Серверная логика и данные остаются за API, поэтому приложение позже подключается к готовому ядру. Так мы раньше проверяем спрос, а бюджет первой версии не уходит на публикацию в магазинах приложений.\u003C\u002Fp>\u003Cp class=\"p1\">Пустая инфраструктура спокойно выдерживает любой наплыв. Даже обидно, если пользователи так и не пришли.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Рост начинается с таблицы, очереди и новой роли\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"photo_2026-09-07 15.19.59.jpeg\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_07_15_19_59_1b830218d0.jpeg\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_07_15_19_59_1b830218d0.jpeg 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_07_15_19_59_1b830218d0.jpeg 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_07_15_19_59_1b830218d0.jpeg 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_07_15_19_59_1b830218d0.jpeg 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Сигналом к масштабированию служит наблюдаемое изменение в работе продукта. Круглая цифра в презентации сама по себе ничего не запускает. Обычно всё начинается с таблицы: сотрудник раз в неделю переносит данные между CRM и админкой. Интеграция уже стала частью процесса; её скорость пока зависит от календаря сотрудника.\u003C\u002Fp>\u003Cp class=\"p1\">Проблему с правами выдают обходные решения. Менеджеру временно дают общий аккаунт, куратор видит лишние группы, администратор просит разработчика поменять статус напрямую в базе. Такие ситуации показывают, что текущей модели прав мало.\u003C\u002Fp>\u003Cp class=\"p1\">Мы пересматриваем архитектуру и тогда, когда тяжёлая операция задерживает основной путь. В кейсе «Стадикэтс» ученики могут массово сдавать задания перед дедлайном, а обработка файлов требует времени. Мы вынесли такие задачи в фоновую очередь на BullMQ и Redis. Кабинет принимает работу, отдельный обработчик (воркер) разбирает файл и обновляет результат. Пользователь продолжает заниматься, пока очередь сглаживает пик.\u003C\u002Fp>\u003Cp class=\"p1\">Видеопоток, конвертация файла и обычный запрос к кабинету потребляют разные ресурсы. Мы выделяем отдельный контур, когда можем точно описать место задержки, дефицит ресурса и способ проверить результат после разделения.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Четыре линейки HOTZ вошли в первую версию через одно коммерческое ядро\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">В проекте HOTZ за три месяца запустили платформу электронной коммерции для четырёх продуктовых линеек с разными аудиториями. Если бы каждое направление получило отдельный каталог и собственные правила, команда быстро собрала бы четыре похожие системы и четыре набора будущих проблем\u003C\u002Fp>\u003Cp class=\"p1\">В основу первой версии положили сквозной каталог и связь с 1С. Интерфейс сразу работал с реальной товарной матрицей: ценами, остатками, фасовками и номенклатурой. Сверху появились разные визуальные коды для продуктовых направлений, а коммерческое ядро осталось общим — каталог, корзина, заказ, доставка и обмен данными.\u003C\u002Fp>\u003Cp class=\"p1\">Так четыре линейки HOTZ вошли в первую версию через одно коммерческое ядро. Архитектура сохранила основу для развития корпоративных сценариев продаж. Новые способы покупки можно добавлять поверх единой модели товаров и заказов.\u003C\u002Fp>\u003Cp class=\"p1\">У каждого типа продукта своё ядро. Для ИИ-бота это качество ответа в одном процессе и понятная работа с источниками. Для системы управления обучением (LMS) — учебный сценарий, прогресс и права. Для сервиса подписки — тариф, статус оплаты и доступ. Мы заранее определяем эту часть: она должна пережить пилот и стать основой следующей версии.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>После пилота план роста собирают по узким местам\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">После пилота мы сопоставляем обещанную метрику с поведением пользователей: сколько дошло до ключевого действия, где ушли, какие обходные операции появились у сотрудников и какие ошибки повторялись. Из этих наблюдений собираем план следующей версии.\u003C\u002Fp>\u003Cp class=\"p1\">Мы раскладываем план на четыре слоя. Продуктовый — какой сценарий подтвердился и что мешает повторному использованию. Данные — хватает ли текущих сущностей, статусов и истории. Технический — какой участок уже создаёт задержки или ошибки. Операционный — может ли команда выпускать изменения, видеть сбои и передавать ответственность.\u003C\u002Fp>\u003Cp class=\"p1\">Затем работаем по узким местам. Автоматизируем повторяющуюся передачу данных, уточняем права, отправляем тяжёлую обработку в фон. Отдельный сервис появляется, когда профиль нагрузки действительно отличается от остальной системы. У каждого раннего решения остаётся проверяемая причина.\u003C\u002Fp>\u003Cp class=\"p1\">Главный критерий можно записать в одну строку: в пилот закладывают дорогие в переделке решения; мощности и функции добавляют после подтверждения спроса.\u003C\u002Fp>\u003Cp class=\"p1\">С таким планом демо проверяет гипотезу, а первая реальная правка затрагивает только нужный модуль.\u003C\u002Fp>\u003Cp class=\"p1\">Если вы готовите пилот цифрового продукта, начните с разделения решений на те, что формируют основу системы, и те, которые можно отложить. Это поможет проверить ключевой сценарий на реальных пользователях и сохранить понятный путь к дальнейшему развитию продукта.\u003C\u002Fp>",[745,746],{"id":92,"documentId":93,"title":94,"slug":95,"order":23,"createdAt":96,"updatedAt":96,"publishedAt":97,"locale":16},{"id":747,"documentId":748,"title":749,"slug":750,"order":23,"createdAt":751,"updatedAt":751,"publishedAt":752,"locale":16},15,"w2syds6h6g6w4q901gfyrw0j","Экспертиза ","media-area-3","2026-05-27T09:11:34.563Z","2026-05-27T09:11:34.578Z",[],{"createdAt":508,"id":503,"documentId":504,"title":505,"date":506,"description":9,"order":10,"slug":507,"showOnMainPage":12,"updatedAt":509,"publishedAt":510,"locale":16,"cover":755,"content":789,"media_event":9,"media_areas":793,"seo":9,"localizations":796},{"id":756,"documentId":757,"name":758,"alternativeText":9,"caption":9,"width":759,"height":759,"formats":760,"hash":785,"ext":617,"mime":620,"size":786,"url":787,"previewUrl":9,"provider":647,"provider_metadata":9,"createdAt":788,"updatedAt":788,"publishedAt":788},711,"nis5ul12ootvgcavzy6ufuuq","photo_2026-09-08 15.41.42.jpeg",1080,{"large":761,"small":767,"medium":773,"thumbnail":779},{"ext":617,"url":762,"hash":763,"mime":620,"name":764,"path":9,"size":765,"width":623,"height":623,"sizeInBytes":766},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_photo_2026_09_08_15_41_42_22f0fb38b2.jpeg","large_photo_2026_09_08_15_41_42_22f0fb38b2","large_photo_2026-09-08 15.41.42.jpeg",66.11,66115,{"ext":617,"url":768,"hash":769,"mime":620,"name":770,"path":9,"size":771,"width":23,"height":23,"sizeInBytes":772},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_photo_2026_09_08_15_41_42_22f0fb38b2.jpeg","small_photo_2026_09_08_15_41_42_22f0fb38b2","small_photo_2026-09-08 15.41.42.jpeg",23.65,23654,{"ext":617,"url":774,"hash":775,"mime":620,"name":776,"path":9,"size":777,"width":636,"height":636,"sizeInBytes":778},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_photo_2026_09_08_15_41_42_22f0fb38b2.jpeg","medium_photo_2026_09_08_15_41_42_22f0fb38b2","medium_photo_2026-09-08 15.41.42.jpeg",43.26,43260,{"ext":617,"url":780,"hash":781,"mime":620,"name":782,"path":9,"size":783,"width":186,"height":186,"sizeInBytes":784},"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_photo_2026_09_08_15_41_42_22f0fb38b2.jpeg","thumbnail_photo_2026_09_08_15_41_42_22f0fb38b2","thumbnail_photo_2026-09-08 15.41.42.jpeg",4.18,4185,"photo_2026_09_08_15_41_42_22f0fb38b2",68.83,"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fphoto_2026_09_08_15_41_42_22f0fb38b2.jpeg","2026-09-08T12:43:42.440Z",[790],{"__component":654,"id":791,"text":792},236,"\u003Cfigure class=\"image\">\u003Cimg alt=\"1.png\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002F1_f171a93442.png\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_1_f171a93442.png 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_1_f171a93442.png 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_1_f171a93442.png 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_1_f171a93442.png 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">\u003Cbr>В 19:59 маркетолог обновляет рекламный кабинет. В 20:00 кампания выходит. В 20:03 рабочий чат уже выясняет, почему корзина не открывается, форма не отправляется, а страница акции показывает белый экран. На сайт одновременно пришла вся аудитория. Через три минуты знакомство закончилось.\u003C\u002Fp>\u003Cp class=\"p1\">Нагрузочное тестирование помогает провести эту встречу заранее: воспроизвести ожидаемый поток пользователей, увидеть предел системы и проверить, что после пика она возвращается в нормальное состояние. Сценарий «реклама сработала, сайт лёг» при этом остаётся внутри тестового контура.\u003C\u002Fp>\u003Cp class=\"p1\">Чтобы понять, готов ли сайт к росту трафика, недостаточно проверить только его максимальную нагрузку. Важно перевести медиаплан в профиль нагрузки, протестировать ключевые пользовательские сценарии и заранее определить критерии стабильности. Ниже — о том, как это сделать и по каким результатам принимать решение о запуске кампании.\u003Cbr>\u003Cbr>\u003Cstrong>От маркетолога нужны четыре цифры — дальше работает техническая команда\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"2.png\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002F2_d3e781badb.png\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_2_d3e781badb.png 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_2_d3e781badb.png 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_2_d3e781badb.png 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_2_d3e781badb.png 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Фраза «ждём 50 000 посетителей» почти бесполезна для теста без привязки ко времени и действиям. Пятьдесят тысяч человек за неделю и пять тысяч за первые десять минут создают для системы разные задачи. При этом одни читают лендинг, а другие одновременно ищут товар, применяют промокод и переходят к оплате.\u003C\u002Fp>\u003Cp class=\"p1\">На старте маркетолог передаёт четыре вводных: прогноз переходов в первый час и самую плотную минуту, ожидаемую долю людей на каждом шаге воронки, примерную длину сессии и долю мобильного трафика. Источники этих данных — медиаплан и аналитика прошлых запусков. Этого достаточно, чтобы передать задачу технической команде: p95, кэш и конфигурацию серверов дальше разбираем мы.\u003C\u002Fp>\u003Cp class=\"p1\">По этим вводным собираем профиль нагрузки. Допустим, из 100 одновременных пользователей 60 смотрят страницы, 25 работают с поиском и фильтрами, 10 меняют корзину, а 5 оформляют заказ. Пропорции задаёт ожидаемая воронка кампании. Круглая цифра «проверили тысячу пользователей» выглядит солидно на слайде, но не описывает реальную кампанию. Для теста нужен поток с теми же пропорциями и ритмом, которые ожидаются на запуске.\u003C\u002Fp>\u003Cp class=\"p1\">Рекламная кампания задаёт ожидаемый профиль трафика и размер запаса. Он зависит от точности медиаплана, истории прошлых кампаний и скорости масштабирования инфраструктуры. Само тестирование планируют в контуре релиза продукта, отдельной функции или другого изменения системы. В результате у теста остаётся конкретный вопрос: выдержит ли система нужный поток с согласованным запасом и приемлемым временем ответа?\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cbr>\u003Cstrong>Проверять главную страницу — как тестировать магазин по вывеске\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"3.png\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002F3_2ef07eabf8.png\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_3_2ef07eabf8.png 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_3_2ef07eabf8.png 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_3_2ef07eabf8.png 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_3_2ef07eabf8.png 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Главная страница часто отдаётся через CDN — сеть серверов, которая хранит копии контента ближе к пользователю. Она может открываться быстро, пока поиск ждёт базу данных, корзина получает устаревшие остатки, а форма второй раз пытается передать заявку в систему управления клиентами (CRM).\u003C\u002Fp>\u003Cp class=\"p1\">Поэтому сценарий теста повторяет путь человека. Для интернет-магазина это обычно такая цепочка:\u003C\u002Fp>\u003Cul>\u003Cli data-list-item-id=\"eddf65ea4658838f2dd1bcbfe90438054\">\u003Cp class=\"p1\">открыть страницу акции или каталог;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e4377ddef041115f05f9631337eaa2458\">\u003Cp class=\"p1\">найти товар через поиск и фильтры;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e0b2a5b7b5ae4737fe2a8c43317471b2c\">\u003Cp class=\"p1\">открыть карточку и добавить позицию в корзину;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e1b2ba34c678233b1df09b614b47a6643\">\u003Cp class=\"p1\">применить промокод или бонусы;авторизоваться либо оформить заказ без регистрации;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e9ac0767326350b0d30f55d50f55fd751\">\u003Cp class=\"p1\">выбрать доставку и способ оплаты;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e399d3d7f22172ea7f8bddc2f7f04b516\">\u003Cp class=\"p1\">получить подтверждение заказа.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp class=\"p1\">У рекламного лендинга маршрут короче, но заканчивается он дальше кнопки «Отправить»: заявка должна записаться в CRM с корректным источником, а человек — увидеть, что форма принята. Иначе клики не превращаются в заявки для отдела продаж.\u003C\u002Fp>\u003Cp class=\"p1\">Тестовые данные тоже влияют на результат. Один пользователь, одна корзина и один товар быстро заполняют кэш — временное хранилище частых ответов — и дают слишком удобную картину. Мы параметризуем сценарии: используем разные аккаунты, товары, запросы, промокоды и сессии. Отдельно прогоняем холодный старт с пустым кэшем и повторный поток после прогрева.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cbr>\u003Cstrong>Среднее время ответа выглядит прилично, пока медленные запросы уже портят продажи\u003C\u002Fstrong>\u003C\u002Fp>\u003Cfigure class=\"image\">\u003Cimg alt=\"4.png\" src=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002F4_039cd42fe0.png\" srcset=\"https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fthumbnail_4_039cd42fe0.png 245w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fsmall_4_039cd42fe0.png 500w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Fmedium_4_039cd42fe0.png 750w, https:\u002F\u002Fstrapi.qtim.pro\u002Fuploads\u002Flarge_4_039cd42fe0.png 1000w\" sizes=\"100vw\" width=\"1000\">\u003C\u002Ffigure>\u003Cp class=\"p1\">Этот показатель сглаживает хвост медленных запросов. Девять покупателей могут пройти оформление быстро, а десятый несколько секунд смотрит на неподвижную кнопку. Итоговая цифра останется приличной; у десятого покупателя будет своя версия отчёта — короткая и без покупки. Поэтому среднее оставляем для общей картины, а решение принимаем по хвосту медленных запросов.\u003C\u002Fp>\u003Cp class=\"p1\">Для ключевых действий мы смотрим перцентили. p95 показывает время, быстрее которого завершились 95% операций, p99 — 99%. Эти показатели отвечают на практический вопрос: насколько плохо приходится самым терпеливым пользователям во время пика.\u003C\u002Fp>\u003Cp class=\"p1\">Маркетолог согласует бизнес-порог: сколько секунд покупатель готов ждать, какую долю ошибок можно допустить и сколько заказов или заявок должно проходить за минуту. Мы переводим эти условия в технические критерии для каталога, поиска, корзины и оформления. Процессоры, память, база данных, кэш и очереди остаются зоной технической команды: по ним мы ищем причину, когда проседает бизнес-показатель.\u003Cbr>&nbsp;\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cstrong>Кнопка всё ещё недоступна: где теряется время после ответа сервера\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">После получения данных браузеру ещё нужно собрать страницу и обработать интерфейс. Протокольный тест создаёт основной поток HTTP-запросов, а несколько браузерных сценариев показывают, что видит человек. Для страницы мы фиксируем ориентиры Core Web Vitals: Google относит к хорошим полевым значениям LCP до 2,5 секунды, INP до 200 миллисекунд и CLS до 0,1 у 75% просмотров. Эти метрики описывают загрузку основного контента, отклик интерфейса и визуальную стабильность. До запуска мы проверяем доступные показатели в лабораторных условиях, после — сверяем их с данными реальных посетителей.\u003C\u002Fp>\u003Cp class=\"p1\">Документация Grafana рекомендует сочетать оба слоя: один создаёт масштаб, другой проверяет пользовательский путь. Так мы видим давление на серверную часть и задержку между нажатием кнопки и реакцией интерфейса.\u003C\u002Fp>\u003Cp class=\"p1\">\u003Cbr>\u003Cstrong>Ровный поток, всплеск, стресс и длинная акция ломают сайт по-разному\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Один прогон на постоянной нагрузке отвечает только на один вопрос. Перед распродажей полезны четыре режима.\u003C\u002Fp>\u003Cp class=\"p1\">Обычную нагрузку мы постепенно наращиваем, удерживаем на целевой отметке и затем снижаем. На этом этапе проверяем скорость, долю ошибок и число успешно завершённых заказов или заявок.\u003C\u002Fp>\u003Cp class=\"p1\">Резкий всплеск имитирует старт рекламы, рассылки или массового уведомления, когда большая часть аудитории приходит почти одновременно. Мы смотрим, успевает ли автоматическое масштабирование добавить новые экземпляры приложения и что происходит до этого момента.\u003C\u002Fp>\u003Cp class=\"p1\">Стресс-тест увеличивает поток до деградации и помогает найти предел. Мы видим, какой компонент сдаётся первым и по какой метрике приближение к пределу можно заметить заранее. AWS также рекомендует использовать нагрузочные тесты для поиска точки отказа и наблюдаемых признаков её приближения.\u003C\u002Fp>\u003Cp class=\"p1\">На одном из e-commerce-проектов мы использовали k6 и проверяли цепочку от открытия каталога до создания заказа. Первым ограничением стал пул соединений с базой данных: при росте нагрузки p95 увеличился примерно до 2,8 секунды. После оптимизации запроса и настройки пула повторный прогон на том же профиле показал p95 около 700 миллисекунд.\u003C\u002Fp>\u003Cp class=\"p1\">Длительный тест держит систему под давлением несколько часов. Так мы находим утечки памяти, рост очередей, исчерпание доступных подключений к базе и постепенное отставание фоновых задач. После каждого режима проверяем восстановление: сократилось ли число отложенных операций, освободились ли ресурсы и вернулось ли время ответа к исходному уровню.\u003C\u002Fp>\u003Cp class=\"p1\">В кейсе «Стадикэтс» нагрузка идёт «пилой, а не волной»: дедлайны домашних заданий, пробники и канун экзамена по очереди создают резкие всплески. Задача проекта — обеспечить стабильность, когда ученики одновременно отправляют работы. Учебный календарь здесь становится основой профиля теста. Ровный шаблонный поток скрыл бы важную часть риска.\u003C\u002Fp>\u003Cp class=\"p1\">В публичном кейсе зафиксированы два решения для таких периодов. Фоновые задачи изолированы, поэтому массовая сдача работ не останавливает личный кабинет и админку. Инфраструктура предусмотрена с запасом и подготовкой к контейнеризации, чтобы масштабировать систему без переделки архитектуры.\u003Cbr>\u003Cbr>\u003Cstrong>Один заказ, четыре проверки: CRM, защита от дублей, бизнес-события и внешние сервисы\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Технический график может оставаться зелёным, пока данные о заказе расходятся. Поэтому на распродаже мы проверяем всю цепочку: товар не продаётся сверх остатка, повторный клик не создаёт второй заказ или оплату, промокод соблюдает ограничения, а уведомление платёжной системы меняет статус один раз.\u003C\u002Fp>\u003Cp class=\"p1\">Мы проверяем, что отложенные задачи доходят до конца под контролем, а заявка попадает в CRM вместе с источником и контактами. Для оплаты и создания заказа мы используем защиту от дублей: повторный запрос с тем же ключом возвращает прежний результат. Разработчики называют это идемпотентностью; для бизнеса смысл простой: один запрос — один заказ и одна оплата.\u003C\u002Fp>\u003Cp class=\"p1\">Во время теста мы считаем бизнес-события на каждом участке: сколько корзин ушло в оформление, сколько заказов создалось, сколько оплат подтвердилось, сколько записей получила CRM. Разница между соседними цифрами указывает место, где поток начал протекать.\u003C\u002Fp>\u003Cp class=\"p1\">Внешние сервисы мы проверяем отдельно и по договорённости. Платёжный шлюз, 1С, CRM, доставка или сервис рассылок могут иметь собственные лимиты. Для массового прогона мы используем тестовые контуры, заглушки или заранее согласованный объём запросов. Случайный нагрузочный тест чужой системы быстро знакомит со службой безопасности. Подготовить собственный запуск он не помогает.\u003Cbr>\u003Cbr>\u003Cstrong>Тестовая среда должна быть похожа на рабочую там, где больно\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Тест на одном сервере с пустой базой плохо предсказывает поведение кластера с миллионом товаров и историей заказов. Полная копия рабочей среды бывает слишком дорогой, поэтому мы добиваемся сходства на участках, которые влияют на результат:\u003C\u002Fp>\u003Cul>\u003Cli data-list-item-id=\"e1853b9a0c7773006502e881c419aab5e\">\u003Cp class=\"p1\">та же версия приложения и конфигурация сервисов;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"ef34d65bc501d6858955bce7aaf86f9ce\">\u003Cp class=\"p1\">сопоставимые объём и распределение данных;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e92d58b11a8196893adc5bec29ceb8902\">\u003Cp class=\"p1\">такие же база данных, кэш, очереди и правила автоматического масштабирования;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e4a3170f5b480d8b94a131e0ba7b17443\">\u003Cp class=\"p1\">реальные ограничения CDN, балансировщика, сетевого экрана и защиты от ботов;\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"e88317f2aaa8953933bab5b5e5234237e\">\u003Cp class=\"p1\">мониторинг на уровне приложения, инфраструктуры и бизнес-событий.\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp class=\"p1\">В кейсе 4fresh магазин переезжал с 1С-Битрикс на собственное решение. Вместе с ним мы переносили профили пользователей, историю заказов и тысячи отзывов. Такой объём нельзя честно воспроизвести пустой базой. Поэтому мы готовим среду с совпадающими версиями сервисов и сопоставимым «весом» реальных данных.\u003C\u002Fp>\u003Cp class=\"p1\">Меньший масштаб тестовой среды мы фиксируем в выводах. Мы пересчитываем результат только там, где известна зависимость от ресурсов. Без описания окружения фраза «на тесте всё выдержало» ничего не говорит о готовности к запуску.\u003C\u002Fp>\u003Cp class=\"p1\">Перед большим прогоном мы согласуем время, ответственных и критерии остановки. Мы останавливаем тест при росте числа ошибок, приближении базы к пределу соединений, остановке сокращения очередей или риске для соседних систем. Так мы находим безопасный предел без аварии в рабочем контуре.\u003Cbr>\u003Cbr>\u003Cstrong>Пять ответов, после которых запуску можно дать зелёный свет\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp class=\"p1\">Итоговый отчёт должен ответить на пять вопросов:\u003C\u002Fp>\u003Cul>\u003Cli data-list-item-id=\"efb37138ee699cc4d3b4e6562dfd4035f\">\u003Cp class=\"p1\">Какой поток пользователей и операций система выдерживает с нужным запасом?\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"edb0f82bbaac95c209cc6b6fb861eabc8\">\u003Cp class=\"p1\">Каковы p95 и доля ошибок на каждом критичном шаге?\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"eb49652b55d773f2f18a81e06742e7e54\">\u003Cp class=\"p1\">Сходятся ли заказы, оплаты, остатки и заявки между системами?\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"ee560892f3b0f3cea5720c6c969e4f363\">\u003Cp class=\"p1\">Какой компонент ограничивает рост и какая метрика предупредит об этом первой?\u003C\u002Fp>\u003C\u002Fli>\u003Cli data-list-item-id=\"ecb46cb43e5d0767d1aed23004bb17c7b\">\u003Cp class=\"p1\">Что команда сделает при превышении прогноза по трафику?\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp class=\"p1\">Последний пункт превращается в план запуска. В нём могут быть заранее поднятые ресурсы, очередь входа, отключение второстепенных функций, ограничение тяжёлых фильтров, готовый откат версии и список людей, которые следят за метриками в первые часы.\u003C\u002Fp>\u003Cp class=\"p1\">Критерий простой: сайт готов к рекламе, когда команда знает его безопасный предел, видит приближение к нему и умеет сохранить заказ при перегрузке. Тогда в 20:03 рабочий чат обсуждает продажи. Белый экран остался на тестовом контуре.\u003C\u002Fp>\u003Cp class=\"p1\">Где система начнёт замедляться и что произойдёт при перегрузке, лучше выяснить до запуска кампании. Нагрузочное тестирование позволяет заранее найти узкие места, проверить ключевые сценарии и подготовить сервис к пиковому трафику — в рамках поддержки и развития цифрового продукта.\u003C\u002Fp>",[794,795],{"id":92,"documentId":93,"title":94,"slug":95,"order":23,"createdAt":96,"updatedAt":96,"publishedAt":97,"locale":16},{"id":747,"documentId":748,"title":749,"slug":750,"order":23,"createdAt":751,"updatedAt":751,"publishedAt":752,"locale":16},[]]