companies/{company_id}/settings 스키마
회사 레벨의 설정 문서 모음. 각
doc_id가 별도의 설정 범주를 나타냅니다. 회사 생성(_company_registration) 시tags,site_tags,drive_usage,ai_credit4개 문서가 자동 생성됩니다.
저장 위치
문서 목록
| doc_id | 설명 | 생성 시점 |
|---|---|---|
tags |
회사 공통 태그 (직급/직종/일당/인력공급처/수수료) | 회사 생성 시 자동 |
site_tags |
현장 태그 (site_state.py에서 관리) | 회사 생성 시 자동 |
drive_usage |
드라이브 사용량/한도 | 회사 생성 시 자동 |
ai_credit |
AI 크레딧 잔액 | 회사 생성 시 자동, 미존재 시 AI 호출 시 기본값으로 자동 생성 |
company_attendance |
회사 출근 설정 (attendence.py에서 조회) |
참조만, 생성 로직은 현재 코드에 없음 |
tags
직급/직종/일당/인력공급처/수수료를 한 문서에 통합 저장. _set_positions, _set_fields, _set_custom에서 부분 업데이트됨.
필드
| 필드 | 타입 | 설명 |
|---|---|---|
positions |
string[] | 직급 목록 (예: ["대표", "부장", "과장", ...]) |
fields |
string[] | 직종/분야 목록 (예: ["사무관리", "안전관리자", ...]) |
wage_rate |
number[] | 일당 목록 (fields와 동일 길이, 인덱스 대응) |
labor_suppliers |
string[] | 인력 공급처 목록 (예: ["직영", "한빛인력", ...]) |
commission |
object[] | 인력공급처별 수수료 (labor_suppliers와 동일 길이, 인덱스 대응) |
commission 서브오브젝트
| 필드 | 타입 | 설명 |
|---|---|---|
type |
string | "amount" (정액) | "percent" (정률, 0~1 사이의 비율) |
value |
number | 값 |
초기값 (회사 생성 시)
{
"positions": ["대표", "부장", "과장", "대리", "주임", "사원"],
"fields": ["사무관리", "안전관리자", "유도원", "비계공", "도장공"],
"wage_rate": [140000, 120000, 130000, 140000, 150000],
"labor_suppliers": ["직영", "한빛인력", "가야인력"],
"commission": [
{ "type": "amount", "value": 0 },
{ "type": "amount", "value": 20000 },
{ "type": "percent", "value": 0.1 }
]
}
사용 방식
_change_company_member_data에서field로wage_rate계산 시 인덱스 매칭fields/positions에 없는 값이 들어오면SETTING_002/SETTING_003에러field=None이면 "없음"으로 저장,wage_rate=0
site_tags
회사가 관리하는 현장들의 태그 목록(일종의 라벨). 현장 등록 시 필터/분류용.
필드
| 필드 | 타입 | 설명 |
|---|---|---|
site_tags |
string[] | 현장 태그 목록 |
초기값
관리 위치
con24/site/site_state.py의 _set_site_tags에서 업데이트됨 (현장 모듈 소속).
drive_usage
파일 드라이브의 용량 사용량을 회사/현장 단위로 추적. tools/cloudflare.py에서 업로드/삭제 시 firestore.Increment로 원자적 갱신.
필드
| 필드 | 타입 | 설명 |
|---|---|---|
total_bytes |
number | 회사 전체 사용 바이트 |
trash_bytes |
number | 휴지통 용량 |
limit_bytes |
number | 회사 전체 용량 한도 (기본 10GB = 10737418240) |
sites |
map | 현장별 사용량 맵 (sites.{site_id}.total_bytes, sites.{site_id}.trash_bytes) |
초기값
구조 예시
{
"total_bytes": 1048576,
"trash_bytes": 10240,
"limit_bytes": 10737418240,
"sites": {
"site_1": { "total_bytes": 524288, "trash_bytes": 0 },
"site_2": { "total_bytes": 524288, "trash_bytes": 10240 }
}
}
회사 단위 업로드는 site_id="__company__" 키로 기록됩니다.
ai_credit
AI 기능 호출 크레딧 잔액. ai/credit.py에서 관리.
필드
| 필드 | 타입 | 설명 |
|---|---|---|
balance |
number | 잔여 크레딧 |
초기값
크레딧 비용 (AI_CREDIT_COSTS)
| feature | 비용 |
|---|---|
material_document_extraction |
3000 |
generate_risk_assessment |
800 |
generate_task_risk_assessment |
800 |
ai_text_processing |
500 |
동작
check_ai_credit(company_id, feature): 잔액이 비용 미만이면CREDIT_001에러. 문서 미존재 시DEFAULT_CREDIT=100000으로 자동 생성.deduct_ai_credit(company_id, feature):firestore.Increment(-cost)로 차감.
company_attendance
회사 출근 설정. attendence.py의 _company_check_in_request에서 조회만 수행되고, 현재 코드 경로에서 명시적 생성/초기값 로직은 확인되지 않음 (참조 전용).