Решение: один элемент массива на каждое явно выраженное обязательство; не включайте резюме, приоритет и тональность. Для неизвестного ответственного или даты используйте null, поскольку само отсутствие имеет значение; пустая строка недопустима. Слово «скоро» сохраняется в evidence, но не может быть значением due_date.
Схема: action — обязательная непустая строка; owner — обязательный ключ со строкой или null; due_date — обязательный ключ со строкой в формате YYYY-MM-DD или null; status — обязательное перечисление; evidence — обязательный объект с непустой строкой speaker, временной меткой HH:MM:SS и непустой строкой excerpt длиной не более 200 символов. Порядок ключей: action, owner, due_date, status, evidence. Межполевое правило: статус completed требует подтверждения того, что о завершении было сказано; due_date должен быть null, если в evidence нет точной даты.
Точная формулировка для промпта: «Верни только массив JSON в кодировке UTF-8. Каждое явно выраженное обязательство представь одним объектом с ключами в следующем порядке: action, owner, due_date, status, evidence. Используй null, если ответственный или точный срок не названы; никогда не пропускай ключи и не преобразуй относительные формулировки в дату. status должен иметь одно из значений: proposed, confirmed, completed или cancelled. evidence должен содержать speaker, временную метку в формате HH:MM:SS и выдержку из источника длиной не более 200 символов. Если явных обязательств нет, верни []. Не добавляй связный текст или Markdown».
Допустимый пример: [{"action":"Отправить обновлённый бюджет","owner":"Nora","due_date":null,"status":"confirmed","evidence":{"speaker":"Nora","timestamp":"00:14:22","excerpt":"Я скоро отправлю обновлённый бюджет."}
}]. Допустимый пустой результат: []. Недопустимо: значение "soon" в due_date нарушает правило формата ISO; отсутствие owner нарушает правило обязательного ключа. Человек по-прежнему должен проверить, является ли выдержка обязательством и относится ли имя «Nora» к нужному человеку.