2026-06-13 AMENA 포털서버 시연 4탭 UX 백엔드 API
개요
/Users/ef/crowny-amena/포털서버.한선에 시연 4탭(미션/지갑/에이전트/동료채팅) API 8개 추가.
작업 내용
백업: 포털서버.한선.bak-appux-20260613
신규 API (GET 4, POST 4):
GET /api/missions — 오늘날짜/streak/성경구절/퀴즈(정답미포함)/미션4건 state
POST /api/mission/complete — M1/M3/M4 즉시T, M2 퀴즈정답대조, 맘원장 append, 스트릭≥3 보너스+2, dedup
GET /api/wallet — 맘원장.dat 잔액+최근10건 역순+krw 반값()
POST /api/agent/chat — 6단계 역순 덮어쓰기 의도분류, 인사맘1 dedup
GET /api/contacts — 연락처.dat → JSON
GET /api/chat/messages — 메시지.dat 양방향 필터
POST /api/chat/send — 정화+append, demo01~09 자동답장, M4 자동완료
GET /app — _파일서빙("app.html")
공통 헬퍼 추가: _쿼리값, _반값, _인증순수id, _누적맘조회, _필드, _오늘날짜, _날짜순환, _N번째줄, _완료체크, _스트릭, _텍스트정화, _연락처역할, _자동답장관련 파일
/Users/ef/crowny-amena/포털서버.한선 — 메인 소스 (1225줄)
/Users/ef/crowny-amena/포털서버.한선.bak-appux-20260613 — 백업
/Users/ef/crowny-amena/data/미션.dat, 퀴즈.dat, 성경플랜.dat, 연락처.dat
/Users/ef/crowny-amena/data/맘원장.dat — SSOT 맘 원장 (기존 4컬럼 포맷 유지)
- 런타임 생성:
미션완료.dat, 메시지.dat
발견한 함정
- hanseonc_high 35단계 중첩
아니면{ 체인 → parser 오류. 해결: 역순 단일 만약 덮어쓰기 패턴으로 평탄화
- 스트릭보너스 원장줄 포맷:
날짜|id|스트릭보너스|2|누적 (5컬럼) — _누적맘조회의 탐=id+"|" 매칭이 "날짜|" prefix 때문에 미매칭 → 포함(줄,탐)==0 조건이 올바르게 작동함
검증 결과
- 컴파일: OK (exit 0, 871KB toau)
- /api/health: T
- /api/missions: T (퀴즈 정답미포함 확인)
- /api/mission/complete M1: T reward=3
- dedup: T (dup:1)
- M2 정답: T reward=2
- M2 오답: T state=A explain 반환
- M3: T reward=5
- /api/agent/chat 인사: T +1맘
- 인사 중복: T reward=0
- 게스트 인사: T reward=0
- "안녕 미션 뭐야" → mission: T
- 엉뚱한말 → unknown: T
- /api/contacts: T 9건
- /api/chat/send+자동답장: T (demo03 수학코치 자동답장)
- M4 자동완료: T
- /api/wallet: T balance=12 history=5건
- 401 케이스들: T
- 라이브 9921 미영향: T
잔여 이슈
_오늘날짜() Tomohiko 알고리즘이 현재시각()+KST로 계산하나, VM 내부 현재시각()이 1970-base 확인 필요 (테스트 결과는 2026-06-07 → VM내부 시간이 다를 수 있음. 프런트엔드에서 클라이언트 날짜를 POST로 보내는 방식 검토 권장)
- app.html 파일은 아직 미생성 — /app 라우트는 현재 404 반환