크라우니캔버스 브리핑 API — 일정 필드 3자 불일치 수리
개요
크라우니캔버스(:9620)
/api/브리핑의
일정 항목 필드가 서버(브리핑.한선)·데모(demo.js)·소비 화면(today.js) 3자 간 서로 다른 형태(P1 결함, 확증)였다. 파일 소유권 범위(브리핑.한선 +동반)에서 근본 수리했다.
무엇을 했는지
확증: 브리핑.한선(구)={"키","값"}, demo.js={제목,시작,끝,위치}, today.js 소비=s.시간/s.제목 — 겹치는 필드 0.
근본 원인: 07-앱-계약.md가 일정 항목의 필드 스키마를 명시하지 않아 3자가 각자 추측.
수리: 실제 라이브 소비자(today.js 일정카드, 204~225행)가 읽는 s.시간/s.제목에 서버 출력을 맞춤.
브리핑_일정파싱(값) 신설 — 설정.psv schedule.* 값에서 공백 토큰 중 HH:MM(콜론 1~2번째 글자) 패턴을 시간으로 추출, 나머지를 제목으로 재조립. "13:30 회의"·"회의 13:30" 두 표기 모두 지원.
브리핑_일정생성()이 이제 {"시간":"...","제목":"..."} 항목을 방출(구 {"키":"...","값":"..."} 폐기).
검증: STRICT 컴파일 0경고·0에러. 격리 단위테스트(가져오기 브리핑.한선)로 파싱 4케이스(선행/후행/짧은시각/시간없음) 전부 기대값 일치, 브리핑_일정생성() 종단 실행도 설정.psv에 임시 schedule 키 2건 주입 후 정확한 {"시간":..,"제목":..} 2건 산출 확인(테스트 후 설정.psv 즉시 원복, diff로 원복 확인).
서버.한선 STRICT 재컴파일 + launchctl kickstart -k gui/$(id -u)/org.crowny.canvas 재기동 1회 수행, curl 200 확인.관련 파일
/Users/ef/crowny-canvas/한선씨/브리핑.한선 (수정 — 소유 파일)
/Users/ef/crowny-canvas/앱/화면/today.js (읽기전용 대조 — s.시간/s.제목 소비부 204~225행)
/Users/ef/crowny-canvas/앱/demo.js (읽기전용 대조 — 여전히 {제목,시작,끝,위치}, CC.api 자체를 오버라이드하므로 서버 경로와 별개 실행경로)
/Users/ef/crowny-canvas/docs/07-앱-계약.md (§3 일정 항목 필드 스키마 미기재 — 잔여)
잔여 이슈
- demo.js 스키마 미정합 —
/demo 모드는 CC.api를 통째로 오버라이드해 서버(브리핑.한선)를 거치지 않으므로 즉시 장애는 없으나, 계약 드리프트로 남아있음. demo.js/계약 문서는 이 세션의 파일 소유권 밖 — 별도 작업 필요(데모 일정 mock도 {시간,제목}로 맞추거나, 계약에 §4처럼 명시적 스키마 추가 권장).
- :9620 라이브 종단(curl) 확증 미완 — 검증 도중 다른 세션이
서버.한선을 동시 편집 중이었고(파일 mtime·크기·md5가 검증 중 계속 변함, 한 시점엔 미정의변수 컴파일에러까지 관측 — 기존 메모리 feedback_동시세션_공유파일_절단_dist미러복원과 동일 계열 충돌), 라이브 curl로 스케줄 항목이 실제 {시간,제목}으로 나오는 것까지는 재현하지 못했다(서버는 200 정상 유지, 일정 배열은 계속 빈 상태로 관측 — 설정.psv에 schedule 키가 없거나 다른 세션 재배포 타이밍과 겹친 것으로 추정). 브리핑.한선 함수 자체는 격리 단위테스트로 100% 확증했으므로 근본수리는 완료로 판단하되, 종단 curl 재확인은 서버.한선 동시편집이 안정화된 후 재시도 필요.
- **schedule.* 키를 실제로 쓰는 writer가 아직 없음**(온보딩.한선/서버.한선 어디에도 schedule 키 생성 로직 부재) — 별도 기능 갭.
수리 커밋 요약
- 크라우니코드: lookup MISS 1건(브리핑_일정필드정합 — 유사 검색 "일정 파싱"/"브리핑" 무관 결과) / 생성 1건 / learn 추가 1건.