PROJECT MASTER ver 4.0 데이터베이스 테이블 명세서
PostgreSQL (ver4 스키마) 물리 설계 명세 및 컬럼 바인딩 상세 설명서
본 명세서는 ver4_init_schema.sql 물리 DDL 기준 및 ver.2 통합 관리자 시스템 설계를 전적으로 준수하여 작성된 전체 19개 테이블(ver 2.0 추가
테이블 5개 포함)의 스펙 및 맵 구성서입니다. 개발 및 테스트 용도의 분기 테이블(_test_tb_project, _test_tb_data,
_test_tb_log, _test_tb_click_log)은 원본 테이블과 물리적 스키마(컬럼명, 데이터 타입)가 100% 동일하게 복사되어
구동됩니다.
1. 사용자 계정 및 프로젝트 권한 영역
tb_user 사용자 마스터
사용자 계정 정보 관리
시스템 로그인 계정 정보를 관리하며 Sentinel SSO(단일 로그인) 연동 정보, 즐겨찾기 북마크 및 임직원 직급 등의 정보를
보관합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| user_id | VARCHAR(50) | Primary Key | 사용자 로그인 ID (예: test_user, admin) |
| user_nm | VARCHAR(100) | Not Null | 사용자 실명 |
| user_pw | VARCHAR(255) | Not Null | 단방향 암호화 처리된 계정 패스워드 |
| company | VARCHAR(100) | - | 소속 기관/회사 명칭 (예: 한맥기술) |
| dept | VARCHAR(100) | - | 소속 부서/팀 명칭 (예: 개발본부) |
| position | VARCHAR(50) | - | 임직원 직급 (예: 부장, 차장) |
| "group" | VARCHAR(50) | - | 계정 그룹 (예: dev, super, general) |
| bookmark | TEXT | - | 개인화 즐겨찾기/북마크 폴더 JSON 설정 구문 |
| is_resigned | BOOLEAN | Default: FALSE | 퇴사 여부 및 계정 강제 잠금 토글 |
| create_date | TIMESTAMP | Default: NOW() | 계정 등록 일시 |
tb_project 프로젝트 마스터
현장/공구 기본 마스터 정의
수행 중이거나 관리 대상인 토목/건축 현장 및 공구 프로젝트 리스트를 정의합니다.
※
※
_test_tb_project 테이블은 본 테이블의 스키마를 복사하여 구동합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| project_id | VARCHAR(50) | Primary Key | 프로젝트 고유 식별 코드 (예: PM_TEST_01) |
| user_id | VARCHAR(50) | FK (tb_user) | 해당 프로젝트 총괄 책임 관리자 ID |
| category | VARCHAR(50) | - | 프로젝트 분류 카테고리 (tdc, gpd, bimproject, overseas) |
| project_nm | VARCHAR(255) | Not Null | 현장 공식 명칭 (예: 한국 가상 교량 건설 프로젝트) |
| short_nm | VARCHAR(100) | - | 프로젝트 축약명 (예: 가상교량) |
| project_type | VARCHAR(50) | - | 공개 구분 분류 유형 (예: public, private) |
| step | VARCHAR(50) | - | 현장 진행 단계 (예: 기획, 설계, 시공) |
| emp_map | VARCHAR(255) | - | 현장 인력 배치도 정적 이미지 스토리지 키 |
| flyto | VARCHAR(255) | - | 3D Cesium 카메라 자동 이동용 고도/좌표 문자열 |
| show_in_index | BOOLEAN | Default: TRUE | 메인 포털 인덱스 화면 노출 여부 |
| is_active | BOOLEAN | Default: TRUE | 프로젝트 운영 활성화 여부 (비활성 시 사용자 진입 차단) |
| banner_notice | TEXT | - | 대시보드 상단 텍스트 마르퀴 띠배너 공지사항 내용 |
| lon | DOUBLE PRECISION | - | 지도상 대표 중심 위치 경도(Longitude) |
| lat | DOUBLE PRECISION | - | 지도상 대표 중심 위치 위도(Latitude) |
| height | DOUBLE PRECISION | - | 3D 지도 대표 카메라 초기 고도(Height) |
| overview | BOOLEAN | Default: TRUE | 메뉴 LNB '과업개요' 탭 활성화 여부 |
| official_doc | BOOLEAN | Default: TRUE | 메뉴 LNB '공문' 탭 활성화 여부 |
| gsim | BOOLEAN | Default: TRUE | 메뉴 LNB '위치기반모델' 탭 활성화 여부 |
| storage_byte | BIGINT | Default: 10 | 현장별 스토리지 최대 제한 용량 (기본 10GB 단위 저장) |
| create_date | TIMESTAMP | Default: NOW() | 프로젝트 레코드 최초 등록 일시 |
tb_permission 프로젝트별 사용자 권한 등급
현장별 세부 접근 제어
개별 프로젝트 내에서 유저가 행사할 수 있는 권한 레벨 상수를 복합 기본키로 식별하여 저장합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| project_id | VARCHAR(50) | PK / FK (tb_project) | 프로젝트 마스터 외래키 참조 (종속 삭제 연동) |
| user_id | VARCHAR(50) | PK / FK (tb_user) | 사용자 마스터 외래키 참조 (종속 삭제 연동) |
| lev | INTEGER | Not Null Default: 1 | 권한 등급값 (Owner=255, Sub-Master/관리=7, Worker/쓰기=4, Viewer/읽기=1) |
tb_user_setting 사용자 개인화 설정
사용자 환경 옵션 저장
공문 분석 탭 등에서 활용되는 AI 요약 옵션 및 유저의 편의 설정 상태값을 기록합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| project_id | VARCHAR(50) | PK / FK (tb_project) | 프로젝트 마스터 외래키 참조 (종속 삭제 연동) |
| user_id | VARCHAR(50) | PK / FK (tb_user) | 사용자 마스터 외래키 참조 (종속 삭제 연동) |
| doc_option_instructions | BOOLEAN | Default: FALSE | 공문 AI 요약 시 지시 사항 적용 여부 플래그 |
| doc_option_summary | BOOLEAN | Default: FALSE | 공문 AI 요약 결과 자동 팝업 노출 여부 플래그 |
2. 프로젝트 대시보드 및 과업 세부 명세 영역
tb_overview 대시보드 과업 개요 정보
프로젝트 기본 정보 대시보드 표출 데이터
공사 계약 범위, 수주 정보, 발주기관, PM 성명, 시차 오프셋 등 과업개요 메인화면에 시각화될 종합 데이터를 포괄 저장합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| project_id | VARCHAR(50) | Primary Key / FK (tb_project) | 프로젝트 마스터 외래키 참조 (종속 삭제 연동) |
| project_no | VARCHAR(100) | - | 사업 공식 계약 번호 (예: PRJ-2026-001) |
| business_purpose | TEXT | - | 사업 추진 목적 및 핵심 의의 |
| location_img | VARCHAR(255) | - | 현장 위치도 이미지 파일의 스토리지(MinIO) 보관 key |
| overview_img | VARCHAR(255) | - | 현장 개요도 이미지 파일의 스토리지(MinIO) 보관 key |
| continent | VARCHAR(50) | - | 대상 현장 소속 대륙 (예: 아시아, 중동) |
| performance_area | VARCHAR(100) | - | 실제 과업 수행 행정 구역/지역 |
| reference_area | VARCHAR(100) | - | 과업 관련 보조 참조 구역/지역 |
| facility_size_overview | TEXT | - | 현장 시설물 구조 규모에 대한 종합 요약 구문 |
| task_nm_kr | VARCHAR(255) | - | 국문 공식 과업 명칭 (예: 가상교량 건설 관리 용역) |
| task_nm_en | VARCHAR(255) | - | 영문 공식 과업 명칭 |
| task_purpose | TEXT | - | 과업 수행 목적 명세 |
| task_type | VARCHAR(100) | - | 용역/설계 과업의 형태 구분 |
| client | VARCHAR(255) | - | 공식 발주기관/발주처 사명 (예: 서울지방국토관리청) |
| financial | VARCHAR(255) | - | 사업 재원 금융 조달방식 및 은행명 |
| financial_country | VARCHAR(100) | - | 보증서 발급 금융 참여 보증 국가 |
| bid | VARCHAR(100) | - | 입찰 방식 형태 (예: 종합심사낙찰제) |
| selection_method | VARCHAR(100) | - | 업체 선정 세부 규정 방식 |
| joint_contract_nm | TEXT | - | 공동수급 컨소시엄 구성 도급사 명칭 리스트 |
| joint_contract_shareratio | VARCHAR(100) | - | 도급 지분율 (예: 한맥 60%, 공동 40%) |
| contract_amount | NUMERIC(20, 2) | - | 원화 기준 계약 총액 |
| foreign_currency_amount | NUMERIC(20, 2) | - | 외화 기준 계약 총액 (달러, 유로화 등) |
| contract_date | VARCHAR(50) | - | 사업 최초 계약 체결 일자 |
| commencement_date | VARCHAR(50) | - | 실제 공사/용역 착수 일자 (Commencement Date) |
| original_completion_date | VARCHAR(50) | - | 사업 최초 계약상 준공 예정일 |
| completion_date | VARCHAR(50) | - | 변경/실제 최종 준공 일자 |
| projectmanager_nm | VARCHAR(100) | - | 총괄 책임 PM 인명 (예: 홍길동 PM) |
| manager_nm | VARCHAR(100) | - | 부책임자/담당자 실무 관리 직원명 |
| nation_nm | VARCHAR(100) | - | 현장 건설 국가 명칭 (예: 한국) |
| client_origin | VARCHAR(100) | - | 발주처 국적 및 출처 구분 |
| support_department | VARCHAR(100) | - | 본사 과업 지원 주관 부서 |
| support_manager_nm | VARCHAR(100) | - | 지원부서 담당 실무 책임자명 |
| representative_company | VARCHAR(255) | - | 대표 공동수급 주간사명 |
| order_size_krw | NUMERIC(20, 2) | - | 원화 수주 규모 금액 |
| order_size_usd | NUMERIC(20, 2) | - | 달러(USD) 기준 수주 규모 금액 |
| scheuled_commencement_date | VARCHAR(50) | - | 예정되어 있는 착수 일자 |
| contract_period | VARCHAR(100) | - | 계약 이행 기간 범위 텍스트 |
| abbreviated_name | VARCHAR(100) | - | 과업의 단축된 대외 명칭 |
| department | VARCHAR(100) | - | 주관 실행 부서 |
| data_size | TEXT | Default: '[0]' | JSON 배열 규격 폴더별 누적 용량 메타데이터 |
| issue | TEXT | - | 사업 추진 간 직면한 주요 공사 쟁점 및 민원 이슈 |
| currency_code | VARCHAR(10) | - | 적용 외화 통화 단위 기호 (예: USD) |
| joint_contract | TEXT | - | 공동 도급 지분율 계약 세부 내용 |
| lead_company | VARCHAR(255) | - | 컨소시엄 연대 대표 회사명 |
| nation_code | VARCHAR(10) | - | 국가 표준 식별 코드 (예: KR, US) |
| nation_offset | VARCHAR(10) | - | 대시보드 헤더의 실시간 타이머 계산용 시차 정보 (예: +09:00) |
tb_facility_size 시설 상세 규모
현장 구조물 세부 스펙 보관
건설 대상 교량, 터널, 도로 등 세부 공정물들의 상세 스펙 수치(연장, 두께, 면적 등)를 Key-Value 형태로 정규화하여
관리합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| facility_id | SERIAL | Primary Key | 시설 항목 일련번호 |
| project_id | VARCHAR(50) | FK (tb_project) | 프로젝트 마스터 외래키 참조 (종속 삭제 연동) |
| title | VARCHAR(100) | Not Null | 스펙 분류 대제목 (예: 교량 스펙, 터널 스펙) |
| key | VARCHAR(100) | Not Null | 스펙 명칭 키값 (예: 총 연장, 최대 폭, 차선 수) |
| value | VARCHAR(255) | - | 스펙의 실제 규격 수치값 (예: 1,200 m, 4차로) |
tb_task_history 과업 변경 및 중단 이력
용역 일정 변동 히스토리
공사 지연, 민원 해결에 따른 일시 중단 일자, 준공계 제출 지연 등 계약 기간 및 과업 지시 상의 변경 조치 이력을 순차 기록합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| task_history_id | SERIAL | Primary Key | 이력 기록용 고유 식별 번호 |
| project_id | VARCHAR(50) | FK (tb_project) | 프로젝트 마스터 외래키 참조 (종속 삭제 연동) |
| task_order | INTEGER | - | 변경 차수 일련번호 (1, 2, 3...) |
| suspension_date | VARCHAR(50) | - | 과업/공사 일시 중단 일자 (예: 2026-03-01) |
| suspension_reason | TEXT | - | 공사 일시 중단에 따른 행정적/물리적 상세 사유 |
| resumption_date | VARCHAR(50) | - | 과업/공사 재개 처리 일자 (예: 2026-04-15) |
| consultation_content | TEXT | - | 발주청 및 관계 기관과의 협의 사항 회의록 |
| change_date | VARCHAR(50) | - | 최종 계약서 서류 상의 일자 변경일 |
tb_calendar_event 캘린더 일정 및 국가 공휴일
공정 캘린더용 스케줄 보관
개별 현장별 주요 주요 마일스톤 회의 일정(착수, 중간, 준공보고 등)과 함께, 해외 현장의 경우 시차 계산 및 공휴일 표시를 위한 기초
데이터 테이블입니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| calendar_event_id | SERIAL | Primary Key | 일정 레코드 고유 번호 |
| project_id | VARCHAR(50) | FK (tb_project) | 프로젝트 마스터 외래키 참조 (종속 삭제 연동) |
| type | VARCHAR(50) | Not Null | 일정 속성 종류 구분 (예: schedule, holiday) |
| title | VARCHAR(255) | Not Null | 일정/휴일 타이틀 제목 (예: 1차 중간보고회, 신정) |
| content | TEXT | - | 일정에 관한 세부 수행 목적 및 장소 설명 |
| color | VARCHAR(20) | - | 캘린더 표출용 배경색 Hex 코드 (예: #ff0000) |
| start_date | VARCHAR(50) | Not Null | 일정 시작일 YYYY-MM-DD |
| end_date | VARCHAR(50) | Not Null | 일정 종료일 YYYY-MM-DD |
| nation_nm | VARCHAR(100) | - | 소속 공휴일 지정 대상 국가명 (예: 한국) |
3. 파일 아카이브 및 백그라운드 압축 다운로드 영역
tb_data 아카이브 산출물 마스터
아카이브 폴더 트리 및 파일 구조 제어
가상 폴더 트리 구조와 파일 업로드/변환 관련 핵심 메타 정보를 저장합니다. 1행이 하나의 파일 또는 하나의 폴더를 의미합니다.
※
※
_test_tb_data 테이블은 본 테이블의 스키마를 복사하여 구동합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| data_id | SERIAL | Primary Key | 산출물 고유 식별 번호 |
| project_id | VARCHAR(50) | FK (tb_project) | 소속 프로젝트 ID (종속 삭제 연동) |
| user_id | VARCHAR(50) | FK (tb_user) | 최초 등록(업로드)한 사용자 ID |
| create_date | TIMESTAMP | Not Null Default: NOW() | 최초 파일 업로드/폴더 생성 일시 |
| data_permission | INTEGER | Default: 1 | 산출물 개별 조회 접근 제한 등급 레벨 상수값 |
| bucket | VARCHAR(100) | - | 스토리지 저장 대상 버킷명 (예: pm-test-01) |
| is_folder | BOOLEAN | Default: FALSE | 폴더 여부 (true=폴더, false=파일) |
| is_removed | BOOLEAN | Default: FALSE | 가상 휴지통 보관 상태 유무 플래그 (true 시 화면에서 배제) |
| data_depth | INTEGER | Default: 1 | 계층 트리의 깊이 단계 범위 (1 ~ 8-depth) |
| ext | VARCHAR(50) | - | 파일 포맷 확장자명 (예: dwg, pdf, xlsx) |
| path1 ~ path8 | VARCHAR(100) | - |
가상 계층별 경로 및 파일명의 문자열 매핑. (예: path1='01_설계도서', path2='교량일반도.dwg' 등) |
| mod_date | TIMESTAMP | - | 최근 구조/명칭 수정 처리 완료 일시 |
| mod_user_id | VARCHAR(50) | - | 최근 변경 조치를 수행한 사용자 ID |
| mod_activity | VARCHAR(100) | - | 최근에 발생한 수정 행동 성격 코드 (예: renameTarget) |
| data_size | BIGINT | Default: 0 | 파일 용량 크기 (Byte 단위) |
| memo | TEXT | - | 해당 파일에 붙여진 텍스트 메모 기입란 |
| storage_type | VARCHAR(20) | - | 스토리지 물리 분류 (ONPREMISE / CLOUD) |
| object_key | TEXT | - | 실제 MinIO/S3 내의 고유 보관 object key |
| preview_key | TEXT | - | 변환된 미리보기 및 썸네일용 1Page PDF 보관 key |
| popup_key | TEXT | - | 통합 문서 뷰어 팝업용 전체 페이지 PDF 보관 key |
| ver | INTEGER | Default: 1 | 개정 버전 차수 카운팅 (버전 업로드 지원용) |
| folder_type | VARCHAR(50) | - | 폴더 성격 종류 구분 (예: 보안폴더, 일반폴더) |
| thumbnail_size | BIGINT | Default: 0 | 미리보기 썸네일 이미지 크기 (Byte) |
| thumbnail_key | TEXT | - | 썸네일 이미지 파일(png 등) 스토리지 보관 key |
| lon | DOUBLE PRECISION | - | 지도 마커 연계 경도 (GSIM 모듈용) |
| lat | DOUBLE PRECISION | - | 지도 마커 연계 위도 (GSIM 모듈용) |
| height | DOUBLE PRECISION | - | 3D 지도 공간 정보 좌표 높이값 (GSIM 모듈용) |
| author_id | VARCHAR(50) | - | 원본 산출물 최초 제작자 계정 ID |
| author_nm | VARCHAR(100) | - | 원본 산출물 최초 제작자 성명 |
| last_folder_act_date | TIMESTAMP | - | 해당 폴더 내부의 최종 변경 활동 발생 시각 |
| popup_size | BIGINT | Default: 0 | 뷰어용 전체 페이지 PDF 용량 (Byte) |
| preview_size | BIGINT | Default: 0 | 미리보기용 1페이지 PDF 용량 (Byte) |
| ai_summary | TEXT | - | Gemini API 기반 생성된 문서 개요 AI 자동 요약문 |
tb_download_folder 폴더 백그라운드 압축 이력
비동기 BullMQ 압축 작업 상태 관리
대량 폴더/파일을 일괄 ZIP 압축 다운로드할 때 생성되는 스토리지 임시 보관 정보 및 링크 만료 일자를 기록합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| download_id | SERIAL | Primary Key | 압축 작업 일련번호 |
| project_id | VARCHAR(50) | FK (tb_project) | 대상 프로젝트 식별 아이디 |
| user_id | VARCHAR(50) | FK (tb_user) | 압축 처리를 위임한 사용자 ID |
| status | VARCHAR(50) | - | 비동기 압축 큐 상태 단계 (예: processing, completed, failed) |
| zip_key | TEXT | - | 생성 완료된 임시 압축파일의 스토리지 보관 key |
| expire_date | TIMESTAMP | - | 임시 압축파일 보관 디스크 소거를 위한 만료시각 (24시간 등) |
| made | BOOLEAN | Default: FALSE | 비동기 압축 파일 빌드 준비 완료 여부 플래그 |
| path | TEXT | - | 압축을 개시한 원본 대상 가상 폴더의 최상위 경로 |
| name | TEXT | - | 압축된 파일에 바인딩된 기본 표출 명칭 (폴더명.zip) |
| create_date | TIMESTAMP | Default: NOW() | 다운로드 요청 등록 일시 |
4. 수신 및 발신 공식 공문서 관리 영역
tb_official_doc_file 공문서 상세 및 AI 요약
공문 수발신 대장 및 메타데이터 정보
공문서의 제목, 날짜, 수발신처를 관리하며, OCR 파싱 및 Gemini AI가 수행한 주요 의사결정 요약 텍스트를 구조적으로 통합
보관합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| doc_id | INTEGER | Primary Key | 공문서 일련번호 (시퀀스 seq_tb_official_doc_file 연동) |
| project_id | VARCHAR(50) | FK (tb_project) | 소속 프로젝트 ID (종속 삭제 연동) |
| uploader | VARCHAR(50) | FK (tb_user) | 공문서 업로더 계정 ID |
| create_date | TIMESTAMP | Default: NOW() | 공문서 파일 업로드 등록 일시 |
| permission | INTEGER | Default: 1 | 공문서에 부여된 읽기/조회 보안 권한 등급 |
| bucket | VARCHAR(100) | - | 스토리지 저장 버킷명 |
| file_path | TEXT | - | 공문 원본 파일이 업로드된 물리 스토리지 보관 경로 |
| ext | VARCHAR(50) | - | 원본 공문 파일 확장자 (소문자 규격) |
| doc_direction | VARCHAR(20) | - | 공문 교환 방향성 구분 (수신 / 발신) |
| doc_number | VARCHAR(100) | - | 공식 접수/발송용 공문 문서 번호 (예: 서울국토-2026-012) |
| doc_date | VARCHAR(50) | - | 공문서 상의 기안/체결 일자 (YYYY-MM-DD 형식) |
| recipient_org | VARCHAR(255) | - | 공문 수신 수석 기관 명칭 (예: 한맥기술) |
| recipient_org_abbr | VARCHAR(100) | - | 수신 기관 약어 (예: 한맥) |
| sender_org | VARCHAR(255) | - | 공문 발송 원천 기관 명칭 (예: 서울지방국토관리청) |
| sender_org_abbr | VARCHAR(100) | - | 발송 기관 약어 (예: 서울국토청) |
| doc_title | TEXT | - | 공문서 상의 원본 기안문 제목 |
| doc_title_summary | TEXT | - | Gemini AI가 함축 요약한 직관적 제목 |
| doc_content_summary | TEXT | - | Gemini AI가 핵심 조작 및 지시 사항 중심으로 파싱한 본문 요약문 |
| doc_related_docs | TEXT | - | 공문 내부 연관/참조 처리된 다른 공문서 번호 내역 |
| doc_type | VARCHAR(50) | - | 공문서 종류 구분 (예: 공문, 지시문, 보고서) |
| doc_category | VARCHAR(100) | - | 행정 업무별 세부 서류 분류 카테고리 |
| attachment_title | TEXT | - | 공문과 동봉 첨부된 첨부파일 제목 리스트 |
| attachment_count | INTEGER | Default: 0 | 첨부된 보조 문서 파일 개수 카운트 |
| doc_memo | TEXT | - | 담당자 기입 관리용 요약 비고 메모 |
| doc_manager | VARCHAR(100) | - | 해당 공문 책임 지정 처리 실무자 성명 |
| doc_label | VARCHAR(100) | - | 공문 태그/분류 라벨 |
| mod_date | TIMESTAMP | - | 공문 메타 정보 최근 변경 완료 시각 |
| mod_user_id | VARCHAR(50) | - | 공문 정보를 마지막으로 변경한 유저 ID |
| mod_activity | VARCHAR(100) | - | 마지막 변경 조치 내용 코드 |
| data_size | BIGINT | Default: 0 | 원본 공문 PDF 파일 용량 (Byte) |
| storage_type | VARCHAR(20) | - | 스토리지 타겟 (ONPREMISE / CLOUD) |
| object_key | TEXT | - | 실제 스토리지 내 공문 원본 보관 key |
| preview_key | TEXT | - | 1-Page 요약 썸네일 미리보기용 PDF key |
| popup_key | TEXT | - | 전체 뷰어 확인용 PDF key |
| ver | INTEGER | Default: 1 | 문서 이력 버전 |
| group_id | VARCHAR(50) | - | 동일 묶음 발송 공문서 그룹 번호 ID |
| is_aiused | BOOLEAN | Default: FALSE | Gemini AI 자동 분석/요약 수행 완료 여부 플래그 |
| popup_size | BIGINT | Default: 0 | 뷰어용 전체 페이지 PDF 용량 (Byte) |
| preview_size | BIGINT | Default: 0 | 미리보기용 1페이지 PDF 용량 (Byte) |
tb_official_doc_company 공문 교환 회사 기관 목록
공문 수발신 참여 주체 목록
개별 프로젝트에 공문서를 주고받는 정부 기관, 지자체, 감리단, 도급사 등의 업체 리스트와 성격을 지정 보관합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| company_id | SERIAL | Primary Key | 업체 일련번호 (복합 PK 사용) |
| project_id | VARCHAR(50) | PK / FK (tb_project) | 프로젝트 마스터 외래키 참조 (종속 삭제 연동) |
| company_name | VARCHAR(255) | Not Null | 공식 업체 및 기관 명칭 (예: 서울지방국토관리청) |
| company_type | VARCHAR(100) | - | 기관 성격 구분 (예: 발주처, 도급사, 감리단) |
| company_role | VARCHAR(100) | - | 공문 매핑상의 수발신 역할군 구분 (예: 기준, 상대기관) |
5. 시스템 모니터링 및 활동 감사 로그 영역
tb_log 파일 조작 감사 로그
보안 감사 활동 추적
파일 업로드, 다운로드, 폴더 삭제 등 데이터 위/변조 가능 활동을 발생 IP, 일시와 함께 추적 기록하는 보안 로그 테이블입니다.
※
※
_test_tb_log 테이블은 본 테이블의 스키마를 복사하여 구동합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| log_id | SERIAL | Primary Key | 로그 감사 고유 번호 |
| project_id | VARCHAR(50) | FK (tb_project) | 이벤트가 발생한 소속 프로젝트 ID (종속 삭제 연동) |
| activity | VARCHAR(100) | Not Null | 보안 감사 대상 활동 종류 식별자 (예: uploadData_file, createFolder, removeTarget) |
| user_id | VARCHAR(50) | FK (tb_user) | 활동을 유발시킨 사용자 계정 ID |
| user_ip | VARCHAR(50) | - | 행위를 유발한 접속지 IP 주소 (IPv4/IPv6) |
| log_date | TIMESTAMP | Default: NOW() | 활동 유발 저장 기록 시각 |
| path_arr | TEXT[] | - | 조작한 파일들의 가상 경로 리스트 배열 (예: {"/01_설계도서/구조계산서.pdf"}) |
| data_id_arr | INTEGER[] | - | 조작한 대상 파일의 data_id 일련번호 배열 (예: {15, 16}) |
tb_click_log 사용자 UI 요소 클릭 로그
사용자 행동 흐름 통계 수집
통합 문서 뷰어 진입, 썸네일 노출 요청, 탭 전환 등의 사용자 비활동/활동 클릭 이벤트를 통계 목적으로 수집합니다.
※
※
_test_tb_click_log 테이블은 본 테이블의 스키마를 복사하여 구동합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| click_log_id | SERIAL | Primary Key | 클릭 이력 고유 ID |
| project_id | VARCHAR(50) | FK (tb_project) | 클릭이 터진 프로젝트 식별 ID (종속 삭제 연동) |
| activity | VARCHAR(100) | Not Null | 수집된 클릭 활동 액션 코드 (예: viewThumbnail, tabChange) |
| user_id | VARCHAR(50) | FK (tb_user) | 클릭을 행한 사용자 ID |
| user_ip | VARCHAR(50) | - | 사용자 접속 단말 IP 주소 |
| log_date | TIMESTAMP | Default: NOW() | 클릭 활동 기록 시각 |
| path_arr | TEXT[] | - | 클릭에 해당하는 산출물 파일 경로 배열 |
| data_id_arr | INTEGER[] | - | 클릭된 파일의 일련번호 (data_id) 배열 |
6. 통합 관리자 대시보드 추가 테이블
code_master 공통 코드 대분류 마스터
공통 코드 대분류 그룹 관리
시스템 전반에서 활용되는 공통 코드의 대분류(분류 ID 및 명칭) 정보를 관리합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| main_code | VARCHAR(30) | Primary Key / Not Null | 대분류 분류 코드 식별자 (예: PROJECT_CATEGORY, USER_GROUP) |
| main_code_nm | VARCHAR(100) | Not Null | 대분류 분류 명칭 (예: 프로젝트 구분, 사용자 그룹) |
| use_yn | CHAR(1) | Default: 'Y' | 사용 여부 ('Y' / 'N') |
| rmk | VARCHAR(255) | - | 비고 및 대분류에 대한 부가 설명 |
code_detail 공통 세부 코드
공통 코드 소분류 세부 설정값 관리
대분류에 종속되는 세부 소분류 코드값 및 한글 코드명, 정렬 순서를 관리합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| main_code | VARCHAR(30) | PK / FK (code_master) | 대분류 분류 식별자 (종속 삭제 ON DELETE CASCADE 연동) |
| sub_code | VARCHAR(30) | PK / Not Null | 소분류 상세 코드값 (예: tdc, gpd, super, worker) |
| base_code | VARCHAR(61) | Not Null / UNIQUE | 대/소분류 접합 고유 코드 (main_code || '_' || sub_code 형태) |
| code_nm | VARCHAR(100) | Not Null | 상세 세부 코드 한글명 (예: 수퍼관리자, 일반작업자) |
| sort_ord | INTEGER | Default: 1 | 화면 및 그리드 노출 정렬 순서 |
| use_yn | CHAR(1) | Default: 'Y' | 사용 여부 ('Y' / 'N') |
| rmk | VARCHAR(255) | - | 비고 및 코드 상세 부가 설명 |
tb_system_policy 시스템 공통 자동 보존/삭제 정책
전체 현장 대상 글로벌 보존 임계치 통제
개별 프로젝트 단위 제어가 아닌 시스템 전체 공통으로 일괄 적용될 파일 삭제 보존 기준 임계치를 단일 레코드로 저장 관리합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| policy_id | SERIAL | Primary Key | 정책 설정 번호 |
| policy_key | VARCHAR(50) | UNIQUE / Not Null | 정책 설정 고유 식별 키 (예: GLOBAL_DELETE_POLICY) |
| limit_file_count | INTEGER | Not Null | 자동 보존할 최소 안전 유지 파일 개수 기준 (숫자) |
| limit_days | INTEGER | Not Null | 자동 보관/삭제 처리 기준 경과 보존 일수 (숫자) |
| is_active | BOOLEAN | Default: TRUE | 글로벌 정책 작동 활성화 여부 |
| upd_date | TIMESTAMP | Default: NOW() | 최종 정책 기준 변경 및 저장 시각 |
tb_banner_notice 실시간 배너 공지 이력
대시보드 배너 송출 및 공지이력 관리
각 프로젝트 현장(또는 전체)에 전송할 배너 공지 내용, 시작/종료일 및 송출 상태 이력을 보관합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| banner_id | SERIAL | Primary Key | 배너 공지 일련번호 |
| project_id | VARCHAR(50) | FK (tb_project) | 배너 송출 대상 프로젝트 식별자 (전체 프로젝트일 경우 'all' 기입) |
| reg_date | DATE | Not Null | 배너 공지 최초 등록/작성일 (임의 지정 가능) |
| start_date | DATE | Not Null | 공지 송출 시작 예정일 |
| end_date | DATE | Not Null | 공지 송출 종료 예정일 |
| notice_text | TEXT | Not Null | 흐르는 자막으로 출력될 배너 공지 내용 본문 |
| status_code | VARCHAR(61) | FK (code_detail) | 송출 상태 구분 코드 (NOTICE_STATUS_active, scheduled, expired) |
tb_auto_clean_log 배치 스케줄러 자동 삭제 처리 로그
정기 스케줄러 가동 감사 로그 보관
정기 배치 스케줄러 작동으로 스토리지 자동 청소가 구동되었을 때의 상세 처리 일시 및 결과를 보관합니다.
| 컬럼명 (Column) | 타입 (Type) | 제약조건 | 설명 및 바인딩 예시 |
|---|---|---|---|
| clean_log_id | SERIAL | Primary Key | 청소 처리 결과 고유 번호 |
| clean_date | TIMESTAMP | Default: NOW() | 배치 스케줄러 가동 성공 및 로그 저장 일시 |
| project_id | VARCHAR(50) | - | 청소 처리된 현장 ID (공통 정책 저장 이력일 시 'SYSTEM' 기입) |
| path | TEXT | - | 청소/삭제 처리가 수행된 아카이브 폴더 경로 |
| rule | TEXT | - | 당시 실행된 정책 기준(임계치 수량, 경과 기한) 요약 내용 |
| result | TEXT | - | 삭제된 총 파일 건수 및 디스크 회수 용량 등 결과 리포트 |