docs: OpenCode+Django 백엔드 전환 분석·결정·stage-1 기록
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# stage-1 — 백엔드 OpenCode + Django 전환 (2026-09-16)
|
||||
|
||||
분석·결정은 `docs/tech/opencode-django-backend.md`. 배포는 사용자 지시로 이번 범위 밖.
|
||||
|
||||
## 한 일
|
||||
|
||||
| # | 내용 | 검증 |
|
||||
|---|---|---|
|
||||
| 1 | `../ABAP_CODE_ASSISTANT_BACKEND/` 신설 — ABAP_OPENCODE `web/BE` 에서 settings·JWT·OpenCode 클라 복사·다듬음 | pytest |
|
||||
| 2 | envelope renderer/예외 핸들러 (`CommonResponse`, `CodedError`) | test_envelope 3 |
|
||||
| 3 | auth: email 로그인 → `TokenResponse`, refresh(body)·logout·me, entra/config 501 | test_auth 10 |
|
||||
| 4 | 세션 미러 `ChatSession/ChatMessage` + sessions list/create/search/messages/cancel | test_sessions 8 |
|
||||
| 5 | `opencode/` workspace (AGENTS.md·codeassist 에이전트·opencode.json) | 실서버에서 agent 로드 확인 |
|
||||
| 6 | `/event` 버스 + `POST /chat/stream` 어댑터 (prompt_async → token/title/usage/done/error, 클라 끊겨도 DB 마무리, 첫 이벤트 60초 타임아웃, 기본 제목 무시) | test_stream 9 + 실서버 error 경로 |
|
||||
| 7 | 프론트 Bearer 모드 — tokenProvider 영속, refresh body, 로그인 저장/로그아웃 삭제 | vitest 225, build |
|
||||
|
||||
백엔드 pytest 30 / 프론트 vitest 225 / `npm run build` 통과.
|
||||
|
||||
## 실서버 스모크에서 나온 것
|
||||
|
||||
- OpenCode 1.18 은 멀티 프로젝트 서버 → 모든 요청에 `?directory=` 필요 (`OPENCODE_DIRECTORY`). 안 붙이면 세션이 딴 프로젝트에 생기고 prompt 가 조용히 실패.
|
||||
- 이 Mac 의 `OPENCODE_CONFIG_DIR`(orca) 가 workspace config 를 덮음 → `opencode/README.md` gotcha.
|
||||
- `session.error` → `error` 프레임 1초 내 도착, `isGenerating` 해제 확인.
|
||||
- ABAP_OPENCODE `web/BE/code/.env` 의 OpenRouter 키로 실제 답변 확인: 글자 단위는 `message.part.delta`(SDK 타입엔 없음) 로 옴 → 어댑터 반영. 제목은 idle 뒤에 오기도 함 → done 은 먼저 보내고 20초 더 기다려 미러에만 반영. token 90·title·usage·done 확인.
|
||||
- 맥에서 Tauri 앱 기동: `windows` crate 를 `cfg(windows)` 로, paste/capture 는 맥용 `_stub.rs`. cargo test 8 통과, `tauri dev` 로 창 뜸.
|
||||
|
||||
## 다음
|
||||
|
||||
- [x] 실제 답변 스트림 확인 (token/title/usage/done, 미러 저장). 이미지 파트는 실서버 미확인
|
||||
- [ ] 앱에서 손으로 확인 — 로그인·채팅·재진입 복구·중단·이미지 첨부
|
||||
- [ ] Tauri 빌드에서 end-to-end (풀 URL `VITE_API_BASE_URL`, CORS)
|
||||
- [ ] 배포 (compose/bare) — 사용자 지시로 보류
|
||||
Reference in New Issue
Block a user