- CategoryStore: 분류 항목 JSON 저장소(DATA_DIR/expense_categories.json) - 관리자 설정 페이지(/expense/settings) + 분류 CRUD API - _normalize 분류 고정목록 검증 제거 — 추가 분류 즉시 등록 폼/집계 반영 - index/reports 분류를 동적 목록으로 교체 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ERP 셸: 좌측 사이드바 + 상단 헤더 + 콘텐츠 영역(erp_base.html) - 분기: 슈퍼관리자 → 업무모듈 카드, 일반사용자 → ERP 메인(erp_home.html) - 신규 라우트: /modules (슈퍼관리자 모듈 카드 재진입) - 개인경비 모듈: app/modules/expense/ (라우터/저장소/템플릿) - JSON 저장소(ExpenseStore) + PostgreSQL 저장소(ExpenseDBStore) - 팩토리: EXPENSE_DB_URL 있으면 DB, 없으면 JSON 폴백 - DB: scripts/sql/expense_db_init.sql (멱등 DDL, postgres-db 컨테이너) - expense_db, 역할 expense_app, 테이블 expense_items, 인덱스/트리거 - 마이그레이션: scripts/migrate_expense_json_to_db.py (멱등, --dry-run) - 의존성: psycopg[binary,pool]>=3.2 - 환경변수: EXPENSE_DB_URL 추가 - 문서: CLAUDE.md 작업 기준 + docs/{PROJECT_OVERVIEW,SERVER_ARCHITECTURE,DATABASES,DEPLOYMENT}.md - main-app 배포 경로 /opt/www/main 고정 명시 - 위험 명령(DROP/TRUNCATE/rm -rf/volume 삭제) 사용자 승인 정책