code-agent: implement issue 4
Approval-Correlation: 0543bb321a84cb936bc0ac4988615840
Plan-SHA256: 437a85f68d151ed4db780511812834041cfec5e7cf021fb77e238d5a6196e6fb
Base-SHA: 256be64ac7
This commit is contained in:
+33
-7
@@ -1,13 +1,39 @@
|
||||
# 데이터 모델
|
||||
|
||||
## input-display-state
|
||||
## 대화 상태
|
||||
|
||||
초기 구현의 상태는 `ChatApp.submitted_inputs`와 화면 위젯으로 구성한다.
|
||||
`ChatApp`은 세션 동안 다음 목록을 메모리에 유지한다.
|
||||
|
||||
- `Input.value`: 현재 입력창에 편집 중인 문자열이다.
|
||||
- `submitted_inputs`: 현재 애플리케이션 세션에서 제출된 문자열의 순서 있는 목록이다.
|
||||
- `#conversation`: 제출된 각 문자열을 `Label`로 표시하는 세션 내 대화 영역이다.
|
||||
- `submitted_inputs`: `trim`된 유효 사용자 메시지 목록
|
||||
- `selected_responses`: 각 사용자 메시지에 대응하는 선택 응답 목록
|
||||
|
||||
입력 제출이 성공하면 원문을 `submitted_inputs`에 추가하고 같은 문자열을 대화 영역에 표시한 뒤 입력창을 비운다. 빈 문자열은 추가하지 않는다.
|
||||
두 목록은 같은 인덱스를 사용하며, 유효한 제출 하나마다 항목 하나씩 추가된다. 공백 입력은 어느 목록도 변경하지 않는다.
|
||||
|
||||
이 모델은 프로세스 메모리에만 존재한다. 파일, 데이터베이스, 외부 서비스에는 기록하지 않으며 애플리케이션 종료 시 상태가 폐기된다. LLM 응답이나 메시지 작성자 구분은 초기 범위에 포함하지 않는다.
|
||||
## 고정 응답 목록
|
||||
|
||||
`src/chat_tui/app.py`의 `RESPONSE_MESSAGES` 상수는 다음 다섯 문자열을 순서대로 보유한다.
|
||||
|
||||
1. `안녕하세요! 무엇을 도와드릴까요?`
|
||||
2. `그것은 제가 처리하기 불가능합니다.`
|
||||
3. `맡겨만 주세요.`
|
||||
4. `지금 처리 중입니다.`
|
||||
5. `작업을 완료하였습니다.`
|
||||
|
||||
응답은 `random.choice(RESPONSE_MESSAGES)`로 선택한다. 난수 선택 자체는 테스트에서 `chat_tui.app.random.choice`를 대체할 수 있는 경계로 취급한다.
|
||||
|
||||
## 대화 항목
|
||||
|
||||
유효한 입력이 제출되면 대화 영역에 다음 두 `Label`을 순서대로 추가한다.
|
||||
|
||||
1. `user-message` 클래스의 사용자 메시지
|
||||
2. `response-message` 클래스의 선택 응답
|
||||
|
||||
사용자 메시지는 입력값을 `strip()`한 결과이며, 선택 응답은 고정 응답 목록의 문자열이다.
|
||||
|
||||
## 불변 조건
|
||||
|
||||
- 공백 제거 결과가 빈 문자열이면 상태와 화면을 변경하지 않는다.
|
||||
- 유효한 입력마다 사용자 메시지가 응답보다 먼저 추가된다.
|
||||
- `submitted_inputs`와 `selected_responses`의 길이는 항상 같다.
|
||||
- 응답은 고정 목록에 포함된 값이어야 한다.
|
||||
- 대화 기록은 애플리케이션 세션 안에서만 유지한다.
|
||||
|
||||
Reference in New Issue
Block a user