Статуси задач та блокування полів
Канбан Tasks — статуси, дозволені переходи, автоматизація та які поля редагуються в якому статусі.
Стосується канбану Tasks і таблиці Creatives. Що означає кожне поле картки задачі, коли воно обов’язкове чи ховається — Поля картки задачі. Що саме відбувається в перші секунди після переходу в Ready for Production, і чому задача іноді повертається в Backlog — Автоматизація задач у канбані. ⚠️ Область дії: усе нижче (статуси, автоматизація, валідація, блокування назви) стосується виключно задач з
Work Stream = Performance. Задачі інших Work Stream (Product, Web, Brand, SMM, HR тощо) автоматизацію/валідацію/блокування назви не проходять взагалі — рухаються довільним/спрощеним флоу поза межами цього документа.
1. Список статусів (у порядку процесу)
| # | Статус | Хто переміщує | Що відбувається |
|---|---|---|---|
| 1 | Backlog | людина | Чернетка задачі. Єдиний статус, де редагуються теги й походження (розділ 4). Назви (Task Name, Creative Name) або ще не існують, або розблоковані для правки |
| 2 | Ready for Production | людина (вхід) → людина (вихід) | Перехід сюди запускає автоматизацію: бекенд генерує Task Name, планує назви Creative-карток і створює папку на Google Drive. Самі картки з’являються пізніше, на Done. Поки прогон іде, задача заблокована; після нього назва зафіксована, Drive-папка {Product}/{Task} існує, і задача стоїть у черзі на дизайнера. Помилка автоматизації повертає задачу в Backlog |
| 3 | In Progress | людина | Дизайнер узяв задачу в роботу, виробництво відео |
| 4 | Tech Check | людина | Технічна перевірка тімлідом моушн-команди. Тільки для дизайнерів на випробувальному терміні. Звідси задача йде або на Creative Check, або одразу в Done |
| 5 | Creative Check | людина | Перевірка/апрув креативним маркетологом (Task Owner). Стандартний шлях для підтверджених дизайнерів; для новачків — після Tech Check, якщо тімлід не прийняв роботу сам |
| 6 | Done | людина | Виробництво прийнято. Тут створюються Creative-картки за назвами, запланованими на Ready for Production. Картка задачі стає звітом: усі поля закриваються, лишаються тільки Test Status, Manual Launch і коментарі. Drive-папка лишається на місці; якщо стоїть Manual Launch — пінг у UAM-канал |
| 7 | Archived | людина | Тест завершено, крео зупинено. Термінальний статус |
Таблиця й усі наступні розділи описують флоу тільки для
Work Stream = Performance.
2. Діаграма переходів
ReadyForProduction / InProgress / TechCheck / CreativeCheck в діаграмі — це Ready for Production / In Progress / Tech Check / Creative Check (без пробілів через синтаксис mermaid).
3. Таблиця дозволених переходів
Те саме, що на діаграмі вище, але словами — з умовою для кожного переходу.
| Звідки | Куди | Ініціатор | Умова |
|---|---|---|---|
| Backlog | Ready for Production | людина | запускає автоматизацію; успіх лишає задачу тут — потрібні обидві Complexity |
| Ready for Production | Backlog | бот | помилка валідації / fatal-помилка автоматизації → ❌ іконка |
| Ready for Production | In Progress | людина | дизайнер бере в роботу — потрібен заповнений Assignee |
| Ready for Production | Backlog | людина | перший legit спосіб виправити теги/назву після того, як вони вже згенеровані |
| In Progress | Tech Check | людина | Assignee на випробувальному терміні |
| In Progress | Creative Check | людина | Assignee вже підтверджений |
| In Progress | Ready for Production | людина | задачу забрали з роботи — картка повертається в чергу; автоматизація не перезапускається |
| In Progress | Backlog | людина | другий legit спосіб виправити теги/назву |
| Tech Check | Creative Check | людина (тімлід моушенів) | технічна перевірка пройдена, потрібен ще креативний апрув |
| Tech Check | Done | людина (тімлід моушенів) | технічна перевірка пройдена і креативного апруву не потрібно |
| Tech Check | In Progress | людина (тімлід моушенів) | reject — дизайнер доробляє відео, потім знову йде в Tech Check (Assignee вже є) |
| Tech Check / Creative Check | Backlog | людина | виправити теги/назву — третій legit спосіб, доданий тому, що помилку в тегах часто помічають саме на перевірці |
| Creative Check | Done | людина (Task Owner) | контент прийнято |
| Creative Check | In Progress | людина (Task Owner) | reject — дизайнер доробляє відео, потім знову йде в Creative Check |
| Done | Archived | людина | тест зупинено/завершено |
Ready for Production вимагає обидві Complexity
Design Complexity і Marketing Complexity не потрібні, щоб створити задачу — бриф пишуть раніше, ніж оцінено обсяг роботи. Але без них задача не заїде в Ready for Production: саме там відповідь уперше потрібна, бо Design Complexity рахує Points, а без обох прогон не запуститься.
Поки хоч одна порожня, пункт Ready for Production неактивний, а колонка на дошці картку не приймає. Раніше задача переїжджала, прогон падав на валідації й вертав її в Backlog з червоним банером — тепер вона просто не переїжджає.
Деталі про те, де саме стоять зірочки, — у Поля Task і Creative.
In Progress вимагає Assignee
Задача не заїде в In Progress, поки не вказано Assignee. In Progress означає, що хтось уже робить роботу, тож картка мусить казати хто: без цього вона висить у колонці без відповідального, а на Done хендлер проставляє Assignee на кожну Creative-картку, яку створює — і проставити нема чого, пак лишається безхазяйним теж.
Це умова входу, а не блокування поля: Assignee лишається редагованим у будь-якому статусі (розділ 4), просто до його заповнення перехід закритий. На практиці:
- у селекті статусу на сторінці задачі In Progress неактивний, поки поле порожнє;
- на дошці колонка не приймає картку — вона не перетягнеться;
- щойно Assignee вказано, статус відкривається одразу, без збереження й перезавантаження.
Інших статусів це не стосується: задача без Assignee спокійно проходить автоматизацію і доходить до Done. Не стосується й неперформансних напрямів — у них графа статусів немає взагалі.
Крок назад з In Progress — це не перезапуск автоматизації
Перехід In Progress → Ready for Production існує для одного випадку: задачу взяли в роботу помилково — не ту картку перетягнули, не на ту людину. Це твердження про виконавця, і скасовувати його поверненням у Backlog було б надто дорого: Backlog — це скидання, він відкриває теги й на виході знову ганяє автоматизацію. Тому цей перехід просто рухає картку назад у чергу.
Що при цьому не відбувається:
- прогон не запускається,
automation.stateне стаєpending, задача не блокується; - Task Name, план назв Creative і Drive-папка лишаються тими самими — виробництво вже називає свої файли за ними, і перейменовувати їх нема за чим: від Ready for Production і далі всі поля, які впливають на назву, і так закриті (розділ 4), тож новий прогон прочитав би рівно те саме.
Перезапустити автоматизацію, як і раніше, можна лише через Backlog — це єдиний статус, де теги відкриваються, а отже єдине місце, де в прогону є що прочитати по-новому.
Умова входу лишається спільною для всіх шляхів: обидві Complexity мають бути заповнені. Вони редагуються в In Progress, тож якщо їх звідти прибрали — перехід назад теж не пройде, поки не повернуть.
Повернення в Backlog доступне з кожного статусу, де задачу ще можна виправити
Backlog — не крок процесу, а його скидання: єдиний статус, де теги й назва відкриваються знову, а отже єдиний спосіб виправити задачу з неправильним тегом. Раніше цей шлях був закритий після In Progress, і ціна була така: задача, що доїхала до перевірки з помилкою в тегах, не виправлялась взагалі — її лишалось тільки покинути й переписати заново. Тому Tech Check і Creative Check тепер теж ведуть назад.
Що робить повернення дешевим — те, що до Done задача нічого не матеріалізує: є назва, план назв і Drive-папка, і все. Картки з’являються тільки на Done, тож задача, яка повертається, не тягне за собою напівфабрикатів. Ні папку, ні файли повернення не чіпає — наступний прогон перейменує їх під новий план (розділ нижче), зберігаючи id папки, тож усі раніше розшарені посилання далі працюють.
Done і Archived — фінальні
З них повернення в Backlog немає, і Archived лишається термінальним. Причина не в тому, що
відкат технічно складний — те саме скидання спрацювало б. Причина в тому, що завершений пак
перестає бути тільки нашим: mark_pack_launched віддає його в кабінет, звідти приходять звіти про
запуск проти опублікованих Kumquat назв, і проти тих самих назв написані всі рядки аналітики.
Повторний прогон згенерував би рівно ті рядки, на яких обидві половини зійшлись.
Пак потрапляє у фід інтеграцій саме тому, що він у Done або Archived
(Task.offered_to_integrations), тож «його можна запустити» і «його не можна відкотити» — це один і
той самий факт. Тому це правило графа переходів, а не окрема перевірка.
Якщо в завершеній задачі виявилась помилка — її архівують і брифують нову.
Заборонені переходи (явно)
- Будь-який “стрибок” вперед в обхід Ready for Production — з Backlog не можна потрапити одразу в In Progress чи будь-що далі. Ready for Production — це той єдиний перехід, який запускає автоматизацію; без нього немає ні назви, ні Drive-папки.
- Стрибки вперед між перевірками — Tech Check → Done в обхід Creative Check, і будь-що подібне.
- Кроки назад з перевірок у Ready for Production — з Tech Check і Creative Check назад ведуть тільки In Progress і Backlog. Робота вже здана на перевірку, і питання там не в тому, хто її виконавець.
- Backlog → Done/Archived напряму — заборонено за визначенням (немає проміжних станів виробництва).
4. Які поля коли редагуються
Принцип: назва (Task Name і похідні Creative Name) — це не поле, яке хтось вписує руками; вона генерується автоматизацією з тегів. Тому блокуємо не саму назву, а набір полів, від яких вона залежить — щоб хтось випадково не змінив тег і не розсинхронив назву з уже створеною Drive-папкою.
Але не всі поля картки годують автоматизацію, і закриваються вони не одночасно. Поля поділені на групи, і кожна група має власний момент, коли перестає редагуватись:
| Група | Що входить | Чому закривається |
|---|---|---|
| Назва і теги | Name, Work Stream, Task Type, Product, Media Type, Resolution, Source, Geo, Language, Count | З них будується назва задачі, назви креативів і папка на Drive. Source у звичайні назви не входить (у WHT/ADPT від легасі-оригінала — входить, бо там більше нічим відрізнити картку від оригінала) і визначає, які картки задача взагалі планує, тож закритий разом з рештою |
| Походження | Origin Creative, Source Creatives, Legacy Remap List | Визначають, з яких оригіналів робляться картки |
| Бриф | Product Stack (Subject/Topic/Sub-topic), Variations — блок Creative Stack (Primary Anchor, Audience, Awareness Stage, Messaging Angle, Hook Trigger/Type, Ad Format, Notes), теги і бриф на кожну варіацію, чекбокси Planned Creatives (LOC/WHT/ADPT/RSZ — прогрес по вже запланованих іменах, замість блоків), Marketing Funnel (Traffic Flow, Landing, Funnel, CPP), Varied Element | У назву не входять — автоматизація лише копіює їх на картки креативів |
| Планування | Priority, Task Owner, Assignee, Deadline, Design Complexity, Marketing Complexity | Автоматизація їх не читає для назви; вони супроводжують саму роботу |
| Test Status і Manual Launch | Test Status, Manual Launch | Не про саму задачу: перше — вердикт кабінету, який приходить через тижні після здачі, друге — позначка, що пак піднімають у кабінет руками. Обидва не закриваються ніколи |
| Опис | Task Description | Нотатки для того, хто робить задачу; коли роботу прийнято, адресата в них уже немає |
І матриця «група × статус» — ✓ означає «редагується»:
| Статус | Назва і теги | Походження | Бриф | Планування | Опис | Test Status і Manual Launch |
|---|---|---|---|---|---|---|
| Backlog | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Ready for Production | 🔒 | 🔒 | ✓ | ✓ | ✓ | ✓ |
| In Progress | 🔒 | 🔒 | ✓ | ✓ | ✓ | ✓ |
| Tech Check | 🔒 | 🔒 | ✓ | ✓ | ✓ | ✓ |
| Creative Check | 🔒 | 🔒 | ✓ | ✓ | ✓ | ✓ |
| Done | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 | ✓ |
| Archived | 🔒 | 🔒 | 🔒 | 🔒 | 🔒 | ✓ |
Читається так: Backlog — єдиний статус, де можна правити теги й походження. Далі до Creative Check лишаються відкритими бриф і планування — складність, пріоритет, виконавець, дедлайн можна уточнювати, поки задача в роботі.
Коли роботу прийняли (Done), картка стає звітом: редагуються рівно два поля — Test Status і Manual Launch, і то тому, що жодне з них про саму задачу не висловлюється. Test Status — це вердикт кабінету про креативи, який приходить через тижні після здачі (його ж пише інтеграційний API, окремим шляхом повз цю таблицю); виняток дає змогу виправити його руками. Manual Launch — це позначка, що пак у кабінет піднімає людина, і дізнаються про це якраз тоді, коли Done робить це чиєюсь роботою; раніше прапорець замерзав на тих самих дверях, які він і відкриває. Нічого, крім Slack-пінга на вході в Done, його не читає, тож пізніша правка нічого не розсинхронить. Усе інше закрито — включно з описом і з цілою карткою Variations: до Done її блоки якраз і були брифом майбутніх креативів, а на Done ті креативи вже існують і несуть власну копію цих значень, тож правка тут не змінила б нічого, крім самої задачі. Усе, що про завершену задачу ще варто сказати, пишеться коментарем. Коментарі полем задачі не є й під цю таблицю не підпадають, тож вони доступні в Done і Archived, як і в будь-якому іншому статусі.
Заборона тепер справжня. Раніше заблоковані поля лише виглядали сірими в інтерфейсі, а сама платформа зміну приймала — інтеграція, скрипт чи прямий запит могли переписати теги в будь-якому статусі й тихо розсинхронити назву. Тепер спроба змінити закрите поле відхиляється з повідомленням, у якому перелічені саме ті поля, і сказано, куди перемістити задачу, щоб їх відкрити.
Розблокувати — тільки ручним поверненням у Backlog, і тільки з Ready for Production, In Progress, Tech Check або Creative Check (див. розділ 3). З Done і Archived повернення немає, тож там теги зафіксовані назавжди.
Посилання на Google Drive у Performance-задачі не редагується взагалі, в жодному статусі — включно з Backlog. Папку створює автоматизація — вона ж записує і посилання, і внутрішній id папки, з якого малюється список файлів на картці. Вписаного руками id немає звідки взяти, тож ручне посилання вказувало б на папку, якої прогон не наповнює, а наступний прогон його все одно перезапише. На формі створення блоку Google Drive немає зовсім: папки на той момент ще не існує. В інших воркстрімах (Product, Web, Brand, SMM, HR) автоматизація не запускається, тому там посилання вписується руками як і раніше.
Роль теж вирішує. Хто має доступ лише на читання, бачить картку повністю в режимі перегляду — без жодного редагованого поля. Раніше форма показувала звичайні контроли, а кожне збереження відхилялося вже після спроби, без пояснення.
Поки автоматизація працює, задача заблокована повністю
Від моменту, коли задача потрапила в Ready for Production, і до моменту, коли прогон відзвітував, задачею володіє бот. Він генерує назву, картки креативів і Drive-папку з того стану задачі, який побачив на старті — тож правка, зроблена в цей момент, у прогон би не потрапила, а частину тегів бот міг би ще й перезаписати сам. Тому на час прогону блокуються всі поля задачі, не тільки назву й теги: Test Status, Priority, Task Owner, Assignee, Deadline, опис. Це ширше за будь-який рядок матриці вище — на час прогону задачею володіє не статус, а бот.
Відкритими лишаються два речі:
- Статус — щоб задачу можна було повернути в Backlog, якщо прогон завис;
- Коментарі — вони про прогон, а не вхідні дані для нього.
Блокування знімається щойно прогон відзвітував — далі задача живе в Ready for Production скільки завгодно довго й редагується в межах рядка «Ready for Production» матриці вище: назва й теги вже зафіксовані, бриф і планування вільні.
Прогон триває секунди, тож у нормі блокування непомітне. Якщо картка висить із написом «Automation running…» довше кількох хвилин — дошка позначить її як «Automation stuck», і вихід один: перетягнути назад у Backlog.
Reopen-for-edit: цикл виправлення
- Задача в Ready for Production, In Progress, Tech Check або Creative Check → творець/Task Owner помічає, що тег/назва невірні. (З Done і Archived цього циклу немає — вони фінальні.)
- Вручну переміщує задачу назад у Backlog → назва, теги й походження розблоковуються.
- Виправляє потрібні теги.
- Знову переміщує в Ready for Production — це й є повторний запуск.
- Бот генерує новий Task Name і новий план назв, перейменовує Drive-папку на місці й перейменовує в ній файли під новий план.
- Успіх → задача лишається в Ready for Production; помилка — бот знову поверне її в Backlog.
Кроку «видалити картки креативів» тут більше немає, і причина проста: картки створюються на Done, а з Done повернення немає — отже задача, яку повертають, карток не має взагалі. Прогон, який упав, їх теж не робить, тож і сміття по собі не лишає.
Що прогон робить із Drive при повторному запуску
Папку перейменовує, а не створює нову. Посилання Drive адресується за id папки, а не за її назвою, тож перейменування зберігає всі раніше розшарені лінки і не рухає жодного файла. Якщо змінився Product — папка ще й переїжджає в іншу батьківську. Раніше створювалась нова порожня папка, а стара лишалась зі всім вмістом під назвою, на яку вже ніхто не вказував.
Файли всередині перейменовує під новий план. Це не косметика: gdrive-sync стикує файл із карткою рівно за рядком до розширення, тож файли зі старими назвами після зміни тегів просто загубились би. Перейменування набагато дешевше за перезалив — вміст не рухається, хеш той самий, тож усі вже згенеровані з нього ассети лишаються чинними. Постер-сайдкар їде за своїм відео автоматично: у них спільний stem, і саме за ним іде звірка.
Пари підбираються обережно. Назва починається з координат самої картки ({варіація}-{Task#} або
{варіація оригінала}-{Task# оригінала}), а далі йдуть теги задачі. Прогон перейменовує тільки ті
пари, у яких ці координати збігаються, — інакше LOC-задача, у якій в Backlog підмінили Origin
Creative, перейменувала б роботу одного оригінала на назву іншого. Якщо кількість карток змінилась
або координати розійшлись, файл лишається зі старою назвою, а Task Owner отримує в Slack список
таких файлів.
План назв: що бачить дизайнер до Done
Прогон Ready for Production записує на задачу список назв майбутніх карток. Це не технічна дрібниця, а контракт: дизайнер називає завантажені у Drive-папку файли саме цими назвами, і рівно за назвою gdrive-sync потім чіпляє файл до картки. Тому назви фіксуються тоді, коли фіксуються теги, — за цикл до того, як самі картки з’являються.
Поки план стоїть, ці назви належать цій задачі: інша задача, яка спробує спланувати таку саму, буде відхилена з «These creative names are already taken», і в помилці буде видно, хто саме їх тримає. Перевірка дивиться і на наявні картки, і на плани інших задач поза Backlog — план задачі, яку повернули в Backlog, нічого не резервує, бо її якраз перетеговують.
Локаль у назві — це пара Geo + Language (обидва сегменти в кінці, …_CA_FR). Тож дві
LOC-задачі з одного оригінала на одну мову й різні гео дають різні назви, і план другої з них
проходить — так само, як їх пропускає правило дублікатів, яке порівнює саму пару Geo+Language.
Раніше Geo в назву не входив, обидві задачі впирались в ту саму назву, і друга відхилялась як
«These creative names are already taken».
5. Успадкування статусу Creative від Task
- Creative-рядки в таблиці Creatives не мають власного поля “Status” як джерела правди — воно дзеркалить статус батьківської Task автоматично на рівні платформи (не ручне поле).
- Наслідок для блокування назви: як тільки батьківська Task потрапляє в Ready for Production і її прогон завершується, всі її Creative Name так само фіксуються й блокуються — синхронно зі статусом Task, без окремої логіки на рівні Creative.
6. Дублікати варіантів (LOC / WHT / ADPT / RSZ)
Похідні задачі роблять із готового креативу іншу його версію: LOC — переклад під іншу мову, WHT — версію під іншу платформу, ADPT — адаптацію під інший сорс, RSZ — ресайз під інший розмір (Resolution). Одну й ту саму версію одного оригінала система робити двічі не дає.
Що вважається «тією самою версією»:
| Task Type | Дублікат, якщо для цього оригінала вже є картка з тим самим |
|---|---|
| LOC | тією самою парою Language + Geo |
| WHT | тим самим Source |
| ADPT | тим самим Source |
| RSZ | тим самим Resolution |
Порівнюються лише картки того самого Task Type — WHT-версія ніколи не конфліктує з LOC-версією. Власні картки цієї ж задачі не враховуються, тож перезбереження задачі з тими самими тегами дублікатом не вважається.
Що ви побачите:
- Повний збіг — задачу зберегти не вийде: конфліктні теги підсвічуються, а в помилці видно назву картки, яка вже покриває цю мову/платформу. Той самий збіг перевіряється ще раз під час прогону автоматизації — це важливо, коли оригінали підтягуються через Legacy Remap і форма їх заздалегідь не бачить. Тоді задача просто повернеться в Backlog з помилкою.
- Частковий збіг (тільки для LOC) — збіглася або мова, або гео, але не обидва. Це не блокує: показується попередження, зберегти можна. Такий сусідній варіант буває і цілком нормальним (та сама мова на інше гео), і ознакою помилки в гео — вирішує людина.
Якщо новий варіант справді потрібен попри наявний, попередню картку треба видалити: перевірка дивиться лише на невидалені картки. Змінити статус старої картки для цього не достатньо.
7. Окремі рішення та відомі межі
- Reject з Tech Check → In Progress, дизайнер доробляє відео → знову йде в Tech Check (не в Creative Check). У Backlog з перевірки теж можна, але це інший випадок — коли причина саме в тегах, а не в самому відео.
- Creative Check не обов’язковий. З Tech Check задачу можна прийняти прямо в Done. Технічна перевірка — остання, якої задача потребує, коли креативній стороні нема чого додати; ганяти таку задачу через другий апрув тільки заради того, щоб його поставили не глядячи, робило другого рев’ювера вузьким місцем, а не перевіркою.
- Reject з Creative Check → In Progress, доробка → знову в Creative Check.
- Запуск у кабінеті — це не статус задачі, а Test Status креатива. Окремого статусу
Testingу задачі немає: Robby, запускаючи папки задач у статусіDone, звітує про запуск кожного креатива через інтеграційний API, і той ставить креативу Date Launched та переводить його Test Status зNot TestedуIn Test. Задача при цьому лишається вDone— і на її картці видно саме бейдж Test Status. УArchivedїї переводить людина, коли тест завершено. - Manual Launch на Done — це лише сповіщення.
Done+Manual Launch = trueдає пінг у UAM-канал; папок під окремі гілки більше немає — усе лежить у{Product}/{Task}під кореневою папкою диска.