MAIN_C[메인화면: 자녀 대시보드]:::pink ROLE -- "부모 (Parent)" --> MAIN_P[메인화면: 부모 대시보드]:::pink %% 2. 도서 검색 및 상세 (옐로우) - 외부 API 연동 포함 MAIN_C --> SEARCH_REQ[도서 검색 요청]:::yellow SEARCH_REQ --> DB_CHECK{로컬 DB에 존재?}:::yellow DB_CHECK -- "No (부재)" --> API_CALL[외부 API 호출
국립중앙도서관/Naver]:::yellow API_CALL --> REGEX[데이터 정제 및 DB 저장]:::yellow DB_CHECK -- "Yes (존재)" --> THIN_CHECK{정보 부실?}:::yellow THIN_CHECK -- "Yes" --> "> MAIN_C[메인화면: 자녀 대시보드]:::pink ROLE -- "부모 (Parent)" --> MAIN_P[메인화면: 부모 대시보드]:::pink %% 2. 도서 검색 및 상세 (옐로우) - 외부 API 연동 포함 MAIN_C --> SEARCH_REQ[도서 검색 요청]:::yellow SEARCH_REQ --> DB_CHECK{로컬 DB에 존재?}:::yellow DB_CHECK -- "No (부재)" --> API_CALL[외부 API 호출
국립중앙도서관/Naver]:::yellow API_CALL --> REGEX[데이터 정제 및 DB 저장]:::yellow DB_CHECK -- "Yes (존재)" --> THIN_CHECK{정보 부실?}:::yellow THIN_CHECK -- "Yes" --> "> MAIN_C[메인화면: 자녀 대시보드]:::pink ROLE -- "부모 (Parent)" --> MAIN_P[메인화면: 부모 대시보드]:::pink %% 2. 도서 검색 및 상세 (옐로우) - 외부 API 연동 포함 MAIN_C --> SEARCH_REQ[도서 검색 요청]:::yellow SEARCH_REQ --> DB_CHECK{로컬 DB에 존재?}:::yellow DB_CHECK -- "No (부재)" --> API_CALL[외부 API 호출
국립중앙도서관/Naver]:::yellow API_CALL --> REGEX[데이터 정제 및 DB 저장]:::yellow DB_CHECK -- "Yes (존재)" --> THIN_CHECK{정보 부실?}:::yellow THIN_CHECK -- "Yes" --> ">
graph TD
    %% 전체 공통 스타일 설정 (파스텔 배경, 검은색 글씨)
    classDef default fill:#f9f9f9,stroke:#e0e0e0,color:#000,stroke-width:1px,rx:5,ry:5;
    
    %% 색상 그룹 정의
    classDef pink fill:#FDE2E4,stroke:#E0B1B3,color:#000;
    classDef blue fill:#D1EAFF,stroke:#A2C8EC,color:#000;
    classDef green fill:#E2F0CB,stroke:#AEC58F,color:#000;
    classDef yellow fill:#FFF1CC,stroke:#E6C9A8,color:#000;
    classDef purple fill:#E6E6FA,stroke:#B3B3E6,color:#000;

    %% 1. 로그인/역할 분기 (핑크)
    START([앱 시작/로그인]) --> ROLE{사용자 역할?}:::pink
    ROLE -- "자녀 (Child)" --> MAIN_C[메인화면: 자녀 대시보드]:::pink
    ROLE -- "부모 (Parent)" --> MAIN_P[메인화면: 부모 대시보드]:::pink

    %% 2. 도서 검색 및 상세 (옐로우) - 외부 API 연동 포함
    MAIN_C --> SEARCH_REQ[도서 검색 요청]:::yellow
    SEARCH_REQ --> DB_CHECK{로컬 DB에 존재?}:::yellow
    
    DB_CHECK -- "No (부재)" --> API_CALL[외부 API 호출 <br/>국립중앙도서관/Naver]:::yellow
    API_CALL --> REGEX[데이터 정제 및 DB 저장]:::yellow
    
    DB_CHECK -- "Yes (존재)" --> THIN_CHECK{정보 부실?}:::yellow
    THIN_CHECK -- "Yes" --> API_CALL
    
    REGEX & THIN_CHECK -- "No" --> DETAIL[도서 상세 정보 표시]:::yellow
    
    DETAIL --> DETAIL_ACT{상세화면 액션}:::yellow
    DETAIL_ACT -- "즐겨찾기 추가" --> BM_SAVE[Bookmark 테이블 저장]:::yellow
    DETAIL_ACT -- "좋아요/리뷰" --> REVIEW_SAVE[Likes/Review 저장]:::yellow
    
    %% 3. AI 검색 및 요약 (옐로우)
    MAIN_C --> AI_REQ[AI 기반 도서 요약/추천 요청]:::yellow
    AI_REQ --> ALAN_AI[Alan AI API 호출 <br/>줄거리 생성 및 맞춤 추천]:::yellow
    ALAN_AI --> AI_DISP[AI 분석 결과 표시]:::yellow

    %% 4. 나만의 책장 & 통계 (그린)
    MAIN_C --> MY_PAGE[마이페이지/책장 접속]:::green
    MAIN_C --> MAIN_CHART[인기 도서/완독 차트 표시]:::green
    
    MY_PAGE --> LOAD_SHELF[책장 목록 조회]:::green
    LOAD_SHELF --> STATUS_CHG{완독 상태 변경?}:::green
    STATUS_CHG -- "완독 (Trees)" --> TREE_CALC[독서량 기준 아이콘 업데이트 🌱/🌿/🌳]:::green
    TREE_CALC --> STATS_CALC[목표 달성률 및 완독률 계산]:::green
    STATS_CALC --> STATS_VIEW[개인 통계 대시보드 표시]:::green

    %% 5. 독서기록장 및 게시판 (블루)
    MAIN_C --> BOARD_LIST[독서록 자랑하기 목록]:::blue
    MAIN_C --> DIARY_LIST[독서기록장 목록 조회]:::blue
    
    DIARY_LIST --> DIARY_WRITE[새 기록 작성]:::blue
    DIARY_WRITE --> IMG_CHECK{paint_ 파일 존재?}:::blue
    IMG_CHECK -- "Yes" --> PAINT_IMG[사용자 그림 대표 이미지 지정]:::blue
    IMG_CHECK -- "No" --> NORMAL_IMG[일반 이미지 저장]:::blue
    PAINT_IMG & NORMAL_IMG --> DIARY_SAVE[BookDiary 저장]:::blue

    %% 6. 부모 페이지 (퍼플)
    MAIN_P --> GET_CHILD[연결된 자녀 목록 조회]:::purple
    GET_CHILD --> QUERY_DATA[자녀 활동 데이터 쿼리]:::purple
    QUERY_DATA --> P_VIEW[자녀 독서 통계 및 기록 열람]:::purple
    P_VIEW --> COMMENT_WRITE[자녀 기록장 댓글/응원 등록]:::purple