# 📋 Project Task List

> 마지막 업데이트: 2026-08-30 00:20
> 최근 요청 요약: 프로그램 아이콘 추가, UI 세련되게 수정 작업 추가

---

## 🎯 대목표 (Epic / North Star)
- [ ] **나만의 업무 통합 지원 프로그램** — 부동산/등기/경매 실무 전 과정 원스톱 지원 도구

---

## 📦 주요 기능 모듈 (Major Features / Epics)
*개발 순서·우선순위 미정 — 착수 시점에 상세 분해 예정*

### 0. 기반 구조 개편 (Foundation Refactoring) ⭐ **최우선 착수 권장**
- [ ] **프로젝트 디렉토리/파일 구조 전면 개편** — 위젯 기반 모듈러 아키텍처로 재구성
  - 메인 화면 = 루트 디렉토리 (`/features` 또는 `/modules` 하위)
  - 기능별 버튼 클릭 → 해당 기능 전용 서브 디렉토리로 진입
  - 각 기능 디렉토리 내부: `widget.py`(UI), `logic.py`(비즈니스 로직), `api.py`(외부 연동), `config.py`(설정), `test_*.py` 등 자기완결형 구조
  - 공통 코어(`core/`, `shared/`, `automation/`)는 상위 레벨에서 공유
  - 플러그인 방식 등록: `registry.py`에서 기능 자동 발견·로드

### 1. 발급·출력 자동화 (Government Site Automation)
- [ ] **인터넷등기소 등기부등본 자동 발급 프로그램**
- [ ] **등기신청수수료 발급 출력 프로그램**
- [ ] **위택스 등록면허세 고지서 출력 프로그램**

### 2. 등기비용 계산·문서화
- [ ] **등기비용 자동 계산 프로그램** — 엑셀 양식으로 생성 및 출력

### 3. 서류 생성 및 준비 프로그램 (통합 카테고리: "법원 제출 서류 자동화")
> **공통 구조**: 템플릿 엔진 + 데이터 매핑 + **서류별 체크리스트 위젯 내장**  
> 각 서류 위젯에는 **프로그램이 못하는 작업(도장 날인, 방문 수령, 원본 제출 등) 체크리스트**가 포함되어 사용자가 직접 완료 표시하며 진행 관리
- [ ] **인도명령 신청서** — 양식 생성 + 서류 준비 체크리스트
- [ ] **낙찰이전등기촉탁신청서** — 서류 생성 + 준비 체크리스트
- [ ] **추가말소신청서** — 서류 생성 + 준비 체크리스트
- [ ] **근저당말소** — 서류 생성 + 준비 체크리스트
- [ ] **일반 매매이전** — 서류 생성 + 준비 체크리스트

---

## 🎨 UI/UX 개선 (Polish & Branding)
*기반 구조 개편 후 또는 병행하여 진행 권장*

- [ ] **프로그램 아이콘 추가** — `.ico`(Windows), `.icns`(macOS), `.png` 세트 준비 → `main.py` 및 설치 패키지에 적용
- [ ] **UI 세련되게 수정** — 다크/라이트 테마, 여백/타이포그래피 통일, 버튼/입력필드 스타일 통일, 로딩/상태 피드백 개선, 반응형 레이아웃

---

## 💡 추가 제안 사항 (PM 관점 보완 아이템)
*필요 시 논의 후 메인 목록으로 승격*

| 영역 | 제안 기능 | 이유 |
|------|-----------|------|
| **사건/물건 관리** | 대상 부동산·사건번호·진행상태·관련 당사자 CRUD + 칸반/리스트 뷰 | 여러 건 동시 진행 시 컨텍스트 스위칭 비용 감소 |
| **기한·마감일 관리** | 캘린더 연동(ICS/Google Cal), D-Day 알림, 법정 기한 자동 계산 | 기한 놓치면 치명적(인도명령 6개월, 말소 3개월 등) |
| **문서 템플릿 엔진** | 자체 템플릿 에디터(플레이스홀더, 조건문, 반복문), 버전 관리, HWP/DOCX/PDF 출력 | 서류 양식 변경·개인 커스터마이즈 대응 |
| **비용/수입 정산** | 건별 비용 내역(등기비용, 세금, 수수료, 송달료 등) + 엑셀 리포트 + 세무 신고용 요약 | 실무 수익성 분석, 세무 신고 편의 |
| **통합 로그인/사이트 바로가기** | 대법원/인터넷등기소/위택스/정부24/한국감정원/법원경매 등 SSO 스타트페이지 | 매일 접속하는 사이트 1클릭 진입 |
| **백업·동기화** | 로컬 DB( SQLite) + 선택적 클라우드(구글 드라이브/NAS/WebDAV) 자동 백업 | 데이터 유실 방지, 다중 PC 동기화 |
| **이력·감사 로그** | 모든 발급·생성·수정 행위 타임스탬프 기록, 변경 이력 조회 | 분쟁 시 증거 자료, 업무 복기 |
| **다중 사용자/권한** | 팀원별 권한(읽기/쓰기/관리자), 공유 사건·템플릿 | 향후 협업 확장성 |
| **모바일 동반** | 알림 수신(푸시), 현장 사진 첨부, 간단 체크리스트 체크 | 현장 실사·경매 입찰 시 편의 |

---

## 📌 향후 작업 예정 (Backlog)
- [ ] (착수 시점에 상세 분해하여 기록 예정)

---

## 💡 개발 참고 및 고려 사항
- **프로젝트 구조**: PySide6 데스크톱 앱 (Python 3.x)
- **핵심 모듈**: 
  - `juso_api.py` — 행안부 주소 API + V-World API 하이브리드 검색
  - `browser_automation.py` — Playwright 기반 정부24 자동화 (봇 탐지 우회 포함)
  - `ui_main.py` — 메인 UI, 실시간 로그, 발급 대상 목록 관리
  - `main.py` — 진입점, 설정 로드, 자동 업데이트
- **설정 파일**: `~/.juso_app/config.json` (API 키, 로그인 정보 저장)
- **데이터 저장**: `saved_targets.json` (발급 대상 목록 영속화)
- **자동 업데이트**: `updater.py` (백그라운드 다운로드 및 적용)
- **비공개 레포**: GitHub Private repo (ID-MEV/Juso)
- **아키텍처 방향**: 기존 `browser_automation.py` 패턴(Playwright + QThread)을 **사이트별 어댑터**로 일반화 → `automation/registry.py`로 통합 관리 권장
- **서류 생성**: `docxtpl`(Jinja2) 또는 `python-docx` + HWP 변환(`hwp5py`/한글 자동화) 고려
- **데이터 모델**: `case.py`, `property.py`, `document_template.py`, `checklist.py` 등 도메인 모델 분리 필요
- **체크리스트 설계**: 각 서류 위젯 내 `ChecklistWidget` 구성 — 항목(자동/수동 구분), 완료 여부, 비고, 담당자, 기한 필드 포함

---

## 🏗️ 제안 디렉토리 구조 (구조 개편 시 참고)
```
/var/www/html/Juso/
├── main.py                    # 진입점 (기존 유지)
├── core/                      # 공통 코어
│   ├── __init__.py
│   ├── config.py              # 설정 관리
│   ├── registry.py            # 기능 모듈 자동 등록/발견
│   ├── base_widget.py         # 위젯 베이스 클래스
│   └── events.py              # 이벤트 버스/시그널
├── shared/                    # 공통 유틸/위젯
│   ├── __init__.py
│   ├── widgets/               # 재사용 위젯 (로그, 테이블, 체크리스트 등)
│   └── utils/
├── automation/                # 브라우저 자동화 공통
│   ├── __init__.py
│   ├── registry.py            # 사이트별 어댑터 등록
│   ├── base.py                # 베이스 자동화 클래스
│   └── adapters/              # 사이트별 어댑터 (gov24, registry, wetax 등)
├── features/                  # 기능별 모듈 (플러그인 구조)
│   ├── __init__.py
│   ├── registry_extractor/    # 인터넷등기소 등기부등본
│   │   ├── __init__.py
│   │   ├── widget.py          # UI 위젯 (버튼, 폼, 리스트)
│   │   ├── logic.py           # 비즈니스 로직
│   │   ├── api.py             # API 연동
│   │   └── config.py          # 전용 설정
│   ├── registration_fee/      # 등기신청수수료
│   ├── wetax/                 # 위택스 등록면허세
│   ├── registration_cost/     # 등기비용 계산
│   └── court_documents/       # 법원 제출 서류 자동화 (통합)
│       ├── __init__.py
│       ├── base_template.py   # 템플릿 베이스
│       ├── checklist_widget.py # 공통 체크리스트 위젯
│       ├── indemnification/   # 인도명령 신청서
│       ├── transfer_registration/ # 낙찰이전등기촉탁
│       ├── additional_cancellation/ # 추가말소
│       ├── mortgage_cancellation/ # 근저당말소
│       └── general_transfer/  # 일반 매매이전
├── ui_main.py                 # 메인 윈도우 (기존 → features 로드하도록 리팩토링)
├── settings_dialog.py
├── auth_dialog.py
├── updater.py
├── config.json.example
├── saved_targets.json
├── work_log.json
├── DEVELOPMENT_LOG.md
└── TODO.md
```

> **핵심 원칙**: 
> 1. **기능 = 디렉토리** (자기완결형)
> 2. **메인 UI = 런처** (features/ 하위 위젯 동적 로드)
> 3. **공통 코드 = core/shared/automation** (중복 제거)
> 4. **신규 기능 추가 = features/ 하위 디렉토리 생성 + registry 등록만 하면 끝**

---

## 🎨 UI/UX 개선 상세 가이드 (참고)
| 항목 | 세부 내용 |
|------|-----------|
| **아이콘** | 16×16 ~ 256×256 `.ico` / 512×512 `.png` / `.icns` — 앱 아이덴티티 색상/심볼 통일 |
| **테마** | `QApplication.setStyleSheet` 또는 `qdarktheme`/`qt-material` 활용 — 다크/라이트 토글 지원 |
| **타이포그래피** | 시스템 폰트(한국어: Pretendard/Noto Sans KR) + 크기/행간 통일 |
| **컴포넌트** | `shared/widgets/`에 공통 버튼, 카드, 테이블, 입력필드, 토스트, 스피너 등 디자인 시스템화 |
| **피드백** | 로딩 오버레이, 진행률, 성공/에러 토스트, 툴팁, 컨텍스트 메뉴 일관 적용 |
| **레이아웃** | `QSplitter`/`QStackedWidget` 활용 — 리사이즈 대응, 사이드바 접기/펼치기 |
| **접근성** | 키보드 네비게이션(Tab 순서), 고대비 모드, 포커스 표시 명확화 |