CSV export 가능 여부: 가능합니다. 현재 자료는 이미 CSV 형식이며, 공개 Pages에 원본 파일을 올리면 다운로드 링크를 바로 붙일 수 있습니다. 다만 직원 실명·학력·자격증 보유 내역이 포함되어 있어 원본 전체 공개는 별도 확인 후 켜는 것이 안전합니다.
위 export는 공개 가능한 스키마/소스 맵만 내려받습니다. 실제 데이터(실명 포함)는 아래에서 비밀번호 입력 후 조회·다운로드할 수 있습니다.
sample_ver 원가계산서 DB 설계 · 총액 검증
Issue #40에서 진행 중인 원가계산서 DB 설계입니다. 총액 경로는 단가대비표 -> 내역서 -> 집계표 -> 원가계산서 -> 결과 흐름을 기준으로 검증했습니다.
| 검증 셀 | 수식 | Excel 캐시값 | DB 후보값 | 차이 | 상태 |
|---|---|---|---|---|---|
원가계산서!E34 | E31+E32+E33 | 123,387,460 | 123,387,460 | 0 | pass |
결과!J10 | 원가계산서!E34 | 123,387,460 | 123,387,460 | 0 | pass |
총액 규칙: MIN(D7,H7,J7)처럼 일부 비교 대상이 빈 셀인 경우, 빈 셀을 0으로 계산하지 않고 Excel처럼 제외해야 총액이 일치합니다.
실제 값 보기 · 다운로드
비밀번호 없이도 각 테이블의 스키마(컬럼 구조)는 볼 수 있습니다. 실제 값 조회와 원본 CSV 다운로드는 비밀번호 입력 후에만 가능합니다. 비밀번호는 메인 페이지의 문서 다운로드 비밀번호와 동일합니다.
테이블 보기 >
employee · 직원기본정보.csv 실명 포함 41행
직원 기본 정보 테이블입니다. 공개 화면에서는 실명 전체 덤프 대신 컬럼 구조와 행 수만 표시합니다.
| 컬럼 | 설명 | 키/제약 | CSV 컬럼 |
|---|---|---|---|
employee_id | 직원 식별자 | Primary Key | employee_id |
name | 직원명 | NOT NULL, 개인정보 | name |
dept | 소속/부서 | NOT NULL | dept |
title | 직위 | NOT NULL | title |
education · 직원정보_학력.csv 실명·학력 포함 73행
직원별 학력 정보 테이블입니다. employee_id로 직원 기본 정보와 연결됩니다.
| 컬럼 | 설명 | 키/제약 | CSV 컬럼 |
|---|---|---|---|
education_id | 학력 행 식별자 | Primary Key, 자동 ID 대상 | education_id |
employee_id | 직원 식별자 | FK → employee.employee_id | employee_id |
name | 직원명 | 개인정보, 표시용 CSV 컬럼 | name |
level | 학력 수준 | - | level |
degree | 학위 | - | degree |
school | 학교 | 개인정보 가능 | school |
faculty | 학부/학과 | - | faculty |
major | 전공 | - | major |
note | 비고 | - | note |
keco_major | KECO 대분류 | 마이그레이션 컬럼 | keco_major |
keco_minor | KECO 소분류 | 마이그레이션 컬럼 | keco_minor |
employee_cert · 자격증보유.csv 실명·자격증 포함 148행
직원별 보유 자격증 매핑 테이블입니다. 추천/요건 검토에서 핵심 연결 테이블입니다.
| 컬럼 | 설명 | 키/제약 | CSV 컬럼 |
|---|---|---|---|
employee_id | 직원 식별자 | Composite PK, FK → employee | employee_id |
name | 직원명 | 개인정보, 표시용 CSV 컬럼 | name |
cert_code | 자격증 식별자 | Composite PK, FK → cert_master | cert_code |
cert_name | 자격증명 | 표시용 CSV 컬럼 | cert_name |
acquired_at | 취득일 | - | acquired_at |
registered_at | 등록일 | - | registered_at |
expires_at | 만료일 | - | expires_at |
status | 상태 | CSV 보강 컬럼 | status |
cert_master · 자격증마스터.csv 공개 가능성 높음 102행
자격증별 분류, 설명, 수행 가능 업무와 영향도 기준입니다.
| 컬럼 | 설명 | 키/제약 | CSV 컬럼 |
|---|---|---|---|
cert_code | 자격증 식별자 | Primary Key | cert_code |
cert_name | 자격증명 | NOT NULL | cert_name |
l1_category | 대분류 | - | l1_category |
l2_category | 중분류 | - | l2_category |
costing_use | 원가 산정/검증 활용 설명 | - | costing_use |
description | 자격증 설명 | - | description |
performable_work | 수행 가능 업무 | - | performable_work |
influence | 영향도 | CHECK 1~5 | influence |
license_type | 자격 유형 | - | license_type |
evidence_type | 증빙 유형 | - | evidence_type |
license_grade | 등급 | - | license_grade |
keywords | 검색 키워드 | - | keywords |
ministry | 소관 부처 | - | ministry |
issuer | 시행/발급 기관 | - | issuer |
work_code_master · 업무분류마스터.csv 공개 가능성 높음 66행
업무분류 코드와 산정/검증 기준, 담당 부서·담당자, 관련 법령을 관리합니다.
| 컬럼 | 설명 | 키/제약 | CSV 컬럼 |
|---|---|---|---|
work_code | 업무분류 식별자 | Primary Key | work_code |
l1 | 대분류 | NOT NULL | l1 |
l2 | 중분류 | NOT NULL | l2 |
l3 | 소분류 | - | l3 |
task_type | 업무 유형 | CHECK 산정/검증 | task_type |
classification_basis | 분류 기준 | - | classification_basis |
dept | 관리 부서 | - | dept |
owner | 담당자 | 개인명 포함 가능 | owner |
applied_keywords | 적용 키워드 | - | applied_keywords |
classification_note | 분류 근거 설명 | - | classification_note |
guidelines | 관련 지침 | - | guidelines |
related_laws | 관련 법령 | - | related_laws |
work_code_cert_map · 업무분류자격증매핑.csv 공개 가능성 높음 102행
자격증을 행으로, 업무분류 코드를 열로 둔 영향도 매트릭스입니다. DB 내부에서는 work_code + cert_code 조합으로 저장됩니다.
| 컬럼 묶음 | 설명 | DB 저장 방식 |
|---|---|---|
cert_code, cert_name | 자격증 식별자와 이름 | cert_master와 연결 |
holder_count | 현재 보유 인원 수 | 화면/내보내기용 집계 값 |
WORK-... 열 66개 | 업무분류별 영향도 값, 1~5 또는 빈 값 | work_code_cert_map(work_code, cert_code, influence) |
assoc_register · 협회등록현황_2026-06-19.xlsx 엑셀 · 실명 가능
엔지니어링협회 등록 현황 엑셀 자료(2026-06-19)입니다. 아래 컬럼 구조(스키마)는 비밀번호 없이 볼 수 있고, 실제 값 조회와 원본 엑셀 다운로드는 비밀번호 입력 후 가능합니다.
| 컬럼 | 설명 |
|---|---|
보험 | 보험 가입 여부 |
이름 | 직원명 (개인정보) |
소속 | 소속 부서 |
직책 | 직책 |
명함 | 명함 제작/보유 |
출입증 | 출입증 발급 |
방위사업 신원조사 | 방위사업 신원조사 진행/결과 |
엔지니어링협회(기존) | 엔지니어링협회 기존 등록 |
엔지니어링협회(신규) | 엔지니어링협회 신규 등록 |
건설인협회(기존) | 건설인협회 기존 등록 |
건설인협회(신규) | 건설인협회 신규 등록 |
소프트웨어협회(기존) | 소프트웨어협회 기존 등록 |
소프트웨어협회(신규) | 소프트웨어협회 신규 등록 |
sample_ver_cost_db · 원가계산서 DDD 스키마 총액 검증 완료 20테이블
(E)sample_원가계산보고서ver1.xlsx.xlsx의 수식 연계를 DB로 옮기기 위한 PostgreSQL 설계 초안입니다.
| 테이블 | 역할 | 총액/수식과의 연결 |
|---|---|---|
cost_estimate | 원가계산서 Aggregate root | 프로젝트·발주처·원본 workbook 경로를 보관 |
cost_estimate_revision | 계산 버전 | total_cost에 최종 총액 후보값 저장 |
workbook_sheet, workbook_cell | 원본 Excel 추적 | 시트·셀·수식·캐시값의 출처 보존 |
cost_line, sheet_line_projection | 도메인 행과 Excel 표시 행 분리 | 내역서/집계표 행 금액을 canonical 행과 표시 행으로 나눔 |
reference_price_item, reference_price_quote, applied_price | 단가 기준정보 | 단가대비표 선택 단가를 DB 기준정보로 승격 |
unit_cost_item, unit_cost_component | 일위대가 구조 | 일위대가표 -> 일위대가목록 -> 내역서 금액 연결 |
rate_rule_set, rate_rule, indirect_cost_charge | 비율·경비 규칙 | 보험료, 일반관리비, 이윤 등 비율 계산 규칙 보관 |
calculation_policy, formula_definition, formula_dependency | 수식 정책·의존성 그래프 | Excel 수식을 DB 계산 정책과 dependency graph로 추적 |
calculated_value_snapshot | 계산값 스냅샷 | 도메인 객체별 산출값을 시점별로 보관 |
cost_total_component | 총액 중간값 검증 | 원가계산서!E31:E34 등 총액 구성 셀의 Excel/DB 값 비교 |
cost_total_check | 최종 총액 검증 | 결과!J10 == 원가계산서!E34 비교 결과 저장 |
아래 20개 테이블을 하나씩 펼쳐 스키마를 보고, 실제 값 보기 · 엑셀 다운로드 · 검색을 할 수 있습니다. 워크북 구조·수식·총액검증 기반 테이블, cost_line, unit_cost_item, unit_cost_component는 실제 값이 채워져 있고(비밀번호 불필요·공개 설계데이터), 나머지 10개 정규화 도메인 테이블은 "설계 전용"으로 표시됩니다. 엑셀 다운로드는 sample.xlsx로 저장됩니다.
cost_estimate · 원가계산서 Aggregate root 설계
원가계산서 최상위 객체. 프로젝트·발주처·원본 workbook 경로와 상태를 보관합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
estimate_code | text | NOT NULL, UNIQUE |
title | text | NOT NULL · 원가계산서 제목 |
client_name | text | 발주처 |
standard_name | text | 기준/표준명 |
basis_date | date | 기준일 |
source_workbook_path | text | NOT NULL · 원본 Excel 경로 |
status | text | 기본 draft |
created_at, updated_at | timestamptz | 생성·수정 시각 |
cost_estimate_revision · 계산 버전 설계
원가계산서의 계산 버전. total_cost에 최종 총액 후보값을 저장합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
estimate_id | uuid | FK → cost_estimate |
revision_no | integer | NOT NULL · 버전 번호 |
source_checksum | text | NOT NULL · 원본 체크섬 |
calculation_status | text | 기본 imported |
total_cost | numeric(18,0) | 최종 총액 |
vat_excluded | boolean | 부가세 제외 여부 |
created_at | timestamptz | UNIQUE(estimate_id, revision_no) |
workbook_sheet · 원본 Excel 시트 추적 실제값 24행
원본 workbook의 시트 목록과 역할(sheet_role)을 보존합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id | uuid | FK → cost_estimate_revision |
sheet_name | text | NOT NULL · 시트명 |
sheet_role | text | NOT NULL · 시트 역할(내역서/집계표 등) |
display_order | integer | UNIQUE(revision_id, sheet_name) |
workbook_cell · 원본 Excel 셀·수식·캐시값 실제값 14행
시트별 셀 주소·원본값·수식·캐시값을 추적해 도메인 객체와 연결합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
sheet_id | uuid | FK → workbook_sheet |
cell_address | text | NOT NULL · 셀 주소(예: E34) |
raw_value | text | 원본 값 |
formula_text | text | 수식 텍스트 |
value_type | text | 값 유형 |
domain_ref_type, domain_ref_id | text, uuid | 연결 도메인 객체 · UNIQUE(sheet_id, cell_address) |
cost_line · canonical 원가 행 실제값 56행
내역서/집계표의 행 금액을 표준(canonical) 원가 행으로 저장합니다(계층 구조).
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id | uuid | FK → cost_estimate_revision |
parent_id | uuid | FK → cost_line(자기참조) |
sheet_role, line_code, sort_order | text, text, integer | NOT NULL(sheet_role/sort_order) · 행 분류 |
item_name, specification, unit | text | 품명·규격·단위 |
quantity | numeric(18,6) | 수량 |
material_*, labor_*, expense_*, total_* | numeric | 재료/노무/경비/합계 단가·금액 |
note | text | 비고 |
sheet_line_projection · Excel 표시 행 read model 실제값
canonical 원가 행을 원본 Excel의 표시 행/셀 위치로 되돌리는 read model입니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id, sheet_id | uuid | FK → revision / workbook_sheet |
cost_line_id | uuid | FK → cost_line |
sheet_name, row_no | text, integer | NOT NULL · 표시 위치 |
row_group_code, display_label | text | 행 그룹·라벨 |
*_amount_cell | text | 재료/노무/경비/합계 금액 셀 주소 |
source_range, projection_json | text, jsonb | 출처 범위 · UNIQUE(revision_id, sheet_name, row_no) |
reference_price_item · 단가 기준 품목 설계
단가대비표의 기준 품목 마스터입니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
item_name | text | NOT NULL · 품명 |
specification, unit | text | 규격·단위 |
normalized_key | text | NOT NULL · 정규화 키 |
reference_price_quote · 단가 증빙(견적/물가지) 설계
품목별 단가 증빙(견적서·물가정보지 등)을 보관합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
price_item_id | uuid | FK → reference_price_item |
basis_month | date | NOT NULL · 기준 월 |
source_type | text | NOT NULL · 증빙 유형 |
source_name, vendor_name | text | 출처·업체명 |
quoted_unit_price | numeric(18,2) | 견적 단가 |
page_ref, evidence_ref, created_at | text, text, timestamptz | 페이지·증빙 참조 |
applied_price · 단가대비표 선택 단가 설계
여러 증빙 중 실제 적용한 단가와 선택 규칙을 기록합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id, price_item_id | uuid | FK → revision / reference_price_item |
selected_quote_id | uuid | FK → reference_price_quote |
selection_rule | text | NOT NULL · 선택 규칙 |
applied_unit_price | numeric(18,2) | NOT NULL · 적용 단가 |
source_cell_id | uuid | FK → workbook_cell |
unit_cost_item · 일위대가 항목 실제값 4행
일위대가표의 상위 항목입니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id | uuid | FK → cost_estimate_revision |
unit_cost_no | text | NOT NULL · 일위대가 번호 |
item_name | text | NOT NULL · 품명 |
specification, unit | text | 규격·단위 |
material_amount, labor_amount, expense_amount, total_amount | numeric(18,0) | 재료/노무/경비/합계 · UNIQUE(revision_id, unit_cost_no) |
unit_cost_component · 일위대가 구성 행 실제값 15행
일위대가 항목을 구성하는 세부 행입니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
unit_cost_item_id | uuid | FK → unit_cost_item |
sort_order | integer | NOT NULL · 순서 |
component_name, specification, unit | text | 구성명·규격·단위 |
quantity | numeric(18,6) | 수량 |
price_item_id | uuid | FK → reference_price_item |
*_unit_price, *_amount | numeric | 재료/노무/경비/합계 단가·금액 |
rate_rule_set · 비율 규칙 묶음 설계
보험료·일반관리비·이윤 등 비율 규칙의 묶음(버전)입니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
rule_set_code | text | NOT NULL · 규칙 묶음 코드 |
rule_set_name | text | NOT NULL · 묶음명 |
basis_date | date | 기준일 |
source_name, source_ref | text | 근거 출처 |
rate_rule · 비율 규칙(보험료/경비/이윤) 설계
비용 항목별 비율과 적용 조건·반올림 규칙을 보관합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
rule_set_id | uuid | FK → rate_rule_set |
cost_component_code | text | NOT NULL · 비용 항목 코드 |
base_amount_type | text | NOT NULL · 기준 금액 유형 |
condition_json | jsonb | 적용 조건 |
rate_percent | numeric(9,5) | NOT NULL · 비율(%) |
rounding_rule | text | 기본 trunc_0 |
indirect_cost_charge · 간접비 산출값 설계
비율 규칙을 적용해 산출한 간접비(경비·관리비·이윤 등) 금액입니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id | uuid | FK → cost_estimate_revision |
rate_rule_id | uuid | FK → rate_rule |
component_code | text | NOT NULL · 항목 코드 |
base_amount, rate_percent, calculated_amount | numeric | NOT NULL · 기준액·비율·산출액 |
source_sheet_name, source_cell_address | text | 출처 시트·셀 |
calculation_policy · 수식 계산 정책 설계
Excel 수식을 DB 계산식으로 옮기기 위한 정책(버전 관리)입니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
policy_code, policy_name | text | NOT NULL · 정책 코드·이름 |
version_no | integer | NOT NULL · UNIQUE(policy_code, version_no) |
formula_kind | text | NOT NULL · 수식 종류 |
excel_formula_template, calc_expression | text | Excel 템플릿·DB 계산식 |
parsed_ast_json | jsonb | 파싱된 AST |
rounding_rule, status, created_at | text, text, timestamptz | 기본 status draft |
formula_definition · 수식 정의 실제값 595행
시트·셀별 원본 수식과 연결된 계산 정책·대상 도메인을 정의합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id | uuid | FK → cost_estimate_revision |
sheet_name, cell_address | text | NOT NULL · 수식 위치 |
formula_text, formula_kind | text | NOT NULL · 수식·종류 |
policy_id | uuid | FK → calculation_policy |
calc_expression, target_domain_type, target_domain_id | text/uuid | UNIQUE(revision_id, sheet_name, cell_address) |
formula_dependency · 수식 의존성 그래프 실제값 527행
수식이 참조하는 다른 셀(의존성)을 그래프로 추적합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
formula_id | uuid | FK → formula_definition |
depends_on_sheet, depends_on_address | text | NOT NULL · 의존 셀 |
dependency_kind | text | 기본 cell |
calculated_value_snapshot · 계산값 스냅샷 설계
도메인 객체별 산출값을 시점별로 보관합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id | uuid | FK → cost_estimate_revision |
domain_type, domain_id | text, uuid | NOT NULL · 대상 도메인 |
value_name | text | NOT NULL · 값 이름 |
numeric_value, text_value | numeric, text | 산출값 |
source_formula_id, created_at | uuid, timestamptz | FK → formula_definition |
cost_total_component · 총액 중간값 검증 실제값 10행
원가계산서!E31:E34 등 총액 구성 셀의 Excel 캐시값과 DB 계산값을 비교합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id | uuid | FK → cost_estimate_revision |
component_code | text | NOT NULL · 구성 코드 |
sheet_name, cell_address, formula_text | text | NOT NULL(sheet/cell) · 출처 |
excel_cached_amount, db_calculated_amount, amount_difference | numeric(18,0) | Excel/DB/차이 |
verification_status, sort_order, created_at | text, integer, timestamptz | 기본 status pending · UNIQUE(revision_id, component_code) |
cost_total_check · 최종 총액 검증 실제값 3행
결과!J10 == 원가계산서!E34 양변을 비교한 최종 총액 검증 결과를 저장합니다.
| 컬럼 | 타입 | 키·제약·설명 |
|---|---|---|
id | uuid | Primary Key |
revision_id | uuid | FK → cost_estimate_revision |
check_code | text | NOT NULL · 검증 코드 |
left_* | text/numeric | 좌변 시트·셀·수식·Excel/DB 금액 |
right_* | text/numeric | 우변 시트·셀·수식·Excel/DB 금액 |
amount_difference, verification_status | numeric, text | 차이 · 기본 status pending |
evidence_json, created_at | jsonb, timestamptz | 증빙 · UNIQUE(revision_id, check_code) |
테이블 처리 함수 보기 >
| 함수/상수 | 연결되는 테이블 | 용도 |
|---|---|---|
init_db() / SCHEMA | 전체 | SQLite 테이블 생성 및 기존 DB 마이그레이션 진입점 |
SEED_PLAN / seed_from_csv() | 전체 | CSV를 FK 순서에 맞춰 부모 테이블부터 적재 |
KNOWN_TABLES | 전체 | 앱에서 허용하는 테이블 목록 |
table_meta() | 전체 | PK, 필수 컬럼, 자동 ID 컬럼 메타데이터 산출 |
fk_options() | FK 보유 테이블 | FK 컬럼을 드롭다운으로 보여주기 위한 부모 PK 목록 제공 |
fetch_all() | 전체 | FK 부모 라벨을 붙여 화면 표시용 DataFrame 생성 |
save_diff() | 전체 | st.data_editor의 삭제/수정/추가 diff를 트랜잭션으로 반영 |
AUTO_ID_RULES | education | education_id를 EDU-001 형식으로 자동 생성 |
fetch_mapping_matrix() | 매핑 테이블 | 업무분류 x 자격증 영향도 매트릭스 화면 표시 |
fetch_mapping_export() / fetch_mapping_grid() | 매핑 테이블 | CSV/XLSX 내보내기용 매핑 데이터 생성 |
save_mapping_matrix_diff() | work_code_cert_map | 매트릭스 셀 변경을 INSERT/UPDATE/DELETE로 반영 |
fetch_scoring_data() / fetch_employee_set_summary() | 직원, 자격증, 업무분류 매핑 | 추천/조직도 요약에 필요한 조인 데이터 조회 |