# BAT-010 Implementation ## Plan summary BAT-010 implements the confirmed dcy-010 Phase 0~3 scope by extracting application services, SQLite infrastructure, and thin MCP/Streamlit adapter seams while preserving legacy import paths and response contracts. ## Changed files - `jarca_ledger_mcp/service.py` - `jarca_ledger_mcp/db.py` - `jarca_ledger_mcp/server.py` - `jarca_ledger_mcp/application/__init__.py` - `jarca_ledger_mcp/application/shared.py` - `jarca_ledger_mcp/application/system_services.py` - `jarca_ledger_mcp/application/asset_account_services.py` - `jarca_ledger_mcp/application/transaction_report_services.py` - `jarca_ledger_mcp/application/import_transfer_services.py` - `jarca_ledger_mcp/application/categorization_services.py` - `jarca_ledger_mcp/infrastructure/__init__.py` - `jarca_ledger_mcp/infrastructure/sqlite/__init__.py` - `jarca_ledger_mcp/infrastructure/sqlite/connection.py` - `jarca_ledger_mcp/infrastructure/sqlite/schema.py` - `jarca_ledger_mcp/infrastructure/sqlite/migrations.py` - `jarca_ledger_mcp/adapters/__init__.py` - `jarca_ledger_mcp/adapters/mcp/__init__.py` - `jarca_ledger_mcp/adapters/mcp/server.py` - `jarca_ledger_mcp/adapters/streamlit/__init__.py` - `jarca_ledger_mcp/adapters/streamlit/service_gateway.py` - `dashboard/app.py` - `docs/discovery/dcy-010_20260702_backend-core-layering-mcp-adapter-realignment.md` - `docs/project-structure.md` - `docs/runtime-flows.md` - `docs/srs/index.md` - `docs/srs/Non-Functional/req-013_backend-core-layering-sqlite-infrastructure-service-facade-compatibility.md` - `docs/srs/Interface/req-014_mcp-streamlit-adapter-seam-realignment-contract-preserving-gateway.md` - `docs/batches/index.md` - `docs/batches/bat-010_20260703_backend-core-layering-phase-0-3/index.md` - `docs/batches/bat-010_20260703_backend-core-layering-phase-0-3/planning.md` - `docs/batches/bat-010_20260703_backend-core-layering-phase-0-3/design.md` - `docs/batches/bat-010_20260703_backend-core-layering-phase-0-3/implementation.md` - `docs/batches/bat-010_20260703_backend-core-layering-phase-0-3/verification.md` ## Execution log - 2026-07-03 00:15 KST: BAT-010 standard batch scaffold and REQ-013/REQ-014 문서를 생성하고 승인 상태로 정리했다. - 2026-07-03 00:17 KST: `service.py` giant implementation을 application modules로 분리하고 top-level facade compatibility / monkeypatch proxy를 추가했다. - 2026-07-03 00:17 KST: `db.py` responsibilities를 `infrastructure/sqlite`로 분리하고 기존 init/commit/rollback semantics를 유지하는 shim을 추가했다. - 2026-07-03 00:18 KST: MCP adapter package, Streamlit gateway, baseline docs를 반영하고 regression fixes(`SCHEMA_VERSION import`, `db()` init semantics, underscore helper imports, service monkeypatch proxy)를 정리했다. ## Validation - `python -m py_compile jarca_ledger_mcp/*.py jarca_ledger_mcp/application/*.py jarca_ledger_mcp/infrastructure/sqlite/*.py jarca_ledger_mcp/adapters/mcp/*.py jarca_ledger_mcp/adapters/streamlit/*.py dashboard/app.py` → PASS - `pytest -q` → PASS (`42 passed, 4 skipped`) - `hermes mcp test jarca-ledger` → PASS (`Connected`, `Tools discovered: 56`) - Browser smoke: synthetic fixture DB(`/tmp/fixture.sqlite3`)로 Streamlit `요약`과 `자산/마감` 페이지 렌더 확인, console JS errors 없음. ## Remaining risks / follow-up notes - Phase 4+ write/import/advanced workflow의 더 세밀한 domain/service 분리는 아직 TODO다. - Streamlit gateway는 현재 필요한 surface만 노출하지만, 후속 phase에서 page/domain 기준으로 더 세분화할 수 있다. - application modules는 여전히 큰 편이므로 후속 phase에서 deeper repository/use-case split이 필요하다.