[{"data":1,"prerenderedAt":451},["ShallowReactive",2],{"blog-\u002Fblog\u002Fpodnimem-i-razberemsya":3},{"id":4,"title":5,"body":6,"date":438,"description":439,"extension":440,"meta":441,"navigation":442,"path":443,"seo":444,"stem":445,"tags":446,"__hash__":450},"blog\u002Fblog\u002Fpodnimem-i-razberemsya.md","«Если что — поднимем и разберёмся»",{"type":7,"value":8,"toc":423},"minimark",[9,13,16,19,22,27,30,36,39,42,45,49,52,55,58,61,64,67,71,74,77,80,83,86,90,93,96,99,102,105,108,113,117,120,123,126,129,132,135,138,141,144,148,151,154,157,160,163,166,173,176,179,239,242,245,249,252,306,309,316,319,323,326,329,332,335,338,341,346,349,354,357,363,367,370,389,392,395,399,402,405,408,411,420],[10,11,12],"p",{},"Начнём с вопроса. Он простой, и ответ на него у вас точно есть — вопрос только в том, за сколько времени.",[10,14,15],{},"Возьмите операцию, которую ваша система провела вчера сама. Не спорную, не жалобу — обычную, каких тысячи. Какое условие её пропустило? И в какой редакции это условие было именно вчера, а не сегодня?",[10,17,18],{},"Прикиньте честно: час, день, неделя, не соберём.",[10,20,21],{},"Запомните свой ответ. К концу он, скорее всего, изменится, и не потому, что я буду вас переубеждать.",[23,24,26],"h2",{"id":25},"фраза-с-которой-всё-начинается","Фраза, с которой всё начинается",[10,28,29],{},"Её произносил каждый, кто отвечает за процесс.",[31,32,33],"blockquote",{},[10,34,35],{},"Если что случится — поднимем и разберёмся.",[10,37,38],{},"Звучит разумно. За ней стоит уверенность, что прошлое доступно. Надо только знать, где смотреть, и потратить время.",[10,40,41],{},"Дальше я эту уверенность разберу. Не для того, чтобы расстроить. В конце будет очень конкретный вывод, что с этим делать.",[10,43,44],{},"Ситуация одна на весь разбор. Год назад система приняла решение сама. Сегодня спрашивают, почему именно так. Кто спрашивает — неважно: жалоба, проверка, суд, свой же начальник.",[23,46,48],{"id":47},"ступень-первая-смотрим-в-отчёт","Ступень первая. Смотрим в отчёт",[10,50,51],{},"С чего вы начнёте? Скорее всего, откроете отчёт или карточку операции.",[10,53,54],{},"И вот первая ловушка, самая незаметная из всех.",[10,56,57],{},"Отчёт строится по тому, что записано. Если процесс упал до того, как что-то записал, в отчёте его нет вообще. Не «нет данных», не «статус неизвестен» — его просто нет, как будто не было.",[10,59,60],{},"Отсюда следствие, из-за которого существует целый класс неприятностей. В отчёте «не завершилось» и «не начиналось» выглядят одинаково: никак. Отличить одно от другого невозможно, потому что оба отсутствуют.",[10,62,63],{},"Проверить это просто. У вас наверняка есть отчёт, сколько процессов запущено и сколько завершено. А есть ли отчёт, какие не завершились? Это не то же самое, что разность двух чисел. Разность скажет количество, но не скажет, какие именно.",[10,65,66],{},"Вот почему про сбой обычно узнают от клиента. Не потому, что плохо смотрели. Потому что смотреть было не на что.",[23,68,70],{"id":69},"ступень-вторая-поднимаем-логи","Ступень вторая. Поднимаем логи",[10,72,73],{},"Хорошо, скажете вы, у нас всё логируется. Подробно.",[10,75,76],{},"Скорее всего, правда. Журналы сейчас есть везде, и они и правда подробные.",[10,78,79],{},"Только журнал по своей природе фиксирует действия. Шаг, время, результат, код возврата. Это ответ на вопрос «что произошло».",[10,81,82],{},"А спрашивают «на основании чего». Это другая запись, и подробность тут не помогает. Можно иметь терабайт логов и не иметь ответа. Сколько ни увеличивай детальность записи о действии, она не превратится в запись о причине.",[10,84,85],{},"И вот что здесь неприятнее всего. Основание нельзя дописать потом. Действие восстанавливается по следам — оно оставило изменения в данных, вызовы к соседям, отметки времени. Основание существует только в момент принятия решения. Если его тогда не записали, его больше нет нигде.",[23,87,89],{"id":88},"ступень-третья-записываем-правило","Ступень третья. Записываем правило",[10,91,92],{},"Логично. Будем записывать основание — какое правило сработало. Многие так и делают, и это уже сильно лучше среднего.",[10,94,95],{},"Записали. Правило RULE-114.",[10,97,98],{},"Год спустя открываем RULE-114 и читаем.",[10,100,101],{},"И читаем сегодняшний текст. Потому что записан был идентификатор, а идентификатор указывает на правило, а не на его тогдашнее содержание. Правило за год переписали — может быть, десять раз. Номер тот же.",[10,103,104],{},"Здесь эта ступень хуже предыдущей, и вот чем.",[10,106,107],{},"Когда не записано ничего, вы это знаете и осторожничаете. Когда записан идентификатор, вы уверены, что основание у вас есть. Открываете, читаете уверенно и строите на этом позицию.",[31,109,110],{},[10,111,112],{},"Неполная запись опаснее её отсутствия. Она даёт ложную уверенность, а ложная уверенность стоит дороже незнания.",[23,114,116],{"id":115},"ступень-четвёртая-храним-редакции","Ступень четвёртая. Храним редакции",[10,118,119],{},"Хорошо. Версионируем правила. Записываем не номер, а номер и версию. Это встречается редко, но встречается.",[10,121,122],{},"Достали мартовскую редакцию. Прогоняем случай.",[10,124,125],{},"Каким входом?",[10,127,128],{},"Здесь стоит остановиться, потому что вся ступень в этом вопросе.",[10,130,131],{},"Прогон берёт данные. Данные — сегодняшние. Клиент с марта изменился: другой статус, другие лимиты, другая история операций, другие связи. Прогон правильных мартовских правил по сегодняшним данным даёт результат, который не был получен ни в марте, ни сегодня. Он вообще ниоткуда.",[10,133,134],{},"И выглядит совершенно нормально. Правила исторические — вы это проверили и в это верите. Про данные вы не подумали, потому что данные ощущаются как часть случая, а не как переменная.",[10,136,137],{},"Дальше две дороги, и обе плохие.",[10,139,140],{},"Первая. По полученному ответу выходит, что решение было неверным. Вы признаёте нарушение, которого не было: тогда всё отработало как положено.",[10,142,143],{},"Вторая. Вы чувствуете, что не сходится, но доказать нечем. Отвечаете обтекаемо. Тот, кто спрашивал, читает это как уход от ответа — и читает правильно, вы действительно ушли, просто не по своей воле.",[23,145,147],{"id":146},"ступень-пятая-снимок-данных","Ступень пятая. Снимок данных",[10,149,150],{},"Последняя попытка, и она честная. Сохраняем снимок данных на момент решения. Правила по версиям, данные снимком. Теперь-то воспроизведём?",[10,152,153],{},"Смотрим, из чего ещё состоял вход.",[10,155,156],{},"Справочники и реестры. Они обновляются, они не ваши, и запросить их «по состоянию на март» нельзя — там нет такой кнопки, потому что владельцу она не нужна.",[10,158,159],{},"Ответы контрагентов и внешних сервисов. Это разовые события. Повторный запрос сегодня — новый ответ, а не тот же самый.",[10,161,162],{},"И собственная система. Код переписан, настройки другие, версии библиотек обновлены. Даже с теми же входами она сегодня работает не так, как работала тогда.",[10,164,165],{},"Вот вывод, к которому мы шли.",[10,167,168,172],{},[169,170,171],"strong",{},"Воспроизведение как метод не работает."," Не потому, что вы плохо подготовились или мало вложили. Потому что часть входа вам не принадлежит и никогда не принадлежала.",[10,174,175],{},"Значит, фраза «если что — поднимем и разберёмся» неверна целиком. Разобраться потом нельзя. Можно только прочитать то, что записали тогда.",[10,177,178],{},"Пять ступеней одной таблицей.",[180,181,182,195],"table",{},[183,184,185],"thead",{},[186,187,188,192],"tr",{},[189,190,191],"th",{},"Что делаем",[189,193,194],{},"Чего не хватает",[196,197,198,207,215,223,231],"tbody",{},[186,199,200,204],{},[201,202,203],"td",{},"Смотрим отчёт",[201,205,206],{},"Упавшее до записи в нём отсутствует. «Не завершилось» и «не начиналось» выглядят одинаково",[186,208,209,212],{},[201,210,211],{},"Поднимаем логи",[201,213,214],{},"Журнал отвечает, что произошло. Основание — другая запись, и дописать её потом нельзя",[186,216,217,220],{},[201,218,219],{},"Пишем, какое правило сработало",[201,221,222],{},"Записан идентификатор. Через год он приведёт к сегодняшнему тексту",[186,224,225,228],{},[201,226,227],{},"Храним редакции правил",[201,229,230],{},"Прогон берёт сегодняшние данные. Верные правила по неверным данным дают ответ ниоткуда",[186,232,233,236],{},[201,234,235],{},"Сохраняем снимок данных",[201,237,238],{},"Справочники, ответы контрагентов и сама система вам не принадлежат",[10,240,241],{},"Это переворачивает задачу. Она перестаёт быть задачей про расследование и становится задачей про то, что положить в запись в момент решения. Расследование — работа с тем, что осталось. А что останется, решается один раз и заранее.",[10,243,244],{},"Кстати, это и ответ на вопрос из начала. Вы прикидывали, за сколько соберёте. Правильный ответ: за столько, сколько решили полтора года назад, когда систему настраивали. Сегодня на это уже нельзя повлиять никак.",[23,246,248],{"id":247},"что-должно-остаться","Что должно остаться",[10,250,251],{},"Пять записей, и все пять делаются во время работы, а не потом.",[180,253,254,264],{},[183,255,256],{},[186,257,258,261],{},[189,259,260],{},"Что записать",[189,262,263],{},"Почему именно так",[196,265,266,274,282,290,298],{},[186,267,268,271],{},[201,269,270],{},"Какое условие сработало",[201,272,273],{},"Не итог, а правило, по которому он получен. В большинстве систем записан именно итог, а причина восстанавливается по памяти того, кто настраивал",[186,275,276,279],{},[201,277,278],{},"В какой редакции оно было в тот момент",[201,280,281],{},"Не ссылка на правило, а его содержание на ту дату. Ссылка через год приведёт к текущему тексту, и подмену не заметить",[186,283,284,287],{},[201,285,286],{},"На каких данных",[201,288,289],{},"Снимок значений на момент решения, а не ссылка на карточку. Карточка живая, и сегодня в ней другое",[186,291,292,295],{},[201,293,294],{},"Какие условия ещё проверялись и почему не сработали",[201,296,297],{},"Отрицательный результат должен быть виден так же, как положительный. Иначе «проверили и не сработало» и «не проверяли» выглядят одинаково",[186,299,300,303],{},[201,301,302],{},"Кто или что решило и когда",[201,304,305],{},"Автоматика — с версией конфигурации. Человек — с названием роли",[10,307,308],{},"Так выглядит четвёртый пункт, когда он есть. Сработавшее условие сверху, под ним десять проверенных и отклонённых, у каждого зачёркнуто своё условие и значение, по которому оно не прошло.",[10,310,311],{},[312,313],"img",{"alt":314,"src":315},"Разбор одного решения: сработавшее условие и десять отклонённых, у каждого видно своё условие и значение","\u002Fshots\u002Fdecision.png",[10,317,318],{},"Пример на кадре намеренно игрушечный. Нарисуй я здесь ваш процесс, вы за минуту нашли бы в нём десять неточностей: предметную область знаете вы, а не я.",[23,320,322],{"id":321},"отдельно-про-модели","Отдельно про модели",[10,324,325],{},"Про ИИ в исполняющемся процессе спрашивают все, поэтому скажу коротко.",[10,327,328],{},"Новых проблем он не создаёт. Он обостряет уже описанные.",[10,330,331],{},"У обычного правила ответ выведен из условия — есть строка, на которую можно показать пальцем. У модели ответ не выведен, он порождён. Строки нет. Вы возвращаетесь на вторую ступень, где журнал говорит, что произошло, но не говорит, на основании чего — только теперь основания нет не потому, что его забыли записать, а потому что его не существует в читаемом виде.",[10,333,334],{},"Задайте один и тот же вопрос одной и той же модели дважды — ответы будут разные. Это её свойство, а не сбой. Обновили версию, сменили поставщика, поправили инструкцию — прежнего ответа больше нет нигде.",[10,336,337],{},"И третье, самое практичное. Модель, поставленную на шаг, который считают некритичным, обычно ставят туда со спокойной душой. Она разобрала обращение и определила его тип. Тип определил маршрут. Маршрут определил срок и исполнителя. Срок нарушен.",[10,339,340],{},"Модель не приняла ни одного критичного решения. Ни одного. А исход критичный.",[31,342,343],{},[10,344,345],{},"Некритичный шаг, стоящий перед критичным, делает критичным весь путь.",[10,347,348],{},"Отсюда единственная рабочая граница.",[31,350,351],{},[10,352,353],{},"Список допустимого считают правила, а не модель. Модель предлагает, правило разрешает, система исполняет. Предсказуемой становится не модель, а граница её полномочий.",[10,355,356],{},"Как это выглядит в записи. Сверху — что ушло решателю: перечень разрешённых шагов, посчитанный правилами до обращения к нему, и контекст. Снизу — что он предложил и с каким обоснованием. Две разные записи, и предложение не равно исполнению.",[10,358,359],{},[312,360],{"alt":361,"src":362},"Запрос к решателю с перечнем разрешённых шагов и его ответ с обоснованием, записанные отдельно друг от друга","\u002Fshots\u002Fauthority.png",[23,364,366],{"id":365},"что-можно-сделать-завтра","Что можно сделать завтра",[10,368,369],{},"Пять вопросов своим. Ни на один не нужно ничего покупать и ничего внедрять — это проверка, а не проект.",[371,372,373,377,380,383,386],"ol",{},[374,375,376],"li",{},"Есть ли отчёт, какие процессы не завершились? Не «сколько запущено», а какие именно не дошли.",[374,378,379],{},"Что происходит при повторе запроса: выполнится второй раз или будет распознан как повтор? И сколько живёт ключ, по которому распознаётся?",[374,381,382],{},"Написано ли где-нибудь, что делать, если процесс упал на середине, а компенсация тоже упала?",[374,384,385],{},"Записана ли редакция условия текстом или ссылкой?",[374,387,388],{},"Сохраняется ли дословный ответ внешнего источника — или только то, что вы из него достали?",[10,390,391],{},"Отвечать на них будут неохотно, и это само по себе ответ.",[10,393,394],{},"С четвёртым и пятым осторожнее. На них почти всегда отвечают «да, конечно». Попросите показать. Не потому что вам врут, а потому что отвечающий имеет в виду «у нас это есть», а вопрос был про то, как именно.",[23,396,398],{"id":397},"чего-я-не-знаю","Чего я не знаю",[10,400,401],{},"Вашей предметной области. Всё, что выше, — про устройство систем, которые исполняют процесс без постоянного присмотра, и я говорю только с этой стороны.",[10,403,404],{},"Если ваш процесс устроен так, что описанное к нему не относится, значит не относится. Проверка из предыдущего раздела делается без меня и честнее любой презентации.",[10,406,407],{},"А вот если на четыре вопроса из пяти ответ «зависит от конкретного человека» — тот самый расход у вас есть, просто он не выглядит расходом. Он выглядит как занятые люди.",[409,410],"hr",{},[10,412,413,414,419],{},"Мы делаем ",[415,416,418],"a",{"href":417},"\u002F","Вердикт"," — он про то, чтобы у процесса, который идёт по правилам и без присмотра, была память и тормоза. Описание процесса проверяется до выпуска, а каждое решение оставляет запись, из которой видно, что выбрали, что отклонили и по какому правилу.",[10,421,422],{},"Если вспомните последний раз, когда пришлось объяснять уже принятое решение или искать обязательство, которое не выполнилось, — напишите, сколько человек в этом участвовало и сколько это заняло. Если история регулярная, поговорим предметно.",{"title":424,"searchDepth":425,"depth":425,"links":426},"",3,[427,429,430,431,432,433,434,435,436,437],{"id":25,"depth":428,"text":26},2,{"id":47,"depth":428,"text":48},{"id":69,"depth":428,"text":70},{"id":88,"depth":428,"text":89},{"id":115,"depth":428,"text":116},{"id":146,"depth":428,"text":147},{"id":247,"depth":428,"text":248},{"id":321,"depth":428,"text":322},{"id":365,"depth":428,"text":366},{"id":397,"depth":428,"text":398},"2026-09-03","Фраза, которую произносил каждый. Разбираем её по ступеням и выясняем, что подняться некуда. Прошлое не восстанавливается, его можно только записать заранее.","md",{},true,"\u002Fblog\u002Fpodnimem-i-razberemsya",{"title":5,"description":439},"blog\u002Fpodnimem-i-razberemsya",[447,448,449],"запись решений","разбор инцидентов","версии правил","bJDLlPAkl7N2n8DXljB--u4HI53A0hKTxk90cInPTXI",1788644606450]