설계: 명시적인 약속 하나당 배열 항목 하나를 사용하며 요약, priority와 sentiment는 제외합니다. 담당자나 날짜를 알 수 없으면 누락 자체에 의미가 있으므로 null을 사용하고, 빈 문자열은 유효하지 않습니다. ‘Soon’은 evidence에 남기되 due_date에는 입력할 수 없습니다.
스키마: action은 필수이며 비어 있지 않은 string, owner는 필수 키이며 string|null, due_date는 필수 키이며 YYYY-MM-DD 형식의 string|null, status는 필수 enum입니다. evidence는 필수 object이며 비어 있지 않은 string인 speaker, HH:MM:SS 형식의 timestamp, 200자 이하의 비어 있지 않은 string인 excerpt를 포함합니다. 키 순서는 action, owner, due_date, status, evidence입니다. 필드 간 규칙: completed 상태에는 완료가 언급되었다는 evidence가 필요하고, evidence에 정확한 날짜가 없으면 due_date는 null이어야 합니다.
정확한 프롬프트 조항: “UTF-8 JSON 배열만 반환하세요. 명시적인 약속 하나를 객체 하나로 만들고 키는 action, owner, due_date, status, evidence 순서로 배치하세요. 담당자나 정확한 기한이 언급되지 않았다면 null을 사용하고, 키를 생략하거나 상대적 표현을 날짜로 변환하지 마세요. status는 proposed, confirmed, completed, cancelled 중 하나여야 합니다. evidence에는 speaker, HH:MM:SS 형식의 timestamp와 200자 이하의 출처 excerpt를 포함하세요. 명시적인 약속이 없으면 []를 반환하세요. 산문이나 Markdown을 추가하지 마세요.”
유효한 예시: [{"action":"수정된 예산 보내기","owner":"Nora","due_date":null,"status":"confirmed","evidence":{"speaker":"Nora","timestamp":"00:14:22","excerpt":"수정된 예산을 곧 보내겠습니다."}
}]. 유효한 빈 결과: []. 잘못된 예시: due_date가 "soon"이면 ISO 규칙에 어긋나고, owner를 생략하면 필수 키 규칙에 어긋납니다. 사람이 excerpt가 실제 약속인지, ‘Nora’가 올바른 인물인지 계속 검토해야 합니다.