finance 영역 DB 스키마
재무 관리 영역의 Firestore 컬렉션 스키마 모음. 노임대장, 장비대, 자재비, 외주비, 기타 비용 등.
컬렉션 맵
companies/{company_id}/sites/{site_id}/
├─ labor_ledger/{YYYYMM} # 노임대장 (월별 배열 문서)
│
├─ equipments/{equipment_id} # 현장 장비 (site 영역과 공유, 장비대용 필드 포함)
│ ├─ contracts/{contract_id} # 임대 계약 (기간/금액)
│ └─ attendance/{YYYYMM} # 월별 가동 공수
│
├─ material_supplier/{supplier_id} # 자재 공급자
│ └─ material_cost/{YYYYMMDD} # 일별 매입 라인
│
├─ subcontracts/{subcontract_id} # 외주 계약
│
└─ other_expenses/{expense_id} # 기타 비용 카테고리
└─ items/{item_id} # 기타 비용 개별 지출
문서 목록
| 컬렉션 | 스키마 문서 | 설명 |
|---|---|---|
labor_ledger/{YYYYMM} |
labor_ledger.md | 월별 노임대장 (근로자별 공수/임금) |
equipments/{eid} + contracts + attendance |
equipment_cost.md | 장비 정보 + 임대 계약 + 월별 가동 공수 |
material_supplier/{sid} + material_cost/{YYYYMMDD} |
material_cost.md | 자재 공급자 + 일별 매입 내역 (공급가액/세액 검증) |
subcontracts/{id} |
subcontracts.md | 외주 계약 (계약명/업체/기간/금액/세액) |
other_expenses/{id} + items/{id} |
other_expenses.md | 기타 비용 카테고리 + 개별 지출 (카테고리 집계 포함) |
공통 패턴
집계 필드
재무 관련 상위 문서(material_supplier, other_expenses)는 하위 라인이 추가/수정/삭제될 때 트랜잭션으로 다음 필드가 재계산됩니다:
total_cost: 전체 공급가액 합계total_tax: 전체 세액 합계year_costs,year_tax: 연도별 집계 ({ "2026": 1234000 })month_costs,month_tax: 월별 집계 ({ "202604": 120000 })
첨부파일 연결
모든 재무 문서는 files 컬렉션의 related_doc_id로 파일 메타를 연결합니다:
- 공급자/카테고리 단위:
related_doc_id == supplier_id / expense_id - 라인 단위:
related_doc_id == item_id / subcontract_id등
상세는 system/_schema/files.md 참조.
숫자 검증
material_cost는 라인별로 다음 수식이 성립해야 저장됩니다:
어긋나면 VALIDATION_011 에러가 발생합니다.
다른 영역과의 관계
- site:
labor_ledger,equipments,material_supplier,other_expenses모두 현장 하위 컬렉션. 현장 삭제 시 함께 정리. site/_schema/README.md - system (files): 세금계산서/영수증/계약서 등 첨부는 공통 파일 메타 사용. system/_schema/files.md