furniture-expert — 가구 전문가 지식베이스 & 에이전트 하니스 (handoff)
목적 = 페페 질문 대부분에 답하는 가구 전문가 AI 에이전트. 전세계 가구 지식을 조사·정리해 지식베이스(KB) + 서브에이전트 하니스로 구축. 도메인 = MDF/PB 사각형 가구(신발장·붙박이장·주방 상/하부장·냉장고장·팬트리·키큰장·시스템가구). 산출물 = ① user_brief KB 문서(projects/furniture-expert/kb/*.md) ② devplan HTML(C:\dev\devplan\furniture-expert.html) ③ 에이전트 정의(하니스).
🆕 2026-08-20 신발장 유리프레임 더블도어 + 측판 LED 2중배선 설계 상담 (코디, 페페 지시)
- 의뢰: 신발장(유리프레임 더블도어) 몸통 내부 좌우 측판 LED 라인 + 전원 2중 배선 — ①천판 전면엣지 매입 센서 2개(좌/우 도어, 열면 점등=기본) ②측판 중간부 토글 1개(작업/장식용 상시 점등). 실사 이미지 + 배선 구조도 요청.
- 확정 사양(furniture-expert 서브에이전트, KB-00/01/05/06/07 근거): 900W×2000H×380D(깊이 380 = 공장 확정값) · 천판만 25T 업 · 도어 leaf 438×1869(OV8/G2) · 강화유리 5T 그레이(⚠은경 쓰면 LED 안 보임) · 힌지 35mm컵+AL어댑터 5개/leaf · LED 24V 9.6W/m 3000K CRI90+ · 매입홈 13.5×13.5(공장 실측 전례) · 어댑터 24V/60W.
- 회로 결론 = 쇼트키 다이오드 OR(SR340×3): 센서2+토글1 출력을 다이오드 거쳐 공통노드로 합류 → 제품 출력방식(릴레이/트랜지스터) 무관하게 역류 원천차단. 무전압 접점 확인되면 다이오드 생략 가능.
- 🔑센서 부재 확정(페페 2회 교정): 센서 = 천판 18T 전면 엣지면, 도어 후면이 맞닿는 그 면이다. ⛔「천판 25T 업」 권고는 철회(두께를 올리는 게 아니라 지름을 줄이는 문제). ⛔「상부 휠라」도 오독(1차 교정을 잘못 읽음) — 휠라는 도어 위 마감띠일 뿐 센서 자리가 아니다. 지름은 택일 대기 = Ø12(잔여 벽 3.0mm, 크랙 위험) vs Ø8(벽 5.0mm, 코디 권장), 대안 Ø6.5 리드스위치(벽 5.75)+도어 AL프레임 자석. 토글 Ø31은 엣지매입 불가 → 측판 면관통(별개 사안, 변동 없음).
- 형태 변경(페페 지시): 바닥 놓임 → 하부 공중부양 붙박이(벽 고정, 하부 그림자 갭), 배경 = 현관(타일·중문·거울). LED는 기구 미노출 — 정면 각도에선 라인이 안 보이고 번진 빛만 보이는 표현이 정답.
- 산출물:
C:\dev\tools\imagegen\out\shoecab-led\— 01_realistic_v4.png(나노바나나 실사) · 02_annotated.png(실사+콜아웃+센서 가공상세+배선 블록, 주 산출물) · 03_wiring.png(정면 부품위치 + 다이오드 OR 결선도). 소스 = annot.html / wiring.html / shot.py(재렌더용). 폐기본은_old\. - 나노바나나 실사 프롬프트 교훈: ①비율은 말로 안 먹힌다 — 「900 wide but 2000 tall, more than twice as tall as wide」처럼 배수로 못박고
--size portrait병행해야 세로탑이 나온다(안 하면 가로 낮은장). ②「LED 라인 안 보이고 빛만」은NO visible led strip / you only see the RESULT of the light로 지시해야 먹힌다. ③mm 정밀도(Ø8·±50)는 절대 못 맞춘다 → 사진은 참고용, 정치수는 SVG 상세도로 별도 표기. - ⏳페페 확인 필요: 갭 G(2 vs 3mm) · IR센서 실제 제조사/모델(현재 추정) · 유리색 최종 · 천판 25T 원가 승인 · 토글 색상(실버 31Φ 추천).
- 함정 1건 신규: imagegen 실행 전 Gemini 웹UI에 「개인 인텔리전스」 오버레이가 뜨면 클릭이 가로막혀 exit 1 → CDP로 「나중에」 클릭 후 재실행. 이미지 안 한글 라벨이 정확해야 하면 나노바나나 대신 HTML/SVG + shot.py 스크린샷(이번 02·03이 그 경로).
🆕 2026-07-26 PFS 시스템 페이지 지식 학습 (KB-10 신설, 페페 지시)
- 발단: 페페 "가구 전문가 지식에 PFS 페이지 지식도 있는지 확인, 없으면 자가학습". 확인 결과 = 없었음 — 기존 KB의 PFS 언급은 worklog 출처표기 3건뿐(06·07·08), 페이지·메뉴 지식 0.
- 학습 경로 = 코드 실측(웹조사 아님). 출처:
pfs/web/pfs/*/controller/*.py라우트 49건 · 템플릿 61건 ·migrations/patch32*_menu_catalog*.sql메뉴시드 ·web/templates/base.html(DB주도 사이드바) ·BRIEF.pfs.md. 결정론적 사실이라 kb-bulk-loop의 적대검증·페페 승인 게이트 미적용(그 게이트는 웹조사 추정치용). 후속 갱신도 같은 방식이면 코드 재확인으로 충분. - 산출:
kb/10-pfs-system-pages.md— ①한줄정의·인프라·권한(menu_catalog DB주도, 자사=포인 company_type='1', poin01 총관리자) ②메뉴 트리 표(그룹·페이지·URL·하는일·가구도메인 관련도 ◎○△✕) ③가구 데이터 흐름도(현장→타입→도어규격→몸통/마감재 규격표·자재소요량→자재관리·AL발주서→생산·배차, 돈=견적v2·월마감) ④KB-00~09가 꽂히는 지점 매핑 ⑤주의(오엠씨=완성보드 외주사·AL은 범위밖, 견적v2 규칙, 배차 화물앱=테스트전용, 페이지 내부 필드는 미학습 → 추정 금지·템플릿/RDS_MAP 안내). - 연동 갱신: 에이전트 정의
~/.claude/agents/furniture-expert.md(KB표 10행 + description + §4 pfs 자문) ·kb/DIGEST.md(KB-10 절, 음성상담용) ·tools/furniture-voice/server.py(read_kb docstring 00~10, selfcheck 10→11 + KB-10 로드 assert). - 검증:
PYTHONUTF8=1 python server.py --selfcheck→furniture 11 + study 4 KB modulesPASS. 서브에이전트 실질의(도어규격 입력 위치·AL발주 vs OMC 차이·몸통 재단치수 출력물) 3문 전부 정답 + KB-10 근거 인용. - 한계(다음에 필요하면): 페이지 내부 입력필드·컬럼 상세, 실제 운영 DB의 menu_catalog 최종 순서(마이그레이션 파일 조합으로 재구성 — OMC·자재관리 메뉴는 seed가 스크립트에 분산).
🆕 2026-07-22 PFS 현장기록(worklog) 마이닝 → 자가학습 투입 (코디, 페페 지시)
페페 지시: "pfs 현장 기록으로 들어온 내용을 재정비해 가구에이전트 자가학습으로 등록. 중복제거·현장관련내용 제외·자재(원자재/엣지) 위주·특이사항이라도 핵심은 포함·카테고리별로 모아 등록(대화그룹 중심으로 묶지 않음)."
- 소스: PFS worklog 테이블(현장 통화/카톡 발췌) 로컬 덤프 pfs\scripts\_wl_chunk_1~4.json = 104현장 183항목(work+ex, 22K자). 카톡/통화 마이닝(text_full·calls)과 별개 소스.
- 파이프라인(Workflow 3단, opus): 6 KB모듈 카테고리(02코어판재·03표면재엣지·04서랍레일·06프로파일슬라이딩·07몸통보링·08공정)별 추출(현장운영정보=현장명/업체/사람/일정/배차/정산/금액 제외, 재사용 자재지식만) → 적대검증(운영정보 위장·중복 drop) → 카테고리 종합(마크다운). ⚠1차 검증기가 refs 항목번호를 환각 대조해 03 전량 오판 drop → 검증 프롬프트에서 refs 대조 제거·"fact 문장만 판정"으로 교정 후 resume(extract 캐시 재사용). 스크립트 = scratchpad wl_learn.js.
- 투입 결과: 6후보 pending APPEND → learn_candidates.json(source=field-worklog, 제목 [현장기록] 접두). 모듈 02(두께용도·무늬목시트자체제작·발주원가)·03(무늬목사양·엣지혼용금지·로트컬러·시트접착품질/울음/PUR불량·유리세라믹)·04(레일32/50·서랍통4.5T바닥+10T·수저함와이드/내경)·06(슬라이딩18T통짜불가+6T MDF·H바·목대)·07(하부장도어3mm이격·백판넬홈파기·지판덮방식)·08(프레스1200×3050·규격변경재재단·양생분리·색상면방향·투톤조립). 교차중복은 단일 카테고리로 정리(슬라이딩프레임→06, 로트/PUR/울음→03). ⏳페페 몫 = furniture-learn.html(8799) 6후보 검토/승인(승인=KB append+20분내 스냅샷 반영). /api/learn pending 6·field-worklog 6 서빙 확인. 재실행 방지 = source='field-worklog' 존재 시 skip(멱등). 원본 백업 .bak.
🆕 2026-07-17 카톡 업무대화 마이닝 → 자가학습 투입 (코디, 페페 지시)
페페 지시: 카톡 전체 대화를 가구전문가에 자가학습시키되, 대량 에이전트로 추출→무중복까지 중복제거→투입. + 업무/현장 실무 내용도 같이 수집하되 구분(가구전문가를 실무 에이전트로도 키움, 추후 분리).
- 수집(정식 방법): 카톡 정식 추출 = 방별 "대화 내보내기"(Ctrl+S→txt)뿐(일괄 정식기능 없음·백업은 복원전용). 기존 talklog\collector\collect_all.py(6월 55방·2주분) 견고화 → 신규 collect_full.py(전체 이력·텍스트전용·개인/가족방 제외·resume·리스트좌표 UIA 동적판독·COM오류 내성·최하단 방이름 불변 바닥판정). 전체 967방 수집(2019~2026, 27MB/1360만자, 개인/가족 28·채널광고 3 제외). 산출 talklog\data\text_full\*.txt.
- 추출·중복제거·종합(Workflow 3단, sonnet): 전처리 906만자→105청크 → 추출 105에이전트로 2버킷 증류(가구지식 1726·현장실무 1258) → 카테고리 18분류 후 dedup 18에이전트(→2684) → 종합 18문서(모듈별 응집 무중복 마크다운, 출처·수치 보존·상충표기). 스크립트 talklog\collector\{preclean_chunk,categorize,ingest}.py.
- 투입 결과:
- 가구 10후보 pending → learn_candidates.json(source=kakao-mining, 모듈 01~08·05·00, 각 5K~31K자). 페페가 furniture-learn.html(8799)에서 검토·승인 시 해당 KB append. ⏳페페 몫 = 10후보 검토/승인.
- 실무 8문서 → projects/furniture-expert/practice/(현장·발주·재고·물류·업체·문제·견적·기타 + README). 가구 KB와 별도 = 추후 실무 에이전트 코퍼스.
- 원본·중간산출 = talklog\data\text_full\{_chunks,_extract_merged,_dedup_out,_dedup_merged,_synth}. 재실행 가능.
🆕 2026-07-19 통화(전화) 전사 마이닝 → 자가학습 투입 (코디, 페페 지시)
페페 지시: "pfs 업무 전화 전사한 것 정리 완료된 자료를 가구전문가 자가학습 자료로 전달. 처리 프로세스는 카톡 마이닝과 동일. 사용자 승인 예정."
- 소스: 통화녹음 medium STT 전사 talklog\data\calls\transcripts_medium\*.txt(723파일 = "전사 정리 완료"된 유일 통화자료). 카톡분(text_full)과 별개 소스.
- 파이프라인(카톡과 동일 개념, 통화판 스크립트): 입력 어댑터 preclean_calls.py(카톡 [발신자][시각] 포맷 아닌 STT 전용 — 파일명서 상대/날짜 추출·타임스탬프/환청/연속중복 제거·헤더부여) → 정제 688통화·357K자 5청크 → 추출 5에이전트(sonnet, STT 잡음경고 내장=수치·고유명사 오인식시 제외/(STT추정)) 2버킷 → merge_extract_calls.py(가구75·실무69) → categorize_calls.py(categorize.py 재사용, 17카테고리) → dedup+종합 2에이전트(볼륨작아 모듈당 1패스로 통합) → _synth/*.md 17문서 → ingest_calls.py.
- 투입 결과:
- 가구 9후보 pending APPEND → learn_candidates.json(source=phone-transcript, 제목 [통화전사] 접두로 카톡분과 구분, 모듈 00·01·02·03·04·05·05·06·07). 현재 pending 큐 = 통화전사 9건(기존 카톡 12건은 처리완료). ⏳페페 몫 = 9후보 검토/승인 (furniture-learn.html 8799, /api/learn 21건·pending 9 서빙 확인).
- 실무 8문서 → practice/ops_*_calls.md(카톡 ops_*.md 미덮어씀·README_calls.md 인덱스 별도). 추후 실무 에이전트 코퍼스.
- 작업폴더·재실행: 카톡 산출물 보호 위해 전용 폴더 talklog\data\calls\_pipeline\{_chunks,_extract,_extract_merged,_dedup_in,_synth}. 스크립트 talklog\collector\{preclean_calls,merge_extract_calls,categorize_calls,ingest_calls}.py — 재실행 가능.
- 승인 후 반영: 카톡분과 동일(승인=KB append+커밋+DIGEST갱신, 20분 내 furniture_kb_snapshot으로 페이지 반영). STT 출처라 승인 전 수치·고유명사 검토 권장.
🆕 2026-07-20 검토 후보 본내용 직접편집 기능(코디, 페페 지시)
페페 지시: 자가학습 후보 본내용을 사용자가 직접 수정(분야겹침 정리·오타·오인식 단어) 후 승인으로 반영. STT/마이닝 출처라 승인 전 편집 수요.
- furniture-learn.html: 대기(pending) 카드 펼치면 본내용이 편집 textarea + 💾 편집 저장 버튼(승인·거부 카드는 읽기전용 유지, 편집=pending만). 폴링(10s) 재렌더가 미저장 편집 안 지우게 typing()·스냅샷에 ed- textarea 보호.
- app.py: POST /api/learn/edit(pending만 content 갱신). 승인기 _apply_candidate가 이미 c['content'] 사용 → 편집 저장분이 승인 시 자동 KB append.
- 검증: 서버 재기동(구 orphan pid 21080 = elevated라 UAC 승인받아 kill, schtasks devplan-dashboard 재실행, 신 pid 41208). E2E PASS(실제 pending 후보 편집→저장→영속→원복 클린, pending 6건 무손상). ※ 위 07-17 sidebar 노트의 "pid 21080 kill 불가" 이슈 = 이때 UAC로 해소, /api/kb 라이브도 함께 반영됨.
🆕 자가학습 시스템에 사이드메뉴 + 지식 정리 페이지 신설(2026-07-17, 페페 지시)
페페 지시: 자가학습페이지에 ai-study식 사이드메뉴(색인검색 포함)·기존 페이지를 한 메뉴로 묶고 신규 "지식 정리" 페이지 신설(축적 지식을 카테고리별 정리 = 신입 매뉴얼+검토용, 스크롤형·상세 카테고리, 슬라이드 아님). 앞으로 자가학습 후 이 페이지도 능동 반영.
- 신규 C:\dev\devplan\furniture-kb.html: 공유 사이드바(색인 검색 + 2메뉴[자가학습 검토·지식 정리] + KB 카테고리 nav 자동생성) + 스크롤 본문(라이브 KB 렌더). 경량 마크다운 렌더러 자체구현(표 223·하위헤딩 378 정상). 개요(DIGEST)+가구 KB 00~09 + 실무 practice 8을 카테고리로 구분.
- furniture-learn.html: 동일 사이드바 추가(플렉스 레이아웃, 검토 UI 유지).
- 데이터 소스: app.py에 GET /api/kb(라이브 KB 읽기) 추가 → 페이지는 /api/kb 우선, 실패 시 정적 스냅샷 furniture_kb_snapshot.json 폴백. ⚠기존 8799 인스턴스(pid 21080)가 비권한서 kill 불가라 /api/kb는 다음 로그온 재기동 후 라이브; 그전까지 스냅샷이 담당.
- 능동 반영 기전: build_kb_snapshot.py가 KB→스냅샷 생성. schtasks furniture_kb_snapshot(20분 주기)로 승인→KB append가 자동으로 페이지에 반영(서버 재시작 불요). 자가학습으로 KB 바꾸면 이 스냅샷도 갱신할 것(수동 시 python build_kb_snapshot.py, 자동은 20분 태스크). 검증=Playwright 양 페이지 렌더·nav19·검색 실동작 PASS.
조사 범위 (페페 지시 6항 + 인접)
- 가구 종류·유형 (신발장·붙박이장·주방 상/하부장·냉장고장·팬트리도어·시스템가구·키큰장) — 용도·구조·표준치수
- 자재 — 코어(MDF·PB) + 표면재(PET·LPM·PP·PVC·HPL·무늬목·도장), 보드 발주·생산공정
- 서랍 — 언더레일·Tandembox·볼레일·슬라이드 하중/규격
- 도어 알루미늄 프로파일 손잡이(키큰장), 목대 프로파일 가공원리 + 치수 계산식 ★핵심
- 몸통 구성 — 측판·천판·지판·뒤판·이동/고정선반 = 한 통 구성
- 제작 공정 — 재단·엣지·가공(보링/선반홀)·조립·포장 + 장비 + 경첩/하드웨어, 32mm 시스템, 설계/적산 SW(imos 등), 네스팅 최적화
🆕 2026-08-11 현장진단 — 엣지 표면 요철(텔레그래핑), 호막 밴더 PB+PVC+PUR
- 증상(페페 현장사진 3장): 트리밍·들뜸은 정상인데 엣지 띠 표면이 넓고 불규칙하게 울퉁불퉁(반사에 구름무늬). 날카로운 주기적 눌림자국 아님. 사진1=압착부(대형 1차 압착롤+아이들러 7개) 주변 본드·분진 퇴적 상당.
- 핵심 원리: PUR 접착선 0.1~0.15mm < EVA 0.3~0.5mm → 메움(gap-filling) 능력 거의 없음. EVA가 덮어주던 절단면 요철·PB 코어 굴곡이 PUR 전환 후 그대로 비친다. 띠 0.4~0.5T면 더 비침.
- 원인 후보(확률순): ①프리밀링/절단면 요철 텔레그래핑 ②PUR 겔 덩어리·도포 불균일(여름 고습에 겔화 가속) ③압착롤·이송체인 오염/마모 ④온도 과다(PUR 120~140℃ 초과) ⑤엣지 띠 자체(코일 파형·저온보관) ⑥오픈타임 초과(이송 정지).
- 판정 요령: 요철 간격 자로 측정 → 일정 주기 = 기계(π×롤경이면 압착롤, 체인패드 피치면 체인), 불규칙 = 자재(절단면·PUR·띠). 1mm 두꺼운 띠 1장 테스트에서 사라지면 텔레그래핑 확정.
- KB 반영: KB-08 §3-5b로 승격 대상(직접수정 금지 규약 → 승인 게이트 경유). 현 표 §3-5에 "표면 요철" 행 없음.
진행 방식 (반복 사이클)
- 1차 조사 9에이전트 병렬 → 종합 → devplan 갱신 → grillme(묶음질문) → 2차 조사 → 반복(만족까지)
- 매 라운드 끝 devplan HTML 갱신 + KB 커밋
KB 파일 맵 (kb/)
- 01 가구종류·유형·표준치수
- 02 코어 판재(MDF/PB)·발주·생산공정
- 03 표면재·마감(PET/LPM/HPL/PVC/무늬목/도장)
- 04 서랍·슬라이드 시스템
- 05 경첩·연결철물·기타 하드웨어
- 06 알루미늄 프로파일 손잡이 + 목대 프로파일 가공·치수식 ★
- 07 몸통 구성·구조·32mm 시스템·보링
- 08 제작 공정·장비(재단→엣지→가공→조립→포장)
- 09 설계·적산 SW·네스팅 최적화
- 10 PFS 사내 웹앱 페이지·메뉴·데이터흐름 (2026-07-26 신규)
devplan UI 결정 (2026-07-16 페페)
- 라이트 + 테라코타. 밝은 배경(오프화이트/웜그레이) + SARA 액센트 테라코타 오렌지(#c97c4a) + SARA 레이아웃(사이드바 섹션·카드·칩). 다크·퍼플 금지.
- SARA UI 레퍼런스 = C:\dev\SARA\web\index.html (팔레트만 라이트로 반전, 웜 뉴트럴 유지).
상태 (NOW)
- 📄아키텍처·설계 보고서 발행(2026-07-18):
C:\dev\devplan\furniture-expert-arch.html(8799 서빙 200) — 라이브러리 선택이유 표(mcp/starlette/uvicorn/stdlib/claude CLI/Funnel/schtasks/파일락)+전체 아키텍처·KB구축·카톡마이닝·자가학습·음성브리지 SVG 도표 5장+설계근거 8카드+파일맵. 라이트+테라코타 준수. - 🔗브리지 서버 전문가 2종화+플러그인 개명(2026-07-18): furniture-voice server.py에
expert인자(기본 furniture — 기존 가구 동작 불변) + AI스터디 전문가(study, KB=projects/ai-study/kb/, add_study_note 직접누적) 통합. ChatGPT 커넥터 "claude agent"로 개명(연결 유지), 표준 URL/agent/mcp(구 /furniture 별칭 동작). 가구전문가 프로젝트 지침은 가구 전용 유지. 상세 =projects/ai-study/handoff.md. - KB 대량 확장 루프 설계 완료(2026-07-17, 미실행):
kb-bulk-loop.md— /loop 세션 오케스트레이터 + 파일 상태(learn_topics/loop_state/candidates/history) + 3중 게이트(기계적 중복제거→적대검증 서브에이전트→페페 devplan 승인). selflearn.py 인프라 재사용, KB 직접수정 금지. 다음: 주제큐 대량 적재(모듈×5 ≈ 45건) 승인 후 루프 발동. - 2026-07-16 프로젝트 신설. UI 테마 확정(라이트+테라코타).