AITODO — Мой день
Редизайн aitodo вокруг одной страницы «Мой день»: режим дня + задачи на таймлайне, фокус, клиенты, бэклог, ИИ-строка. Концепция: myvisionagency.ru/lab/aitodo-day
В РАБОТЕS1 · С1 · Мой день5/8
Цель: Страница /my-day: таймлайн (режим дня + задачи), режим в БД, галочки, панели Фокус/Бэклог
готовS2 · С2 · Клиенты3/3
Цель: Сущность clients + touches, страница-пайплайн, панель «сегодня написать» на Моём дне
готовS3 · С3 · Лия-руки1/1
Цель: ИИ-строка на Моём дне: создание задач/бэклог/перенос через tool-парсер с превью-подтверждением
готовS4 · С4 · Полировка3/3
Цель: Вкладка «Неделя», объединение двух страниц фокуса, drag идей из бэклога на таймлайн
готовS5 · С5 · Лия видит всё4/4
Цель: Клиенты и режим дня в телеграм-Лие (lia-v2) + веб ИИ-строке; клиенты в утреннем брифе
готовS6 · С6 · Виджеты для ПК9/9
Цель: Десктопные виджеты Windows (спорт, задачи/бэклог, фокус поверх окон, музыка) с синхронизацией через API aitodo
ревьюS7 · С7 · Проекты и рабочий день8/8
Цель: Раздел «Проекты» (проекты по группам, спринты со сроком, задачи, бэклог проекта), привязка задач и бэклога к проекту, виджеты «Проекты» и «Мой день»
В РАБОТЕS8 · С8 · Входящие: одно место для всего20/21
Цель: Одно место, куда падает что угодно из любого канала (текст, пересылка, голос, файл) и не теряется: сущность «входящие», Лия как приёмник, виджет и страница для разбора
ревьюS9 · С9 · План дня и поля задачи8/8
Цель: Один список разбора, перенос задач мышкой на время, честные поля задачи и пометка встречи
готовS10 · Проверки по сроку1/4
Цель: Отложенные проверки: сработало ли то, что чинили
ревьюS11 · С11 · Битрикс: задачи и встречи с работы5/6
Цель: Забирать задачи и встречи из рабочего портала в план дня, уведомлять в телеграм
ревьюS12 · С12 · Качество разбора встреч5/5
Цель: Русский язык без иероглифов, отбор задач от болтовни, контекст встречи в каждом пункте
готовS13 · С13 · Знания по проектам7/10
Цель: Единый склад материалов по проектам и контекст, который ИИ находит сам
ревьюS14 · С14 · Люди, телеграм, ритуал планирования7/7
Цель: Знания о людях, подключённый основной телеграм и повторяемый формат планирования дня
ревьюS15 · С15 · Склад материалов и сборщик из телеграма52/53
Цель: Знания по проектам складываются и находятся: файлы, разборы, идеи с привязкой к проекту и источнику
ревьюS16 · С16 · Расшифровка на GigaAM и честный разбор8/9
Цель: Убрать Whisper как причину каши в расшифровке, перенести распознавание на машину владельца, научить разбор отличать сделанное на встрече от взятого в работу
В РАБОТЕS17 · С17 · Планирование месяца и недели (скилл plan-horizon)26/35
Цель: Скилл plan-horizon: за один разговор KPI месяца и задачи недели превращаются в спринт AITODO с подзадачами, оценками, вложениями из склада и напоминаниями. Живёт над plan-day: он про «что и зачем», plan-day про «в каком часу». Решения владельца 06.09.2026: месяц = спринт проекта («Сентябрь · Фит Лид», цель = KPI); KPI владелец скидывает текстом при планировании; галка «через ИИ» на задаче отправляет её в очередь Рубки и выводит из вместимости дня; сигнал «инфа собрана» = закрытая подзадача; интервью не больше 5 вопросов на задачу, остальное допущениями; ретро по пятницам и в конец месяца; Битрикс не трогаем; пилот на задачах недели и KPI сентября Фит Лид, сквозной путь на автогенерации КП.
ревьюS18 · С18 · Один разбор: входящие по дням и людям45/50
Цель: Входящие разбираются один раз: карточка честно говорит от кого и про что, тут же ставится проект, размер, день и исполнитель. День без часа раскладывает алгоритм по кнопке и по слову «разложи завтра». «Разобрать» остаётся для «когда-нибудь».
В РАБОТЕS19 · С19 · Тело: Лия ведёт спорт и еду17/21
Цель: Владелец не думает о еде и спорте: Лия пингует по режиму дня, считает калории и подходы, молчание = по плану. docs/BODY.md в lia-v2.
ревьюS20 · С20 · Лия пишет в склад знаний5/5
Цель: «Запиши в базу знаний» кладёт материал в склад AITODO, а не во Входящие; «что мы знаем про…» ищет по складу.
ревьюS21 · С21 · Встречи не теряются, запись не забывается28/35
Цель: Прошедшие встречи остаются на своих днях, встречи из Битрикса не застревают в бэклоге; виджет сам замечает звонок в Телемосте, Зуме, Телеграме или Скайпе и предлагает записать встречу с названием из дня.
В РАБОТЕS22 · С22 · Linear: уведомления ботом и задачи во Входящие1/4
Цель: Ничего из Linear работодателя не теряется: назначения, упоминания и комментарии приходят ботом @fitleadmy_bot с контекстом задачи, в 10:00 сводка ждущих ответа, назначения и упоминания лежат во Входящих AITODO.
В РАБОТЕS23 · С23 · Здоровье айфона в AITODO6/9
Цель: Данные «Здоровья» (вес с весов Zepp Life, сон, шаги, свет, пульс, тренировки) лежат в AITODO таблицами для точного сравнения по неделям и месяцам; история из экспорта 10.10 залита; команда айфона досылает свежие дни сама; месячные сводки в складе ищутся по смыслу.
ревьюS24 · С24 · Телеграм в базе целиком7/12
Цель: Каждое сообщение владельца и ему (рабочие папки + личные чаты), включая короткие, за 15 минут лежит в базе AITODO; пропуски догоняются; история с 01.09; счёт по дням для Пульса.
В РАБОТЕS26 · С26 · Календари Outlook ПЦ ↔ Битрикс ↔ AITODO21/23
Цель: Встречи ПЦ из Outlook сами в AITODO, «Занят» без названий в Битрикс и в Outlook, без дублей и приглашений
Ворклог (места остановки)
19.10 С26 «Календари Outlook ПЦ ↔ Битрикс ↔ AITODO»: проба EWS (servermail2.apress.ru, NTLM, shamrai@pulscen.ru) прошла; вручную поставлены «Занят» в Битрикс на встречи ПЦ недели (11824–11830, связи outlook-busy). Код: calendar_sync.py, outlook.py, calendar_common.py, модель calendar_links, миграция 037, задача раз в 10 мин; экзамены 14/14, ОТК 3 круга завершён, 4 пункта «не сходится» в SCOPE-CUTS-LOG. Найдена дыра вне С26: /api/lia/code/* без входа, порты 8000/3000 наружу.
→ По «да» владельца: закрыть /api/lia/code (nginx 403 + порты на 127.0.0.1), затем выкат С26 по CALENDAR_SYNC.md «Выкат», пароль ПЦ в .env 600, живая проверка 26.15 (NTLM из контейнера, день to в Битриксе, удалённый экземпляр серии).
С24 выкачен 15.10 по «да»: миграции 035–036, архиватор каждые 10 мин (flock -E0 -n + timeout 600), ночь и newsctl под замком, бриф видит отставание. ОТК 2 круга: два критика + сверка со спекой нашли 20+ дыр (обрыв обхода на черновике, стирание текста при переименовании папки, один чат валил прогон, ядовитая строка останавливала заливку, atlas_ro читал переписку, копии базы 644, ночь молча пропускала сбор, ссылки считались фото, «не хранить вовсе» подменено «без текста», сломанный чат выпадал навсегда) — закрыты, проверены на временной базе и подставных чатах (14/14). Экзамены на финальной версии: 7 зелёных, 24.1/24.2 красные из-за противоречия критериев (канал @pulscenru), 24.3 — вышедшая группа ИСЕТЬ. Регресс: экзамены С23 20/20.
→ Ответы владельца: (1) хранить ли чужие каналы в рабочих папках (рекомендую да → 24.1/24.2 зелёные, 24.5 уточнить); (2) 24.3 сверять по чатам, где он остаётся; (3) 24.11 текст личных + списки personal_exclude/skip_chats; (4) усилить экзамены 24.1/24.6/24.9/24.10 и добавить 24.11. Потом С25 Пульс.
С24 «Телеграм в базе целиком»: найдено, почему база видела 6–23% исходящих (ночной tg-collect берёт только «ценное», не видит «Личные» с флагами contacts/non_contacts, окно сутки без догона). Написан архиватор tg-archive.py (метки min_id, догон, буфер SQLite, заливка psql одной транзакцией), миграция 035 (tg_chats, tg_messages, вид tg_daily), бриф пишет «Архив телеграма отстаёт», night.sh с общим замком подготовлен. История 01.09–15.10 залита в буфер cfru: 16 622 сообщ., 169 чатов, 4 мин, FloodWait макс 5 с. Сверка с дампом 07.10: 98,07% (без вышедшей группы ИСЕТЬ 99,83%), коротких 118/120. Заливка проверена на временной pg15: идемпотентна, поймана ошибка %-форматирования. Экзамены: 24.6 и 24.10 зелёные, остальные ждут выката.
→ Ждём «да» владельца на выкат: дамп базы → миграция 035 + модель → пересборка backend → крон */10 (flock -n -E 0) → night.sh с замком → первая заливка → экзамены 24.1–24.9, 24.2 прогоном 25 мин → ОТК. Решения владельца: текст личных чатов (24.11), сверка 24.3 только по чатам, где он остаётся. Потом С25 Пульс.
10.10: С23 «Здоровье айфона в AITODO» выкачено по «да на прод». Таблицы health_daily/sleep/workouts/keys/ingest_log (миграция 034), ручки /api/health/ingest (ключ X-Health-Key только на приём), /daily, /weekly, /month; разбор чисел и дат по-русски, сон по часам, шаги по одному источнику. Экзамены exam_parse 30/30, exam_db 20/20 на временной базе, масштаб: вся история дважды без дублей. На проде залит экспорт 10.10: 19 516 строк, 878 ночей, 691 тренировка. Инструкция команды /lab/komanda-zdorovye/.
→ 23.7: после «трачу» запустить health_digest_store.py (сводки месяцев в склад, проект «Личные дела»). 23.8: владелец собирает команду, проверить первый приём origin=shortcut в health_ingest_log и подогнать разбор под реальный вид. Потом ОТК спринта и учёт в ретро (недельные цифры из /weekly).
07.10: Linear выкачен (первый запуск 07:35 UTC, 4 задачи во Входящих). Затем по просьбе владельца всё рабочее Fit&Lead развели с Лией: Битрикс-сводки, напоминания по задачам «Фит Лид», лиды РЕКЛ БА и завод статей дашборда идут @fitleadmy_bot. Авито/ISKRA остаются в Лии (решение владельца).
→ 08.10 10:00 проверка сводки Linear (Проверки по сроку). Хвосты: в дашборде Fit&Lead переименовать LIA_BOT_TOKEN в WORK_BOT_TOKEN при следующем плановом выкате; закрытие записи во Входящих при закрытии задачи в Linear.
07.10.2026: сводка Linear от 30.09 ни разу не работала (ключа не было) и видела только назначения. Переписана: инбокс Linear каждые 10 минут, отдельный бот @fitleadmy_bot с контекстом задачи, сводка «ждут ответа» в 10:00, назначения и упоминания во Входящие (источник linear, проект «Фит Лид»). Экзамены 14/14, сухой прогон на живом инбоксе, проверка на базе с откатом. Выкачено по «да, катим»: бэкап .backup-20261007, .env 600, пересобраны backend и frontend.
→ Дождаться первого запуска (07:35 UTC): во Входящих 4 задачи (CDT-993, 1044, 1050, 1088). 08.10 10:00 — проверка сводки (задача в Проверках по сроку). Хвосты: закрытие записи во Входящих при закрытии задачи в Linear не сделано.
С21 «Встречи не теряются, запись не забывается», 02.10. Причина «встреч нет в виджете»: подтягивание из Битрикса работало (раз в 5 мин), но ночной перенос 00:05 уводил прошедшие встречи в бэклог со стёртой датой (38 встреч, 21 из Битрикса). Сервер: прошедшая встреча теперь completed на своём дне; обмен возвращает встречу из бэклога, отклонённую в Битриксе снимает (cancelled + метка), снова принятую возвращает, перенесённую на будущее открывает; разово возвращено 19 встреч с 26.08. Виджет 1.3.3: сторож звонков по реестру микрофона Windows (Телемост, Зум, Скайп, Скайп для бизнеса, Телеграм после 30 с; браузер нет), окошко у часов без кражи фокуса с названием встречи из дня, «звонок закончился — остановить?». ОТК 3 круга: найдено и закрыто 13 дыр (ложное «закончился», потеря окошка при входе в звонок, Телеграм-переподключение, двойной Enter, двойной старт и др.), критерии 21.1a–i, 21.2a–s. Экзамены: сервер 9/9, виджет 15/15 + живой.
→ 1) Владелец: подтвердить 21.1a (прошедшая встреча = completed, а не todo). 2) Владелец: 17 встреч в бэклоге не из Битрикса + 2 удалённых собеседования — закрыть как прошедшие? 3) Руками на встрече: 21.3a (окошко на настоящем звонке в Телемосте), 21.2d (Записать), 21.2s (запись из трея без старого названия). 4) Проверка по сроку 09.10 (id 7f28df71): начинаются ли записи вовремя. 5) Решение по Enter без щелчка (глобальная клавиша?).
23.09: у Лии появились инструменты склада (save_knowledge, find_knowledge). Раньше «запиши в базу данных» уходило во Входящие, знание терялось в очереди разбора. Экзамены 6/6 + живой прогон. Созвон с Дмитрием по Принтфлагу (сайт по образцу РусФлага, лендинги по рубрикам, парсер цен, анализ конверсий) занесён материалом 1253 и задачей 1245 с пятью подзадачами.
→ Проверить на живой фразе: сказать Лие «запиши в базу знаний …» и убедиться, что материал появился. Дальше при желании: kind по смыслу (решение/факт/идея) и автоссылка материала на задачу.
23.09 (вторая правка дня): по слову владельца добавлены два пинга. 16:30 при перерыве в еде 5+ часов зовёт белок вместо шоколадки; 18:00 пн-пт разгрузка головы (5 вариантов, ротация по дню). Экзамены 19.16 и 19.17, всего 13/13, спека и критерии обновлены, выкачено, 15 заданий body_*.
→ Смотреть неделю: срабатывает ли разгрузка и меняется ли вечерний срыв. Ретро в пятницу по user-day-journal. 19.6 (фото еды) всё ещё не проверено живьём.
23.09: Лия перестала записывать еду «по плану» (решение владельца: ест другое в 70% случаев). Предложение меню осталось, в журнале только сказанное. Правка + переписанные экзамены 19.7/19.11, 11/11, спека и критерии обновлены, выкачено. Вчерашние ложные записи plan_default удалены из AITODO.
→ Владельцу предложены два пинга, ждут его слова: «не ел N часов, нужен белок» вместо перекуса в 16:30 и разгрузка в 18:00 (22.09 перегруз кончился срывом на пиццу и мыслью про виски). Проверка 24.09 по сроку.
21.09: первый живой день «Тела»: 5 пингов дошли, еда занесена из чата (роллы, сникерс, рёбра, кола → 1550 ккал), подходы владелец делал в виджете ПК (3 пачки) — теперь считаются. Починены два бага повторяющихся задач (время паттерна как UTC; stop без записи end_date). Встречи ПЦ на неделю в AITODO и «Встреча» в Битрикс; дубли из синка отменены.
→ Карточка дня 20:30 покажет 4 из 4. Ретро в пятницу по дневнику user-day-journal. Синк Битрикса: не тянуть наши заглушки. 19.6 фото еды всё ещё не проверено живьём.
20.09: спринт С19 «Тело» собран за сессию: спека docs/BODY.md, критерии BODY-ACCEPTANCE.md, 11 экзаменов + 2 живых зелёные, модуль выкачен в lia-backend, 14 заданий body_* в планировщике, быстрые пути в телеграме, фото еды через gemini-2.5-flash. Владельцу ушло вводное сообщение и пробный пинг.
→ Пн: первый живой день. 19.6 проверить по фото обеда. Проверка по сроку 24.09. Дальше С2 (Apple Health) и С3 (страница «Тело»). Ловушка: AITODO «сегодня» в UTC, день считать в +5 на стороне Лии.
20.09: планирование недели 21-27.09 пилотом plan-horizon: 6 планов через plan_store.py (12 новых задач, 14 обновлённых), дни и часы пн-пт через /day/layout, 3 повторяющихся блока (спорт, готовка). Попутно: сборщик телеги без ботов (С15), 97 материалов парсера удалены по «да» владельца. Страницы: /lab/sport-eda, /lab/fitlead-strategy (черновик стратегии 3 проектов).
→ Пн: владелец смотрит стратегию (1152) и гайд интервью (1155 через ИИ). Ср: стратегия Нине после «ок». Пт: ретро недели. Ловушка: время в recurrence_pattern хранится в UTC.
18.8 «Сделал» в «Раскидать»: третий исход рядом с «выкинуть». Статус done у входящих, POST /api/inbox/{id}/done, кнопка «Сделал · x», задача-сирота → completed. 3 экзамена зелёные на проде, выкачено 20.09.
→ Владельцу посмотреть кнопку глазами на /sort. По желанию: та же кнопка в «Разобрать» и в виджете «Входящие» на ПК (там пока только выкинуть).
20.09: сборщик из телеграма перестал читать ботов (Parser Fit lead давал 109 записей за неделю). 18 входящих от бота отброшены. Планирование недели 21-27.09 по plan-horizon: факты собраны, экран согласования показан владельцу.
→ Ждём «ок» на план недели → plan_store.py + дни. Ждём «да» на удаление 97 материалов от парсера из склада. Дальше: стратегия по 3 проектам страницей, план спорта и еды.
Виджеты 1.2.0: «Фокус» и «Встреча» получили свои значки у часов. Клик — виджет выпрыгивает над панелью, правый клик — включить фокус или начать запись без окна, значок показывает состояние. Собрано, установлено владельцу, проверено снимками экрана и эмуляцией кликов.
→ 1) Владельцу посмотреть глазами: значки у часов, клик по микрофону и кольцу. Если значки уехали за стрелку «^» после перезагрузки — вытащить мышкой один раз, Windows запомнит. 2) Горячие клавиши на фокус и запись не делал — предложить, если значков мало. 3) Общий значок виджетов остался как был: список всех виджетов в правом клике.
14-15.09: второй прогон plan-horizon на неделе 14-18.09 целиком. Факты без вопросов (brief, tasks, Atlas), 5 результатов недели, сверка списка владельца с бэклогом (дубли не заведены), занесение plan_store.py в 6 спринтов (12 новых, 27 обновлённых), дни через /plan, часы через /day/layout пн-пт. Находки: блок «Без времени» на дне владелец не читает как задачи дня (заведена задача в С1); ночной откат незакрытых задач в «ждёт разбора» вычищает день целиком, наутро вчерашнее надо перепроверять руками; рекуррентная встреча ПЦ (задача 50) даёт инстанс cancelled; раскладка считает дедлайн 18:00 чужих дней 30-мин блоком по дизайну. Плюс сбор вопросов Мише из телеграма (5 голосовых расшифрованы GigaAM).
→ Планирование дня 15.09: владелец отмечает вчерашнее, накидывает новое, раскладка. Решить, что делать с ночным откатом незакрытых задач (сохранять день или спрашивать). Ретро недели в пятницу 16:00.
Первый живой прогон раскладки на реальном дне владельца сразу нашёл дыру во вчерашней правке: занесение плана ставит задачам дедлайн 18:00, а правка «дедлайн это занятое время» из-за этого выводила их из кандидатов, и раскладка оставляла день пустым при двух десятках дел. Починено: дедлайн считается занятым только у задач, не назначенных на этот день; то же исправлено в «Моём дне», где такая задача рисовалась блоком вместо списка «Без времени». Выкачено и проверено. В работе по кабинету: 22 задачи владельца занесены через plan_store (создано 20, четыре существующие обновлены вместо дублей), разложены по дням и часам, вычищен мусор от прогонов экзаменов (5 задач и 17 напоминаний). Знания из файла наследства маркетинга Fit&Lead занесены в склад: 15 материалов плюс полная выгрузка, поиск проверен.
→ Владелец переразложил план сам и назвал правила: срок задаёт встреча, к которой задача нужна; контент через ИИ идёт каждый день и не переносится; автоматизируемое не занимает его день; задачи одного контура делаются пачкой в день, когда по нему и так идёт разговор; сбор из телеграма доводить до текущего момента, а не до полуночи. Правила записаны в память aitodo-planning-patterns. Отсюда две доработки кабинета: повторяющиеся задачи для ежедневного контента и учёт встреч дня при выборе срока. Осталось по С18 глазами: 18.2b, 18.5a, 18.7j, 18.7k.
С18 «Один разбор» выкачен и принят ОТК. Разбор входящих идёт один раз: карточка несёт автора, чат, время и подсказки, исходную расшифровку, а разбор ставит проект, размер, день и исполнителя. Появились POST /api/day/layout (раскладка дня по правилам, кнопка в «Моём дне», режим «разложи завтра» в plan-day), tasks.person_id с поручением на 15 минут и напоминанием Лии, состояние «день без часа». ОТК двумя подагентами дал 21 находку: поручение съедало день целиком (экраны слали подсказку размера вместо 15 минут), двойное нажатие рождало две задачи, пересекающиеся блоки режима клали две задачи на один час, раскладка прошлого дня делала задачи просроченными, пункты встреч (246 из 300 входящих) не несли ни времени, ни подсказок. Всё это закрыто критериями 18.7a-k. Экзамены 27 из 27, регресс С17 16 из 16. Найден дрейф репо и прода: meetings.py на сервере был новее, взял серверную версию за основу.
→ Владельцу глазами: 18.2b (день без часа в «Моём дне» и неделе), 18.5a («Быстро» в «Разобрать»), 18.7j (старая задача из бэклога на день), 18.7k (подсказка дня). Первый живой разбор входящих с днями и поручением. Решить: AI Office cron падает с марта на сигнатуре run_cron_task (не трогал, починка запустит платные прогоны). Забрать серверный meeting_digest.py в репо. Пояс: раскладка берёт пояс браузера, сводка — зашитый +5, расходится только в поездке.
Пилот скилла plan-horizon на живых данных. Нашлась расшифровка встречи 21.08 (лежала под названием fdf без проекта, переименована и привязана к Фит Лид, копия в базе знаний). Из неё взяты KPI сентября: выручка 2 млн, 150 регистраций блогеров, 75 постов по CPA. Владелец ответил на четыре вопроса объёма. Заведён спринт «Сентябрь · Фит Лид» (18): 30 задач, 6 верхних, 3 стадии через ИИ, 5 напоминаний «Ждём ответ», вложения из склада, паспорт по КП-агенту в базе знаний и в складе (материал 651). Блоки на 09.09 и 10.09 расставлены по часам. Экзамены: 16 зелёных, 0 красных.
→ Ручные критерии 17.1a-c и 17.6b проверяются на этом же пилоте по ходу недели. Для живого круга Рубки нужен контур FitLead с папкой проекта в её настройках.