feat: 생년월일 필드 추가 + 카카오 스코프 확장 + 채널 연동 문서

- signup.html: 수집 목적 안내 카드, 생년월일(선택) 필드, 필수/선택 배지
- app.py: /api/signup에 birthday 처리, get_or_create_user birthday 파라미터
- mileage_schema.sql: users 테이블 birthday 컬럼 추가
- dbsetup.py: 기존 DB 마이그레이션 (ALTER TABLE ADD birthday)
- kakao_client.py: scope에 phone_number,birthday,birthyear 추가
- privacy.html: 항목별 수집 목적 테이블, 필수/선택 구분, 9항 신설
- kakao-phone-request.md: 전화번호+생일 스코프 신청 사유 문서
- kakao-channel-integration.md: 채널 API 분석 및 알림톡 로드맵
- kakao-chanell-rest-api.md: 카카오 채널 REST API 원문 참고 문서

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
thug0bin
2026-02-25 10:12:41 +09:00
parent 2b3d8649ba
commit f969756caa
9 changed files with 984 additions and 36 deletions

View File

@@ -213,6 +213,7 @@ class DatabaseManager:
print(f"[DB Manager] SQLite 신규 DB 생성 완료: {self.sqlite_db_path}")
else:
print(f"[DB Manager] SQLite 기존 DB 연결: {self.sqlite_db_path}")
self._migrate_sqlite()
return self.sqlite_conn
@@ -235,6 +236,16 @@ class DatabaseManager:
print(f"[DB Manager] SQLite 스키마 초기화 완료")
def _migrate_sqlite(self):
"""기존 DB에 새 컬럼 추가 (마이그레이션)"""
cursor = self.sqlite_conn.cursor()
cursor.execute("PRAGMA table_info(users)")
columns = [row[1] for row in cursor.fetchall()]
if 'birthday' not in columns:
cursor.execute("ALTER TABLE users ADD COLUMN birthday VARCHAR(10)")
self.sqlite_conn.commit()
print("[DB Manager] SQLite 마이그레이션: users.birthday 컬럼 추가")
def test_connection(self, database='PM_BASE'):
"""연결 테스트"""
try:

View File

@@ -9,6 +9,7 @@ CREATE TABLE IF NOT EXISTS users (
email VARCHAR(200),
is_email_verified BOOLEAN DEFAULT FALSE,
phone VARCHAR(20),
birthday VARCHAR(10),
mileage_balance INTEGER DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP