다크모드
Company 고정자산관리 — Backend Handoff
도메인 원칙
Company 자산은 회사가 소유·임차하고 직원이나 Office에 지급하는 비품이다. 시설 자산은 건물 공간·설비 운영의 원장이다. 두 aggregate를 하나의 테이블로 억지로 합치지 말고, 필요한 경우 안정적인 참조키로 연결한다.
권장 데이터 모델
company_assets
id,company_id,asset_no— Company 안에서 고유name,category,statuscurrent_office_id,current_location_id,current_assignee_idserial_numberpurchase_vendor_id,purchase_date,purchase_amountevidence_id,warranty_untiluseful_life_months,residual_value,depreciation_methoddisposed_at,disposal_amountversion,created_at,updated_at
company_asset_events
id,company_id,asset_idevent_type:created,assigned,moved,returned,repair,lost,disposed- 이전·이후
office_id,location_id,assignee_id occurred_at,memo,actor_id,idempotency_key
연결
purchase_id또는evidence_id: 매입·증빙 원자fixed_asset_id: 회계 고정자산 원장facility_asset_id: 실제로 동일한 시설 설비일 때만 선택 연결- 첨부파일은 private storage와 signed URL을 사용한다.
명령 계약
POST /company-assets: 자산 등록, Company별 자산번호 중복 방지POST /company-assets/{id}/events: 지급·이동·반납·처분 appendGET /company-assets: Office, 상태, 담당자, 유형, 검색어 필터와 cursor paginationGET /company-assets/{id}/events: 변경 이력GET /company-assets/depreciation-preview?asOf=: 회계 확정 전 예상치
모든 쓰기는 Company와 Office 권한을 다시 검증하고 idempotency key를 적용한다. 현재 상태 갱신과 이벤트 append는 하나의 트랜잭션으로 처리한다. 처분 자산의 이동, 다른 Company 직원에게 지급, 허용되지 않은 Office 이동은 서버에서 거부한다.
회계·구매 연결
- 구매 입고 또는 매입 확정은 자산 초안을 만들 수 있지만 자동으로 고정자산 전표를 확정하지 않는다.
- 감가상각 화면은 Preview와 Posted 상태를 분리한다.
- 처분 전표는 회계 승인 후 확정하고 자산 이벤트와 양방향 참조한다.
- 소프트웨어 정기구독은 비용·구독 계약이며, 자산화 기준을 충족한 항목만 고정자산에 연결한다.
보안·감사
- RLS 기준은
company_id와 Office grant다. - 자산번호·시리얼·담당자·금액 변경 전후 값을 감사로그에 남긴다.
- 삭제 대신 처분·취소 이벤트를 사용한다.
- 개인정보가 있는 지급 이력은 최소 권한과 보존기간 정책을 적용한다.