1. 프로젝트 계획서 산출물 가이드

프로젝트 산출물 AI Tool 사용 요약
| 번호 | 산출물 명칭 | 목적 / 사용 용도 | 사용 기술 · 도구 | 제작 방식 및 특징 |
| 0 | 일반 이미지 | Nano Banana | ||
| 1 | 요구사항 명세서 | 기능·비기능 요구사항 정의 |
모든 AI 가능 (ChatGPT 등) | 표(Table) 기반, 기능/비기능 요구사항 및 추적성 매핑 |
| 2 | 순서도 | 기능 흐름 시각화 | eraser.io (https://app.eraser.io/) |
AI 기반 순서도 생성 |
| 3 | 화면 구성도 | 메뉴 구조, 화면 관계 정의 |
eraser.io 또는 일반 이미지 AI | 구조 시각화, 시스템 전체 구조 이해 목적 |
| 4 | 목업 (UI 프로토 타입) |
실제 구현 전 UI 구조 검증 |
1단계: AI 기반 SVG 생성 2단계: Figma (https://www.figma.com/) |
1단계: SVG 이미지 생성(빠른 초안) 2단계: Figma에서 SVG 편집·수정 |
| 5 | 일정표 (Gantt) |
프로젝트 일정 관리 | Mermaid Live (https://mermaid.live/) |
Gantt 기반, AI로 일정 생성 후 시각화 |
1. 프로젝트 개요

대상 프로젝트: PySide6 + MySQL 기반 도서 관리 프로그램(회원/도서/대여·반납)
(1) 목적
- 데스크톱 GUI 환경에서 도서관의 핵심 업무를 처리한다.
(2) 주요 기능
- 회원 등록 및 조회
- 도서 등록 및 조회
- 도서 대여/반납/연장
- 데이터는 MySQL DB에 영구 저장
(3) 개발 범위(Scope)
- 3개 페이지를 가진 단일 데스크톱 프로그램
- DB CRUD(INSERT/SELECT/UPDATE/DELETE) 기반 기능 구현
- 공통 UI 템플릿(BasePage) 기반으로 페이지 구조 통일
(4) 비포함(Out of Scope)
- 로그인/권한 관리
- 바코드 리더기/카메라 등 외부 장치 연동
- 연체료 계산, 예약 기능, 관리자 통계 대시보드
- 멀티 사용자 동시성 제어(트랜잭션/락 설계) 고도화
(5) 사용자/이해관계자 정의
- 사용자(User)
- 도서관 직원(운영자) 1명(단일 PC에서 사용)
- 사용 환경(Assumption)
- OS: Windows(폰트: Malgun Gothic 사용) 또는 Linux 가능
- DB: 로컬 MySQL 서버(localhost)
- 네트워크: DB가 로컬이므로 필수 아니지만
MySQL 서비스 구동 필요하며
AWS RDS 확장 연동 테스트시 필요
2. 시스템 구성 요소 분석

(1) UI 구조(상위)
- 메인 창: LibrarySystem(QMainWindow)
- 좌측 Sidebar: 페이지 전환 버튼 3개
- 우측 StackedWidget: 3개 페이지
(2) 페이지 공통 패턴(BasePage)
- 모든 페이지는 동일한 GUI 블록을 가진다.
- Title(Label)
- 입력 폼(form_layout)
- 검색 폼(search_layout)
- 테이블(QTableWidget)
- 하단 버튼(bottom_layout)
(3) 데이터 처리 구조
- DatabaseManager
- execute_query(): INSERT/UPDATE/DELETE
- fetch_data(): SELECT
- 각 페이지는 db 객체를 주입받아 직접 SQL을 호출한다.
3. 통합 요구사항 명세서(기능 + 비기능)
(1) 요구사항 통합 표
| ID | 유형 | 요구사항 | 상세 설명 | 관련 화면/모듈 |
| FR-01 | 기능 | 회원 등록 | 회원 ID, 이름, 연락처, 이메일 입력, 신규 회원 등록 | MemberManagerPage |
| FR-02 | 기능 | 회원 조회 | 조건 없이 전체 조회 또는 조건 기반 검색을 수행한다 | MemberManagerPage |
| FR-03 | 기능 | 회원 삭제 | 선택된 회원 정보를 삭제한다 | MemberManagerPage |
| FR-04 | 기능 | 도서 등록 | 도서 ID, 제목, 저자, 출판사 정보를 등록한다 | BookManagerPage |
| FR-05 | 기능 | 도서 조회 | 전체 조회 및 조건 기반 도서 검색을 수행한다 | BookManagerPage |
| FR-06 | 기능 | 도서 삭제 | 선택된 도서를 삭제한다 | BookManagerPage |
| FR-07 | 기능 | 회원 조회(대여 전) | 대여 처리 전에 단일 회원을 정확히 조회한다 | CirculationPage |
| FR-08 | 기능 | 도서 대여 | 회원 조회 후 도서를 대여 처리한다 | CirculationPage |
| FR-09 | 기능 | 도서 반납 | 대여 중인 도서를 반납 처리한다 | CirculationPage |
| FR-10 | 기능 | 대여 연장 | 대여 중인 도서의 대여 기간을 연장한다 | CirculationPage |
| NFR-01 | 비기능 | UI 일관성 | 모든 페이지는 동일한 UI 블록 구조를 유지한다 | BasePage |
| NFR-02 | 비기능 | 사용자 피드백 | 모든 주요 이벤트 결과는 메시지 박스로 안내한다 | BasePage |
| NFR-03 | 비기능 | 성능 | 소규모 데이터 기준 즉시 응답을 제공한다 | DatabaseManager |
| NFR-04 | 비기능 | 오류 처리 | DB 오류 발생 시 프로그램이 종료되지 않는다 | DatabaseManager |
| NFR-05 | 비기능 | 유지보수성 | 공통 UI 로직은 BasePage에 집중 관리한다 | BasePage |
| NFR-06 | 비기능 | 학습 용이성 | SQL과 UI 흐름이 명확히 드러나는 구조를 유지한다 | 전체 |
(2) 요구사항 ↔ 화면/클래스 매핑
| 요구사항 ID | BasePage | MemberManagerPage | BookManagerPage | CirculationPage | DatabaseManager |
| FR-01 | O | O | O | ||
| FR-02 | O | O | O | ||
| FR-03 | O | O | O | ||
| FR-04 | O | O | O | ||
| FR-05 | O | O | O | ||
| FR-06 | O | O | O | ||
| FR-07 | O | O | O | ||
| FR-08 | O | O | O | ||
| FR-09 | O | O | O | ||
| FR-10 | O | O | O | ||
| NFR-01 | O | O | O | O | |
| NFR-02 | O | O | O | O | |
| NFR-03 | O | ||||
| NFR-04 | O | ||||
| NFR-05 | O | O | O | O | |
| NFR-06 | O | O | O | O | O |
3. 순서도 (erasor.io 기반)
인공지능 기반 순서도 작성 플랫폼
(2) 프롬프트 명령 순서
- 요구사항 분석 결과 복사 후 프롬프트 입력
- 프롬프트 명령
"기능적 요구사항을 기반으로 순서도를 작성하는데 필요한 항목을 리스트업해주세요."
- 프롬프트 명령
- 결과
- 페이지 단위 3개 다이어그램:
- “회원 관리 순서도(FR-01~03)”
- “도서 관리 순서도(FR-04~06)”
- “대여/반납/연장 순서도(FR-07~10)”
- 또는 통합 1개 다이어그램:
- 상단에 “메인: 페이지 선택”
- 하단에 “각 페이지 기능 흐름”을 병렬로 배치
- 페이지 단위 3개 다이어그램:
- 프롬프트 명령
- 위 기능적 요구사항 기반으로 순서도를 작성하려고 합니다. 가중 중요한 기능을 중심으로 순서도 항목을 요약하고, https://docs.eraser.io/docs/syntax-3 웹페이지의 Flow chart syntax 를 참고하여 https://app.eraser.io/ 순서도 작성 코드를 제작해주세요
- 위 기능적 요구사항 기반으로 순서도를 작성하려고 합니다. 가중 중요한 기능을 중심으로 순서도 항목을 요약하고, https://docs.eraser.io/docs/syntax-3 웹페이지의 Flow chart syntax 를 참고하여 https://app.eraser.io/ 순서도 작성 코드를 제작해주세요
- 생성한 코드를 순서도 생성에 사용합니다.
- **복잡한 순서도의 경우 다시 생성하는 경우
- 요약된 항목을 프롬프트에 복사해서 붙여넣고, 다음 프롬프트를 입력합니다.
- 프롬프트
"입력한 핵심 기능 중심으로 순서도를 작성하려고 합니다. 중요한 기능을 중심으로 순서도 항목을 요약하고, https://docs.eraser.io/docs/syntax-3 웹페이지의 Flow chart syntax 와 https://docs.eraser.io/docs/icons 아이콘을 참고하여 https://app.eraser.io/ 순서도 작성 코드를 제작해주세요." - 아이콘을 추가하면, 순서도가 겹쳐서 잘못 그려지는 일이 방지됩니다.
(3) 실행 결과
(3)-1 통합(전체 시스템) 순서도 코드

(3)-2 MemberManagerPage 순서도 코드

(3)-3 BookManagerPage 순서도

(3)-4 CirculationPage(대여/반납/연장) 순서도

(3)-5 순서도 생성에 사용된 코드
4. 목업(≒ UI 프로토 타입, StoryBoard, Wireframe)
(1) 2가지 목업 제작 방법
1단계: SVG 이미지 제작 요청
대다수의 인공지능 명령으로 이미지 생성 가능 >> 수정 어려움
인공지능 기반으로 작성한 SVG 파일을, 편집 가능 사용자가 수정할 수 있습니다.
(2) 프롬프트 명령 순서
- 위에서 작업한 요구사항 분석과, 순서도를 기반으로 질문합니다.
- 프롬프트 명령
"figma 에서 ui 목업 제작하려고 합니다.
요구사항 분석 결과와, 순서도에 사용한 코드를 기반으로
figma 에서 ui 목업 제작에 필요한 사항들을 리스트업해주세요."
- 프롬프트 명령
- 결과 확인
- 리스트업한 결과가 요구사항과 맞는지 확인합니다.
- 리스트업한 결과가 요구사항과 맞는지 확인합니다.
- 프롬프트 명령
- 메인 창: LibrarySystem(QMainWindow)
- 좌측 Sidebar: 페이지 전환 버튼 3개
- 우측 StackedWidget: 3개 페이지
- “회원 관리 순서도(FR-01~03)”
- “도서 관리 순서도(FR-04~06)” 페이지
- “대여/반납/연장 순서도(FR-07~10)” 페이지 figma 에서 ui 목업 제작하려고 합니다.
SVG 코드를 생성해서 Figma에 드래그앤드롭(또는 Import) 합니다.
(아래처럼 위 분석에 사용한 UI 관련 사항을 가져옵니다.)
- figma 에서 ui 목업 제작을 위해 SVG 코드를 생성해서 Figma에 드래그앤드롭(또는 Import) 할 수 있도록 만들어주세요"
- 메인 창: LibrarySystem(QMainWindow)
- Figma 에서 SVG 드래그앤드롭하여 확인합니다

5. 일정표
인공지능 기반 코드를 일정표 제작에 사용합니다.
(2) 프롬프트 명령 순서
- 위에서 작업한 요구사항 분석과, 순서도를 기반으로 질문합니다.
- 프롬프트 명령
" mermaid.live 에서 간트 일정표를 제작하려고 합니다.
6일 기준으로 일정표를 제작하는데 필요한 항목을 리스트업해주세요 "
- 프롬프트 명령
- 결과 확인
- 리스트업한 결과가 일정표 제작에 필요한 항과 맞는지 확인합니다.
- 내 계획에 맞춰 일정을 수정하여 일정 항목을 정리합니다. 아래처럼 개떡같이 말해도 찰떡같이 정리됩니다.
"day1, 2, 3, 4 요구사항 명세, 프로젝트 분석, 화면구조 + 순서도, UI 목업을 1일차에 완료합니다. DB 설계와 DB 흐름 및 실행 테스트 에 2일차, 나머지 일정에 librarysystem 하루, membermanagepage+bookmanagepage하루, 대여페이지에1일 사용합니다. 다시 정리해주세요" - Day일정 요약
Day일정 요약 Day 1 요구사항 명세 + 프로젝트 분석 + 화면 구조 + 순서도 + UI 목업 Day 2 DB 설계 + DB 흐름 분석 + DB 실행 테스트 Day 3 LibrarySystem(Main UI, Sidebar, Page 전환) 구현 Day 4 MemberManagerPage + BookManagerPage 구현 Day 5 CirculationPage(대여/반납/연장) 구현 Day 6 통합 테스트 + 버그 수정 + 산출물 정리
- 일정표를 gantt chart 로 작성하려고 합니다. https://mermaid.js.org/syntax/gantt.html 웹페이지의 Gantt diagrams syntax 와 https://mermaid.js.org/syntax/timeline.html을 참고하여제작해주세요."
- 결과 코드를 붙여넣습니다.


6. DB 테이블 명세서, ERD
4단계 데이터 분석에서 작성합니다.