Commit Graph
15 Commits
Author SHA1 Message Date
lee-hyeon-cheolandClaude Fable 5.1 9fc93ffbce style(admin): 비용 표시 제거 — 사내 LLM 은 단가 없어 항상 0. 토큰·응답시간만
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 13:49:39 +09:00
lee-hyeon-cheolandClaude Fable 5.1 d4a5f20787 feat: 관리자 대시보드 — 토큰·비용·응답시간 집계 API + 앱 /admin 페이지
- backend apps/stats: GET /api/v1/admin/stats?from&to → totals / byUser / byDay. ChatMessage(assistant) 집계만, is_superuser 아니면 403. 테스트 3개
- frontend features/admin: 요약 카드 4개(요청·토큰·비용·평균 응답), 일별 토큰 막대(div), 사용자별 표, 기간 프리셋(오늘/7/30/90일). 헤더에 ADMIN 만 아이콘. 테스트 2개

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 13:39:06 +09:00
lee-hyeon-cheolandClaude Fable 5.1 aa37cef13d feat(backend): 스트림 타임아웃 env 화 — 첫 이벤트 300s, FabriX 조각 간 300s 기본
Gemma4 가 큐 밀리면 '안녕'에도 200초라 첫 이벤트 60s 로는 no-events 로 잘림.
STREAM_FIRST_EVENT_TIMEOUT_S / STREAM_TURN_TIMEOUT_S / AAF_FABRIX_READ_TIMEOUT_S / AAF_FABRIX_TOTAL_TIMEOUT_S 를 .env 로.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 13:31:00 +09:00
lee-hyeon-cheolandClaude Fable 5.1 e9e644b15b feat(frontend): Esc 로 답변 생성 중단 — 생성 중 아니면 기존대로 목록 이동
중단 버튼·백엔드 cancel·OpenCode abort 체인은 이미 있었고 Esc 배선만 없었음.
서버만 생성 중(재진입, generatingRemotely)일 때도 Esc 가 cancel 을 보냄.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 13:24:55 +09:00
lee-hyeon-cheolandClaude Fable 5.1 8571db5bee feat(backend): SAP MCP 를 env 로 켜고 끄게 — 고객사 -12 에 별도 기동 절차
opencode.fabrix.json.tmpl 의 sap-icf 를 MCP_PORT/MCP_API_KEY 로 렌더, 키 없으면 enabled:false.
.env.example 에 SAP_*·MCP_* 블록. README 에 -13 번들 재활용 절차(컨테이너 간 통신 금지라 -12 에 따로).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 10:43:49 +09:00
lee-hyeon-cheolandClaude Fable 5.1 72a06d6c07 style(frontend): PwC 로고 제거, 기본 라이트 모드, 삼성 팔레트 포인트 Samsung Blue
- LogoMark 는 null 렌더(호출부 6곳 그대로), logo.png·logo-dark.png 삭제, 파비콘 투명
- themeStore·index.html 기본 light. 예전 dark 저장값은 첫 실행 때 한 번만 초기화
- samsung 팔레트 primary/ring/link = #1428A0(브랜드 파랑). 바탕·글씨·면은 실측값 유지
- Message 테스트: 기본 라이트 기준으로 코드블럭 흰 배경 기대

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 10:40:32 +09:00
lee-hyeon-cheolandClaude Fable 5.1 efb9fb46de style(frontend): 삼성향 라이트 팔레트(samsung) 추가하고 기본으로
삼성닷컴(sec) 공개 웹 실측값 — 검정 주색/CTA, 흰 canvas, #f7f7f7 surface, #707070 muted,
#dddddd border, 링크 #007aff, 그림자 없음, 버튼·카드 radius 20px(알약).
One UI 파랑은 폰 앱용이라 안 씀. 폰트는 재배포 근거 없어 안 넣음. 다크 모드는 기존 그대로.
기존 사용자 저장값 clean-blue 는 한 번만 samsung 으로 교체(index.html 부트스트랩).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 10:26:52 +09:00
lee-hyeon-cheolandClaude Fable 5.1 e351560377 docs: stage-2 남은 것에 이미지 미저장 이슈 추가
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 09:12:19 +09:00
lee-hyeon-cheol c0a4a79272 Merge branch 'master' of https://git.sqnotes.com/20260807_OPENCODE_TEMP/CODE_ASSISTANT 2026-09-21 09:05:39 +09:00
lee-hyeon-cheolandClaude Fable 5.1 3a602e2890 docs: FabriX 멀티모달 여부·agent-chat API 확인 결과
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 13:32:56 +09:00
lee-hyeon-cheolandClaude Fable 5.1 055f0ef473 docs: FabriX 6개 모델 3차 실측 추가
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 11:30:47 +09:00
lee-hyeon-cheolandClaude Fable 5.1 7ad48732ae feat(gateway): 이미지 붙은 요청만 vision 모델(Gemma4)로 — 텍스트는 기본 339
Gemma4 가 '안녕' 한 단어에 94s(580 은 188s) 라 텍스트 기본으로는 못 씀.
AAF_FABRIX_VISION_MODEL_ID 가 있으면 messages 에 image_url 파트가 있을 때만 그 모델로 x-llm-model-id 를 바꿈.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 10:34:55 +09:00
lee-hyeon-cheolandClaude Fable 5.1 2b8c2d7742 docs: 고객사 첫 배포 기록 — stage-2, 배포 트러블슈팅, FabriX 모델 속도 실측, 오늘 order
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 16:34:59 +09:00
lee-hyeon-cheolandClaude Fable 5.1 435952f25c feat(backend): 사내 LLM(FabriX) 게이트웨이 /api/ito + OpenCode FabriX 설정 렌더
- apps/gateway: OpenCode→FabriX 통과 중계. 헤더 3종 인증, x-llm-model-id 로 모델 선택, 401 시 Bearer/날것×클라이언트 헤더 재시도, 모델 허용 목록. ABAP_OPENCODE apps_ito 통째 복사 대신 200줄로
- opencode/opencode.fabrix.json.tmpl + render_opencode.py — .env AAF_* 로 렌더
- .env.example AAF 블록(기본 605 Gemma4, TOKEN_PREFIX=bearer). 파서가 줄 끝 # 주석을 값으로 읽던 것 수정
- tests/test_gateway.py 9개(MockTransport)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 16:34:53 +09:00
lee-hyeon-cheolandClaude Fable 5.1 47d31dbe06 feat(app): 활성 창 캡쳐·캡쳐 목적지 선택·단축키 Ctrl+Alt 재배치 + UX 손질
- Ctrl+Alt+A/Z 맨 앞 창 통째 캡쳐(DWM 확장 프레임 경계), S/X 드래그 캡쳐. A/S 새 대화, Z/X 마지막 대화
- 캡쳐 후 창을 확실히 앞으로(AttachThreadInput), capture.image 에 목적지 path 실어 그 Composer 만 소비
- 드래그 선택영역 원본 밝기·더블버퍼(번쩍임) — code-assistant-v2 복사본에서 이식
- 단축키 Ctrl+Alt+Q/W: Eclipse·ADT·SAP GUI 바인딩 목록 대조해 비어 있는 조합으로
- 버튼 cursor:pointer(Tailwind v4), 가운데 스피너, 스니펫→챗 버튼, 스니펫 검색창 높이 84→88

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 16:34:48 +09:00