콘텐츠로 이동

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는 라인별로 다음 수식이 성립해야 저장됩니다:

supply_amount + tax == total
quantity * unit_price == total

어긋나면 VALIDATION_011 에러가 발생합니다.

다른 영역과의 관계

  • site: labor_ledger, equipments, material_supplier, other_expenses 모두 현장 하위 컬렉션. 현장 삭제 시 함께 정리. site/_schema/README.md
  • system (files): 세금계산서/영수증/계약서 등 첨부는 공통 파일 메타 사용. system/_schema/files.md