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:
@@ -0,0 +1,25 @@
|
||||
# CodeAssist 전용 OpenCode workspace
|
||||
|
||||
Django(`5_django_backend`)가 부르는 AI 엔진. ABAP_OPENCODE 의 OpenCode 와는 **별도 인스턴스** — 거긴 AGENTS.md 가 "설계서 브레인스토밍" 규칙이라 즉답 도우미랑 충돌해서 따로 띄움.
|
||||
|
||||
## 띄우기 (개발 PC)
|
||||
|
||||
```bash
|
||||
cd 5_django_backend/opencode
|
||||
export OPENROUTER_API_KEY=sk-or-...
|
||||
npx -y opencode-ai@1.18.6 serve --hostname 127.0.0.1 --port 4096
|
||||
```
|
||||
|
||||
- 버전은 1.18.6 고정 — `docs-lib/opencode-sdk-1.18.6-types.d.ts` 가 이 버전 API 기준.
|
||||
- **gotcha 1 — `OPENCODE_CONFIG_DIR`:** 이 환경변수가 잡혀 있으면(예: orca 같은 툴이 셸에 박아둠) workspace 의 `opencode.json`·`.opencode/agent` 를 무시하고 그쪽 걸 읽어서 `Agent not found: codeassist` 가 남. 띄우기 전에 `env -u OPENCODE_CONFIG_DIR -u ORCA_OPENCODE_CONFIG_DIR opencode serve …` 로 풀거나 `.zshrc` 에서 빼.
|
||||
- **gotcha 2 — 프로젝트(directory):** 1.18 서버는 한 프로세스가 여러 프로젝트를 다루고 요청마다 `?directory=` 로 고름. Django 가 `OPENCODE_DIRECTORY`(기본: 이 폴더 절대경로) 를 모든 요청에 붙이니, 서버를 다른 경로에서 띄우면 `.env` 의 `OPENCODE_DIRECTORY` 를 그 경로로 맞춰. 안 맞으면 세션이 딴 프로젝트에 생기고 prompt 가 로그에만 실패를 남기고 조용히 죽음(60초 뒤 error 로 끝냄).
|
||||
- 확인: `curl http://127.0.0.1:4096/session` → `[]`.
|
||||
- SAP 조회(MCP)는 `opencode.json` 의 `sap-icf.enabled` 를 true 로 바꾸고 `SAP_MCP_URL`/`SAP_MCP_KEY` 환경변수 주면 붙음 (ABAP_OPENCODE 의 :3200 서버 재사용).
|
||||
|
||||
## 파일
|
||||
|
||||
| 파일 | 뭐냐 |
|
||||
|---|---|
|
||||
| `AGENTS.md` | 모든 세션에 붙는 지침 — 즉답, 코드펜스, 절차 질문 금지 |
|
||||
| `opencode.json` | 모델(OpenRouter GLM 5.2)·`question` 도구 끔·MCP |
|
||||
| `.opencode/agent/codeassist.md` | Django 가 `agent: "codeassist"` 로 지정하는 에이전트. 파일 쓰기·bash 끔 |
|
||||
Reference in New Issue
Block a user