본문 바로가기
아빠의 코딩 일지/7.서버 없이 구동하는 타로 카드

[Claude Haiku] AI 타로 앱 개발 #4 - 리얼한 해석을 완성하는 핵심 2개 테이블(ElementSynergies, TextTemplates) 설계 및 데이터 구축

by 머더라 2026. 8. 16.
반응형

처음에는 빠르게 결과물을 완성하고 싶어 조급증이 앞서기도 했다. 하지만 돌아보면, API 모델을 교체하고 데이터베이스 테이블 구조를 재설계했던 일련의 시행착오들은 단순한 우회가 아니었다. 오히려 타로 앱의 뼈대를 훨씬 견고하고 확장성 있게 만들어 준 값진 기술적 자산이 되었다.

 

1. 앱의 내실을 다지는 원소 시너지(ElementSynergies) 테이블 설계

타로 상담에서 단순히 개별 카드의 의미를 보여주는 것을 넘어, 카드 간의 상호작용과 조화를 보여주는 것은 앱의 리얼리티를 결정하는 핵심 요소다.

 

이를 위해 기존의 단순한 구조를 탈피하고, 에너지 강도와 핵심 키워드를 포함한 확장성 있는 테이블 구조로 재설계했다.

CREATE TABLE ElementSynergies (
    synergy_id INTEGER PRIMARY KEY AUTOINCREMENT,
    element_1 TEXT NOT NULL,
    element_2 TEXT NOT NULL,
    synergy_type TEXT,            -- 시너지 유형 (예: Harmony, Boost 등)
    energy_level INTEGER,         -- 상담의 강도 (1~5점)
    keywords TEXT,                -- 핵심 단어 (쉼표로 구분)
    description TEXT              -- 깊이 있는 해석 내용
);

 

 

2. 모든 조합의 경우의 수를 채우다: 전체 데이터 입력

4대 원소(, , 공기, )가 만나서 발생할 수 있는 주요 상호작용 조합을 빠짐없이 구성하여 데이터 입력 작업을 완료했다.

INSERT INTO ElementSynergies (element_1, element_2, synergy_type, energy_level, keywords, description)
VALUES 
('Fire', 'Fire', 'Boost', 5, '열정, 가속, 폭발력', '두 개의 불이 만나 엄청난 에너지를 뿜어냅니다. 추진력은 최고조에 달하지만, 지나친 과열과 번아웃을 조심해야 합니다.'),

 

3. TextTemplates: 상용구 테이블 설계와 구축

카드의 원소 속성을 조합하는 것만으로는 실제 타로 리더가 말해주는 듯한 깊은 몰입감을 주기에 2% 부족했다. 사용자가 앱에서 카드를 뽑았을 때, 매번 똑같은 기계적 문장이 아니라 상황과 위치에 맞게 자연스럽고 풍성한 문장 조립이 가능하도록 TextTemplates 테이블을 새롭게 설계했다.

 

이 테이블은 개발자가 사전에 감성적인 문장 구조(접두사와 접미사)를 카테고리별, 슬롯별로 준비해 두는 정적 데이터(Static Data) 저장소 역할을 한다.

 

CREATE TABLE TextTemplates (
    template_id INTEGER PRIMARY KEY AUTOINCREMENT,
    category TEXT,          -- 카테고리 (General, Love, Career 등)
    position_slot INTEGER,  -- 카드 위치 슬롯 (1, 2, 3)
    prefix_text TEXT,       -- 문장의 앞부분 수식어
    suffix_text TEXT        -- 문장의 뒷부분 마무리
);

 

4. 카테고리별 문장 템플릿 전체 데이터 입력

 

일반 종합운, 연애운, 커리어운 등 타로 상담에서 자주 쓰이는 핵심 맥락을 아우르기 위해 1차적으로 전체 상용구 데이터 입력을 마쳤다. 이로써 앱은 사용자의 선택에 맞춰 무작위(RANDOM)로 문장 조각을 조합하여 훨씬 다채로운 리딩 결과를 보여줄 수 있게 되었다.

INSERT INTO TextTemplates (category, position_slot, prefix_text, suffix_text)
VALUES 
-- [1. General (일반 종합운)]
('General', 1, '첫 번째 카드는 당신의 근원적인 현재 상태를 보여줍니다. 이 자리에서 당신은 ', '이라는 에너지를 품고 있습니다.'),

 

 

* 다음 단계: 데이터에서 UI, 핵심 기능 구현하기

타로 카드 원본 데이터(Cards), 원소 시너지 데이터(ElementSynergies), 그리고 자연스러운 문장 조립을 위한 상용구 데이터(TextTemplates)까지 구축을 완료했다. 이로써 앱의 핵심 데이터베이스 환경은 모두 갖춰졌다.

 

데이터 준비가 끝났으므로, 다음 단계부터는 실제 화면을 구성하고 기능을 연결하는 작업으로 넘어간다.

 

* 다음 단계 개발 계획

1). 데이터 Repository 및 조회 로직 구현

- SQLite에 저장된 카드, 시너지, 템플릿 데이터를 앱 내부에서 호출할 수 있는 데이터 연동 함수 작성

2). 타로 카드 덱(Deck) UI 및 애니메이션 구현

- 사용자가 카드를 선택하고 뒤집는(Flip Animation) 몰입감 넘치는 인터페이스 제작

3). 결과 해석 화면 고도화

- 선택된 카드들의 원소 시너지와 템플릿 문장을 동적으로 조합하여 최종 리딩 결과 화면 완성

반응형