56 lines
1.9 KiB
Markdown
56 lines
1.9 KiB
Markdown
# Socket Session Loop
|
|
|
|
## 목표
|
|
|
|
Go API와 Flutter client 사이에 proto-socket 기반 최소 session loop를 만든다. 첫 loop는 handshake, request-response, disconnect/heartbeat 동작을 확인하는 데 집중하고, 무거운 데이터/백테스트 실행은 worker milestone로 넘긴다.
|
|
|
|
## 단계
|
|
|
|
기반 정렬
|
|
|
|
## 상태
|
|
|
|
계획
|
|
|
|
## 구현 잠금
|
|
|
|
- 상태: 해제
|
|
- 결정 필요: 없음
|
|
|
|
## 범위
|
|
|
|
- API socket server의 ALT payload parser 등록
|
|
- Hello request/response handshake
|
|
- Flutter client의 proto-socket connection wrapper
|
|
- 최소 request-response smoke path
|
|
- API/client socket loop 테스트 또는 수동 검증 명령
|
|
|
|
## 필수 기능
|
|
|
|
- [ ] [api-handshake] API가 ALT Hello request를 받고 Hello response를 반환한다.
|
|
- [ ] [client-connect] Flutter client가 configured socket endpoint에 연결할 client layer를 갖는다.
|
|
- [ ] [request-loop] 최소 request-response 메시지가 API와 client 사이에서 왕복한다.
|
|
- [ ] [disconnect-state] client에서 연결/해제/오류 상태를 UI나 state layer에서 표현할 수 있다.
|
|
- [ ] [socket-test] handshake loop를 검증하는 테스트 또는 반복 가능한 smoke 명령이 있다.
|
|
|
|
## 완료 기준
|
|
|
|
- [ ] API와 client가 같은 contract typeName 기준으로 메시지를 주고받는다.
|
|
- [ ] heartbeat/disconnect는 proto-socket 기본 동작을 따른다.
|
|
- [ ] API가 long-running worker 작업을 직접 실행하지 않는다.
|
|
- [ ] `bin/test`와 `bin/lint`가 통과한다.
|
|
|
|
## 범위 제외
|
|
|
|
- market data import
|
|
- backtest 실행
|
|
- 인증/세션 권한 모델
|
|
- 실시간 시세 streaming
|
|
|
|
## 작업 컨텍스트
|
|
|
|
- 관련 경로: `services/api/`, `apps/client/`, `packages/contracts/`, `../proto-socket/`
|
|
- 표준선(선택): API는 socket/session boundary를 맡고, worker execution은 worker milestone에서 다룬다.
|
|
- 선행 작업: Contract and Codegen Baseline
|
|
- 후속 작업: Flutter Operator Console
|
|
- 확인 필요: 없음
|