# 프로젝트 스캐폴드 요구사항 ## 범위 Python 3.11 이상과 표준 `pyproject.toml`을 사용하는 Textual 기반 TUI 초기 스캐폴드를 제공한다. ## 기능 요구사항 1. `chat-tui` 콘솔 명령과 `python -m chat_tui` 실행을 지원한다. 2. Textual 화면에 사용자 입력창과 대화 영역을 표시한다. 3. 사용자가 입력을 제출하면 입력값을 `trim`한 뒤 비어 있지 않은 사용자 메시지를 제출 순서대로 대화 영역에 누적한다. 4. 유효한 사용자 메시지 제출 후 고정된 다섯 개 응답 목록에서 표준 난수 선택으로 하나의 응답을 결정한다. 5. 선택한 응답을 해당 사용자 메시지 바로 뒤에 별도의 대화 항목으로 표시한다. 6. 유효한 입력 처리 뒤 입력창을 비운다. 7. 빈 입력 또는 공백만 포함한 입력은 사용자 메시지와 응답을 대화 기록에 추가하지 않는다. 8. `Escape` 또는 `Ctrl+Q`로 애플리케이션 종료를 요청할 수 있다. 9. 입력 누적, 응답 선택과 표시, 공백 입력 무시, 입력창 초기화 및 종료 동작을 자동 테스트로 검증한다. ## 고정 응답 목록 응답은 다음 다섯 문구 중 하나를 사용한다. - 안녕하세요! 무엇을 도와드릴까요? - 그것은 제가 처리하기 불가능합니다. - 맡겨만 주세요. - 지금 처리 중입니다. - 작업을 완료하였습니다. 응답 선택에는 표준 라이브러리의 난수 선택 기능을 사용하며, 외부 서비스나 LLM은 호출하지 않는다. ## 제외 범위 LLM 연동, 외부 API 호출, 인증, 영구 대화 기록 저장, 사용자별 응답 기록, 응답 목록 편집, 사용자 입력에 따른 맞춤형 응답 생성은 구현하지 않는다. ## 수용 기준 - Python 3.11 이상 환경에서 의존성을 설치할 수 있다. - TUI가 실행되고 입력창에 포커스가 배치된다. - 두 번 이상 제출한 입력이 `trim`된 값으로 제출 순서대로 표시된다. - 각 유효한 사용자 메시지 바로 뒤에 고정 목록에서 선택된 응답이 표시된다. - 자동 테스트에서 난수 선택 결과를 제어하고 선택 호출 및 표시 순서를 검증할 수 있다. - 빈 입력과 공백만 포함한 입력은 사용자 메시지, 응답 및 응답 선택 결과를 남기지 않는다. - 유효한 입력 제출 뒤 입력창이 비워진다. - `Escape` 및 `Ctrl+Q`가 애플리케이션 종료를 요청한다.