F7 AI-Primary Due Date Flow (post-v0.2.1 dogfood patch) #11

Merged
altair823 merged 5 commits from feat/f7-ai-primary-due-date into main 2026-04-26 04:08:59 +00:00
Owner

요약

v0.2.1 dogfood 첫 실증 피드백 (F7): "내일 모레" 가 first-match-wins 로 → 내일로 잘못 잡힘. D 채택 — flow 반전 (rule 우선 → AI 우선, rule 은 prompt 후보 힌트).

결정

결정
Flow AI 우선, rule 은 prompt 후보 힌트
후보 추출 parseAllCandidates (모든 high+medium 매치, text 위치 순)
AI 실패 시 fallback 없음 (due_date null)
parseDueDate 보존 YES (backward compat)
schema 변경 없음
PROMPT_VERSION 3 (semantic 변경)

구현 (4 commits)

  • 2ee45bc plan
  • 1c72b64 parseAllCandidates (모든 매치 추출, span-overlap 제거 dedup) + 7 단위 테스트
  • 723dccd AI-primary flow + prompt 후보 주입 + AiWorker flip + 테스트 동기화 (1 flip + 1 신규)
  • 579450e promotion (별 spec + F1 후속 link + dogfood-feedback.md F7 헤더)

게이트

  • typecheck: 0 errors
  • 단위: 205/205 (197 → +7)
  • e2e: 1/1
  • 스키마 변경: 0
  • 신규 dependency: 0

해결 케이스

  • "내일 모레" → AI 가 ambiguous 인지 → null (또는 모레, AI 결정)
  • "이번 주 다음 주" → 동일
  • "5월 1일 이후 다음 주 월요일" → 2 candidates 주입 → AI 가 가장 의미 있는 거 pick

머지 후

v0.2.2 patch cut 권장 (포함: F7 만). v0.2.1 사용자에게 in-place 업그레이드.

🤖 Generated with Claude Code

## 요약 v0.2.1 dogfood 첫 실증 피드백 (F7): `"내일 모레"` 가 first-match-wins 로 → 내일로 잘못 잡힘. **D 채택** — flow 반전 (rule 우선 → AI 우선, rule 은 prompt 후보 힌트). ## 결정 | 결정 | 값 | |------|-----| | Flow | AI 우선, rule 은 prompt 후보 힌트 | | 후보 추출 | `parseAllCandidates` (모든 high+medium 매치, text 위치 순) | | AI 실패 시 fallback | 없음 (due_date null) | | `parseDueDate` 보존 | YES (backward compat) | | schema 변경 | 없음 | | PROMPT_VERSION | 3 (semantic 변경) | ## 구현 (4 commits) - `2ee45bc` plan - `1c72b64` `parseAllCandidates` (모든 매치 추출, span-overlap 제거 dedup) + 7 단위 테스트 - `723dccd` AI-primary flow + prompt 후보 주입 + AiWorker flip + 테스트 동기화 (1 flip + 1 신규) - `579450e` promotion (별 spec + F1 후속 link + dogfood-feedback.md F7 헤더) ## 게이트 - typecheck: 0 errors - 단위: 205/205 (197 → +7) - e2e: 1/1 - 스키마 변경: 0 - 신규 dependency: 0 ## 해결 케이스 - `"내일 모레"` → AI 가 ambiguous 인지 → null (또는 모레, AI 결정) - `"이번 주 다음 주"` → 동일 - `"5월 1일 이후 다음 주 월요일"` → 2 candidates 주입 → AI 가 가장 의미 있는 거 pick ## 머지 후 v0.2.2 patch cut 권장 (포함: F7 만). v0.2.1 사용자에게 in-place 업그레이드. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
altair823 added 5 commits 2026-04-26 04:08:53 +00:00
v0.2.1 dogfood 첫 실증 피드백. '내일 모레' → 내일로 잘못 잡힘.
규칙 파서 한계 3 (합성/양가 / 범위 / 모호) + 5 후보 방향 (A 화이트
리스트 / B 충돌 감지 / C UI 신호 / D AI 우선 / E 규칙 폐기).
1차 A+B 작은 PR 즉시 시도 가능, 2차 C UI 신호, 후속 D/E 결정.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
기존 parseDueDate (first-match-wins) 는 backward compat 로 보존.
parseAllCandidates 가 모든 high/medium 매치를 text 순서로 반환 — F7
AI-primary flow 의 prompt 후보 주입 입력으로 사용.

Overlapping-span suppression: 다음 주 월요일 같은 케이스에서 rule 10
(전체) 이 rule 13 (다음 주 alone) 을 포함하면 후자 매치 제거.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Flow 반전 (F7-D 채택):
- 기존: rule.iso ?? ai.dueDate (rule 우선)
- 신규: ai.dueDate ?? null (AI 우선)

규칙은 parseAllCandidates 로 모든 매치를 추출 → prompt 에 후보
힌트로 주입. AI 가 종합 판단. AI 실패 시 due_date null (별 fallback 없음).

해결되는 케이스: '내일 모레' → AI 가 ambiguous 인지 → null.

PROMPT_VERSION → 3. GenerateInput.dueDateCandidates 신규.
buildPrompt(rawText, todayKst, candidates) — 빈 배열일 때 hint 섹션 생략.

Tests:
- AiWorker.test.ts — 'rule priority' 테스트 → 'AI dueDate wins' flip
- AiWorker.test.ts — passes todayKst 테스트 확장 (dueDateCandidates 도 검증)
- AiWorker.test.ts — 신규 'passes parseAllCandidates result as dueDateCandidates'
- LocalOllamaProvider.test.ts / ollama-golden.test.ts — generate 호출에 dueDateCandidates: [] 추가

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
신규 spec 파일 추가 (구현 결과 반영). dogfood-feedback.md 의 F7
헤더 🔬 drafting → 🚀 promoted 로 갱신. F1 spec 의 후속 리스트에
F7 링크 추가.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
altair823 merged commit 579450ef4f into main 2026-04-26 04:08:59 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: altair823-org/inkling#11