feat(backend): Django + OpenCode 백엔드 추가 — 5_django_backend/
앱이 기대하는 base-backend 계약(envelope·JWT·/chat/stream SSE)을 그대로 구현. Django 는 로그인·세션 미러(SQLite/PG)·OpenCode 이벤트 번역만 맡고, 답변은 전용 OpenCode 인스턴스(opencode/ workspace, codeassist 에이전트)가 만듦. - accounts: 이메일 로그인, access 60분 / refresh 14일, entra/config 는 501 - chat: 세션 목록·검색·메시지·취소 + POST /chat/stream 어댑터(part.delta→token, idle→usage/done, 클라 끊겨도 턴 감시 태스크가 DB 마무리, 첫 이벤트 60초 타임아웃) - OpenCode 1.18 멀티 프로젝트라 모든 요청에 ?directory= 부착 - docs-lib 에 OpenCode SDK 1.18.6 타입 원본, pytest 32 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
## (오후) 백엔드를 OpenCode + Django 로 — `specs/006-opencode-django-backend/`
|
||||
|
||||
- 분석·결정 5개: `docs/tech/opencode-django-backend.md` (Django 새로 / 토큰 localStorage / Entra 안 함 / OpenCode 분리 / 스니펫 로컬)
|
||||
- 구현: `../ABAP_CODE_ASSISTANT_BACKEND/` 신설 + 프론트 Bearer 모드 2군데. 진행 상황 `specs/006-opencode-django-backend/stage-1.md`
|
||||
- 구현: `5_django_backend/` 신설 + 프론트 Bearer 모드 2군데. 진행 상황 `specs/006-opencode-django-backend/stage-1.md`
|
||||
- 배포는 보류(사용자 지시)
|
||||
|
||||
## 다음
|
||||
|
||||
@@ -74,7 +74,7 @@ CodeAssist.exe (Tauri) ┌─ nginx(:80) 또는 Django
|
||||
|
||||
포트는 base-backend 가 쓰던 `8001` 그대로 → 프론트 `.env` 의 `VITE_DEV_API_TARGET` 도 안 바꿈. ABAP_OPENCODE 스택(8100/4096/3200)과 같은 VM 에 둘 땐 OpenCode 포트만 4097 로.
|
||||
|
||||
**Django 코드 위치 (결정 1 = 새로):** 이 repo 안 `../ABAP_CODE_ASSISTANT_BACKEND/` 로 제안. 이유: 프론트·Tauri·docs-lib·spec 이 다 여기라 계약 맞추기 쉽고, `docs-lib/` 패턴도 그대로. 별도 repo 원하면 폴더째 떼면 됨 — 지금 결정 안 해도 됨.
|
||||
**Django 코드 위치 (결정 1 = 새로):** 이 repo 안 `5_django_backend/` 로 제안. 이유: 프론트·Tauri·docs-lib·spec 이 다 여기라 계약 맞추기 쉽고, `docs-lib/` 패턴도 그대로. 별도 repo 원하면 폴더째 떼면 됨 — 지금 결정 안 해도 됨.
|
||||
|
||||
## 5. 어댑터 — 뭘 만드나
|
||||
|
||||
@@ -105,7 +105,7 @@ OpenCode 는 페이지네이션·본문 검색·`isGenerating`·메시지별 usa
|
||||
6. cancel → OpenCode `abort` + `is_generating=false`.
|
||||
7. 프론트가 스트림 잃어도 `isGenerating` 폴링이 미러를 보니 답변 복구 — 기존 동작 그대로.
|
||||
|
||||
### 5.5 OpenCode workspace `../ABAP_CODE_ASSISTANT_BACKEND/opencode/`
|
||||
### 5.5 OpenCode workspace `5_django_backend/opencode/`
|
||||
- `AGENTS.md`: 한국어, ABAP/SAP 코드 즉답, 코드펜스 언어 태그, 절차 질문 금지, `explain` 이면 배경 설명.
|
||||
- `opencode.json`: dev = OpenRouter, 고객사 = FabriX(게이트웨이 경유, 2차). `tools.question=false`. MCP `sap-icf`.
|
||||
- `.opencode/agent/codeassist.md`: 시스템 프롬프트. `forcedSkill` 1차 무시.
|
||||
@@ -128,7 +128,7 @@ OpenCode 는 페이지네이션·본문 검색·`isGenerating`·메시지별 usa
|
||||
|
||||
| 단계 | 내용 | 검증 |
|
||||
|---|---|---|
|
||||
| 0 | `../ABAP_CODE_ASSISTANT_BACKEND/docs-lib/` 에 OpenCode 서버 API(세션·메시지 parts·event), DRF, simplejwt 문서 떨어뜨림 | 카탈로그 README |
|
||||
| 0 | `5_django_backend/docs-lib/` 에 OpenCode 서버 API(세션·메시지 parts·event), DRF, simplejwt 문서 떨어뜨림 | 카탈로그 README |
|
||||
| 1 | 뼈대 복사 + envelope renderer + accounts(login/refresh/logout/me) + entra 501 | 프론트 로그인 통과 |
|
||||
| 2 | 미러 테이블 + sessions list/create/messages/search | 목록·검색 화면 |
|
||||
| 3 | opencode-ca workspace + compose + `OPENCODE_BASE_URL` | curl 로 세션 생성·프롬프트 |
|
||||
|
||||
Reference in New Issue
Block a user