Add JH work data page and database

This commit is contained in:
2026-06-05 15:34:26 +09:00
commit c196a31e4a
58 changed files with 295313 additions and 0 deletions

11
.dockerignore Normal file
View File

@@ -0,0 +1,11 @@
.git
.venv
__pycache__
*.pyc
*.log
matching.db
csv
*.png
*.xlsx
*.txt
data

15
.env.example Normal file
View File

@@ -0,0 +1,15 @@
MYSQL_HOST=172.16.42.111
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=hanmacerp!
MYSQL_DB=jangheon_manhour
ERP_BASE_URL=http://erp.jangheon.co.kr/projt_mng
ERP_LOGIN_ID=g25001
ERP_LOGIN_PW=00000
INTRANET_BASE_URL=http://erp.jangheon.co.kr/intranet/
INTRANET_LOGIN_ID=G25001
INTRANET_LOGIN_PW=00000
PORT=8090

19
.gitignore vendored Normal file
View File

@@ -0,0 +1,19 @@
# Secrets
.env
gitea-api.txt
# Python / runtime
.venv/
__pycache__/
*.py[cod]
*.log
server.log
app.log
# OS / office temp files
.DS_Store
Thumbs.db
~$*.docx
# Local scratch
*.tmp

37
DEPLOY_DOCKER.md Normal file
View File

@@ -0,0 +1,37 @@
# Docker 배포 가이드
## 1) 준비
- 이 폴더에서 실행:
```bash
cd /home/hyein/jh-mh/장헌산업
```
- 환경파일 생성:
```bash
cp .env.example .env
mkdir -p data
```
## 2) 실행
```bash
docker compose up -d --build
```
## 3) 접속
- 로컬: `http://127.0.0.1:8090`
- 사내망: `http://<서버IP>:8090`
## 4) 로그/중지
```bash
docker compose logs -f
docker compose down
```
## 5) 업데이트
```bash
docker compose down
docker compose up -d --build
```
## 참고
- `data/matching.db`에 sqlite 캐시가 저장됩니다(컨테이너 재시작 후 유지).
- 실제 컨테이너 실행 컴퓨터에는 Docker(Desktop 또는 Engine)가 필요합니다.

19
Dockerfile Normal file
View File

@@ -0,0 +1,19 @@
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PORT=8090
WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py index.html detail-view.html detail-view-project.html ./
# matching.db는 볼륨으로 마운트해서 데이터 보존
VOLUME ["/app/data"]
EXPOSE 8090
CMD ["sh", "-c", "ln -sf /app/data/matching.db /app/matching.db 2>/dev/null || true; python3 app.py"]

1527
app.py Normal file

File diff suppressed because it is too large Load Diff

82163
csv/2005-2015.csv Normal file

File diff suppressed because it is too large Load Diff

14364
csv/2016.csv Normal file

File diff suppressed because it is too large Load Diff

17506
csv/2017.csv Normal file

File diff suppressed because it is too large Load Diff

19014
csv/2018.csv Normal file

File diff suppressed because it is too large Load Diff

12389
csv/2019.csv Normal file

File diff suppressed because it is too large Load Diff

13911
csv/2020.csv Normal file

File diff suppressed because it is too large Load Diff

677
csv/config.csv Normal file
View File

@@ -0,0 +1,677 @@
SysKey,Code,Name,CodeORName,Description,Note,orderno,field_address,lat_coordinate,lng_coordinate,Remark
CompanyCode,M,한맥기술,1,한맥,hanmaceng.co.kr,NULL,NULL,NULL,NULL,NULL
CompanyCode,T,포넥스에스앤티,2,포넥스,phonex.co.kr,NULL,NULL,NULL,NULL,NULL
CompanyCode,J,장헌산업,5,장헌,jangheon.co.kr,NULL,NULL,NULL,NULL,NULL
CompanyCode,Q,퇴사자,9,9,,NULL,NULL,NULL,NULL,NULL
EntryKindCode,1,설계직임원,NULL,NULL,,NULL,NULL,NULL,NULL,NULL
EntryKindCode,2,설계직경력,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
EntryKindCode,3,신입,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
EntryKindCode,4,감리직임원,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
EntryKindCode,5,감리직경력,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
EntryKindCode,6,계약직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
GroupCode,01,임원실,본사,임원실,,1,NULL,NULL,NULL,NULL
GroupCode,02,경영지원부,본사,경영지원,T02303,2,NULL,NULL,NULL,NULL
GroupCode_del,03,공무부,본사,공무,NULL,NULL,NULL,NULL,NULL,NULL
PositionCode,C1,부회장,임원,부회장,,1,NULL,NULL,NULL,NULL
PositionCode,C2,사장,임원,사장,NULL,2,NULL,NULL,NULL,NULL
PositionCode_del,C3,원장,임원,원장,NULL,3,NULL,NULL,NULL,NULL
PositionCode,C4,고문,임원,고문,NULL,5,NULL,NULL,NULL,NULL
PositionCode,C5,부사장,임원,부사장,NULL,6,NULL,NULL,NULL,NULL
PositionCode,C6,전무이사,임원,전무이사,NULL,7,NULL,NULL,NULL,NULL
PositionCode,C7,상무이사,임원,상무이사,NULL,8,NULL,NULL,NULL,NULL
PositionCode,C8,이사,임원,이사,NULL,9,NULL,NULL,NULL,NULL
PositionCode,E1,부장,직원,부장,NULL,11,NULL,NULL,NULL,NULL
PositionCode,E2,차장,직원,차장,NULL,15,NULL,NULL,NULL,NULL
PositionCode,E3,과장,직원,과장,NULL,16,NULL,NULL,NULL,NULL
PositionCode,E4,대리,직원,대리,NULL,18,NULL,NULL,NULL,NULL
PositionCode,E5,사원,직원,사원(5급),5급(대졸),19,NULL,NULL,NULL,NULL
PositionCode,E6,사원,직원,사원(6급),6급(전졸),20,NULL,NULL,NULL,NULL
PositionCode,E7,사원,직원,사원(7급),7급(고졸),21,NULL,NULL,NULL,NULL
ProjectCode,11,교영,1,11,교량영업,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,26a,기타,NULL,NULL,교휴-07,NULL,NULL,NULL,NULL,NULL
ProjectCode,13,시공,2,13,시공,NULL,NULL,NULL,NULL,NULL
ProjectCode,15,도연,3,14,도로,NULL,NULL,NULL,NULL,NULL
ProjectCode,16,구연,3,14,구조,NULL,NULL,NULL,NULL,NULL
ProjectCode,17,관리,4,,경영지원,NULL,NULL,NULL,NULL,NULL
UserStateCode,01,휴가,XX-교휴-04,"XX-교휴-04 (a)연차,오전반차,오후반차","오전반차,오후반차",1,NULL,NULL,NULL,NULL
UserStateCode,02,경유,해당프로젝트코드,"프로젝트코드 입력","근무시간에 포함",2,NULL,NULL,NULL,NULL
UserStateCode,03,출장,해당프로젝트코드,"프로젝트코드 입력","근무시간에 포함",3,NULL,NULL,NULL,NULL
UserStateCode,04,야근,해당프로젝트코드,"프로젝트코드 입력",철야,16,NULL,NULL,NULL,NULL
UserStateCode,05,훈련,XX-교휴-02,"XX-교휴-02 (a)예비군,(b)민방위,(c)기타",NULL,6,NULL,NULL,NULL,NULL
UserStateCode,06,교육,XX-교휴-01,"XX-교휴-01 (a)직무교육,(b)전문교육,(c)교양교육,(d)기타","근무시간에 포함",7,NULL,NULL,NULL,NULL
UserStateCode,07,경조,XX-교휴-04,"XX-교휴-04 (b)경조사","연차 일수에서 제외",13,NULL,NULL,NULL,NULL
UserStateCode,08,기타,XX-교휴-04,"XX-교휴-04 (c)특별휴가,(d)기타(보건휴가,출산휴가)","연차 일수에서 제외",8,NULL,NULL,NULL,NULL
UserStateCode,09,파견,해당프로젝트코드,"프로젝트코드 입력","근무시간에 포함",14,NULL,NULL,NULL,NULL
UserStateCode,10,대기,XX-교휴-03,"XX-교휴-03 (a)현장철수,(c)징계,(d)병가,(e)기타",NULL,12,NULL,NULL,NULL,NULL
UserStateCode,11,지각,XX-교휴-06,XX-교휴-06,지각(09시~10시이전),11,NULL,NULL,NULL,NULL
UserStateCode,12,유결,XX-교휴-06,XX-교휴-06,"유계결근 사용않음, 지각으로처리 및 휴가계 제출",10,NULL,NULL,NULL,NULL
UserStateCode,13,무결,XX-교휴-06,XX-교휴-06,"무계결근 사용않음, 지각으로처리 및 휴가계 제출",9,NULL,NULL,NULL,NULL
WorkPositionCode,1,입사,,NULL,근무위치,NULL,NULL,NULL,NULL,NULL
WorkPositionCode,2,파견,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPositionCode_del,3,현장,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
CompanyName,10,JANGHUN,"HANMAC,PILETECH,JANGHUN",,"Name에 인트라넷 사용 회사명",NULL,NULL,NULL,NULL,NULL
WorkPositionCode,9,퇴사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DetailJobCode,101,상세,NULL,"설계 상세 업무","상세 업무 코드",NULL,NULL,NULL,NULL,NULL
DetailJobCode,102,계획,NULL,"설계 준비 등 계획 관련 업무",,NULL,NULL,NULL,NULL,NULL
DetailJobCode,103,관리,NULL,"시간 또는 인력 관리등",,NULL,NULL,NULL,NULL,NULL
DetailJobCode,104,출장,NULL,"외출 현장조사 등",,NULL,NULL,NULL,NULL,NULL
DetailJobCode,105,수주,NULL,"수주 활동 관련 업무",,NULL,NULL,NULL,NULL,NULL
DetailJobCode,106,기타,NULL,,,NULL,NULL,NULL,NULL,NULL
PositionPayCode,E1,233191,226374,부장,NULL,NULL,NULL,NULL,NULL,NULL
PositionPayCode,E2,205704,193648,차장,NULL,NULL,NULL,NULL,NULL,NULL
PositionPayCode,E3,179713,175178,과장,NULL,NULL,NULL,NULL,NULL,NULL
PositionPayCode,E4,152613,145904,대리,NULL,NULL,NULL,NULL,NULL,NULL
PositionPayCode,E5,121748,121748,사원,"E5,E6,E7,E8",NULL,NULL,NULL,NULL,NULL
ProjectStateCode,10,수행중,NULL,NULL,"프로젝트 수행상태",NULL,NULL,NULL,NULL,NULL
ProjectStateCode,11,수주활동중,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectStateCode,12,수행중지,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionPayCode,C8,391600,283139,임원,Name=일반/CodeORName=감리,NULL,NULL,NULL,NULL,NULL
UserStateCode,14,휴직,XX-교휴-03,"XX-교휴-03 (b)휴직",,15,NULL,NULL,NULL,NULL
ProjectStateCode,13,준공완료,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,10,지자체,NULL,지방자치단체,"경력관리 발주처 검색어",NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,11,국토청,ql,국토관리청,NULL,NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,12,민자,NULL,민간투자사업,NULL,NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,13,도공,NULL,한국도로공사,NULL,NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,14,공사,NULL,공사,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,10,고속도로,NULL,NULL,"경력관리 공종",NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,11,국도,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,12,일반,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,13,교량,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,14,터널,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,15,민자,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,16,소각장,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,17,매립장,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,18,폐기물,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,19,환경기타,NULL,NULL,"경력관리 공종",NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,20,영향평가,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,21,사후환경영향조사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,22,사전환경성검토,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,23,교통,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,24,도시계획,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,25,조경,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,26,상하수도,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,27,수자원,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,28,감리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,29,안전진단,NULL,NULL,"경력관리 공종",NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,30,항만및해안,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectEPartCode,31,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectStepCode,10,기본계획,NULL,NULL,"경력관리 설계단계",NULL,NULL,NULL,NULL,NULL
ProjectStepCode,11,타당성조사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectStepCode,12,기본설계,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectStepCode,13,실시설계,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectStepCode,14,블랭크,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,10,도로및공항,NULL,NULL,"사업분야 코드 부여",NULL,NULL,NULL,NULL,NULL
ProjectPartCode,11,토목구조,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,12,토질및기초,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,13,교통,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,14,항만및해안,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,15,철도,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,16,수자원개발,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,17,상하수도,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,18,농어업토목,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,19,건축구조,NULL,NULL,"사업분야 코드 부여",NULL,NULL,NULL,NULL,NULL
ProjectPartCode,20,도시계획,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,21,조경,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,22,건축기계,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,23,건축전기,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,24,토목품질,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,25,건설안전,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,26,측지,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,27,유체기계,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,28,발송배전,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,29,대기,NULL,NULL,"사업분야 코드 부여",NULL,NULL,NULL,NULL,NULL
ProjectPartCode,30,수질,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,31,소음진동,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,32,폐기물,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,33,PM,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,34,시공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,35,환경,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectPartCode,36,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPartCode,10,설계관리감독,NULL,NULL,담당업무,NULL,NULL,NULL,NULL,NULL
WorkPartCode,11,사업책임,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPartCode,12,분야책임,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPartCode,13,설계,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPartCode,14,평가,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPartCode,15,조사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,10,연장,NULL,NULL,과업의범위-ITEM,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,11,폭원,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,12,설계속도,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,13,교량,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,14,터널,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,15,사업면적,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,16,매립면적,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,17,시설면적,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,18,시설용량,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,19,환경영향평가비,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectItemCode,20,교통영향평가비,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectUnitCode,10,Km,NULL,NULL,과업의범위-UNIT,NULL,NULL,NULL,NULL,NULL
ProjectUnitCode,11,Km/hr,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectUnitCode,12,m,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectUnitCode,13,m2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectUnitCode,14,ton/일,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectUnitCode,15,천원,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PaymentKindCode,10,기성,NULL,NULL,수금현황,NULL,NULL,NULL,NULL,NULL
PaymentKindCode,11,선금,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PaymentKindCode,12,준공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OutsidePartCode,10,원자재,NULL,NULL,외주관리-분야,NULL,NULL,NULL,NULL,NULL
OutsidePartCode,11,부자재,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OutsidePartCode,12,설비,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OutsidePartCode,13,건설하도급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OutsidePartCode,14,안전용품,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OutsidePartCode,15,인쇄,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
bizform,JHF-2-3,휴가계,02;1;관리자:임원:RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-2-15,연장근무확인서,02;1;임원:RECEIVE:담당:임원:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-2-1,근태신청서,02;1;관리자:임원:RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
Team,3,3팀(공무),공무팀,NULL,NULL,NULL,NULL,NULL,NULL,_P13302_
CrossBeamMethodCode,10,"C-RC-0.30 x L",NULL,"프리캐스트가로보, 형고=0.30m",NULL,NULL,NULL,NULL,NULL,NULL
CrossBeamMethodCode,20,"C-RC-0.35 x L",NULL,"프리캐스트가로보, 형고=0.35m",NULL,NULL,NULL,NULL,NULL,NULL
CrossBeamMethodCode,30,"C-RC-0.65 x L",NULL,"프리캐스트가로보, 형고=0.65m",NULL,NULL,NULL,NULL,NULL,NULL
CrossBeamMethodCode,40,"C-RC-0.95 x L",NULL,"프리캐스트가로보, 형고=0.95m",NULL,NULL,NULL,NULL,NULL,NULL
CrossBeamMethodCode,50,"C-RC-1.25 x L",NULL,"프리캐스트가로보, 형고=1.25m",NULL,NULL,NULL,NULL,NULL,NULL
PannelMethodCode,10,"D1-PCH-3.0 x L",NULL,"프리덱 PC 너트적용형",NULL,NULL,NULL,NULL,NULL,NULL
PannelMethodCode,20,"D1-PCB-3.0 x L",NULL,"프리덱 강봉노출형",NULL,NULL,NULL,NULL,NULL,NULL
PannelMethodCode,30,"D1-RC-3.0 x L",NULL,"프리덱 R.C 연장 3.0m",NULL,NULL,NULL,NULL,NULL,NULL
PannelMethodCode,40,"D1-RC-3.6 x L",NULL,"프리덱 R.C 연장 3.6m",NULL,NULL,NULL,NULL,NULL,NULL
PannelMethodCode,50,"D2-RC-2.4 x L",NULL,"미관 연장 2.4m",NULL,NULL,NULL,NULL,NULL,NULL
PannelMethodCode,60,"D3-RC-2.4 x L",NULL,"중분대패널 연장 2.4m",NULL,NULL,NULL,NULL,NULL,NULL
ProcessStaffCode,20,시공계획서,검토,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,10,공사중,시공중,"공사현황,생산현황",,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,11,공사중(Segmantal),NULL,"공사현황,생산현황",NULL,NULL,NULL,NULL,NULL,NULL
DegreeCode,10,박사,NULL,NULL,경력관리-최종학력,NULL,NULL,NULL,NULL,NULL
DegreeCode,11,석사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DegreeCode_del,12,학사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DegreeCode_del,13,전문학사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DegreeCode,14,고졸,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
TechnicalLevelCode,10,특급,NULL,NULL,경력관리-기술등급,NULL,NULL,NULL,NULL,NULL
TechnicalLevelCode,11,고급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
TechnicalLevelCode,12,중급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
TechnicalLevelCode,13,초급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionCode,E8,계약직,직원,계약직,NULL,23,NULL,NULL,NULL,NULL
ProjectCode,18,교휴,4,NULL,교육/휴가등,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,11a,발주처,NULL,NULL,교영-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,11b,시공사,NULL,NULL,교영-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,11c,설계사,NULL,NULL,교영-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,11d,기타,NULL,NULL,교영-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12a,조사/협의,NULL,NULL,"교영-02,교영-03,교영-04,교영-05,교영-06,교영-07",NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12b,"설게,검토",NULL,NULL,"교영-02,교영-03,교영-04,교영-05,교영-06,교영-07",NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12c,견적,NULL,NULL,"교영-02,교영-03,교영-04,교영-05,교영-06,교영-07",NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12d,기타,NULL,NULL,"교영-02,교영-03,교영-04,교영-05,교영-06,교영-07",NULL,NULL,NULL,NULL,NULL
ProjectSubCode,13a,"계약,기성",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,13b,시공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,13c,노무,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,13d,자재,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,13e,안전,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,13f,A/S,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,13g,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,14a,조사및계획,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,14b,실험,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,14c,실행,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,14d,상품화,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,14e,설게지원,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,14f,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,15a,계획,NULL,NULL,관리-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,15b,분석,NULL,NULL,관리-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,15c,회의,NULL,NULL,관리-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,15d,지원,NULL,NULL,관리-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,15e,사외,NULL,NULL,관리-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,16a,급여,NULL,NULL,관리-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,16b,근태,NULL,NULL,관리-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,16c,입퇴사,NULL,NULL,관리-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,16d,지원,NULL,NULL,관리-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,16e,기타,NULL,NULL,관리-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,17a,건물,NULL,NULL,관리-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,17b,차량,NULL,NULL,관리-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,17c,비품,NULL,NULL,관리-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,17d,장비,NULL,NULL,관리-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,17e,행사,NULL,NULL,관리-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,17f,지원,NULL,NULL,관리-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,17g,기타,NULL,NULL,관리-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,18a,계약,NULL,NULL,관리-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,18b,기성,NULL,NULL,관리-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,18c,실적,NULL,NULL,관리-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,18d,구매,NULL,NULL,관리-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,18e,협회,NULL,NULL,관리-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,18f,업면허,NULL,NULL,관리-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,18g,기타,NULL,NULL,관리-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,19a,금융,NULL,NULL,관리-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,19b,회계,NULL,NULL,관리-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,19c,세무,NULL,NULL,관리-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,19d,출납,NULL,NULL,관리-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,19e,결산,NULL,NULL,관리-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,19f,기타,NULL,NULL,관리-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,22a,직무교육,,,교휴-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,22b,전문교육,,,교휴-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,22c,교양교육,,,교휴-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,22d,기타,,,교휴-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,23a,예비군,,,교휴-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,23b,민방위,,,교휴-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,23c,기타,,,교휴-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,24a,현장철수,,,교휴-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,24b,휴직,,,교휴-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,24c,징계,,,교휴-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,24d,병가,,,교휴-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,24e,기타,,,교휴-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,25a,연차,,,교휴-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,25b,경조사,,,교휴-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,25c,특별휴가,,,교휴-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,25d,기타,,,교휴-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,26a,은행,,,교휴-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,26b,병원,,,교휴-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,26c,관공서,,,교휴-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,26d,협회,,,교휴-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,26e,기타,,,교휴-05,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,27a,기타,,,교휴-06,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,85,설계완료,설계완료,설계현황,NULL,NULL,NULL,NULL,NULL,NULL
CompanyCode,P,파일테크,6,파일,piletech.co.kr,NULL,NULL,NULL,NULL,NULL
ProjectCode,12,설계,5,28,교량설계,NULL,NULL,NULL,NULL,NULL
GroupCode,04,건설본부,본사,건설본부,J13310,4,NULL,NULL,NULL,NULL
GroupCode_del,05,설계부,본사,설계,J07103,NULL,NULL,NULL,NULL,NULL
ProjectCode,14,제조,6,NULL,제조공장,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,28a,"계획 및 협의",,"교량계획 , 현장조사, 업무협의(영업, 설계업무)",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,28b,구조계산,,"DR거더, GC라멘, SPLICED",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,28c,도면,,"종평면도, 일반도, 배근도",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,28d,산출서,,"수량산출서, 단가(견적서)",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,28e,검토,,"심의내용, 설계VE , 발주처 요구사항",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,28f,"보고서 및 시방서",,"보고서(기본,실시), 시방서(기본 및 실시)",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,28g,업무지원,,"현장, 공장, 영업, 공무",,NULL,NULL,NULL,NULL,NULL
ProcessStaffCode,30,"Shop DWG",계산,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,15,철도,NULL,철도시설공단,NULL,NULL,NULL,NULL,NULL,NULL
ProcessStaffCode,10,계약,팀장,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProcessStaffCode,40,제작장,"도면 1",NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProcessStaffCode,50,철근반입,"도면 2",NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,30a,자재,NULL,NULL,제조-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,30b,총무,NULL,NULL,제조-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,30c,회계,NULL,NULL,제조-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,30d,관재,NULL,NULL,제조-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,31a,생산관리,NULL,NULL,제조-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,31b,출하,NULL,NULL,제조-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,31c,보일러,NULL,NULL,제조-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,31d,환경관리,NULL,NULL,제조-02,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,32a,품질검사,NULL,NULL,제조-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,32b,공정관리,NULL,NULL,제조-03,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,33a,전기,NULL,NULL,제조-04,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,33b,기계,NULL,NULL,제조-04,NULL,NULL,NULL,NULL,NULL
CompanyCode,B,바론컨설탄트,3,바론,hanmaceng.co.kr,NULL,NULL,NULL,NULL,NULL
bizcarno_del,61오3653,투산,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
bizcarno_del,94소3847,엑티언스포츠,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
bizcarno_del,94소5437,포터2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
bizcarno_del,94소4247,E-마이티,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
GroupCode,06,생산본부,생산본부,생산,J01203,5,NULL,NULL,NULL,NULL
PositionCode,C0,회장,임원,회장,NULL,0,NULL,NULL,NULL,NULL
ConstructionMethod_del,11,Dr.,NULL,"Dr. Girder",NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,10,DR,NULL,"DR Girder",NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,12,GC,NULL,"GC Rahmen(DR)",NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,13,Pre,NULL,PreBeam,NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,15,DPC,NULL,"개량형 PSC Girder",NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,16,SPG,NULL,"Spliced Girder",NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,17,SP,NULL,"SP Pannel",NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,18,sDR,NULL,"Segmental Girder",NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,22,ETC,NULL,기타,NULL,NULL,NULL,NULL,NULL,NULL
Team,4,관리부,관리팀,NULL,NULL,NULL,NULL,NULL,NULL,_M02302_
ProjectSubCode,28h,기타,NULL,"A/S, 철야후 휴식, 외주관리",NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12b,"조사 및 협의",,"지반조사,현장조사,문화재지표조사,노선답사,사전답사,교통량조사,발주처,관련업체,설명회,보고회,위원회,보고자료,협상자료,문헌및전산자료조사,기타",,NULL,NULL,NULL,NULL,NULL
WorkPositionCode_del,8,회사이동,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessDivCode,10,실시설계,,실시,2,NULL,NULL,NULL,NULL,NULL
BusinessDivCode,11,기본설계,,기본,1,NULL,NULL,NULL,NULL,NULL
BusinessDivCode,12,설계변경,,설계변경,3,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,21,WDR,NULL,철도교,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,80,설계중,설계중,설계현황,NULL,NULL,NULL,NULL,NULL,NULL
BusinessStatus,10,추진중,,,,NULL,NULL,NULL,NULL,NULL
BusinessStatus,11,수주완료,,,,NULL,NULL,NULL,NULL,NULL
BusinessStatus,12,영업종료,,,,NULL,NULL,NULL,NULL,NULL
BusinessPart,10,설계,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessPart,11,감리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessPart,12,환경,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessPart,13,안전진단,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessPart,14,거더,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessPart,15,파일,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessPart,16,전기시공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessOrderDept,1,국토해양부,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessOrderDept,2,한국도로공사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessOrderDept,3,철도시설공단,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessOrderDept,4,경기도,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessOrderDept,5,항만,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BusinessOrderDept,6,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,12,공사중(기타),NULL,"공사현황,생산현황",NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,13,공사중(A/S),A/S,공사현황,NULL,NULL,NULL,NULL,NULL,NULL
Team,1,1팀(철근),철근팀,NULL,NULL,NULL,NULL,NULL,NULL,_J22305_
Team,2,2팀(패널),제작팀,NULL,NULL,NULL,NULL,NULL,NULL,_J24304_
ConstructStatusCode,61,공사예상,시공예상,"착공예상,설계현황",NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,20,공사예정,NULL,"공사현황,생산현황",NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12d,산출서,,"단가, 수량, 공사비, 수리계산서, 기타",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12e,"보고서 및 시방서",,"보고서(기본계획,기본설계,실시설계,지반조사,영향평가), 구조계산서,시방서(일반,특별), 유지관리계획서, 협상자료, 수치해석, 용지조서,기타",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12f,VE,,"기본설계, 실시설계, 현장조사, 노선검토, ,공사비산출, 도면작성,자료수집, 답변자료, 기타",,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12g,기타,,"A/S, 철야후휴식, 외주관리, 행정업무",,NULL,NULL,NULL,NULL,NULL
PositionCode_del,E1B,팀장,직원,팀장,NULL,13,NULL,NULL,NULL,NULL
PositionCode_del,E1A,실장,직원,실장,NULL,12,NULL,NULL,NULL,NULL
ProcessStaffCode,60,철근가공,"수량 1",NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProcessStaffCode,70,가로보제작,"수량 2",NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProcessStaffCode,80,패널제작,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,66,공정표에서제외,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,70,영업완료,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,71,영업취소,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,60,영업중,NULL,"착공예상,설계현황",NULL,NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,16,T/K(대안),NULL,T/K(대안),NULL,NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,17,기타,NULL,기타,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,82,설계확정,설계확정,설계현황,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,83,설계중(A/S),설계중(A/S),설계현황,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,81,재설계,재설계,설계현황,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,51,공사중지,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,12c,도면,,"종단, 횡단, 평면, 터널, 연약지반, 비탈면, 기초, 구조물, 주상도,",NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,30,제작완료,NULL,,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,40,공사대기,NULL,대기/단계별시공,NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,50,공사완료,시공완료,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPersonType,20,팀장,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPersonType,30,형틀공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPersonType,40,철근공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPersonType,80,보통인부,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
UserStateCode,20,현장,해당프로젝트코드,"프로젝트코드 입력","근무시간에 포함",5,NULL,NULL,NULL,NULL
WorkPersonType,10,직원,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ConstructionMethod_del,14,Post,NULL,"In-T. Girder",NULL,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,84,설계취소,설계취소,설계현황,NULL,NULL,NULL,NULL,NULL,NULL
bizform,JHF-1-17,출장/배차신청서,02;1;관리자:임원:RECEIVE:담당:임원:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
WorkPersonType,50,용접공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPersonType,60,인장공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPersonType,70,가설공,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkPersonType,90,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkCsPart,10,제작,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkCsPart,20,인장,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkCsPart,30,가설,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkCsPart,40,B/L,4,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkCsPart,50,패널/가로보,5,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkCsPart,60,기타,6,NULL,NULL,NULL,NULL,NULL,NULL,NULL
CollectionPaymentCode,10,현금,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
CollectionPaymentCode,20,B2B+,NULL,B2B+,NULL,NULL,NULL,NULL,NULL,NULL
CollectionPaymentCode,21,B2B,NULL,B2B,NULL,NULL,NULL,NULL,NULL,NULL
CollectionPaymentCode,22,전자실물,NULL,전자,NULL,NULL,NULL,NULL,NULL,NULL
OutsidePartCode,20,원청사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
GroupCode_del,07,현장(작업반),현장,현장,NULL,7,NULL,NULL,NULL,NULL
ConstructionMethod_del,19,sPre,NULL,"Segmental PreBeam",NULL,NULL,NULL,NULL,NULL,NULL
GroupCode,08,기술영업본부,NULL,기술영업,J07103,3,NULL,NULL,NULL,NULL
GroupCode_del,09,영업팀,NULL,영업,J11301,3,NULL,NULL,NULL,NULL
bizcarno,68소5709,소나타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
TeamLeader,10,김경태,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,11,김규준,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,12,김규홍,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,13,김성호,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,14,김현곤,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,15,김현철,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,16,김형곤,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,17,박광욱,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,18,박철진,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,19,안종기,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,20,양현석,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,21,이민호,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,22,이세정,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,23,이승균,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,24,이종갑,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,25,천병재,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,26,최문기,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,27,최종선,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,28,최철만,,,,NULL,NULL,NULL,NULL,NULL
TeamLeader,29,김상진,,,,NULL,NULL,NULL,NULL,NULL
ConstructionMethod,10,"DR Girder",DR,"DR Girder",,1,NULL,NULL,NULL,NULL
ConstructionMethod,18,"Segmental DR Girder",DR(Seg),"Segmental DR Girder",,2,NULL,NULL,NULL,NULL
ConstructionMethod,11,"Dr. Girder",Dr,"Dr. Girder",,3,NULL,NULL,NULL,NULL
ConstructionMethod,30,"Segmental Dr.Girder",Dr(Seg),"Segmental Dr.Girder",,4,NULL,NULL,NULL,NULL
ConstructionMethod,21,"Dr. W/F Girder",WDR,"Dr. Wide Flange Girder",,5,NULL,NULL,NULL,NULL
ConstructionMethod,16,"Dr. Spliced Girder",SPG,"Dr. Spliced Girder",,6,NULL,NULL,NULL,NULL
ConstructionMethod,31,"Pretention Girder",PTG,"Pretention Girder",,7,NULL,NULL,NULL,NULL
ConstructionMethod,32,"Nodular Girder",NOD,"Nodular Girder",,8,NULL,NULL,NULL,NULL
ConstructionMethod,15,"기타(DPC Girder)",DPC,"DPC Girder",,9,NULL,NULL,NULL,NULL
ConstructionMethod,33,"기타(PC Arch)",,"PC Arch",,10,NULL,NULL,NULL,NULL
ConstructionMethod,13,"GC Rahmen[Pre-Beam]",Pre-Beam,Pre-Beam,,11,NULL,NULL,NULL,NULL
ConstructionMethod,14,"GC Rahmen[Inverted T]",In-T,"Inverted T",,12,NULL,NULL,NULL,NULL
ConstructionMethod,19,"GC Rahmen[Segmental Inverted T]",In-T(Seg),"Segmental Inverted T",,13,NULL,NULL,NULL,NULL
ConstructionMethod,12,"GC Rahmen[Dr. Girder]",SGC,"Dr. Girder",,14,NULL,NULL,NULL,NULL
ConstructionMethod,34,"GC Rahmen[Segmental Dr. Girder]",SGC(Seg),"Segmental Dr. Girder",,15,NULL,NULL,NULL,NULL
ConstructionMethod,22,기타,기타,기타,,16,NULL,NULL,NULL,NULL
TeamLeader,30,이종태,,,,NULL,NULL,NULL,NULL,NULL
BridgeDesignFile,1,시공계획서,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BridgeDesignFile,2,인장계획서,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BridgeDesignFile,3,가설계획서,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BridgeDesignFile,4,시공상세도,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
TeamLeader,31,"봉 현",,,,NULL,NULL,NULL,NULL,NULL
GroupCode,10,현장소장,현장,현장관리자,NULL,6,NULL,NULL,NULL,NULL
CompanyKind,JANG,장헌산업,CP001,"장헌산업:JANG:CP001,파일테크:PILE:CP002,한맥기술:HANM:CP003",,1,NULL,NULL,NULL,NULL
GroupCode_del,99,회사공지,회사공지,회사공지,,99,NULL,NULL,NULL,NULL
OrderKind,PQ,PQ,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL
OrderKind,SOQ,SOQ,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL
OrderKind,TP,TP,NULL,NULL,NULL,3,NULL,NULL,NULL,NULL
OrderKind,협상,협상,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL
PositionCode,C3A,기술위원,임원,기술위원,NULL,4,NULL,NULL,NULL,NULL
UserStateCode,18,외출,해당프로젝트코드,"프로젝트코드 입력","근무시간에 포함",4,NULL,NULL,NULL,NULL
TeamLeader,32,최성욱,,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,0,자리있음,,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,1,"자리있음(집중 근무중)",,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,2,자리비움,,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,3,회의중,,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,4,외근중,,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,5,출장중,,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,6,출장중(장기),,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,7,휴가중,,,,NULL,NULL,NULL,NULL,NULL
AbsentCode,8,휴가중(장기),,,,NULL,NULL,NULL,NULL,NULL
bizform,JHF-2-4,"연차휴가 변경계획서",02;1;관리자:임원:RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-1-18,업무주차확인증,02;1;RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
TeamLeader,33,김길호,,,,NULL,NULL,NULL,NULL,NULL
ConstructStatusCode,41,공사완료2,제작거치완료,NULL,NULL,NULL,NULL,NULL,NULL,NULL
AbsentCode,9,파견중,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
AbsentCode,10,훈련중,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
AbsentCode,11,교육중,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
AbsentCode,12,휴직중,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
AbsentCode,13,현장근무중,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
bizform,JHF-9-4,명함신청서,02;1;RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-9-6,재직증명서발급신청,02;1;RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-9-7,원천징수영수증,02;1;RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-9-2-s,연장근무신청서(개인),02;1;관리자:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-9-2,연장근무신청서(팀장),02;1;임원:RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-2-5,"연차휴가 변경계획서(전체)",02;1;관리자:임원:RECEIVE:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
GroupCode,11,생산본부(생산직),생산본부(생산직),생산본부(생산직),NULL,9,NULL,NULL,NULL,NULL
bizform,JHF-3-1,일일작업보고,02;1;팀장:부서장:부사장:대표:RECEIVE:FINISH;,"개정일 : 2019.03.01",Jangheon,NULL,NULL,NULL,NULL,NULL
ProjectCode,19,계약,1,11,계약,NULL,NULL,NULL,NULL,NULL
bizform,JHF-4-1,발신공문,02;1;팀장:부서장:부사장:대표:RECEIVE:FINISH;,"개정일 : 2019.04.01",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-4-2,수신공문,02;1;팀장:부서장:부사장:대표:RECEIVE:FINISH;,"개정일 : 2019.04.01",Jangheon,NULL,NULL,NULL,NULL,NULL
OrderCompanyCode,18,일반건설업,NULL,일반건설업,NULL,NULL,NULL,NULL,NULL,NULL
CompanyType,JANG,장헌산업,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
bizform,JHF-5-1,계산서전표,02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH;,"개정일 : 2018.07.04",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-5-4,정산전표(계산서),02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH;,"개정일 : 2025.09.08",Jangheon,NULL,NULL,NULL,NULL,NULL
PositionCode,C9,수석연구원,임원,수석연구원,,10,NULL,NULL,NULL,NULL
PositionCode,E1D,책임연구원,직원,책임연구원,,14,NULL,NULL,NULL,NULL
PositionCode,E9,선임연구원,직원,선임연구원,,17,NULL,NULL,NULL,NULL
PositionCode,E99,연구원,직원,연구원,,22,NULL,NULL,NULL,NULL
GroupCode,12,기술개발센터,NULL,기술개발센터,NULL,6,NULL,NULL,NULL,NULL
GroupCode,13,총괄기획실,NULL,총괄기획실,NULL,7,NULL,NULL,NULL,NULL
PositionRank,88,연구직,NULL,NULL,X,NULL,NULL,NULL,NULL,NULL
PositionRank,77,수습직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,75,별정직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,00,임원,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,10,1급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,81,촉탁직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,20,2급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,30,3급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,40,4급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,83,계약직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,85,임시직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,50,5급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,60,6급(갑),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,62,6급(을),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,70,7급,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,91,실습생,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,95,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,94,파견직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PositionRank,01,임원2,NULL,NULL,X,NULL,NULL,NULL,NULL,NULL
DutyCode,AB0001,설계및비상주감리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AB0002,설계및감리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AA0002,그룹관리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AT0001,해외사업총괄,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AW001,자금,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AZ0000,외주관리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AW002,출납,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AI0000,기술개발,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AJ0000,업무,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AK0000,경리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AL0000,기획,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AN0000,총무,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AA0000,관리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AO0000,인사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AH0000,교환,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AB0000,설계,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AC0000,감리,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AD0000,운전,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AE0000,CAD,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AG0000,사무보조,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,000000,대표이사,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AP0000,전산,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AQ0000,비서직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AR0000,경비(수위),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AS0000,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AT0000,해외사업,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AU0000,"통,번역",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AA0001,,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DutyCode,AV0000,영업,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OccupationCode,70,특수직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OccupationCode,20,기술직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OccupationCode,30,기능직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OccupationCode,40,사무행정직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OccupationCode,50,기타,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OccupationCode,60,연구직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
OccupationCode,10,관리직,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DegreeCode,12,대졸,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
DegreeCode,13,초대졸,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41a,계획,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41b,조사.분석,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41c,검토회의,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41d,테스트.수정,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41e,S/W설계,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41f,구현,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41g,변수.알고리즘,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41h,UI,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41i,Eng.Work,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41j,컨셉디자인,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41k,디자인시안,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41l,디자인가이드,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41m,행정,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectSubCode,41n,기타,NULL,NULL,기술-01,NULL,NULL,NULL,NULL,NULL
ProjectCode,41,기술,10,41,기술,NULL,NULL,NULL,NULL,NULL
UserStateCode,19,시차,XX-교휴-04,"XX-교휴-04 (시작시간~종료시간)",시차,1,NULL,NULL,NULL,NULL
HrCompanyCode,BARON,바론,NULL,NULL,NULL,6,NULL,NULL,NULL,NULL
HrCompanyCode,HALLA,한라산업,NULL,NULL,NULL,5,NULL,NULL,NULL,NULL
HrCompanyCode,HANMAC,한맥기술,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL
HrCompanyCode,JANG,장헌산업,NULL,NULL,NULL,3,NULL,NULL,NULL,NULL
HrCompanyCode,PTC,피티씨,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL
HrCompanyCode,SAMAN,삼안,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL
HrOrder,11,채용,NULL,NULL,입사,NULL,NULL,NULL,NULL,NULL
HrOrder,13,보직,NULL,NULL,"직책에 임명함",NULL,NULL,NULL,NULL,NULL
HrOrder,15,정기승진,NULL,NULL,정기승진,NULL,NULL,NULL,NULL,NULL
HrOrder,17,정기승급,NULL,NULL,정기승급(승호),NULL,NULL,NULL,NULL,NULL
HrOrder,18,전보,NULL,NULL,"부서변경 및 조직변경으로 인한 부서명칭변경",NULL,NULL,NULL,NULL,NULL
HrOrder,19,파견(부서),NULL,NULL,"부서간 파견(근무부서 변경)",NULL,NULL,NULL,NULL,NULL
HrOrder,20,사간전입,NULL,NULL,"가족사간 근무(관리)회사 이동_근무회사(입사처리)",NULL,NULL,NULL,NULL,NULL
HrOrder,21,사간전출,NULL,NULL,"가족사간 근무(관리)회사 이동_근무회사 퇴사처리",NULL,NULL,NULL,NULL,NULL
HrOrder,25,겸직,NULL,NULL,"두 개 이상의 부서에 근무",NULL,NULL,NULL,NULL,NULL
HrOrder,27,복귀,NULL,NULL,"파견 복귀",NULL,NULL,NULL,NULL,NULL
HrOrder,31,특별승진,NULL,NULL,"정기승진 대상자를 제외한 포상승진",NULL,NULL,NULL,NULL,NULL
HrOrder,33,특별승급,NULL,NULL,"정기승급 대상자를 제외한 포상승급",NULL,NULL,NULL,NULL,NULL
HrOrder,37,직위변경,NULL,NULL,직위변경,NULL,NULL,NULL,NULL,NULL
HrOrder,39,전환,NULL,NULL,"직무 및 분야 변경",NULL,NULL,NULL,NULL,NULL
HrOrder,41,복직(개인),NULL,NULL,복직(개인),NULL,NULL,NULL,NULL,NULL
HrOrder,47,복직(출산),NULL,NULL,복직(출산),NULL,NULL,NULL,NULL,NULL
HrOrder,51,휴직(개인),NULL,NULL,휴직(개인),NULL,NULL,NULL,NULL,NULL
HrOrder,54,휴직(유산),NULL,NULL,휴직(유산),NULL,NULL,NULL,NULL,NULL
HrOrder,56,휴가(출산),NULL,NULL,휴가(출산),NULL,NULL,NULL,NULL,NULL
HrOrder,57,휴직(육아),NULL,NULL,휴직(육아),NULL,NULL,NULL,NULL,NULL
HrOrder,65,복직(병가),NULL,NULL,복직(병가),NULL,NULL,NULL,NULL,NULL
HrOrder,66,복직(유산),NULL,NULL,복직(유산),NULL,NULL,NULL,NULL,NULL
HrOrder,67,복직(육아),NULL,NULL,복직(육아),NULL,NULL,NULL,NULL,NULL
HrOrder,74,정규직전환,NULL,NULL,정규직전환,NULL,NULL,NULL,NULL,NULL
HrOrder,80,대기(감리),NULL,NULL,감리대기자,NULL,NULL,NULL,NULL,NULL
HrOrder,81,재입사,NULL,NULL,재입사,NULL,NULL,NULL,NULL,NULL
HrOrder,82,퇴직정산,NULL,NULL,퇴직정산,NULL,NULL,NULL,NULL,NULL
HrOrder,85,대기,NULL,NULL,"발령부서가 확정되지 않아 관리부서 대기",NULL,NULL,NULL,NULL,NULL
HrOrder,91,계약연장,NULL,NULL,"계약직 계약연장",NULL,NULL,NULL,NULL,NULL
HrOrder,A1,겸직해제,NULL,NULL,겸직해제,NULL,NULL,NULL,NULL,NULL
HrOrder,A2,대기(채용),NULL,NULL,대기(채용),NULL,NULL,NULL,NULL,NULL
HrOrder,A3,대기(퇴사),NULL,NULL,대기(퇴사),NULL,NULL,NULL,NULL,NULL
HrOrder,A4,면직,NULL,NULL,"직책에서 물러남",NULL,NULL,NULL,NULL,NULL
HrOrder,A5,채용(가족사),NULL,NULL,"가족사간 소속회사 이동(입사)",NULL,NULL,NULL,NULL,NULL
HrOrder,A6,파견(합사),NULL,NULL,"합사로 파견(근무부서 변경)",NULL,NULL,NULL,NULL,NULL
HrOrder,A7,파견(해외),NULL,NULL,"해외현장 파견(근무부서 변경)",NULL,NULL,NULL,NULL,NULL
HrOrder,A8,휴직(병가-공상),NULL,NULL,휴직(병가-공상),NULL,NULL,NULL,NULL,NULL
HrOrder,A9,휴직(병가-사상),NULL,NULL,휴직(병가-사상),NULL,NULL,NULL,NULL,NULL
HrOrder,B1,파견(가족사),NULL,NULL,"가족사간 근무(관리)회사 이동_소속회사",NULL,NULL,NULL,NULL,NULL
HrOrder,ZC,퇴직(가족사),NULL,NULL,"가족사간 소속회사 이동(퇴직)",NULL,NULL,NULL,NULL,NULL
HrOrder,ZE,"퇴직(계약만료,공사종료)",NULL,NULL,"퇴직(계약만료, 공사종료)",NULL,NULL,NULL,NULL,NULL
HrOrder,ZG,퇴직(권고사직),NULL,NULL,퇴직(권고사직),NULL,NULL,NULL,NULL,NULL
HrOrder,ZJ,퇴직(자유의사),NULL,NULL,퇴직(자유의사),NULL,NULL,NULL,NULL,NULL
HrOrder,ZN,퇴직(지분이동),NULL,NULL,퇴직(지분이동),NULL,NULL,NULL,NULL,NULL
HrOrder,ZR,퇴직(해고),NULL,NULL,퇴직(해고),NULL,NULL,NULL,NULL,NULL
HrOrder,ZZ,퇴직,NULL,NULL,기타퇴직,NULL,NULL,NULL,NULL,NULL
bizcarno,184무2358,투산,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
HrCompanyCode,ETC,기타,NULL,NULL,NULL,7,NULL,NULL,NULL,NULL
UserStateCode,30,오전반차,XX-교휴-04,"XX-교휴-04 (a)오전반차",NULL,NULL,NULL,NULL,NULL,NULL
UserStateCode,31,오후반차,XX-교휴-04,"XX-교휴-04 (a)오후반차",NULL,NULL,NULL,NULL,NULL,NULL
bizform,JHF-3-10,연차휴가사용계획서,00;1;팀장:부서장:FINISH;,"개정일 : 2016.05.01",Jangheon,NULL,NULL,NULL,NULL,NULL
PositionCode,E8A,기술직근로자,직원,기술직근로자,NULL,24,NULL,NULL,NULL,NULL
WorkType,30,1차인장,1차인장,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkType,40,거더거치,거더거치,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkType,50,가로보가설,가로보,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkType,60,패널가설,Deck,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkType,70,2차인장,2차인장,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkType,80,벤트설치,벤트설치,NULL,NULL,NULL,NULL,NULL,NULL,NULL
WorkType,90,벤트해제,벤트해제,NULL,NULL,NULL,NULL,NULL,NULL,NULL
PaymentKindCode,13,계약외,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BridgeDesignFile,5,제작장배치도,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
BridgeDesignFile,6,인장결과서,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProductUnit,1,EA,EA,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProductUnit,2,ton,ton,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProductUnit,3,,,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProductUnit,4,,,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProductUnit,5,파렛트,파렛트,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProductUnit,6,SET,SET,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProductUnit,7,kg,kg,NULL,NULL,NULL,NULL,NULL,NULL,NULL
ProductUnit,8,포대,포대,NULL,NULL,NULL,NULL,NULL,NULL,NULL
TouchBoardContents,COMPANYINFO,회사소개,COMPANYINFO,회사소식,,1,NULL,NULL,NULL,NULL
TouchBoardContents,BASICINFO,기본자료,BASICINFO,안전,,2,NULL,NULL,NULL,NULL
TouchBoardContents,MSDS,MSDS자료,MSDS,안전,,3,NULL,NULL,NULL,NULL
TouchBoardContents,EDUCATION,"교육자료 ",EDUCATION,안전,,4,NULL,NULL,NULL,NULL
TouchBoardContents,METHOD,"공법 ",METHOD,직원교육,,5,NULL,NULL,NULL,NULL
TouchBoardContents,PRODUCTION,제작,PRODUCTION,직원교육,,6,NULL,NULL,NULL,NULL
TouchBoardContents,REBAR,철근,REBAR,직원교육,,7,NULL,NULL,NULL,NULL
TouchBoardContentsType,VIDEO,영상,VIDEO,,,1,NULL,NULL,NULL,NULL
TouchBoardContentsType,PDF,PDF,PDF,,,2,NULL,NULL,NULL,NULL
Sequences,File,Seq,0,공통_FILE_SEQ채번,NULL,NULL,NULL,NULL,NULL,NULL
bizform,JHF-9-8,재직증명서발급신청,02;1;RECEIVE:FINISH;,"개정일 : 2025.02.11",Jangheon,NULL,NULL,NULL,NULL,NULL
WorkType_del,60,패널가설,가설,NULL,NULL,NULL,NULL,NULL,NULL,NULL
intra_auth,인사A,"Personal Management 조회",NULL,Y,인사,10,NULL,NULL,NULL,NULL
intra_auth,인사B,"Personal Management 편집",NULL,Y,인사,11,NULL,NULL,NULL,NULL
intra_auth,사업A,"사업관리 조회",NULL,Y,업무,20,NULL,NULL,NULL,NULL
intra_auth,사업B,"사업관리 편집",NULL,Y,업무,21,NULL,NULL,NULL,NULL
intra_auth,공장A,"공장 조회",NULL,Y,공장,30,NULL,NULL,NULL,NULL
intra_auth,공장B,"공장 편집",NULL,Y,공장,31,NULL,NULL,NULL,NULL
intra_auth,공사A,"공사관리 조회",NULL,Y,공사,40,NULL,NULL,NULL,NULL
intra_auth,공사B,"공사관리 편집",NULL,Y,공사,41,NULL,NULL,NULL,NULL
intra_auth,경리A,"Account 조회",NULL,Y,회계,50,NULL,NULL,NULL,NULL
intra_auth,경리B,"Account 편집",NULL,Y,회계,51,NULL,NULL,NULL,NULL
intra_auth,노무A,"노무자 조회",NULL,Y,노무,60,NULL,NULL,NULL,NULL
intra_auth,노무B,노무관리,NULL,Y,노무,61,NULL,NULL,NULL,NULL
intra_auth,임원,"근태이력,연차이력(전부서)",NULL,Y,임원,70,NULL,NULL,NULL,NULL
intra_auth,총무,"공지사항(글쓰기)/사내양식,배차(편집)/점심식단",NULL,Y,총무,80,NULL,NULL,NULL,NULL
intra_auth,부서,"근태이력,연차이력(해당부서)",NULL,Y,부서,90,NULL,NULL,NULL,NULL
intra_auth,임원회의,"회의록(임원회의자료 열람/저장)",NULL,Y,임원회의,100,NULL,NULL,NULL,NULL
intra_auth,영업회의,"회의록(영업회의자료 열람/저장)",NULL,Y,영업회의,110,NULL,NULL,NULL,NULL
intra_auth,일반회의,"회의록(설계/공사회의자료 열람/저장)",NULL,Y,일반회의,120,NULL,NULL,NULL,NULL
intra_auth,지적,지적재산권(편집),NULL,Y,지적재산,130,NULL,NULL,NULL,NULL
intra_auth,설정,설정권한자,NULL,Y,설정,140,NULL,NULL,NULL,NULL
intra_auth,한맥,"한맥기술 접근",NULL,Y,한맥,150,NULL,NULL,NULL,NULL
intra_auth,파일,"파일테크 접근",NULL,Y,파일,160,NULL,NULL,NULL,NULL
intra_auth,대화대표,대화시스템-전부서조회가능,NULL,Y,대화대표이사,170,NULL,NULL,NULL,NULL
intra_auth,대화부서,대화시스템-해당부서조회가능,NULL,Y,대화부서장,180,NULL,NULL,NULL,NULL
intra_auth,기술자료,"기술자료 업로드(자료실)",NULL,Y,기술자료,190,NULL,NULL,NULL,NULL
intra_auth,전표결재,전표결재,NULL,Y,전표결재,200,NULL,NULL,NULL,NULL
intra_auth,조직,"팀관리-조직구성 메뉴 조회",NULL,Y,조직,210,NULL,NULL,NULL,NULL
intra_auth,조달,"조달청 나라장터 입찰정보 조회",NULL,Y,조달,310,NULL,NULL,NULL,NULL
intra_auth,업무A,"사업관리(구 Project Management) 조회 - 사용안함",NULL,N,업무,22,NULL,NULL,NULL,NULL
intra_auth,업무B,"사업관리(구 Project Management) 편집 - 사용안함",NULL,N,업무,23,NULL,NULL,NULL,NULL
bizform,JHF-5-2,기타전표,02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH;,"개정일 : 2018.07.04",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-5-3,전도금전표,02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH;,"개정일 : 2025.09.08",Jangheon,NULL,NULL,NULL,NULL,NULL
bizform,JHF-5-5,정산전표(기타),02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH;,"개정일 : 2025.09.08",Jangheon,NULL,NULL,NULL,NULL,NULL
1 SysKey Code Name CodeORName Description Note orderno field_address lat_coordinate lng_coordinate Remark
2 CompanyCode M 한맥기술 1 한맥 hanmaceng.co.kr NULL NULL NULL NULL NULL
3 CompanyCode T 포넥스에스앤티 2 포넥스 phonex.co.kr NULL NULL NULL NULL NULL
4 CompanyCode J 장헌산업 5 장헌 jangheon.co.kr NULL NULL NULL NULL NULL
5 CompanyCode Q 퇴사자 9 9 NULL NULL NULL NULL NULL
6 EntryKindCode 1 설계직임원 NULL NULL NULL NULL NULL NULL NULL
7 EntryKindCode 2 설계직경력 NULL NULL NULL NULL NULL NULL NULL NULL
8 EntryKindCode 3 신입 NULL NULL NULL NULL NULL NULL NULL NULL
9 EntryKindCode 4 감리직임원 NULL NULL NULL NULL NULL NULL NULL NULL
10 EntryKindCode 5 감리직경력 NULL NULL NULL NULL NULL NULL NULL NULL
11 EntryKindCode 6 계약직 NULL NULL NULL NULL NULL NULL NULL NULL
12 GroupCode 01 임원실 본사 임원실 1 NULL NULL NULL NULL
13 GroupCode 02 경영지원부 본사 경영지원 T02303 2 NULL NULL NULL NULL
14 GroupCode_del 03 공무부 본사 공무 NULL NULL NULL NULL NULL NULL
15 PositionCode C1 부회장 임원 부회장 1 NULL NULL NULL NULL
16 PositionCode C2 사장 임원 사장 NULL 2 NULL NULL NULL NULL
17 PositionCode_del C3 원장 임원 원장 NULL 3 NULL NULL NULL NULL
18 PositionCode C4 고문 임원 고문 NULL 5 NULL NULL NULL NULL
19 PositionCode C5 부사장 임원 부사장 NULL 6 NULL NULL NULL NULL
20 PositionCode C6 전무이사 임원 전무이사 NULL 7 NULL NULL NULL NULL
21 PositionCode C7 상무이사 임원 상무이사 NULL 8 NULL NULL NULL NULL
22 PositionCode C8 이사 임원 이사 NULL 9 NULL NULL NULL NULL
23 PositionCode E1 부장 직원 부장 NULL 11 NULL NULL NULL NULL
24 PositionCode E2 차장 직원 차장 NULL 15 NULL NULL NULL NULL
25 PositionCode E3 과장 직원 과장 NULL 16 NULL NULL NULL NULL
26 PositionCode E4 대리 직원 대리 NULL 18 NULL NULL NULL NULL
27 PositionCode E5 사원 직원 사원(5급) 5급(대졸) 19 NULL NULL NULL NULL
28 PositionCode E6 사원 직원 사원(6급) 6급(전졸) 20 NULL NULL NULL NULL
29 PositionCode E7 사원 직원 사원(7급) 7급(고졸) 21 NULL NULL NULL NULL
30 ProjectCode 11 교영 1 11 교량영업 NULL NULL NULL NULL NULL
31 ProjectSubCode 26a 기타 NULL NULL 교휴-07 NULL NULL NULL NULL NULL
32 ProjectCode 13 시공 2 13 시공 NULL NULL NULL NULL NULL
33 ProjectCode 15 도연 3 14 도로 NULL NULL NULL NULL NULL
34 ProjectCode 16 구연 3 14 구조 NULL NULL NULL NULL NULL
35 ProjectCode 17 관리 4 경영지원 NULL NULL NULL NULL NULL
36 UserStateCode 01 휴가 XX-교휴-04 XX-교휴-04 (a)연차,오전반차,오후반차 오전반차,오후반차 1 NULL NULL NULL NULL
37 UserStateCode 02 경유 해당프로젝트코드 프로젝트코드 입력 근무시간에 포함 2 NULL NULL NULL NULL
38 UserStateCode 03 출장 해당프로젝트코드 프로젝트코드 입력 근무시간에 포함 3 NULL NULL NULL NULL
39 UserStateCode 04 야근 해당프로젝트코드 프로젝트코드 입력 철야 16 NULL NULL NULL NULL
40 UserStateCode 05 훈련 XX-교휴-02 XX-교휴-02 (a)예비군,(b)민방위,(c)기타 NULL 6 NULL NULL NULL NULL
41 UserStateCode 06 교육 XX-교휴-01 XX-교휴-01 (a)직무교육,(b)전문교육,(c)교양교육,(d)기타 근무시간에 포함 7 NULL NULL NULL NULL
42 UserStateCode 07 경조 XX-교휴-04 XX-교휴-04 (b)경조사 연차 일수에서 제외 13 NULL NULL NULL NULL
43 UserStateCode 08 기타 XX-교휴-04 XX-교휴-04 (c)특별휴가,(d)기타(보건휴가,출산휴가) 연차 일수에서 제외 8 NULL NULL NULL NULL
44 UserStateCode 09 파견 해당프로젝트코드 프로젝트코드 입력 근무시간에 포함 14 NULL NULL NULL NULL
45 UserStateCode 10 대기 XX-교휴-03 XX-교휴-03 (a)현장철수,(c)징계,(d)병가,(e)기타 NULL 12 NULL NULL NULL NULL
46 UserStateCode 11 지각 XX-교휴-06 XX-교휴-06 지각(09시~10시이전) 11 NULL NULL NULL NULL
47 UserStateCode 12 유결 XX-교휴-06 XX-교휴-06 유계결근 사용않음, 지각으로처리 및 휴가계 제출 10 NULL NULL NULL NULL
48 UserStateCode 13 무결 XX-교휴-06 XX-교휴-06 무계결근 사용않음, 지각으로처리 및 휴가계 제출 9 NULL NULL NULL NULL
49 WorkPositionCode 1 입사 NULL 근무위치 NULL NULL NULL NULL NULL
50 WorkPositionCode 2 파견 NULL NULL NULL NULL NULL NULL NULL NULL
51 WorkPositionCode_del 3 현장 NULL NULL NULL NULL NULL NULL NULL NULL
52 CompanyName 10 JANGHUN HANMAC,PILETECH,JANGHUN Name에 인트라넷 사용 회사명 NULL NULL NULL NULL NULL
53 WorkPositionCode 9 퇴사 NULL NULL NULL NULL NULL NULL NULL NULL
54 DetailJobCode 101 상세 NULL 설계 상세 업무 상세 업무 코드 NULL NULL NULL NULL NULL
55 DetailJobCode 102 계획 NULL 설계 준비 등 계획 관련 업무 NULL NULL NULL NULL NULL
56 DetailJobCode 103 관리 NULL 시간 또는 인력 관리등 NULL NULL NULL NULL NULL
57 DetailJobCode 104 출장 NULL 외출 현장조사 등 NULL NULL NULL NULL NULL
58 DetailJobCode 105 수주 NULL 수주 활동 관련 업무 NULL NULL NULL NULL NULL
59 DetailJobCode 106 기타 NULL NULL NULL NULL NULL NULL
60 PositionPayCode E1 233191 226374 부장 NULL NULL NULL NULL NULL NULL
61 PositionPayCode E2 205704 193648 차장 NULL NULL NULL NULL NULL NULL
62 PositionPayCode E3 179713 175178 과장 NULL NULL NULL NULL NULL NULL
63 PositionPayCode E4 152613 145904 대리 NULL NULL NULL NULL NULL NULL
64 PositionPayCode E5 121748 121748 사원 E5,E6,E7,E8 NULL NULL NULL NULL NULL
65 ProjectStateCode 10 수행중 NULL NULL 프로젝트 수행상태 NULL NULL NULL NULL NULL
66 ProjectStateCode 11 수주활동중 NULL NULL NULL NULL NULL NULL NULL NULL
67 ProjectStateCode 12 수행중지 NULL NULL NULL NULL NULL NULL NULL NULL
68 PositionPayCode C8 391600 283139 임원 Name=일반/CodeORName=감리 NULL NULL NULL NULL NULL
69 UserStateCode 14 휴직 XX-교휴-03 XX-교휴-03 (b)휴직 15 NULL NULL NULL NULL
70 ProjectStateCode 13 준공완료 NULL NULL NULL NULL NULL NULL NULL NULL
71 OrderCompanyCode 10 지자체 NULL 지방자치단체 경력관리 발주처 검색어 NULL NULL NULL NULL NULL
72 OrderCompanyCode 11 국토청 ql 국토관리청 NULL NULL NULL NULL NULL NULL
73 OrderCompanyCode 12 민자 NULL 민간투자사업 NULL NULL NULL NULL NULL NULL
74 OrderCompanyCode 13 도공 NULL 한국도로공사 NULL NULL NULL NULL NULL NULL
75 OrderCompanyCode 14 공사 NULL 공사 NULL NULL NULL NULL NULL NULL
76 ProjectEPartCode 10 고속도로 NULL NULL 경력관리 공종 NULL NULL NULL NULL NULL
77 ProjectEPartCode 11 국도 NULL NULL NULL NULL NULL NULL NULL NULL
78 ProjectEPartCode 12 일반 NULL NULL NULL NULL NULL NULL NULL NULL
79 ProjectEPartCode 13 교량 NULL NULL NULL NULL NULL NULL NULL NULL
80 ProjectEPartCode 14 터널 NULL NULL NULL NULL NULL NULL NULL NULL
81 ProjectEPartCode 15 민자 NULL NULL NULL NULL NULL NULL NULL NULL
82 ProjectEPartCode 16 소각장 NULL NULL NULL NULL NULL NULL NULL NULL
83 ProjectEPartCode 17 매립장 NULL NULL NULL NULL NULL NULL NULL NULL
84 ProjectEPartCode 18 폐기물 NULL NULL NULL NULL NULL NULL NULL NULL
85 ProjectEPartCode 19 환경기타 NULL NULL 경력관리 공종 NULL NULL NULL NULL NULL
86 ProjectEPartCode 20 영향평가 NULL NULL NULL NULL NULL NULL NULL NULL
87 ProjectEPartCode 21 사후환경영향조사 NULL NULL NULL NULL NULL NULL NULL NULL
88 ProjectEPartCode 22 사전환경성검토 NULL NULL NULL NULL NULL NULL NULL NULL
89 ProjectEPartCode 23 교통 NULL NULL NULL NULL NULL NULL NULL NULL
90 ProjectEPartCode 24 도시계획 NULL NULL NULL NULL NULL NULL NULL NULL
91 ProjectEPartCode 25 조경 NULL NULL NULL NULL NULL NULL NULL NULL
92 ProjectEPartCode 26 상하수도 NULL NULL NULL NULL NULL NULL NULL NULL
93 ProjectEPartCode 27 수자원 NULL NULL NULL NULL NULL NULL NULL NULL
94 ProjectEPartCode 28 감리 NULL NULL NULL NULL NULL NULL NULL NULL
95 ProjectEPartCode 29 안전진단 NULL NULL 경력관리 공종 NULL NULL NULL NULL NULL
96 ProjectEPartCode 30 항만및해안 NULL NULL NULL NULL NULL NULL NULL NULL
97 ProjectEPartCode 31 기타 NULL NULL NULL NULL NULL NULL NULL NULL
98 ProjectStepCode 10 기본계획 NULL NULL 경력관리 설계단계 NULL NULL NULL NULL NULL
99 ProjectStepCode 11 타당성조사 NULL NULL NULL NULL NULL NULL NULL NULL
100 ProjectStepCode 12 기본설계 NULL NULL NULL NULL NULL NULL NULL NULL
101 ProjectStepCode 13 실시설계 NULL NULL NULL NULL NULL NULL NULL NULL
102 ProjectStepCode 14 블랭크 NULL NULL NULL NULL NULL NULL NULL NULL
103 ProjectPartCode 10 도로및공항 NULL NULL 사업분야 코드 부여 NULL NULL NULL NULL NULL
104 ProjectPartCode 11 토목구조 NULL NULL NULL NULL NULL NULL NULL NULL
105 ProjectPartCode 12 토질및기초 NULL NULL NULL NULL NULL NULL NULL NULL
106 ProjectPartCode 13 교통 NULL NULL NULL NULL NULL NULL NULL NULL
107 ProjectPartCode 14 항만및해안 NULL NULL NULL NULL NULL NULL NULL NULL
108 ProjectPartCode 15 철도 NULL NULL NULL NULL NULL NULL NULL NULL
109 ProjectPartCode 16 수자원개발 NULL NULL NULL NULL NULL NULL NULL NULL
110 ProjectPartCode 17 상하수도 NULL NULL NULL NULL NULL NULL NULL NULL
111 ProjectPartCode 18 농어업토목 NULL NULL NULL NULL NULL NULL NULL NULL
112 ProjectPartCode 19 건축구조 NULL NULL 사업분야 코드 부여 NULL NULL NULL NULL NULL
113 ProjectPartCode 20 도시계획 NULL NULL NULL NULL NULL NULL NULL NULL
114 ProjectPartCode 21 조경 NULL NULL NULL NULL NULL NULL NULL NULL
115 ProjectPartCode 22 건축기계 NULL NULL NULL NULL NULL NULL NULL NULL
116 ProjectPartCode 23 건축전기 NULL NULL NULL NULL NULL NULL NULL NULL
117 ProjectPartCode 24 토목품질 NULL NULL NULL NULL NULL NULL NULL NULL
118 ProjectPartCode 25 건설안전 NULL NULL NULL NULL NULL NULL NULL NULL
119 ProjectPartCode 26 측지 NULL NULL NULL NULL NULL NULL NULL NULL
120 ProjectPartCode 27 유체기계 NULL NULL NULL NULL NULL NULL NULL NULL
121 ProjectPartCode 28 발송배전 NULL NULL NULL NULL NULL NULL NULL NULL
122 ProjectPartCode 29 대기 NULL NULL 사업분야 코드 부여 NULL NULL NULL NULL NULL
123 ProjectPartCode 30 수질 NULL NULL NULL NULL NULL NULL NULL NULL
124 ProjectPartCode 31 소음진동 NULL NULL NULL NULL NULL NULL NULL NULL
125 ProjectPartCode 32 폐기물 NULL NULL NULL NULL NULL NULL NULL NULL
126 ProjectPartCode 33 PM NULL NULL NULL NULL NULL NULL NULL NULL
127 ProjectPartCode 34 시공 NULL NULL NULL NULL NULL NULL NULL NULL
128 ProjectPartCode 35 환경 NULL NULL NULL NULL NULL NULL NULL NULL
129 ProjectPartCode 36 기타 NULL NULL NULL NULL NULL NULL NULL NULL
130 WorkPartCode 10 설계관리감독 NULL NULL 담당업무 NULL NULL NULL NULL NULL
131 WorkPartCode 11 사업책임 NULL NULL NULL NULL NULL NULL NULL NULL
132 WorkPartCode 12 분야책임 NULL NULL NULL NULL NULL NULL NULL NULL
133 WorkPartCode 13 설계 NULL NULL NULL NULL NULL NULL NULL NULL
134 WorkPartCode 14 평가 NULL NULL NULL NULL NULL NULL NULL NULL
135 WorkPartCode 15 조사 NULL NULL NULL NULL NULL NULL NULL NULL
136 ProjectItemCode 10 연장 NULL NULL 과업의범위-ITEM NULL NULL NULL NULL NULL
137 ProjectItemCode 11 폭원 NULL NULL NULL NULL NULL NULL NULL NULL
138 ProjectItemCode 12 설계속도 NULL NULL NULL NULL NULL NULL NULL NULL
139 ProjectItemCode 13 교량 NULL NULL NULL NULL NULL NULL NULL NULL
140 ProjectItemCode 14 터널 NULL NULL NULL NULL NULL NULL NULL NULL
141 ProjectItemCode 15 사업면적 NULL NULL NULL NULL NULL NULL NULL NULL
142 ProjectItemCode 16 매립면적 NULL NULL NULL NULL NULL NULL NULL NULL
143 ProjectItemCode 17 시설면적 NULL NULL NULL NULL NULL NULL NULL NULL
144 ProjectItemCode 18 시설용량 NULL NULL NULL NULL NULL NULL NULL NULL
145 ProjectItemCode 19 환경영향평가비 NULL NULL NULL NULL NULL NULL NULL NULL
146 ProjectItemCode 20 교통영향평가비 NULL NULL NULL NULL NULL NULL NULL NULL
147 ProjectUnitCode 10 Km NULL NULL 과업의범위-UNIT NULL NULL NULL NULL NULL
148 ProjectUnitCode 11 Km/hr NULL NULL NULL NULL NULL NULL NULL NULL
149 ProjectUnitCode 12 m NULL NULL NULL NULL NULL NULL NULL NULL
150 ProjectUnitCode 13 m2 NULL NULL NULL NULL NULL NULL NULL NULL
151 ProjectUnitCode 14 ton/일 NULL NULL NULL NULL NULL NULL NULL NULL
152 ProjectUnitCode 15 천원 NULL NULL NULL NULL NULL NULL NULL NULL
153 PaymentKindCode 10 기성 NULL NULL 수금현황 NULL NULL NULL NULL NULL
154 PaymentKindCode 11 선금 NULL NULL NULL NULL NULL NULL NULL NULL
155 PaymentKindCode 12 준공 NULL NULL NULL NULL NULL NULL NULL NULL
156 OutsidePartCode 10 원자재 NULL NULL 외주관리-분야 NULL NULL NULL NULL NULL
157 OutsidePartCode 11 부자재 NULL NULL NULL NULL NULL NULL NULL NULL
158 OutsidePartCode 12 설비 NULL NULL NULL NULL NULL NULL NULL NULL
159 OutsidePartCode 13 건설하도급 NULL NULL NULL NULL NULL NULL NULL NULL
160 OutsidePartCode 14 안전용품 NULL NULL NULL NULL NULL NULL NULL NULL
161 OutsidePartCode 15 인쇄 NULL NULL NULL NULL NULL NULL NULL NULL
162 bizform JHF-2-3 휴가계 02;1;관리자:임원:RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
163 bizform JHF-2-15 연장근무확인서 02;1;임원:RECEIVE:담당:임원:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
164 bizform JHF-2-1 근태신청서 02;1;관리자:임원:RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
165 Team 3 3팀(공무) 공무팀 NULL NULL NULL NULL NULL NULL _P13302_
166 CrossBeamMethodCode 10 C-RC-0.30 x L NULL 프리캐스트가로보, 형고=0.30m NULL NULL NULL NULL NULL NULL
167 CrossBeamMethodCode 20 C-RC-0.35 x L NULL 프리캐스트가로보, 형고=0.35m NULL NULL NULL NULL NULL NULL
168 CrossBeamMethodCode 30 C-RC-0.65 x L NULL 프리캐스트가로보, 형고=0.65m NULL NULL NULL NULL NULL NULL
169 CrossBeamMethodCode 40 C-RC-0.95 x L NULL 프리캐스트가로보, 형고=0.95m NULL NULL NULL NULL NULL NULL
170 CrossBeamMethodCode 50 C-RC-1.25 x L NULL 프리캐스트가로보, 형고=1.25m NULL NULL NULL NULL NULL NULL
171 PannelMethodCode 10 D1-PCH-3.0 x L NULL 프리덱 PC 너트적용형 NULL NULL NULL NULL NULL NULL
172 PannelMethodCode 20 D1-PCB-3.0 x L NULL 프리덱 강봉노출형 NULL NULL NULL NULL NULL NULL
173 PannelMethodCode 30 D1-RC-3.0 x L NULL 프리덱 R.C 연장 3.0m NULL NULL NULL NULL NULL NULL
174 PannelMethodCode 40 D1-RC-3.6 x L NULL 프리덱 R.C 연장 3.6m NULL NULL NULL NULL NULL NULL
175 PannelMethodCode 50 D2-RC-2.4 x L NULL 미관 연장 2.4m NULL NULL NULL NULL NULL NULL
176 PannelMethodCode 60 D3-RC-2.4 x L NULL 중분대패널 연장 2.4m NULL NULL NULL NULL NULL NULL
177 ProcessStaffCode 20 시공계획서 검토 NULL NULL NULL NULL NULL NULL NULL
178 ConstructStatusCode 10 공사중 시공중 공사현황,생산현황 NULL NULL NULL NULL NULL
179 ConstructStatusCode 11 공사중(Segmantal) NULL 공사현황,생산현황 NULL NULL NULL NULL NULL NULL
180 DegreeCode 10 박사 NULL NULL 경력관리-최종학력 NULL NULL NULL NULL NULL
181 DegreeCode 11 석사 NULL NULL NULL NULL NULL NULL NULL NULL
182 DegreeCode_del 12 학사 NULL NULL NULL NULL NULL NULL NULL NULL
183 DegreeCode_del 13 전문학사 NULL NULL NULL NULL NULL NULL NULL NULL
184 DegreeCode 14 고졸 NULL NULL NULL NULL NULL NULL NULL NULL
185 TechnicalLevelCode 10 특급 NULL NULL 경력관리-기술등급 NULL NULL NULL NULL NULL
186 TechnicalLevelCode 11 고급 NULL NULL NULL NULL NULL NULL NULL NULL
187 TechnicalLevelCode 12 중급 NULL NULL NULL NULL NULL NULL NULL NULL
188 TechnicalLevelCode 13 초급 NULL NULL NULL NULL NULL NULL NULL NULL
189 PositionCode E8 계약직 직원 계약직 NULL 23 NULL NULL NULL NULL
190 ProjectCode 18 교휴 4 NULL 교육/휴가등 NULL NULL NULL NULL NULL
191 ProjectSubCode 11a 발주처 NULL NULL 교영-01 NULL NULL NULL NULL NULL
192 ProjectSubCode 11b 시공사 NULL NULL 교영-01 NULL NULL NULL NULL NULL
193 ProjectSubCode 11c 설계사 NULL NULL 교영-01 NULL NULL NULL NULL NULL
194 ProjectSubCode 11d 기타 NULL NULL 교영-01 NULL NULL NULL NULL NULL
195 ProjectSubCode 12a 조사/협의 NULL NULL 교영-02,교영-03,교영-04,교영-05,교영-06,교영-07 NULL NULL NULL NULL NULL
196 ProjectSubCode 12b 설게,검토 NULL NULL 교영-02,교영-03,교영-04,교영-05,교영-06,교영-07 NULL NULL NULL NULL NULL
197 ProjectSubCode 12c 견적 NULL NULL 교영-02,교영-03,교영-04,교영-05,교영-06,교영-07 NULL NULL NULL NULL NULL
198 ProjectSubCode 12d 기타 NULL NULL 교영-02,교영-03,교영-04,교영-05,교영-06,교영-07 NULL NULL NULL NULL NULL
199 ProjectSubCode 13a 계약,기성 NULL NULL NULL NULL NULL NULL NULL NULL
200 ProjectSubCode 13b 시공 NULL NULL NULL NULL NULL NULL NULL NULL
201 ProjectSubCode 13c 노무 NULL NULL NULL NULL NULL NULL NULL NULL
202 ProjectSubCode 13d 자재 NULL NULL NULL NULL NULL NULL NULL NULL
203 ProjectSubCode 13e 안전 NULL NULL NULL NULL NULL NULL NULL NULL
204 ProjectSubCode 13f A/S NULL NULL NULL NULL NULL NULL NULL NULL
205 ProjectSubCode 13g 기타 NULL NULL NULL NULL NULL NULL NULL NULL
206 ProjectSubCode 14a 조사및계획 NULL NULL NULL NULL NULL NULL NULL NULL
207 ProjectSubCode 14b 실험 NULL NULL NULL NULL NULL NULL NULL NULL
208 ProjectSubCode 14c 실행 NULL NULL NULL NULL NULL NULL NULL NULL
209 ProjectSubCode 14d 상품화 NULL NULL NULL NULL NULL NULL NULL NULL
210 ProjectSubCode 14e 설게지원 NULL NULL NULL NULL NULL NULL NULL NULL
211 ProjectSubCode 14f 기타 NULL NULL NULL NULL NULL NULL NULL NULL
212 ProjectSubCode 15a 계획 NULL NULL 관리-01 NULL NULL NULL NULL NULL
213 ProjectSubCode 15b 분석 NULL NULL 관리-01 NULL NULL NULL NULL NULL
214 ProjectSubCode 15c 회의 NULL NULL 관리-01 NULL NULL NULL NULL NULL
215 ProjectSubCode 15d 지원 NULL NULL 관리-01 NULL NULL NULL NULL NULL
216 ProjectSubCode 15e 사외 NULL NULL 관리-01 NULL NULL NULL NULL NULL
217 ProjectSubCode 16a 급여 NULL NULL 관리-02 NULL NULL NULL NULL NULL
218 ProjectSubCode 16b 근태 NULL NULL 관리-02 NULL NULL NULL NULL NULL
219 ProjectSubCode 16c 입퇴사 NULL NULL 관리-02 NULL NULL NULL NULL NULL
220 ProjectSubCode 16d 지원 NULL NULL 관리-02 NULL NULL NULL NULL NULL
221 ProjectSubCode 16e 기타 NULL NULL 관리-02 NULL NULL NULL NULL NULL
222 ProjectSubCode 17a 건물 NULL NULL 관리-03 NULL NULL NULL NULL NULL
223 ProjectSubCode 17b 차량 NULL NULL 관리-03 NULL NULL NULL NULL NULL
224 ProjectSubCode 17c 비품 NULL NULL 관리-03 NULL NULL NULL NULL NULL
225 ProjectSubCode 17d 장비 NULL NULL 관리-03 NULL NULL NULL NULL NULL
226 ProjectSubCode 17e 행사 NULL NULL 관리-03 NULL NULL NULL NULL NULL
227 ProjectSubCode 17f 지원 NULL NULL 관리-03 NULL NULL NULL NULL NULL
228 ProjectSubCode 17g 기타 NULL NULL 관리-03 NULL NULL NULL NULL NULL
229 ProjectSubCode 18a 계약 NULL NULL 관리-04 NULL NULL NULL NULL NULL
230 ProjectSubCode 18b 기성 NULL NULL 관리-04 NULL NULL NULL NULL NULL
231 ProjectSubCode 18c 실적 NULL NULL 관리-04 NULL NULL NULL NULL NULL
232 ProjectSubCode 18d 구매 NULL NULL 관리-04 NULL NULL NULL NULL NULL
233 ProjectSubCode 18e 협회 NULL NULL 관리-04 NULL NULL NULL NULL NULL
234 ProjectSubCode 18f 업면허 NULL NULL 관리-04 NULL NULL NULL NULL NULL
235 ProjectSubCode 18g 기타 NULL NULL 관리-04 NULL NULL NULL NULL NULL
236 ProjectSubCode 19a 금융 NULL NULL 관리-05 NULL NULL NULL NULL NULL
237 ProjectSubCode 19b 회계 NULL NULL 관리-05 NULL NULL NULL NULL NULL
238 ProjectSubCode 19c 세무 NULL NULL 관리-05 NULL NULL NULL NULL NULL
239 ProjectSubCode 19d 출납 NULL NULL 관리-05 NULL NULL NULL NULL NULL
240 ProjectSubCode 19e 결산 NULL NULL 관리-05 NULL NULL NULL NULL NULL
241 ProjectSubCode 19f 기타 NULL NULL 관리-05 NULL NULL NULL NULL NULL
242 ProjectSubCode 22a 직무교육 교휴-01 NULL NULL NULL NULL NULL
243 ProjectSubCode 22b 전문교육 교휴-01 NULL NULL NULL NULL NULL
244 ProjectSubCode 22c 교양교육 교휴-01 NULL NULL NULL NULL NULL
245 ProjectSubCode 22d 기타 교휴-01 NULL NULL NULL NULL NULL
246 ProjectSubCode 23a 예비군 교휴-02 NULL NULL NULL NULL NULL
247 ProjectSubCode 23b 민방위 교휴-02 NULL NULL NULL NULL NULL
248 ProjectSubCode 23c 기타 교휴-02 NULL NULL NULL NULL NULL
249 ProjectSubCode 24a 현장철수 교휴-03 NULL NULL NULL NULL NULL
250 ProjectSubCode 24b 휴직 교휴-03 NULL NULL NULL NULL NULL
251 ProjectSubCode 24c 징계 교휴-03 NULL NULL NULL NULL NULL
252 ProjectSubCode 24d 병가 교휴-03 NULL NULL NULL NULL NULL
253 ProjectSubCode 24e 기타 교휴-03 NULL NULL NULL NULL NULL
254 ProjectSubCode 25a 연차 교휴-04 NULL NULL NULL NULL NULL
255 ProjectSubCode 25b 경조사 교휴-04 NULL NULL NULL NULL NULL
256 ProjectSubCode 25c 특별휴가 교휴-04 NULL NULL NULL NULL NULL
257 ProjectSubCode 25d 기타 교휴-04 NULL NULL NULL NULL NULL
258 ProjectSubCode 26a 은행 교휴-05 NULL NULL NULL NULL NULL
259 ProjectSubCode 26b 병원 교휴-05 NULL NULL NULL NULL NULL
260 ProjectSubCode 26c 관공서 교휴-05 NULL NULL NULL NULL NULL
261 ProjectSubCode 26d 협회 교휴-05 NULL NULL NULL NULL NULL
262 ProjectSubCode 26e 기타 교휴-05 NULL NULL NULL NULL NULL
263 ProjectSubCode 27a 기타 교휴-06 NULL NULL NULL NULL NULL
264 ConstructStatusCode 85 설계완료 설계완료 설계현황 NULL NULL NULL NULL NULL NULL
265 CompanyCode P 파일테크 6 파일 piletech.co.kr NULL NULL NULL NULL NULL
266 ProjectCode 12 설계 5 28 교량설계 NULL NULL NULL NULL NULL
267 GroupCode 04 건설본부 본사 건설본부 J13310 4 NULL NULL NULL NULL
268 GroupCode_del 05 설계부 본사 설계 J07103 NULL NULL NULL NULL NULL
269 ProjectCode 14 제조 6 NULL 제조공장 NULL NULL NULL NULL NULL
270 ProjectSubCode 28a 계획 및 협의 교량계획 , 현장조사, 업무협의(영업, 설계업무) NULL NULL NULL NULL NULL
271 ProjectSubCode 28b 구조계산 DR거더, GC라멘, SPLICED NULL NULL NULL NULL NULL
272 ProjectSubCode 28c 도면 종평면도, 일반도, 배근도 NULL NULL NULL NULL NULL
273 ProjectSubCode 28d 산출서 수량산출서, 단가(견적서) NULL NULL NULL NULL NULL
274 ProjectSubCode 28e 검토 심의내용, 설계VE , 발주처 요구사항 NULL NULL NULL NULL NULL
275 ProjectSubCode 28f 보고서 및 시방서 보고서(기본,실시), 시방서(기본 및 실시) NULL NULL NULL NULL NULL
276 ProjectSubCode 28g 업무지원 현장, 공장, 영업, 공무 NULL NULL NULL NULL NULL
277 ProcessStaffCode 30 Shop DWG 계산 NULL NULL NULL NULL NULL NULL NULL
278 OrderCompanyCode 15 철도 NULL 철도시설공단 NULL NULL NULL NULL NULL NULL
279 ProcessStaffCode 10 계약 팀장 NULL NULL NULL NULL NULL NULL NULL
280 ProcessStaffCode 40 제작장 도면 1 NULL NULL NULL NULL NULL NULL NULL
281 ProcessStaffCode 50 철근반입 도면 2 NULL NULL NULL NULL NULL NULL NULL
282 ProjectSubCode 30a 자재 NULL NULL 제조-01 NULL NULL NULL NULL NULL
283 ProjectSubCode 30b 총무 NULL NULL 제조-01 NULL NULL NULL NULL NULL
284 ProjectSubCode 30c 회계 NULL NULL 제조-01 NULL NULL NULL NULL NULL
285 ProjectSubCode 30d 관재 NULL NULL 제조-01 NULL NULL NULL NULL NULL
286 ProjectSubCode 31a 생산관리 NULL NULL 제조-02 NULL NULL NULL NULL NULL
287 ProjectSubCode 31b 출하 NULL NULL 제조-02 NULL NULL NULL NULL NULL
288 ProjectSubCode 31c 보일러 NULL NULL 제조-02 NULL NULL NULL NULL NULL
289 ProjectSubCode 31d 환경관리 NULL NULL 제조-02 NULL NULL NULL NULL NULL
290 ProjectSubCode 32a 품질검사 NULL NULL 제조-03 NULL NULL NULL NULL NULL
291 ProjectSubCode 32b 공정관리 NULL NULL 제조-03 NULL NULL NULL NULL NULL
292 ProjectSubCode 33a 전기 NULL NULL 제조-04 NULL NULL NULL NULL NULL
293 ProjectSubCode 33b 기계 NULL NULL 제조-04 NULL NULL NULL NULL NULL
294 CompanyCode B 바론컨설탄트 3 바론 hanmaceng.co.kr NULL NULL NULL NULL NULL
295 bizcarno_del 61오3653 투산 NULL NULL NULL NULL NULL NULL NULL NULL
296 bizcarno_del 94소3847 엑티언스포츠 NULL NULL NULL NULL NULL NULL NULL NULL
297 bizcarno_del 94소5437 포터2 NULL NULL NULL NULL NULL NULL NULL NULL
298 bizcarno_del 94소4247 E-마이티 NULL NULL NULL NULL NULL NULL NULL NULL
299 GroupCode 06 생산본부 생산본부 생산 J01203 5 NULL NULL NULL NULL
300 PositionCode C0 회장 임원 회장 NULL 0 NULL NULL NULL NULL
301 ConstructionMethod_del 11 Dr. NULL Dr. Girder NULL NULL NULL NULL NULL NULL
302 ConstructionMethod_del 10 DR NULL DR Girder NULL NULL NULL NULL NULL NULL
303 ConstructionMethod_del 12 GC NULL GC Rahmen(DR) NULL NULL NULL NULL NULL NULL
304 ConstructionMethod_del 13 Pre NULL PreBeam NULL NULL NULL NULL NULL NULL
305 ConstructionMethod_del 15 DPC NULL 개량형 PSC Girder NULL NULL NULL NULL NULL NULL
306 ConstructionMethod_del 16 SPG NULL Spliced Girder NULL NULL NULL NULL NULL NULL
307 ConstructionMethod_del 17 SP NULL SP Pannel NULL NULL NULL NULL NULL NULL
308 ConstructionMethod_del 18 sDR NULL Segmental Girder NULL NULL NULL NULL NULL NULL
309 ConstructionMethod_del 22 ETC NULL 기타 NULL NULL NULL NULL NULL NULL
310 Team 4 관리부 관리팀 NULL NULL NULL NULL NULL NULL _M02302_
311 ProjectSubCode 28h 기타 NULL A/S, 철야후 휴식, 외주관리 NULL NULL NULL NULL NULL NULL
312 ProjectSubCode 12b 조사 및 협의 지반조사,현장조사,문화재지표조사,노선답사,사전답사,교통량조사,발주처,관련업체,설명회,보고회,위원회,보고자료,협상자료,문헌및전산자료조사,기타 NULL NULL NULL NULL NULL
313 WorkPositionCode_del 8 회사이동 NULL NULL NULL NULL NULL NULL NULL NULL
314 BusinessDivCode 10 실시설계 실시 2 NULL NULL NULL NULL NULL
315 BusinessDivCode 11 기본설계 기본 1 NULL NULL NULL NULL NULL
316 BusinessDivCode 12 설계변경 설계변경 3 NULL NULL NULL NULL NULL
317 ConstructionMethod_del 21 WDR NULL 철도교 NULL NULL NULL NULL NULL NULL
318 ConstructStatusCode 80 설계중 설계중 설계현황 NULL NULL NULL NULL NULL NULL
319 BusinessStatus 10 추진중 NULL NULL NULL NULL NULL
320 BusinessStatus 11 수주완료 NULL NULL NULL NULL NULL
321 BusinessStatus 12 영업종료 NULL NULL NULL NULL NULL
322 BusinessPart 10 설계 NULL NULL NULL NULL NULL NULL NULL NULL
323 BusinessPart 11 감리 NULL NULL NULL NULL NULL NULL NULL NULL
324 BusinessPart 12 환경 NULL NULL NULL NULL NULL NULL NULL NULL
325 BusinessPart 13 안전진단 NULL NULL NULL NULL NULL NULL NULL NULL
326 BusinessPart 14 거더 NULL NULL NULL NULL NULL NULL NULL NULL
327 BusinessPart 15 파일 NULL NULL NULL NULL NULL NULL NULL NULL
328 BusinessPart 16 전기시공 NULL NULL NULL NULL NULL NULL NULL NULL
329 BusinessOrderDept 1 국토해양부 NULL NULL NULL NULL NULL NULL NULL NULL
330 BusinessOrderDept 2 한국도로공사 NULL NULL NULL NULL NULL NULL NULL NULL
331 BusinessOrderDept 3 철도시설공단 NULL NULL NULL NULL NULL NULL NULL NULL
332 BusinessOrderDept 4 경기도 NULL NULL NULL NULL NULL NULL NULL NULL
333 BusinessOrderDept 5 항만 NULL NULL NULL NULL NULL NULL NULL NULL
334 BusinessOrderDept 6 기타 NULL NULL NULL NULL NULL NULL NULL NULL
335 ConstructStatusCode 12 공사중(기타) NULL 공사현황,생산현황 NULL NULL NULL NULL NULL NULL
336 ConstructStatusCode 13 공사중(A/S) A/S 공사현황 NULL NULL NULL NULL NULL NULL
337 Team 1 1팀(철근) 철근팀 NULL NULL NULL NULL NULL NULL _J22305_
338 Team 2 2팀(패널) 제작팀 NULL NULL NULL NULL NULL NULL _J24304_
339 ConstructStatusCode 61 공사예상 시공예상 착공예상,설계현황 NULL NULL NULL NULL NULL NULL
340 ConstructStatusCode 20 공사예정 NULL 공사현황,생산현황 NULL NULL NULL NULL NULL NULL
341 ProjectSubCode 12d 산출서 단가, 수량, 공사비, 수리계산서, 기타 NULL NULL NULL NULL NULL
342 ProjectSubCode 12e 보고서 및 시방서 보고서(기본계획,기본설계,실시설계,지반조사,영향평가), 구조계산서,시방서(일반,특별), 유지관리계획서, 협상자료, 수치해석, 용지조서,기타 NULL NULL NULL NULL NULL
343 ProjectSubCode 12f VE 기본설계, 실시설계, 현장조사, 노선검토, ,공사비산출, 도면작성,자료수집, 답변자료, 기타 NULL NULL NULL NULL NULL
344 ProjectSubCode 12g 기타 A/S, 철야후휴식, 외주관리, 행정업무 NULL NULL NULL NULL NULL
345 PositionCode_del E1B 팀장 직원 팀장 NULL 13 NULL NULL NULL NULL
346 PositionCode_del E1A 실장 직원 실장 NULL 12 NULL NULL NULL NULL
347 ProcessStaffCode 60 철근가공 수량 1 NULL NULL NULL NULL NULL NULL NULL
348 ProcessStaffCode 70 가로보제작 수량 2 NULL NULL NULL NULL NULL NULL NULL
349 ProcessStaffCode 80 패널제작 기타 NULL NULL NULL NULL NULL NULL NULL
350 ConstructStatusCode 66 공정표에서제외 NULL NULL NULL NULL NULL NULL NULL NULL
351 ConstructStatusCode 70 영업완료 NULL NULL NULL NULL NULL NULL NULL NULL
352 ConstructStatusCode 71 영업취소 NULL NULL NULL NULL NULL NULL NULL NULL
353 ConstructStatusCode 60 영업중 NULL 착공예상,설계현황 NULL NULL NULL NULL NULL NULL
354 OrderCompanyCode 16 T/K(대안) NULL T/K(대안) NULL NULL NULL NULL NULL NULL
355 OrderCompanyCode 17 기타 NULL 기타 NULL NULL NULL NULL NULL NULL
356 ConstructStatusCode 82 설계확정 설계확정 설계현황 NULL NULL NULL NULL NULL NULL
357 ConstructStatusCode 83 설계중(A/S) 설계중(A/S) 설계현황 NULL NULL NULL NULL NULL NULL
358 ConstructStatusCode 81 재설계 재설계 설계현황 NULL NULL NULL NULL NULL NULL
359 ConstructStatusCode 51 공사중지 NULL NULL NULL NULL NULL NULL NULL NULL
360 ProjectSubCode 12c 도면 종단, 횡단, 평면, 터널, 연약지반, 비탈면, 기초, 구조물, 주상도, NULL NULL NULL NULL NULL NULL
361 ConstructStatusCode 30 제작완료 NULL NULL NULL NULL NULL NULL NULL
362 ConstructStatusCode 40 공사대기 NULL 대기/단계별시공 NULL NULL NULL NULL NULL NULL
363 ConstructStatusCode 50 공사완료 시공완료 NULL NULL NULL NULL NULL NULL NULL
364 WorkPersonType 20 팀장 NULL NULL NULL NULL NULL NULL NULL NULL
365 WorkPersonType 30 형틀공 NULL NULL NULL NULL NULL NULL NULL NULL
366 WorkPersonType 40 철근공 NULL NULL NULL NULL NULL NULL NULL NULL
367 WorkPersonType 80 보통인부 NULL NULL NULL NULL NULL NULL NULL NULL
368 UserStateCode 20 현장 해당프로젝트코드 프로젝트코드 입력 근무시간에 포함 5 NULL NULL NULL NULL
369 WorkPersonType 10 직원 NULL NULL NULL NULL NULL NULL NULL NULL
370 ConstructionMethod_del 14 Post NULL In-T. Girder NULL NULL NULL NULL NULL NULL
371 ConstructStatusCode 84 설계취소 설계취소 설계현황 NULL NULL NULL NULL NULL NULL
372 bizform JHF-1-17 출장/배차신청서 02;1;관리자:임원:RECEIVE:담당:임원:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
373 WorkPersonType 50 용접공 NULL NULL NULL NULL NULL NULL NULL NULL
374 WorkPersonType 60 인장공 NULL NULL NULL NULL NULL NULL NULL NULL
375 WorkPersonType 70 가설공 NULL NULL NULL NULL NULL NULL NULL NULL
376 WorkPersonType 90 기타 NULL NULL NULL NULL NULL NULL NULL NULL
377 WorkCsPart 10 제작 1 NULL NULL NULL NULL NULL NULL NULL
378 WorkCsPart 20 인장 2 NULL NULL NULL NULL NULL NULL NULL
379 WorkCsPart 30 가설 3 NULL NULL NULL NULL NULL NULL NULL
380 WorkCsPart 40 B/L 4 NULL NULL NULL NULL NULL NULL NULL
381 WorkCsPart 50 패널/가로보 5 NULL NULL NULL NULL NULL NULL NULL
382 WorkCsPart 60 기타 6 NULL NULL NULL NULL NULL NULL NULL
383 CollectionPaymentCode 10 현금 NULL NULL NULL NULL NULL NULL NULL NULL
384 CollectionPaymentCode 20 B2B+ NULL B2B+ NULL NULL NULL NULL NULL NULL
385 CollectionPaymentCode 21 B2B NULL B2B NULL NULL NULL NULL NULL NULL
386 CollectionPaymentCode 22 전자실물 NULL 전자 NULL NULL NULL NULL NULL NULL
387 OutsidePartCode 20 원청사 NULL NULL NULL NULL NULL NULL NULL NULL
388 GroupCode_del 07 현장(작업반) 현장 현장 NULL 7 NULL NULL NULL NULL
389 ConstructionMethod_del 19 sPre NULL Segmental PreBeam NULL NULL NULL NULL NULL NULL
390 GroupCode 08 기술영업본부 NULL 기술영업 J07103 3 NULL NULL NULL NULL
391 GroupCode_del 09 영업팀 NULL 영업 J11301 3 NULL NULL NULL NULL
392 bizcarno 68소5709 소나타 NULL NULL NULL NULL NULL NULL NULL NULL
393 TeamLeader 10 김경태 NULL NULL NULL NULL NULL
394 TeamLeader 11 김규준 NULL NULL NULL NULL NULL
395 TeamLeader 12 김규홍 NULL NULL NULL NULL NULL
396 TeamLeader 13 김성호 NULL NULL NULL NULL NULL
397 TeamLeader 14 김현곤 NULL NULL NULL NULL NULL
398 TeamLeader 15 김현철 NULL NULL NULL NULL NULL
399 TeamLeader 16 김형곤 NULL NULL NULL NULL NULL
400 TeamLeader 17 박광욱 NULL NULL NULL NULL NULL
401 TeamLeader 18 박철진 NULL NULL NULL NULL NULL
402 TeamLeader 19 안종기 NULL NULL NULL NULL NULL
403 TeamLeader 20 양현석 NULL NULL NULL NULL NULL
404 TeamLeader 21 이민호 NULL NULL NULL NULL NULL
405 TeamLeader 22 이세정 NULL NULL NULL NULL NULL
406 TeamLeader 23 이승균 NULL NULL NULL NULL NULL
407 TeamLeader 24 이종갑 NULL NULL NULL NULL NULL
408 TeamLeader 25 천병재 NULL NULL NULL NULL NULL
409 TeamLeader 26 최문기 NULL NULL NULL NULL NULL
410 TeamLeader 27 최종선 NULL NULL NULL NULL NULL
411 TeamLeader 28 최철만 NULL NULL NULL NULL NULL
412 TeamLeader 29 김상진 NULL NULL NULL NULL NULL
413 ConstructionMethod 10 DR Girder DR DR Girder 1 NULL NULL NULL NULL
414 ConstructionMethod 18 Segmental DR Girder DR(Seg) Segmental DR Girder 2 NULL NULL NULL NULL
415 ConstructionMethod 11 Dr. Girder Dr Dr. Girder 3 NULL NULL NULL NULL
416 ConstructionMethod 30 Segmental Dr.Girder Dr(Seg) Segmental Dr.Girder 4 NULL NULL NULL NULL
417 ConstructionMethod 21 Dr. W/F Girder WDR Dr. Wide Flange Girder 5 NULL NULL NULL NULL
418 ConstructionMethod 16 Dr. Spliced Girder SPG Dr. Spliced Girder 6 NULL NULL NULL NULL
419 ConstructionMethod 31 Pretention Girder PTG Pretention Girder 7 NULL NULL NULL NULL
420 ConstructionMethod 32 Nodular Girder NOD Nodular Girder 8 NULL NULL NULL NULL
421 ConstructionMethod 15 기타(DPC Girder) DPC DPC Girder 9 NULL NULL NULL NULL
422 ConstructionMethod 33 기타(PC Arch) PC Arch 10 NULL NULL NULL NULL
423 ConstructionMethod 13 GC Rahmen[Pre-Beam] Pre-Beam Pre-Beam 11 NULL NULL NULL NULL
424 ConstructionMethod 14 GC Rahmen[Inverted T] In-T Inverted T 12 NULL NULL NULL NULL
425 ConstructionMethod 19 GC Rahmen[Segmental Inverted T] In-T(Seg) Segmental Inverted T 13 NULL NULL NULL NULL
426 ConstructionMethod 12 GC Rahmen[Dr. Girder] SGC Dr. Girder 14 NULL NULL NULL NULL
427 ConstructionMethod 34 GC Rahmen[Segmental Dr. Girder] SGC(Seg) Segmental Dr. Girder 15 NULL NULL NULL NULL
428 ConstructionMethod 22 기타 기타 기타 16 NULL NULL NULL NULL
429 TeamLeader 30 이종태 NULL NULL NULL NULL NULL
430 BridgeDesignFile 1 시공계획서 NULL NULL NULL NULL NULL NULL NULL NULL
431 BridgeDesignFile 2 인장계획서 NULL NULL NULL NULL NULL NULL NULL NULL
432 BridgeDesignFile 3 가설계획서 NULL NULL NULL NULL NULL NULL NULL NULL
433 BridgeDesignFile 4 시공상세도 NULL NULL NULL NULL NULL NULL NULL NULL
434 TeamLeader 31 봉 현 NULL NULL NULL NULL NULL
435 GroupCode 10 현장소장 현장 현장관리자 NULL 6 NULL NULL NULL NULL
436 CompanyKind JANG 장헌산업 CP001 장헌산업:JANG:CP001,파일테크:PILE:CP002,한맥기술:HANM:CP003 1 NULL NULL NULL NULL
437 GroupCode_del 99 회사공지 회사공지 회사공지 99 NULL NULL NULL NULL
438 OrderKind PQ PQ NULL NULL NULL 1 NULL NULL NULL NULL
439 OrderKind SOQ SOQ NULL NULL NULL 2 NULL NULL NULL NULL
440 OrderKind TP TP NULL NULL NULL 3 NULL NULL NULL NULL
441 OrderKind 협상 협상 NULL NULL NULL 4 NULL NULL NULL NULL
442 PositionCode C3A 기술위원 임원 기술위원 NULL 4 NULL NULL NULL NULL
443 UserStateCode 18 외출 해당프로젝트코드 프로젝트코드 입력 근무시간에 포함 4 NULL NULL NULL NULL
444 TeamLeader 32 최성욱 NULL NULL NULL NULL NULL
445 AbsentCode 0 자리있음 NULL NULL NULL NULL NULL
446 AbsentCode 1 자리있음(집중 근무중) NULL NULL NULL NULL NULL
447 AbsentCode 2 자리비움 NULL NULL NULL NULL NULL
448 AbsentCode 3 회의중 NULL NULL NULL NULL NULL
449 AbsentCode 4 외근중 NULL NULL NULL NULL NULL
450 AbsentCode 5 출장중 NULL NULL NULL NULL NULL
451 AbsentCode 6 출장중(장기) NULL NULL NULL NULL NULL
452 AbsentCode 7 휴가중 NULL NULL NULL NULL NULL
453 AbsentCode 8 휴가중(장기) NULL NULL NULL NULL NULL
454 bizform JHF-2-4 연차휴가 변경계획서 02;1;관리자:임원:RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
455 bizform JHF-1-18 업무주차확인증 02;1;RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
456 TeamLeader 33 김길호 NULL NULL NULL NULL NULL
457 ConstructStatusCode 41 공사완료2 제작거치완료 NULL NULL NULL NULL NULL NULL NULL
458 AbsentCode 9 파견중 NULL NULL NULL NULL NULL NULL NULL NULL
459 AbsentCode 10 훈련중 NULL NULL NULL NULL NULL NULL NULL NULL
460 AbsentCode 11 교육중 NULL NULL NULL NULL NULL NULL NULL NULL
461 AbsentCode 12 휴직중 NULL NULL NULL NULL NULL NULL NULL NULL
462 AbsentCode 13 현장근무중 NULL NULL NULL NULL NULL NULL NULL NULL
463 bizform JHF-9-4 명함신청서 02;1;RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
464 bizform JHF-9-6 재직증명서발급신청 02;1;RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
465 bizform JHF-9-7 원천징수영수증 02;1;RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
466 bizform JHF-9-2-s 연장근무신청서(개인) 02;1;관리자:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
467 bizform JHF-9-2 연장근무신청서(팀장) 02;1;임원:RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
468 bizform JHF-2-5 연차휴가 변경계획서(전체) 02;1;관리자:임원:RECEIVE:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
469 GroupCode 11 생산본부(생산직) 생산본부(생산직) 생산본부(생산직) NULL 9 NULL NULL NULL NULL
470 bizform JHF-3-1 일일작업보고 02;1;팀장:부서장:부사장:대표:RECEIVE:FINISH; 개정일 : 2019.03.01 Jangheon NULL NULL NULL NULL NULL
471 ProjectCode 19 계약 1 11 계약 NULL NULL NULL NULL NULL
472 bizform JHF-4-1 발신공문 02;1;팀장:부서장:부사장:대표:RECEIVE:FINISH; 개정일 : 2019.04.01 Jangheon NULL NULL NULL NULL NULL
473 bizform JHF-4-2 수신공문 02;1;팀장:부서장:부사장:대표:RECEIVE:FINISH; 개정일 : 2019.04.01 Jangheon NULL NULL NULL NULL NULL
474 OrderCompanyCode 18 일반건설업 NULL 일반건설업 NULL NULL NULL NULL NULL NULL
475 CompanyType JANG 장헌산업 NULL NULL NULL NULL NULL NULL NULL NULL
476 bizform JHF-5-1 계산서전표 02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH; 개정일 : 2018.07.04 Jangheon NULL NULL NULL NULL NULL
477 bizform JHF-5-4 정산전표(계산서) 02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH; 개정일 : 2025.09.08 Jangheon NULL NULL NULL NULL NULL
478 PositionCode C9 수석연구원 임원 수석연구원 10 NULL NULL NULL NULL
479 PositionCode E1D 책임연구원 직원 책임연구원 14 NULL NULL NULL NULL
480 PositionCode E9 선임연구원 직원 선임연구원 17 NULL NULL NULL NULL
481 PositionCode E99 연구원 직원 연구원 22 NULL NULL NULL NULL
482 GroupCode 12 기술개발센터 NULL 기술개발센터 NULL 6 NULL NULL NULL NULL
483 GroupCode 13 총괄기획실 NULL 총괄기획실 NULL 7 NULL NULL NULL NULL
484 PositionRank 88 연구직 NULL NULL X NULL NULL NULL NULL NULL
485 PositionRank 77 수습직 NULL NULL NULL NULL NULL NULL NULL NULL
486 PositionRank 75 별정직 NULL NULL NULL NULL NULL NULL NULL NULL
487 PositionRank 00 임원 NULL NULL NULL NULL NULL NULL NULL NULL
488 PositionRank 10 1급 NULL NULL NULL NULL NULL NULL NULL NULL
489 PositionRank 81 촉탁직 NULL NULL NULL NULL NULL NULL NULL NULL
490 PositionRank 20 2급 NULL NULL NULL NULL NULL NULL NULL NULL
491 PositionRank 30 3급 NULL NULL NULL NULL NULL NULL NULL NULL
492 PositionRank 40 4급 NULL NULL NULL NULL NULL NULL NULL NULL
493 PositionRank 83 계약직 NULL NULL NULL NULL NULL NULL NULL NULL
494 PositionRank 85 임시직 NULL NULL NULL NULL NULL NULL NULL NULL
495 PositionRank 50 5급 NULL NULL NULL NULL NULL NULL NULL NULL
496 PositionRank 60 6급(갑) NULL NULL NULL NULL NULL NULL NULL NULL
497 PositionRank 62 6급(을) NULL NULL NULL NULL NULL NULL NULL NULL
498 PositionRank 70 7급 NULL NULL NULL NULL NULL NULL NULL NULL
499 PositionRank 91 실습생 NULL NULL NULL NULL NULL NULL NULL NULL
500 PositionRank 95 기타 NULL NULL NULL NULL NULL NULL NULL NULL
501 PositionRank 94 파견직 NULL NULL NULL NULL NULL NULL NULL NULL
502 PositionRank 01 임원2 NULL NULL X NULL NULL NULL NULL NULL
503 DutyCode AB0001 설계및비상주감리 NULL NULL NULL NULL NULL NULL NULL NULL
504 DutyCode AB0002 설계및감리 NULL NULL NULL NULL NULL NULL NULL NULL
505 DutyCode AA0002 그룹관리 NULL NULL NULL NULL NULL NULL NULL NULL
506 DutyCode AT0001 해외사업총괄 NULL NULL NULL NULL NULL NULL NULL NULL
507 DutyCode AW001 자금 NULL NULL NULL NULL NULL NULL NULL NULL
508 DutyCode AZ0000 외주관리 NULL NULL NULL NULL NULL NULL NULL NULL
509 DutyCode AW002 출납 NULL NULL NULL NULL NULL NULL NULL NULL
510 DutyCode AI0000 기술개발 NULL NULL NULL NULL NULL NULL NULL NULL
511 DutyCode AJ0000 업무 NULL NULL NULL NULL NULL NULL NULL NULL
512 DutyCode AK0000 경리 NULL NULL NULL NULL NULL NULL NULL NULL
513 DutyCode AL0000 기획 NULL NULL NULL NULL NULL NULL NULL NULL
514 DutyCode AN0000 총무 NULL NULL NULL NULL NULL NULL NULL NULL
515 DutyCode AA0000 관리 NULL NULL NULL NULL NULL NULL NULL NULL
516 DutyCode AO0000 인사 NULL NULL NULL NULL NULL NULL NULL NULL
517 DutyCode AH0000 교환 NULL NULL NULL NULL NULL NULL NULL NULL
518 DutyCode AB0000 설계 NULL NULL NULL NULL NULL NULL NULL NULL
519 DutyCode AC0000 감리 NULL NULL NULL NULL NULL NULL NULL NULL
520 DutyCode AD0000 운전 NULL NULL NULL NULL NULL NULL NULL NULL
521 DutyCode AE0000 CAD NULL NULL NULL NULL NULL NULL NULL NULL
522 DutyCode AG0000 사무보조 NULL NULL NULL NULL NULL NULL NULL NULL
523 DutyCode 000000 대표이사 NULL NULL NULL NULL NULL NULL NULL NULL
524 DutyCode AP0000 전산 NULL NULL NULL NULL NULL NULL NULL NULL
525 DutyCode AQ0000 비서직 NULL NULL NULL NULL NULL NULL NULL NULL
526 DutyCode AR0000 경비(수위) NULL NULL NULL NULL NULL NULL NULL NULL
527 DutyCode AS0000 기타 NULL NULL NULL NULL NULL NULL NULL NULL
528 DutyCode AT0000 해외사업 NULL NULL NULL NULL NULL NULL NULL NULL
529 DutyCode AU0000 통,번역 NULL NULL NULL NULL NULL NULL NULL NULL
530 DutyCode AA0001 NULL NULL NULL NULL NULL NULL NULL NULL
531 DutyCode AV0000 영업 NULL NULL NULL NULL NULL NULL NULL NULL
532 OccupationCode 70 특수직 NULL NULL NULL NULL NULL NULL NULL NULL
533 OccupationCode 20 기술직 NULL NULL NULL NULL NULL NULL NULL NULL
534 OccupationCode 30 기능직 NULL NULL NULL NULL NULL NULL NULL NULL
535 OccupationCode 40 사무행정직 NULL NULL NULL NULL NULL NULL NULL NULL
536 OccupationCode 50 기타 NULL NULL NULL NULL NULL NULL NULL NULL
537 OccupationCode 60 연구직 NULL NULL NULL NULL NULL NULL NULL NULL
538 OccupationCode 10 관리직 NULL NULL NULL NULL NULL NULL NULL NULL
539 DegreeCode 12 대졸 NULL NULL NULL NULL NULL NULL NULL NULL
540 DegreeCode 13 초대졸 NULL NULL NULL NULL NULL NULL NULL NULL
541 ProjectSubCode 41a 계획 NULL NULL 기술-01 NULL NULL NULL NULL NULL
542 ProjectSubCode 41b 조사.분석 NULL NULL 기술-01 NULL NULL NULL NULL NULL
543 ProjectSubCode 41c 검토회의 NULL NULL 기술-01 NULL NULL NULL NULL NULL
544 ProjectSubCode 41d 테스트.수정 NULL NULL 기술-01 NULL NULL NULL NULL NULL
545 ProjectSubCode 41e S/W설계 NULL NULL 기술-01 NULL NULL NULL NULL NULL
546 ProjectSubCode 41f 구현 NULL NULL 기술-01 NULL NULL NULL NULL NULL
547 ProjectSubCode 41g 변수.알고리즘 NULL NULL 기술-01 NULL NULL NULL NULL NULL
548 ProjectSubCode 41h UI NULL NULL 기술-01 NULL NULL NULL NULL NULL
549 ProjectSubCode 41i Eng.Work NULL NULL 기술-01 NULL NULL NULL NULL NULL
550 ProjectSubCode 41j 컨셉디자인 NULL NULL 기술-01 NULL NULL NULL NULL NULL
551 ProjectSubCode 41k 디자인시안 NULL NULL 기술-01 NULL NULL NULL NULL NULL
552 ProjectSubCode 41l 디자인가이드 NULL NULL 기술-01 NULL NULL NULL NULL NULL
553 ProjectSubCode 41m 행정 NULL NULL 기술-01 NULL NULL NULL NULL NULL
554 ProjectSubCode 41n 기타 NULL NULL 기술-01 NULL NULL NULL NULL NULL
555 ProjectCode 41 기술 10 41 기술 NULL NULL NULL NULL NULL
556 UserStateCode 19 시차 XX-교휴-04 XX-교휴-04 (시작시간~종료시간) 시차 1 NULL NULL NULL NULL
557 HrCompanyCode BARON 바론 NULL NULL NULL 6 NULL NULL NULL NULL
558 HrCompanyCode HALLA 한라산업 NULL NULL NULL 5 NULL NULL NULL NULL
559 HrCompanyCode HANMAC 한맥기술 NULL NULL NULL 1 NULL NULL NULL NULL
560 HrCompanyCode JANG 장헌산업 NULL NULL NULL 3 NULL NULL NULL NULL
561 HrCompanyCode PTC 피티씨 NULL NULL NULL 4 NULL NULL NULL NULL
562 HrCompanyCode SAMAN 삼안 NULL NULL NULL 2 NULL NULL NULL NULL
563 HrOrder 11 채용 NULL NULL 입사 NULL NULL NULL NULL NULL
564 HrOrder 13 보직 NULL NULL 직책에 임명함 NULL NULL NULL NULL NULL
565 HrOrder 15 정기승진 NULL NULL 정기승진 NULL NULL NULL NULL NULL
566 HrOrder 17 정기승급 NULL NULL 정기승급(승호) NULL NULL NULL NULL NULL
567 HrOrder 18 전보 NULL NULL 부서변경 및 조직변경으로 인한 부서명칭변경 NULL NULL NULL NULL NULL
568 HrOrder 19 파견(부서) NULL NULL 부서간 파견(근무부서 변경) NULL NULL NULL NULL NULL
569 HrOrder 20 사간전입 NULL NULL 가족사간 근무(관리)회사 이동_근무회사(입사처리) NULL NULL NULL NULL NULL
570 HrOrder 21 사간전출 NULL NULL 가족사간 근무(관리)회사 이동_근무회사 퇴사처리 NULL NULL NULL NULL NULL
571 HrOrder 25 겸직 NULL NULL 두 개 이상의 부서에 근무 NULL NULL NULL NULL NULL
572 HrOrder 27 복귀 NULL NULL 파견 복귀 NULL NULL NULL NULL NULL
573 HrOrder 31 특별승진 NULL NULL 정기승진 대상자를 제외한 포상승진 NULL NULL NULL NULL NULL
574 HrOrder 33 특별승급 NULL NULL 정기승급 대상자를 제외한 포상승급 NULL NULL NULL NULL NULL
575 HrOrder 37 직위변경 NULL NULL 직위변경 NULL NULL NULL NULL NULL
576 HrOrder 39 전환 NULL NULL 직무 및 분야 변경 NULL NULL NULL NULL NULL
577 HrOrder 41 복직(개인) NULL NULL 복직(개인) NULL NULL NULL NULL NULL
578 HrOrder 47 복직(출산) NULL NULL 복직(출산) NULL NULL NULL NULL NULL
579 HrOrder 51 휴직(개인) NULL NULL 휴직(개인) NULL NULL NULL NULL NULL
580 HrOrder 54 휴직(유산) NULL NULL 휴직(유산) NULL NULL NULL NULL NULL
581 HrOrder 56 휴가(출산) NULL NULL 휴가(출산) NULL NULL NULL NULL NULL
582 HrOrder 57 휴직(육아) NULL NULL 휴직(육아) NULL NULL NULL NULL NULL
583 HrOrder 65 복직(병가) NULL NULL 복직(병가) NULL NULL NULL NULL NULL
584 HrOrder 66 복직(유산) NULL NULL 복직(유산) NULL NULL NULL NULL NULL
585 HrOrder 67 복직(육아) NULL NULL 복직(육아) NULL NULL NULL NULL NULL
586 HrOrder 74 정규직전환 NULL NULL 정규직전환 NULL NULL NULL NULL NULL
587 HrOrder 80 대기(감리) NULL NULL 감리대기자 NULL NULL NULL NULL NULL
588 HrOrder 81 재입사 NULL NULL 재입사 NULL NULL NULL NULL NULL
589 HrOrder 82 퇴직정산 NULL NULL 퇴직정산 NULL NULL NULL NULL NULL
590 HrOrder 85 대기 NULL NULL 발령부서가 확정되지 않아 관리부서 대기 NULL NULL NULL NULL NULL
591 HrOrder 91 계약연장 NULL NULL 계약직 계약연장 NULL NULL NULL NULL NULL
592 HrOrder A1 겸직해제 NULL NULL 겸직해제 NULL NULL NULL NULL NULL
593 HrOrder A2 대기(채용) NULL NULL 대기(채용) NULL NULL NULL NULL NULL
594 HrOrder A3 대기(퇴사) NULL NULL 대기(퇴사) NULL NULL NULL NULL NULL
595 HrOrder A4 면직 NULL NULL 직책에서 물러남 NULL NULL NULL NULL NULL
596 HrOrder A5 채용(가족사) NULL NULL 가족사간 소속회사 이동(입사) NULL NULL NULL NULL NULL
597 HrOrder A6 파견(합사) NULL NULL 합사로 파견(근무부서 변경) NULL NULL NULL NULL NULL
598 HrOrder A7 파견(해외) NULL NULL 해외현장 파견(근무부서 변경) NULL NULL NULL NULL NULL
599 HrOrder A8 휴직(병가-공상) NULL NULL 휴직(병가-공상) NULL NULL NULL NULL NULL
600 HrOrder A9 휴직(병가-사상) NULL NULL 휴직(병가-사상) NULL NULL NULL NULL NULL
601 HrOrder B1 파견(가족사) NULL NULL 가족사간 근무(관리)회사 이동_소속회사 NULL NULL NULL NULL NULL
602 HrOrder ZC 퇴직(가족사) NULL NULL 가족사간 소속회사 이동(퇴직) NULL NULL NULL NULL NULL
603 HrOrder ZE 퇴직(계약만료,공사종료) NULL NULL 퇴직(계약만료, 공사종료) NULL NULL NULL NULL NULL
604 HrOrder ZG 퇴직(권고사직) NULL NULL 퇴직(권고사직) NULL NULL NULL NULL NULL
605 HrOrder ZJ 퇴직(자유의사) NULL NULL 퇴직(자유의사) NULL NULL NULL NULL NULL
606 HrOrder ZN 퇴직(지분이동) NULL NULL 퇴직(지분이동) NULL NULL NULL NULL NULL
607 HrOrder ZR 퇴직(해고) NULL NULL 퇴직(해고) NULL NULL NULL NULL NULL
608 HrOrder ZZ 퇴직 NULL NULL 기타퇴직 NULL NULL NULL NULL NULL
609 bizcarno 184무2358 투산 NULL NULL NULL NULL NULL NULL NULL NULL
610 HrCompanyCode ETC 기타 NULL NULL NULL 7 NULL NULL NULL NULL
611 UserStateCode 30 오전반차 XX-교휴-04 XX-교휴-04 (a)오전반차 NULL NULL NULL NULL NULL NULL
612 UserStateCode 31 오후반차 XX-교휴-04 XX-교휴-04 (a)오후반차 NULL NULL NULL NULL NULL NULL
613 bizform JHF-3-10 연차휴가사용계획서 00;1;팀장:부서장:FINISH; 개정일 : 2016.05.01 Jangheon NULL NULL NULL NULL NULL
614 PositionCode E8A 기술직근로자 직원 기술직근로자 NULL 24 NULL NULL NULL NULL
615 WorkType 30 1차인장 1차인장 NULL NULL NULL NULL NULL NULL NULL
616 WorkType 40 거더거치 거더거치 NULL NULL NULL NULL NULL NULL NULL
617 WorkType 50 가로보가설 가로보 NULL NULL NULL NULL NULL NULL NULL
618 WorkType 60 패널가설 Deck NULL NULL NULL NULL NULL NULL NULL
619 WorkType 70 2차인장 2차인장 NULL NULL NULL NULL NULL NULL NULL
620 WorkType 80 벤트설치 벤트설치 NULL NULL NULL NULL NULL NULL NULL
621 WorkType 90 벤트해제 벤트해제 NULL NULL NULL NULL NULL NULL NULL
622 PaymentKindCode 13 계약외 NULL NULL NULL NULL NULL NULL NULL NULL
623 BridgeDesignFile 5 제작장배치도 NULL NULL NULL NULL NULL NULL NULL NULL
624 BridgeDesignFile 6 인장결과서 NULL NULL NULL NULL NULL NULL NULL NULL
625 ProductUnit 1 EA EA NULL NULL NULL NULL NULL NULL NULL
626 ProductUnit 2 ton ton NULL NULL NULL NULL NULL NULL NULL
627 ProductUnit 3 NULL NULL NULL NULL NULL NULL NULL
628 ProductUnit 4 NULL NULL NULL NULL NULL NULL NULL
629 ProductUnit 5 파렛트 파렛트 NULL NULL NULL NULL NULL NULL NULL
630 ProductUnit 6 SET SET NULL NULL NULL NULL NULL NULL NULL
631 ProductUnit 7 kg kg NULL NULL NULL NULL NULL NULL NULL
632 ProductUnit 8 포대 포대 NULL NULL NULL NULL NULL NULL NULL
633 TouchBoardContents COMPANYINFO 회사소개 COMPANYINFO 회사소식 1 NULL NULL NULL NULL
634 TouchBoardContents BASICINFO 기본자료 BASICINFO 안전 2 NULL NULL NULL NULL
635 TouchBoardContents MSDS MSDS자료 MSDS 안전 3 NULL NULL NULL NULL
636 TouchBoardContents EDUCATION 교육자료 EDUCATION 안전 4 NULL NULL NULL NULL
637 TouchBoardContents METHOD 공법 METHOD 직원교육 5 NULL NULL NULL NULL
638 TouchBoardContents PRODUCTION 제작 PRODUCTION 직원교육 6 NULL NULL NULL NULL
639 TouchBoardContents REBAR 철근 REBAR 직원교육 7 NULL NULL NULL NULL
640 TouchBoardContentsType VIDEO 영상 VIDEO 1 NULL NULL NULL NULL
641 TouchBoardContentsType PDF PDF PDF 2 NULL NULL NULL NULL
642 Sequences File Seq 0 공통_FILE_SEQ채번 NULL NULL NULL NULL NULL NULL
643 bizform JHF-9-8 재직증명서발급신청 02;1;RECEIVE:FINISH; 개정일 : 2025.02.11 Jangheon NULL NULL NULL NULL NULL
644 WorkType_del 60 패널가설 가설 NULL NULL NULL NULL NULL NULL NULL
645 intra_auth 인사A Personal Management 조회 NULL Y 인사 10 NULL NULL NULL NULL
646 intra_auth 인사B Personal Management 편집 NULL Y 인사 11 NULL NULL NULL NULL
647 intra_auth 사업A 사업관리 조회 NULL Y 업무 20 NULL NULL NULL NULL
648 intra_auth 사업B 사업관리 편집 NULL Y 업무 21 NULL NULL NULL NULL
649 intra_auth 공장A 공장 조회 NULL Y 공장 30 NULL NULL NULL NULL
650 intra_auth 공장B 공장 편집 NULL Y 공장 31 NULL NULL NULL NULL
651 intra_auth 공사A 공사관리 조회 NULL Y 공사 40 NULL NULL NULL NULL
652 intra_auth 공사B 공사관리 편집 NULL Y 공사 41 NULL NULL NULL NULL
653 intra_auth 경리A Account 조회 NULL Y 회계 50 NULL NULL NULL NULL
654 intra_auth 경리B Account 편집 NULL Y 회계 51 NULL NULL NULL NULL
655 intra_auth 노무A 노무자 조회 NULL Y 노무 60 NULL NULL NULL NULL
656 intra_auth 노무B 노무관리 NULL Y 노무 61 NULL NULL NULL NULL
657 intra_auth 임원 근태이력,연차이력(전부서) NULL Y 임원 70 NULL NULL NULL NULL
658 intra_auth 총무 공지사항(글쓰기)/사내양식,배차(편집)/점심식단 NULL Y 총무 80 NULL NULL NULL NULL
659 intra_auth 부서 근태이력,연차이력(해당부서) NULL Y 부서 90 NULL NULL NULL NULL
660 intra_auth 임원회의 회의록(임원회의자료 열람/저장) NULL Y 임원회의 100 NULL NULL NULL NULL
661 intra_auth 영업회의 회의록(영업회의자료 열람/저장) NULL Y 영업회의 110 NULL NULL NULL NULL
662 intra_auth 일반회의 회의록(설계/공사회의자료 열람/저장) NULL Y 일반회의 120 NULL NULL NULL NULL
663 intra_auth 지적 지적재산권(편집) NULL Y 지적재산 130 NULL NULL NULL NULL
664 intra_auth 설정 설정권한자 NULL Y 설정 140 NULL NULL NULL NULL
665 intra_auth 한맥 한맥기술 접근 NULL Y 한맥 150 NULL NULL NULL NULL
666 intra_auth 파일 파일테크 접근 NULL Y 파일 160 NULL NULL NULL NULL
667 intra_auth 대화대표 대화시스템-전부서조회가능 NULL Y 대화대표이사 170 NULL NULL NULL NULL
668 intra_auth 대화부서 대화시스템-해당부서조회가능 NULL Y 대화부서장 180 NULL NULL NULL NULL
669 intra_auth 기술자료 기술자료 업로드(자료실) NULL Y 기술자료 190 NULL NULL NULL NULL
670 intra_auth 전표결재 전표결재 NULL Y 전표결재 200 NULL NULL NULL NULL
671 intra_auth 조직 팀관리-조직구성 메뉴 조회 NULL Y 조직 210 NULL NULL NULL NULL
672 intra_auth 조달 조달청 나라장터 입찰정보 조회 NULL Y 조달 310 NULL NULL NULL NULL
673 intra_auth 업무A 사업관리(구 Project Management) 조회 - 사용안함 NULL N 업무 22 NULL NULL NULL NULL
674 intra_auth 업무B 사업관리(구 Project Management) 편집 - 사용안함 NULL N 업무 23 NULL NULL NULL NULL
675 bizform JHF-5-2 기타전표 02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH; 개정일 : 2018.07.04 Jangheon NULL NULL NULL NULL NULL
676 bizform JHF-5-3 전도금전표 02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH; 개정일 : 2025.09.08 Jangheon NULL NULL NULL NULL NULL
677 bizform JHF-5-5 정산전표(기타) 02;1;팀장:부서장:부사장:RECEIVE:담당:부서장:대표:FINISH; 개정일 : 2025.09.08 Jangheon NULL NULL NULL NULL NULL

105393
csv/dailyproject.csv Normal file

File diff suppressed because it is too large Load Diff

321
csv/member.csv Normal file
View File

@@ -0,0 +1,321 @@
MemberNo,korName,RankCode,GroupCode,WorkPosition,chiName,engName,EntryDate,LeaveDate,eMail,Company,WorkCompany
M08502,김갑성,C7,9,9,金甲成,"Kim Kapseong",2008-02-01,2013-03-31,ks721kim@jangheon.co.kr,NULL,NULL
J06302,장경문,E7,3,9,張京文,"Jang Kyung Mun",2006-10-16,2008-04-21,,NULL,NULL
J06303,윤동혁,E7,5,9,尹東赫,"Yun Dong Hyuck",2006-10-16,2009-09-21,,NULL,NULL
M05510,김인열,C6,4,1,金仁烈,"Kim in yeol",2005-08-20,0000-00-00,kiy8536@jangheon.co.kr,JANG,JANG
M02108,김락희,C7,2,9,金樂喜,"Kim Laghee",2002-10-28,2007-02-28,Laghee@dreamwiz.com,NULL,NULL
J05209,윤정호,E3,3,9,尹廷豪,"Yoon, jeongho",2005-05-26,2006-08-25,@hanmaceng.co.kr,NULL,NULL
J05211,임태경,E1,10,9,任泰暻,"Im Tae Gyeong",2005-06-01,2010-06-25,@hanmaceng.co.kr,NULL,NULL
J06102,이용운,C8,2,9,李用雲,"LEE YONGWOON",2006-02-21,2008-12-31,ywlee@hanmaceng.co.kr,NULL,NULL
J06401,안병록,C3A,1,1,"安 秉錄","Byung Lok, An",2018-04-01,0000-00-00,bl3245@jangheon.co.kr,JANG,BARON
J06301,강성희,E7,2,9,康盛喜,"KANG SUNG HEE",2006-04-12,2009-08-31,@hanmaceng.co.kr,NULL,NULL
J06103,김윤수,C6,1,9,金潤秀,"KIM YOON SOO",2006-03-01,2006-10-15,,NULL,NULL
J06601,유운호,E8,3,9,柳運浩,,2006-10-23,2007-04-30,,NULL,NULL
J06201,조현수,E1,5,9,趙賢銖,"jo hun su",2006-12-18,2007-06-30,hsjock712@hmtele.com,NULL,NULL
J07201,김형일,E2,5,9,金亨一,"Kim Hyoung il",2007-01-01,2007-11-30,khi2903@hanmaceng.co.kr,NULL,NULL
J07202,김회성,C8,6,9,金會成,"Kim Hoi Sung",2007-01-01,2020-03-31,kyr5004@hanmaceng.co.kr,NULL,NULL
J07203,이태휘,E4,2,9,李泰輝,"Lee Tae Hwi",2007-01-01,2007-01-06,leeth1228@hotmail.com,NULL,NULL
J07101,부교탁,C6,1,9,夫喬鐸,"Boo Kyo Tag",2006-02-26,2007-05-30,@hanmaceng.co.kr,NULL,NULL
T02220,주상구,E1,5,9,周相龜,"Joo Sang Gu",1996-07-08,2015-07-31,twojoo96@hmtele.com,NULL,NULL
J07204,이호묵,E2,4,9,李鎬默,"Lee Ho Mook",2007-02-26,2007-11-30,@hanmaceng.co.kr,NULL,NULL
J07205,도한영,E2,2,9,都翰泳,"Do Han Young",2007-02-26,2008-11-30,k3726@piletech.co.kr,NULL,NULL
J07206,구인회,E3,4,9,具仁會,"Gu In Hoi",2007-02-26,2007-12-31,@hanmaceng.co.kr,NULL,NULL
J07207,유일욱,E3,4,9,劉一郁,"Yoo Il Wook",2007-02-26,2007-10-31,@hanmaceng.co.kr,NULL,NULL
M03101,이경열,C6,2,9,李京烈,LEEKYUNGYOUL,2003-01-01,2003-01-01,lky702@hanmaceng.co.kr,NULL,NULL
J07208,이방희,E1,4,9,李邦熙,,2007-04-02,2008-05-31,@hanmaceng.co.kr,NULL,NULL
J07601,김영옥,E8,6,9,金永玉,,2007-04-03,2009-02-10,@hanmaceng.co.kr,NULL,NULL
J07602,김석태,E8,6,9,金錫泰,,2007-04-03,2010-01-31,@hanmaceng.co.kr,NULL,NULL
J07102,유명근,C6,3,9,劉命根,"Yoo Myung Keun",2007-04-25,2007-06-30,@hanmaceng.co.kr,NULL,NULL
J07103,김용혁,C6,8,9,金容赫,"yonghuck kim",2007-05-01,2020-12-31,yonghuck@naver.com,JANG,JANG
J07209,박종민,E3,3,9,朴鍾珉,"Park jong min",2007-05-01,2010-06-25,nati77@jangheon.co.kr,NULL,NULL
J07210,이정훈,C8,8,1,李正訓,"Lee Jeong Hoon",2007-06-04,0000-00-00,fb1t@jangheon.co.kr,JANG,BARON
T06202,최동석,E1,2,9,崔童碩,"choi dong seok",2006-03-20,2006-03-20,rtpa77@hmtele.com,NULL,NULL
J01201,권혁진,C9,13,9,權赫鎭,"Kwon Hyok Jin",2004-10-04,2026-01-05,cozyjin@hanmaceng.co.kr,JANG,BARON
J01202,이지나,E7,3,9,李智那,"Lee Ji Na",2007-10-01,2008-09-17,@hanmaceng.co.kr,NULL,NULL
J07212,권준모,E4,3,9,權埈模,"Kwon Jun Mo",2007-10-16,2008-07-15,@hanmaceng.co.kr,NULL,NULL
J07213,권준모,E4,3,9,NULL,NULL,0000-00-00,2010-01-01,NULL,NULL,NULL
J07214,권준모,E4,3,9,NULL,NULL,0000-00-00,2010-01-01,NULL,NULL,NULL
J17201,김범석,E7,4,9,金範席,"Kim Bum Seok",2007-10-17,2007-12-31,@hanmaceng.co.kr,,
J01203,주상구,C8,6,9,周相龜,"Ju Sang Gu",1996-07-08,2015-07-31,@hanmaceng.co.kr,NULL,NULL
J14201,서정락,E1,4,9,徐正洛,"Seo jeong lack",2008-01-14,2019-03-31,sas1465@hanmaceng.co.kr,JANG,JANG
J11201,윤상훈,E3,5,9,尹祥勳,"YOUN SANGHUN",2008-02-11,2009-10-22,@hanmaceng.co.kr,NULL,NULL
J11202,양종식,C7,4,1,楊鐘植,"Yang Jong Sik",2008-02-11,0000-00-00,cejs76@jangheon.co.kr,JANG,JANG
J08301,이민진,E7,8,9,李旼珍,"LEE MINJIN",2008-03-03,2012-04-24,@hanmaceng.co.kr,NULL,NULL
J08201,김재호,C7,8,9,金載澔,"Kim jae ho",2008-04-14,2024-04-30,hazaking@jangheon.co.kr,JANG,JANG
T03236,강호선,E4,2,9,姜浩仙,"Kang ho-sun",2003-06-04,2003-06-04,hsunny@hmtele.com,NULL,NULL
J08202,염인순,E7,2,9,염인순,,2008-05-26,2008-05-26,@hanmaceng.co.kr,NULL,NULL
J08203,곽은지,E7,2,9,郭恩智,"Kwak eun ji",2008-06-09,2010-06-30,kawgi@jangheon.co.kr,NULL,NULL
J18201,신영인,E1,5,9,辛泳寅,,2008-06-18,2008-09-30,@hanmaceng.co.kr,NULL,NULL
J14301,장은영,E7,5,9,장은영,"Jang eun young",2008-07-14,2009-03-16,@hanmaceng.co.kr,NULL,NULL
J01204,김종열,E1,2,9,金鐘烈,"kim chong yoeal",2008-08-01,2009-05-31,@hanmaceng.co.kr,NULL,NULL
J08302,홍석철,E7,2,9,洪錫哲,"Hong Seok Chul",2008-08-04,2010-11-30,preya20@jangheon.co.kr,NULL,NULL
J08101,우창윤,C6,4,9,禹昌潤,,2008-09-01,2009-08-31,@hanmaceng.co.kr,NULL,NULL
J08303,윤희민,E7,5,9,尹喜珉,"Yoon Hee Min",2008-10-01,2009-10-22,thms4@jangheon.co.kr,NULL,NULL
J08304,정은택,E7,5,9,鄭恩宅,"Jeong Eun Taek",2008-10-01,2009-10-22,windbreak@jangheon.co.kr,NULL,NULL
J08305,김규호,E3,2,9,金圭鎬,"Kim Gyu Ho",2008-10-09,2008-10-09,mofaiu@jangheon.co.kr,NULL,NULL
J08306,주영진,E3,2,9,周泳鎭,"Joo Young Jin",2008-10-09,2016-01-31,icarus@jangheon.co.kr,NULL,NULL
J08307,박찬영,E7,4,9,朴贊煐,"Park chan young",2008-10-27,2012-12-31,pcy0503@jangheon.co.kr,NULL,NULL
J08204,송성윤,E1,4,9,宋祥鉉,"SONG SANG HYUN",2008-11-14,2014-03-31,@hanmaceng.co.kr,JANG,JANG
J08205,황영섭,E2,2,9,,,2008-11-17,2008-11-30,@hanmaceng.co.kr,NULL,NULL
J08206,김재헌,C7,2,2,金哉憲,"KIM JAE HEON",2008-11-12,0000-00-00,@hanmaceng.co.kr,BARON,
T02303,신현우,C6,2,2,申鉉宇,"Hyun-Woo, Shin",2000-01-03,0000-00-00,recruit@hanmaceng.co.kr,BARON,
J15202,류한규,C8,8,9,柳漢圭,"Ryu Han Kyu",2015-06-01,2021-05-31,ipkn1919@jangheon.co.kr,JANG,JANG
Tadmin,관리자,E5,12,1,,Admin,2020-05-20,0000-00-00,erp@jangheon.co.kr,BARON,NULL
J09301,김옥영,E7,5,9,金玉永,"Kim Ok Young",2009-04-06,2009-05-30,@hanmaceng.co.kr,NULL,NULL
J09101,김우천,C7,8,9,金祐千,"kim woo chun",2009-05-06,2020-03-18,wckim@jangheon.co.kr,JANG,JANG
T08301,최은영,E3,2,9,崔銀英,"Choi Eunyoung",2008-03-03,2021-04-06,dms9020@hmtele.com,NULL,NULL
J09601,박영훈,E8,6,9,박영훈,,2009-02-01,2010-01-31,@hanmaceng.co.kr,NULL,NULL
J09302,윤선일,E4,4,9,尹宣壹,"Sun Il Youn",2009-11-09,2018-03-31,TLKSKY@jangheon.co.kr,NULL,NULL
J09102,강상욱,C6,8,9,姜相郁,"Sang wook, Kang",2009-12-07,2022-10-31,kangswksm@jangheon.co.kr,JANG,JANG
J09304,손윤정,E7,6,9,,,2009-11-12,2010-05-20,SYJ0805@jangheon.co.kr,NULL,NULL
J09305,이윤정,E7,3,9,李倫正,"Yun-jung, Lee",2009-11-16,2011-11-30,yj870722@jangheon.co.kr,NULL,NULL
J09201,방희철,C6,3,9,方熙喆,"Bang Heui Chul",2009-12-14,2011-03-30,hcbang59@jangheon.co.kr,NULL,NULL
J09202,김봉준,E1,8,9,金鳳俊,"Bong-Joon, Kim",2009-12-14,2012-10-31,bjkim08@hanmaceng.co.kr,NULL,NULL
M02302,김승국,C7,6,8,金承局,"Kim Seung Guk",2010-10-01,2026-01-05,civilksk@jangheon.co.kr,JANG,JANG
J13310,남점권,C6,4,9,南点權,"Nam Jeom Kwon",2013-07-01,2017-02-28,jknam61@jangheon.co.kr,NULL,NULL
J10401,윤진호,C8,4,9,尹鎭浩,Jason.Yoon(Jinho),2010-02-17,2011-03-25,yetoto@jangheon.co.kr,NULL,NULL
J10301,최태순,C7,4,1,崔泰洵,"Chil tae soon",2010-02-22,0000-00-00,khw04@jangheon.co.kr,JANG,JANG
J10501,오정태,E2,4,9,吳定泰,"Oh jeong tae",2010-02-22,2011-05-31,ohjungtae@jangheon.co.kr,NULL,NULL
J10302,이승열,E4,8,9,李丞烈,"Lee seung yeol",2010-02-22,2013-02-25,sy820420@jangheon.co.kr,NULL,NULL
J10202,이장욱,E2,8,9,李章旭,"lee jang uk",1997-10-11,2014-03-31,19720308@jangheon.co.kr,JANG,JANG
M05102,정해웅,C1,1,9,鄭海雄,"CHUNG HAE UNG",2005-12-01,2005-12-01,huc@hanmaceng.co.kr,NULL,NULL
J10303,강지성,E3,6,9,姜智聲,"KANG JI SUNG",2009-07-20,2016-07-31,@hanmaceng.co.kr,NULL,NULL
J10304,노홍주,E3,8,9,盧弘周,"NOH HONG JU",2010-06-22,2012-09-30,hee7812@jangheon.co.kr,NULL,NULL
J10305,강미정,E7,6,9,,,2010-06-21,2010-08-30,@hanmaceng.co.kr,NULL,NULL
J10307,정지영,E7,2,9,鄭智英,"Ji Young, Jung",2010-07-05,2013-04-30,unity1213@jangheon.co.kr,NULL,NULL
J10308,차성대,C7,4,1,車成大,"CHA SUNG DAI",2010-07-19,0000-00-00,csd915@jangheon.co.kr,JANG,JANG
M06315,허유미,E4,8,9,許有美,"Heo Yu-Mi",2006-12-11,2018-08-31,hyumi@hanmaceng.co.kr,JANG,JANG
J10311,이호재,E1,4,9,李鎬在,"Lee Ho Jae",2003-12-15,2014-03-31,@hanmaceng.co.kr,JANG,JANG
J10310,김정기,C7,4,9,金正基,"Kim Jung Gi",2010-11-15,2023-07-31,@hanmaceng.co.kr,JANG,JANG
J10309,이동주,E1,4,9,李棟株,"LEE DONG JU",2010-10-25,2022-02-02,djlee@jangheon.co.kr,JANG,JANG
J10312,김경환,E2,4,9,金京煥,"KIM KYUNG HWAN",2002-10-14,2011-04-12,@hanmaceng.co.kr,NULL,NULL
J10313,김미자,E3,6,8,金美子,"KIM MI JA",2010-11-11,2025-12-31,@hanmaceng.co.kr,JANG,JANG
J10314,김진,C8,8,1,"金 眞","kim jin",2010-11-29,0000-00-00,kimjin1971@jangheon.co.kr,JANG,BARON
J10315,허남덕,C6,4,9,許南德,"Hur Nam DUK",2010-11-29,2021-12-31,hkn1010@naver.com,JANG,NULL
M09103,박영옥,C7,2,9,朴永玉,"Park Youngok",2009-04-01,2012-01-15,kkumenergy@hanmaceng.co.kr,NULL,NULL
M01103,서성열,C1,1,1,徐聖烈,"Seo, Sung Yeol",2015-01-20,0000-00-00,sys55@jangheon.co.kr,JANG,PTC
J11301,동원영,C7,1,9,董原榮,"Dong Won Young",2011-05-16,2014-12-31,@hanmaceng.co.kr,JANG,JANG
J11203,박재홍,E1,8,9,朴宰弘,"Park Jae Hong",2011-06-13,2019-10-31,j11203@jangheon.co.kr,JANG,JANG
J11302,박진오,E2,4,9,朴珍五,"Park Jin Oh",2011-07-01,2022-02-06,jino4516@hanmaceng.co.kr,JANG,JANG
J11303,유붕종,C8,2,9,"劉 鵬 鍾","YOO BOUNG JONG",2011-11-01,2017-03-31,@hanmaceng.co.kr,JANG,JANG
J11204,김현중,E3,8,9,金炫中,"Kim Hyon-Joong",2011-11-01,2012-02-28,J11204@jangheon.co.kr,NULL,NULL
J11304,윤효상,E3,6,9,,,2010-10-04,2015-08-31,yunhyo24@jangheon.co.kr,NULL,NULL
J11305,정대수,C7,8,9,鄭大洙,"Jung Dae Soo",2012-01-01,2021-05-31,dsjung67@gmail.com,JANG,JANG
T02230,조영훈,E1,2,2,趙令勳,ChoYoungHoon,1999-06-21,1999-06-21,atoz20002@hanmaceng.co.kr,,NULL
T02328,김지우,E4,2,9,金祉佑,"kim ji woo",2002-01-07,2002-01-07,juyajuya@hanmaceng.co.kr,,NULL
B09301,오석근,E5,2,9,吳碩根,"Oh seok keun",2009-06-01,2009-06-01,mivacore@hanmaceng.co.kr,,NULL
J12201,오승현,C9,12,9,吳昇炫,"Oh Seung Hyun",2008-08-04,2021-07-31,hyun3201@jangheon.co.kr,JANG,JANG
J12202,이종승,C8,4,9,李鐘承,"Yi Jong seung",2007-12-03,2023-03-25,@hanmaceng.co.kr,JANG,JANG
J12203,지영걸,C7,9,9,池英杰,"JI YOUNG GEOL",2012-07-02,2013-02-28,hirojee@jangheon.co.kr,NULL,NULL
J12301,전웅,C8,1,9,田雄,"Jun WoongJun Woong",0000-00-00,2013-04-30,junito@hanmaceng.co.kr,NULL,NULL
J12302,최호란,E1,4,9,NULL,NULL,0000-00-00,2012-12-31,NULL,NULL,NULL
T04204,신윤식,C8,6,9,申允湜,"Yoon-Shik Shin",2004-03-15,2023-01-31,gyvermc@phonex.co.kr,JANG,JANG
J13201,문종탁,E1,8,1,文鐘卓,"Moon Jong-Tak",2013-02-18,0000-00-00,jtmoon@jangheon.co.kr,JANG,BARON
J13301,김시배,E4,8,9,金時培,"KIM SI BAE",2013-03-04,2013-07-11,ksb1212@jangheon.co.kr,JANG,JANG
J13302,심현리,E7,2,9,沈炫里,"Sim Hyeon-ri",2013-04-01,2014-04-30,hyeonri@jangheon.co.kr,NULL,NULL
J13303,김근혁,E4,2,9,金根赫,"KIM KeunHyuk",2013-04-22,2018-03-31,khkim@jangheon.co.kr,JANG,JANG
J13305,윤두현,E2,4,9,尹斗鉉,"Yun Du Hyun",2013-04-22,2022-03-15,doohyuny04@jangheon.co.kr,JANG,JANG
J13309,정재환,E7,8,9,鄭在桓,"Jung Jae Hwan",2013-04-29,2013-06-18,alltogether34@jangheon.co.kr,JANG,JANG
J13308,이의환,E1,4,1,李義煥,"Eui-Hwan, Lee",2013-04-22,0000-00-00,j13308@jangheon.co.kr,JANG,JANG
M02107,이경훈,C2,1,9,NULL,NULL,1997-04-01,1997-04-01,NULL,NULL,NULL
tadmin2,관리자2,E1,6,8,,TEST,2018-02-01,0000-00-00,,,
J13311,나지영,E7,9,9,羅志映,"Na Jiyoung",2013-12-09,2013-12-16,blue8831@jangheon.co.kr,NULL,NULL
J13312,조수민,E7,1,9,趙秀珉,"Jo Su Min",2013-12-26,2014-12-25,,NULL,NULL
J14302,이석준,E1,4,9,李碩俊,"lee seok jun",2014-03-01,2024-10-27,neosj21@jangheon.co.kr,JANG,JANG
J14303,이철우,C2,1,9,李哲雨,"lee cheol woo",2014-01-01,2025-03-31,lee@jangheon.co.kr,JANG,HANMAC
J14304,김문호,C2,1,9,"金 汶 祜","Kim Moon Ho",2014-03-03,2015-04-19,mhkim313@jangheon.co.kr,JANG,JANG
M02105,최동식,C5,1,9,崔東植,"Choi Dong Sig",2001-07-09,2001-07-09,cds@hanmaceng.co.kr,,NULL
M02206,김원근,C7,1,9,金源根,"kim won geon",2001-07-09,2001-07-09,kimwg7872@hanmaceng.co.kr,,NULL
B13306,이지혜,E5,2,9,李知惠,"Lee JiHye",2013-12-13,2013-12-13,leejh@hanmaceng.co.kr,,NULL
B10301,선우현,E5,2,9,"鮮于 玄","Sunwoo Hyun",2010-01-04,2010-01-04,sianneas@hanmaceng.co.kr,,NULL
B14301,최지은,E5,20,9,崔지은,"Choi Ji Eun",2014-03-19,2014-03-19,jieun@hanmaceng.co.kr,,NULL
J14306,이지혜,E4,4,9,李知惠,"Lee JiHye",2013-12-13,2020-03-08,leejh@jangheon.co.kr,NULL,NULL
J14202,황재민,E1,8,1,黃載珉,"Hwang Jae Min",2014-05-21,0000-00-00,jmhwang@hanmaceng.co.kr,JANG,PTC
P13302,이세민,E1,6,8,李洗旼,,2013-02-25,2025-12-31,jini3474@jangheon.co.kr,JANG,JANG
J14308,고영배,E2,6,9,高泳培,"Go Yeongbae",2008-05-26,2022-07-31,go4zzang@jangheon.co.kr,JANG,JANG
J14101,남궁전,C6,8,9,南宮典,"Namgung jeon",2014-09-15,2021-02-28,nam1309@jangheon.co.kr,JANG,JANG
J14203,이중경,E2,8,9,李重慶,"Lee Joong kyung",2014-09-22,2016-04-25,first7777@jangheon.co.kr,NULL,NULL
J14309,최명희,E3,4,9,,,2014-02-01,2016-12-31,@hanmaceng.co.kr,JANG,JANG
J14204,배규환,C8,6,9,裵圭煥,"Bae Kyu Whan",2014-10-13,2016-10-12,bkh@jangheon.co.kr,NULL,NULL
J14601,우승욱,E7,4,9,禹勝昱,"Woo Seung Uk",2014-10-01,2015-03-31,xian8909@jangheon.co.kr,JANG,JANG
J14310,최혜란,E2,2,9,,,2006-09-01,2020-04-30,@hanmaceng.co.kr,JANG,JANG
J14311,이정수,E3,2,9,,,2011-04-01,2024-04-01,@hanmaceng.co.kr,JANG,JANG
J14312,박지현,E3,6,9,,,2014-03-01,2025-08-31,pakgh7@hanmail.net,JANG,JANG
J14313,양정규,E3,2,9,,,2012-01-01,2012-01-01,@hanmaceng.co.kr,JANG,JANG
M12201,남갑준,C1,1,9,南甲俊,"Nam Kab Joon",2014-03-01,2019-06-30,,JANG,JANG
J15201,조수원,C6,8,9,趙秀元,"CHO SUWON",2015-02-01,2026-03-08,"jomabal@naver. com",JANG,JANG
M08102,정태준,C1,2,9,NULL,NULL,0000-00-00,2000-01-01,NULL,NULL,NULL
B15302,하유미,E5,20,9,NULL,NULL,0000-00-00,2000-01-01,NULL,NULL,NULL
J15301,권민준,E2,4,9,權?埈,"Kwon Min Jun",2015-04-01,2025-06-19,kgamja89@naver.com,JANG,JANG
J15302,장승현,E3,8,9,張昇賢,"Jang SeungHyun",2015-04-01,2023-08-31,keunnamu1000@jangheon.co.kr,JANG,JANG
J15101,류영섭,C3A,1,1,柳永燮,"Ryoo young sub",2015-05-06,0000-00-00,ysryoo@gmail.com,JANG,BARON
J15307,이병수,E2,8,9,李炳秀,"Lee Byung Soo",2015-11-16,2025-06-30,leebs@jangheon.co.kr,JANG,JANG
M16319,박규식,C6,2,9,NULL,NULL,0000-00-00,2017-07-31,NULL,NULL,NULL
J15206,이태준,C8,4,9,李泰俊,"LEE TAE JOON",2015-10-01,2020-12-31,uccpl109@empas.com,JANG,JANG
B16315,손다혜,E5,2,9,孫多慧,"Dahhye Sohn",2016-12-13,2017-03-20,jane9029@naver.com,,NULL
J15303,이상호,E3,6,9,NULL,NULL,2015-07-08,2015-07-24,NULL,NULL,NULL
J15304,양수현,E7,6,9,梁修顯,"Yang Su Hyeon",2015-07-20,2016-12-15,,JANG,JANG
J15203,김기홍,C6,8,9,金起弘,"Kim Ki-hong",2015-08-17,2017-03-31,shapren@jangheon.co.kr,JANG,JANG
B15306,남궁성,E3,4,1,南宮珹,"Nam Kung Sung",2015-08-10,0000-00-00,sunga13@hanmaceng.co.kr,JANG,JANG
J15204,임진홍,C7,8,9,任眞弘,IMJINHONG,2015-09-01,2017-01-31,yjh04569@naver.com,JANG,JANG
J15205,김도훈,E1D,12,9,金度勳,"Kim Do Hoon",2015-09-01,2021-09-30,dhkim@jangheon.co.kr,JANG,JANG
J15305,이우승,E5,8,9,李祐昇,"Lee Woo Seung",2015-09-02,2019-02-28,vl_civil@jangheon.co.kr,JANG,JANG
M21201,정태원,C6,1,9,,"Taewon Chung",2014-07-01,2014-07-01,ctw@hanmaceng.co.kr,,NULL
J15306,김세열,E1D,12,9,金世悅,"Kim Se Yul",2015-10-05,2025-12-31,j15306@hanmaceng.co.kr,JANG,BARON
J16101,남철우,C8,6,9,南哲祐,"Nam Chul Woo",2016-02-16,2017-04-18,cwnam@samaneng.com,NULL,NULL
J16201,권명호,E1,4,9,,,2016-04-01,2018-04-30,,JANG,JANG
J16202,이중경,C8,8,1,李重慶,"Lee Joong Kyung",2016-06-02,0000-00-00,first7777@jangheon.co.kr,JANG,JANG
J16203,표용암,E1,6,9,"表 龍 岩","yong am pyo",2016-07-01,2020-01-31,yapyo2002@hanmail.net,NULL,NULL
B17305,정혜윤,E4,2,2,,,2017-03-02,0000-00-00,jhyy12@naver.com,BARON,NULL
J17202,송효근,E2,6,9,宋效根,,2017-04-03,2018-06-30,cmp78@nate.com,NULL,NULL
J17301,정환주,E5,6,9,鄭煥主,"Jung Hwan Joo",2017-04-03,2017-10-31,tkels200@naver.com,NULL,NULL
J17203,이상엽,C7,6,9,李相曄,"Lee Sang Yeob",2017-04-17,2018-11-15,yeobi0717@hanmail.net,JANG,JANG
J17204,전영신,E2,4,9,全永信,"Jeon Young Sin",2017-07-10,2021-08-16,ysjeon@jangheon.co.kr,JANG,JANG
J17205,김성원,E1,8,1,金成元,"Kim Sung Won",2017-09-01,0000-00-00,yi04@nate.com,JANG,JANG
J17206,신상한,C8,4,9,辛相翰,"Shin Sang Han",2017-12-18,2018-08-10,shinys43@korea.com,JANG,JANG
J18202,이휘창,C7,4,9,李暉彰,"Lee Hwi Chang",2018-02-01,2021-03-31,lee2373g@hanmail.net,JANG,JANG
J18203,김인수,C7,4,1,金寅洙,"Kim In Soo",2018-02-01,0000-00-00,cclkiss@hanmail.net,JANG,JANG
J18204,김상준,E2,4,9,金商俊,"Kim Sang Jun",2018-02-01,2019-05-31,m16mmk3@hotmail.com,JANG,JANG
J22201,윤선일,E2,4,1,尹宣壹,,2022-02-28,0000-00-00,j22201@jangheon.co.kr,JANG,JANG
J17207,김량균,C5,8,1,金亮均,"Kim Ryang Gyun",2017-08-01,0000-00-00,rgkim@jangheon.co.kr,JANG,JANG
J18205,정충열,E1,8,9,鄭忠烈,"Jeong Choong Yeol",2008-02-11,2025-06-05,,JANG,JANG
J18206,남점권,C5,1,9,南点權,"Nam Jeom Kwon",2018-07-01,2025-12-31,jknam61@hanmail.net,JANG,JANG
J18301,이재영,E1,4,1,李在英,"Lee Jae Young",2018-05-02,0000-00-00,young7471@jangheon.co.kr,JANG,JANG
B18305,황선영,E5,2,9,,,2018-05-08,2019-07-25,,,NULL
J18207,권길수,C6,4,9,權吉秀,"Kwon Gil Soo",2018-11-12,2021-03-31,kgs1350@hanmail.net,JANG,JANG
J18208,박종석,E2,6,9,朴種錫,"Park Jong Seok",2018-12-03,2020-01-31,lodpower@naver.com,NULL,NULL
J18302,강동해,E8,4,9,,,2018-11-01,2019-07-08,kangdh960481@naver.com,JANG,JANG
J18303,문교선,E2,4,9,文敎鮮,"Mun Kyo Sun",2018-09-03,2020-03-31,skm7773@nate.com,,NULL
J19201,최현진,E3,8,9,崔賢鎭,"Choi Hyun Jin",2019-04-15,2019-05-31,guswis@naver.com,JANG,JANG
J19202,김태균,E2,10,9,金泰均,"Kim Tai Kyun",2019-05-01,2020-10-31,taikyun77@naver.com,JANG,JANG
J19301,강용환,E1,4,9,康溶桓,"Kang Yong Hwan",2019-06-19,2023-04-30,yhkang@jangheon.co.kr,JANG,JANG
B19306,김지영,E5,2,9,金智瑛,"Kim Ji Young",2019-06-03,2021-06-02,welcome0426@naver.com,BARON,
J19101,남갑준,C1,1,9,,,2019-07-01,2021-12-31,,JANG,JANG
J19302,박상호,E2,10,9,朴相鎬,,2019-09-18,2021-03-31,antkddlstod@hanmail.net,JANG,JANG
J19303,김원삼,E1,4,9,,,2019-10-21,2020-07-13,kjdu2801@naver.com,JANG,JANG
J18209,이승준,E2,4,9,,,2018-11-01,2018-11-01,,NULL,NULL
J20201,박영철,E1,6,9,朴映澈,"Park Young Cheol",2020-01-02,2022-03-12,parkk7034@hanmail.net,JANG,JANG
J20202,박영철,E1,6,9,NULL,NULL,2020-01-02,2020-01-02,NULL,NULL,NULL
B20306,이민규,E5,2,2,NULL,NULL,2020-04-20,0000-00-00,NULL,BARON,NULL
B20305,현동규,E5,2,2,NULL,NULL,2020-04-20,0000-00-00,NULL,BARON,NULL
J20601,김민균,E3,4,9,金玟均,"KIM MIN GYUN",2020-06-01,2021-04-25,gyun1126@naver.com,JANG,JANG
J20602,이은창,E1,4,9,,,2020-07-14,2020-10-13,,JANG,JANG
J20603,주정운,E1,4,9,,"Ju jeongun",2020-11-01,2022-07-31,jeongun3654@naver.com,JANG,JANG
J20301,김근형,E9,12,9,金根亨,"Kim Geun Hyeong",2020-06-01,2025-12-31,rmsgud1202@naver.com,JANG,BARON
J20302,홍대기,E9,12,9,洪大基,"Hong Dae Ki",2020-06-08,2024-12-03,hdk@hanmaceng.co.kr,JANG,HANMAC
J20303,김영배,E9,12,9,金英培,"Kim Young Bae",2020-09-07,2025-12-31,b20327@hanmaceng.co.kr,JANG,BARON
J20304,조아라,E9,13,9,,"Jo a ra",2020-08-03,2024-07-25,joara778@gmail.com,JANG,HANMAC
J20305,황규관,E9,12,9,黃圭冠,"Kyukwan Hwang",2020-06-22,2025-10-17,hwang7kk@gmail.com,JANG,BARON
J20203,김유식,C9,12,9,,"Kim Yu Sic",2016-12-15,2025-12-31,samasil@hanmail.net,JANG,BARON
B20334,유재욱,E3,2,2,兪哉旭,"Yu Jae Wook",2020-11-09,0000-00-00,b20334@hanmaceng.co.kr,BARON,
HM02146,이준희,E3,2,2,,,2018-01-22,0000-00-00,,BARON,
B20107,조서경,C5,4,9,曺瑞卿,"Cho Seo Kyung",2020-11-02,2023-02-28,B20107@hanmaceng.co.kr,SAMAN,
B21308,정창빈,E5,2,2,NULL,NULL,2021-02-02,0000-00-00,NULL,BARON,NULL
B21303,오혜성,E5,2,2,NULL,NULL,2021-01-18,0000-00-00,NULL,BARON,NULL
B21321,윤성찬,E5,2,2,NULL,NULL,2021-03-22,0000-00-00,NULL,BARON,NULL
J21601,권민수,E2,4,9,權珉首,"Kwon min soo",2021-05-07,2021-07-27,i6367@hanmail.net,JANG,JANG
J21301,윤성연,E5,8,9,,"Yun seong yeon",2021-05-10,2023-01-31,j21301@jangheon.co.kr,JANG,JANG
J21602,박선영,E6,8,9,朴宣映,"Park Sun Young",2021-06-07,2025-07-16,j21602@jangheon.co.kr,JANG,JANG
J21603,송재일,E3,4,9,,,2021-07-01,2021-07-31,,JANG,JANG
J21604,김재수,E1,4,9,金在洙,,2021-08-01,2022-01-26,463kjs@naver.com,JANG,JANG
J21302,박상은,E5,8,9,朴相恩,,2021-08-04,2023-10-31,pasaeu1@naver.com,JANG,JANG
B21355,최고은,E5,2,9,,,2021-08-20,2021-08-23,,BARON,NULL
J21303,조동일,E4,8,1,趙東逸,"CHO DONG IL",2021-10-01,0000-00-00,j21303@jangheon.co.kr,JANG,JANG
B21361,김윤지,E5,2,2,NULL,NULL,2021-10-05,0000-00-00,NULL,BARON,HANMAC
insa,인사관리자,E1,6,9,,,0000-00-00,2000-01-01,erp@jangheon.co.kr,BARON,NULL
J21605,나정현,E5,4,9,,,2021-10-01,2021-10-13,,JANG,JANG
J21201,조규일,E3,4,9,曺奎一,,2021-11-01,2022-02-22,j21201@jangheon.co.kr,JANG,JANG
ERP,총괄ERP,E1,6,8,,planner,2018-02-01,2000-01-01,erp@jangheon.co.kr,BARON,NULL
J21606,김형주,E4,4,9,金亨主,,2021-11-01,2024-08-09,dksusddl3406@naver.com,JANG,JANG
M21417,김동현,E5,2,2,金東賢,"Kim Dong Hyun",2021-01-04,0000-00-00,b21301@hanmaceng.co.kr,HANMAC,NULL
B14303,윤영주,E5,2,2,尹永周,"Yoon Young Joo",2014-05-14,0000-00-00,nangam92@hanmaceng.co.kr,BARON,NULL
M21411,남궁전,C6,1,9,南宮典,"Namgung jeon",2021-03-01,2022-07-31,m21411@hanmaceng.co.kr,JANG,HANMAC
J21607,정대성,E1,4,9,丁大成,,2021-12-08,2024-10-04,daisan71@hanmail.net,JANG,JANG
J22301,최동찬,E4,6,8,崔東燦,,2020-05-20,0225-12-31,cdc0601@naver.com,JANG,JANG
J22601,이태검,E1,4,9,,,2022-01-26,2022-03-09,secom88@hanmail.net,JANG,JANG
J16301,김동환,C4,1,1,,,2016-01-01,0000-00-00,,JANG,JANG
J21304,한형관,C2,1,2,,HanHyungKwan,2021-11-01,0000-00-00,han@hanmaceng.co.kr,JANG,HANMAC
J22302,김상철,C8,4,1,金相哲,,2022-02-14,0000-00-00,j22302@jangheon.co.kr,JANG,JANG
J22202,김범석,E1,4,1,金範席,"Kim bum seok",2022-03-14,0000-00-00,j22202@jangheon.co.kr,JANG,JANG
projt_mng,사업관리,E99,6,9,,projt_mng,2018-02-01,2000-01-01,,JANG,NULL
J22203,김경태,E1,4,9,,,2022-03-10,2022-11-20,,JANG,JANG
J22204,윤두현,E1,4,1,,,2022-04-18,0000-00-00,doohyuny04@jangheon.co.kr,JANG,JANG
M22021,김윤희,E5,2,9,,,2022-04-20,2023-06-26,,,
M22019,허인,E5,2,9,NULL,NULL,2022-04-20,2022-12-31,NULL,HANMAC,JANG
J22304,,E5,1,9,NULL,NULL,2022-06-03,0000-00-00,NULL,JANG,JANG
J22205,김동원,E3,4,1,金東院,"Kim Dong Won",2022-07-11,0000-00-00,J22205@jangheon.co.kr,JANG,JANG
J22206,박진현,E1,4,9,,"Park Jin Hyun",2022-07-25,2024-02-29,choops21@hanmail.net,JANG,JANG
J22207,안태욱,C8,8,9,安台彧,"An Tae Wook",2022-08-01,2025-06-23,atw3258@gmail.com,JANG,JANG
J22305,최만규,E3,6,8,崔萬圭,,2022-08-22,2025-12-31,mkchae2@naver.com,JANG,JANG
J21305,김지영A,E99,13,2,NULL,NULL,2019-06-03,0000-00-00,NULL,HANMAC,JANG
J22306,허남덕,C6,4,9,許南德,"Hur Nam DUK",2022-11-01,2024-10-31,j22306@jangheon.co.kr,JANG,JANG
J22208,김태후,E1,4,9,,,2022-11-21,2023-03-10,kmg0808@hanmail.net,JANG,JANG
J22209,양종선,E3,4,9,,"Yang Joungsun",2022-12-01,2023-12-29,yjs8080@naver.com,JANG,JANG
J22501,이태수,E8A,4,9,,"Li Taizhu",2022-12-01,2025-02-25,,JANG,JANG
J22307,Security,E5,6,9,NULL,NULL,2022-12-27,2022-12-31,NULL,HANMAC,HANMAC
J23301,이호범,E6,4,1,,"Lee Hobeom",2023-01-02,0000-00-00,ghghqja4402@naver.com,JANG,JANG
J23302,손현수,E6,8,9,,,2023-01-02,2024-08-31,gust7253@naver.com,JANG,JANG
M04101,이종관,C2,1,1,李鍾官,"Lee Jong Kwan",2004-06-01,0000-00-00,jmslee@dreamwiz.com,JANG,JANG
B22059,김윤아,E5,2,9,NULL,NULL,2023-01-03,2023-12-31,NULL,,
J23303,최성용,E4,4,1,,,2023-01-01,0000-00-00,ctjddyd@gmail.com,JANG,JANG
J23304,00,E4,4,9,NULL,NULL,2023-01-01,2023-03-07,NULL,JANG,JANG
B23007,유지원,E5,2,9,NULL,NULL,2023-02-06,2025-03-11,NULL,BARON,
J23305,이새봄,E99,13,9,,,2023-03-02,2025-12-31,j23305@jangheon.co.kr,JANG,BARON
M22045,윤여훈,E5,2,9,NULL,NULL,2016-06-07,2022-06-30,NULL,HANMAC,JANG
J23201,김경태,E1,4,9,NULL,NULL,2023-03-10,2023-03-20,NULL,JANG,JANG
J23306,테스트2,E5,12,8,NULL,NULL,2023-03-17,0000-00-00,NULL,,
J23601,강용길,E1,4,9,,"Kang Yong gil",2023-03-20,2025-01-15,kyg0084@naver.com,JANG,JANG
J23307,정우성,C7,8,1,鄭宇城,"Cheung Woo Sung",2021-04-01,0000-00-00,b21323@hanmaceng.co.kr,JANG,JANG
B23050,심보혜,C7,13,9,,Simbohye,2023-09-01,2024-08-31,sandysim@hanmaceng.co.kr,JANG,HANMAC
J23101,주상구,C7,4,1,周相龜,"Joo Sang Gu",2023-08-01,0000-00-00,twojoo96@hmtele.com,JANG,JANG
J23308,김인범,E5,6,8,金仁凡,,2023-10-18,2025-12-31,J23308@jangheon.co.kr,JANG,JANG
J23202,송용,E5,8,9,宋龍,,2023-12-18,2024-03-31,J23202@jangheon.co.kr,JANG,JANG
J24301,박선우,E5,8,1,朴善優,,2024-01-02,0000-00-00,J24301@jangheon.co.kr,JANG,JANG
J24302,이가연,E5,8,9,李佳硏,,2024-01-02,2025-05-09,J24302@jangheon.co.kr,JANG,JANG
B23071,김현지,E5,2,9,,,2024-01-02,2025-02-09,B23071@hanmaceng.co.kr,,
J24303,신기욱,E5,4,9,,,2024-01-02,2024-05-20,,JANG,JANG
M02210,장종찬,C5,13,2,張鍾讚,"Jang Jong Chan",2001-07-02,0000-00-00,jcjang@hanmaceng.co.kr,HANMAC,JANG
J24304,김성규,E1,6,9,NULL,NULL,2009-08-17,2025-10-30,NULL,PTC,PTC
J24307,김갑성,C6,4,1,金甲成,"Kim Kapseong",2024-04-01,0000-00-00,j24307@jangheon.co.kr,JANG,JANG
M24028,현경탁,C5,1,9,,,2024-04-01,2024-05-31,hkt2101@hanmail.net,PTC,PTC
J24201,최영준,C6,8,1,崔永駿,"choi young joon",2024-08-01,0000-00-00,zephyryj@naver.com,SAMAN,JANG
public,공통,E1,2,2,,NULL,2018-02-01,2000-01-01,NULL,BARON,NULL
public,,E4,2,2,,,2018-01-22,0000-00-00,,BARON,NULL
J24101,이훈재,C5,1,1,李?在,,2024-10-01,0000-00-00,seoul513@naver.com,JANG,JANG
J24501,박성일,C7,4,1,朴性一,,2024-10-24,0000-00-00,bboljji@hanmail.net,JANG,JANG
J24502,이창호,E8A,4,1,李昌鎬,"Lee chang ho",2024-11-01,0000-00-00,lchseoul@empas.com,JANG,JANG
J24503,이수식,C8,4,9,李洙植,"Lee soo sik",2024-11-01,2025-05-31,sik2012@naver.com,JANG,JANG
TOCUH_ADMIN,터치스크린,E1,6,8,,터치스크린,2024-12-16,NULL,,,
J25301,김성환,E1,4,1,,,2025-01-01,0000-00-00,3298748@naver.com,JANG,JANG
P25101,은도찬,C8,8,2,,,2025-01-06,0000-00-00,civileun96@naver.com,PTC,JANG
P25301,박지우,E5,4,1,,,2025-01-01,0000-00-00,pgu9961@naver.com,PTC,JANG
M24069,김유진,E5,2,2,,,2024-09-23,0000-00-00,,ETC,JANG
J25401,조양주,C6,4,9,,"CHO YANG JOO",2025-02-19,2025-02-28,M23032@hanmaceng.co.kr,JANG,JANG
J25501,주유천,C8,4,9,周裕千,,2025-03-17,2025-07-15,jjyc6000@naver.com,JANG,JANG
B24014,송대일,E4A,13,8,,,0000-00-00,0000-00-00,,BARON,
J25602,곽승용,E1,4,1,,,2025-06-25,0000-00-00,j25602@jangheon.co.kr,JANG,JANG
M07318,김원기,E4A,13,8,,,0000-00-00,0000-00-00,,BARON,
J25403,유이식,C8,4,9,,,2025-05-26,2025-08-31,,JANG,JANG
G25001,센터_기술기획팀,E5,12,8,,Admin,2020-05-20,0000-00-00,,BARON,NULL
J25303,김하영,E5,4,9,,,2025-07-01,2025-08-31,,JANG,JANG
J25601,윤충열,E1,4,1,,,2025-06-25,0000-00-00,ycy0922@hanmail.net,JANG,JANG
J25503,김영빈,E2,4,9,,,2025-07-14,2025-09-15,j25503@jangheon.co.kr,JANG,JANG
J25201,임재상,E4,4,9,,"Lee JAE SANG",2025-07-14,2025-11-30,j25201@jangheon.co.kr,JANG,JANG
J25603,조부건,E1,4,1,,,2025-06-25,0000-00-00,j25603@jangheon.co.kr,JANG,JANG
J25604,서범진,E3,4,1,,,2025-06-25,0000-00-00,j25604@jangheon.co.kr,JANG,JANG
J25504,안종기,C8,4,1,,,2025-07-16,0000-00-00,j25504@jangheon.co.kr,JANG,JANG
J25101,배문교,C2,1,1,裵文敎,"Bae Mun Gyo",2025-08-01,0000-00-00,baemg27@daum.net,JANG,JANG
J25505,박보희,E3,4,9,,,2025-08-01,2025-08-31,,JANG,JANG
P11302,김경수,E1,4,1,金暻洙,"KIM KYUNG SOO",2011-04-07,0000-00-00,diejsa@naver.com,장헌,장헌
J25304,이동열,E5,4,9,,,2025-09-01,2026-03-07,alovea640@naver.com,JANG,JANG
J25506,남수용,C8,4,1,,,2025-09-03,0000-00-00,nsy9067@hanmail.net,JANG,JANG
J25507,이형래,E2,4,9,,,2025-09-10,2025-09-17,j25507@jangheon.co.kr,JANG,JANG
J25305,박은별,E5,4,1,,,2025-09-22,0000-00-00,j25305@jangheon.co.kr,JANG,JANG
J25508,이수식,E8A,4,1,李洙植,,2025-08-28,0000-00-00,sik2012@naver.com,JANG,JANG
J25509,김기환,E4,4,9,金己桓,,2025-11-03,2026-04-10,j25509@jangheon.co.kr,JANG,JANG
admin2025,관리자3,E1,6,8,NULL,안전관리,2025-09-25,0000-00-00,NULL,NULL,NULL
J25510,이인갑,C8,4,1,,,2025-11-24,0000-00-00,,JANG,JANG
M24046,서우석,E4,2,2,,,2024-06-17,0000-00-00,,BARON,NULL
J26301,서우석,E4,2,1,NULL,NULL,2026-03-09,0000-00-00,NULL,BARON,JANG
J26302,김진규,C8,4,1,"金 鎭 圭",,2026-04-01,0000-00-00,jingkimm@naver.com,JANG,JANG
J26501,박대원,C8,4,1,,,2026-04-20,0000-00-00,J26501@jangheon.co.kr,JANG,JANG
1 MemberNo korName RankCode GroupCode WorkPosition chiName engName EntryDate LeaveDate eMail Company WorkCompany
2 M08502 김갑성 C7 9 9 金甲成 Kim Kapseong 2008-02-01 2013-03-31 ks721kim@jangheon.co.kr NULL NULL
3 J06302 장경문 E7 3 9 張京文 Jang Kyung Mun 2006-10-16 2008-04-21 NULL NULL
4 J06303 윤동혁 E7 5 9 尹東赫 Yun Dong Hyuck 2006-10-16 2009-09-21 NULL NULL
5 M05510 김인열 C6 4 1 金仁烈 Kim in yeol 2005-08-20 0000-00-00 kiy8536@jangheon.co.kr JANG JANG
6 M02108 김락희 C7 2 9 金樂喜 Kim Laghee 2002-10-28 2007-02-28 Laghee@dreamwiz.com NULL NULL
7 J05209 윤정호 E3 3 9 尹廷豪 Yoon, jeongho 2005-05-26 2006-08-25 @hanmaceng.co.kr NULL NULL
8 J05211 임태경 E1 10 9 任泰暻 Im Tae Gyeong 2005-06-01 2010-06-25 @hanmaceng.co.kr NULL NULL
9 J06102 이용운 C8 2 9 李用雲 LEE YONGWOON 2006-02-21 2008-12-31 ywlee@hanmaceng.co.kr NULL NULL
10 J06401 안병록 C3A 1 1 安 秉錄 Byung Lok, An 2018-04-01 0000-00-00 bl3245@jangheon.co.kr JANG BARON
11 J06301 강성희 E7 2 9 康盛喜 KANG SUNG HEE 2006-04-12 2009-08-31 @hanmaceng.co.kr NULL NULL
12 J06103 김윤수 C6 1 9 金潤秀 KIM YOON SOO 2006-03-01 2006-10-15 NULL NULL
13 J06601 유운호 E8 3 9 柳運浩 2006-10-23 2007-04-30 NULL NULL
14 J06201 조현수 E1 5 9 趙賢銖 jo hun su 2006-12-18 2007-06-30 hsjock712@hmtele.com NULL NULL
15 J07201 김형일 E2 5 9 金亨一 Kim Hyoung il 2007-01-01 2007-11-30 khi2903@hanmaceng.co.kr NULL NULL
16 J07202 김회성 C8 6 9 金會成 Kim Hoi Sung 2007-01-01 2020-03-31 kyr5004@hanmaceng.co.kr NULL NULL
17 J07203 이태휘 E4 2 9 李泰輝 Lee Tae Hwi 2007-01-01 2007-01-06 leeth1228@hotmail.com NULL NULL
18 J07101 부교탁 C6 1 9 夫喬鐸 Boo Kyo Tag 2006-02-26 2007-05-30 @hanmaceng.co.kr NULL NULL
19 T02220 주상구 E1 5 9 周相龜 Joo Sang Gu 1996-07-08 2015-07-31 twojoo96@hmtele.com NULL NULL
20 J07204 이호묵 E2 4 9 李鎬默 Lee Ho Mook 2007-02-26 2007-11-30 @hanmaceng.co.kr NULL NULL
21 J07205 도한영 E2 2 9 都翰泳 Do Han Young 2007-02-26 2008-11-30 k3726@piletech.co.kr NULL NULL
22 J07206 구인회 E3 4 9 具仁會 Gu In Hoi 2007-02-26 2007-12-31 @hanmaceng.co.kr NULL NULL
23 J07207 유일욱 E3 4 9 劉一郁 Yoo Il Wook 2007-02-26 2007-10-31 @hanmaceng.co.kr NULL NULL
24 M03101 이경열 C6 2 9 李京烈 LEEKYUNGYOUL 2003-01-01 2003-01-01 lky702@hanmaceng.co.kr NULL NULL
25 J07208 이방희 E1 4 9 李邦熙 2007-04-02 2008-05-31 @hanmaceng.co.kr NULL NULL
26 J07601 김영옥 E8 6 9 金永玉 2007-04-03 2009-02-10 @hanmaceng.co.kr NULL NULL
27 J07602 김석태 E8 6 9 金錫泰 2007-04-03 2010-01-31 @hanmaceng.co.kr NULL NULL
28 J07102 유명근 C6 3 9 劉命根 Yoo Myung Keun 2007-04-25 2007-06-30 @hanmaceng.co.kr NULL NULL
29 J07103 김용혁 C6 8 9 金容赫 yonghuck kim 2007-05-01 2020-12-31 yonghuck@naver.com JANG JANG
30 J07209 박종민 E3 3 9 朴鍾珉 Park jong min 2007-05-01 2010-06-25 nati77@jangheon.co.kr NULL NULL
31 J07210 이정훈 C8 8 1 李正訓 Lee Jeong Hoon 2007-06-04 0000-00-00 fb1t@jangheon.co.kr JANG BARON
32 T06202 최동석 E1 2 9 崔童碩 choi dong seok 2006-03-20 2006-03-20 rtpa77@hmtele.com NULL NULL
33 J01201 권혁진 C9 13 9 權赫鎭 Kwon Hyok Jin 2004-10-04 2026-01-05 cozyjin@hanmaceng.co.kr JANG BARON
34 J01202 이지나 E7 3 9 李智那 Lee Ji Na 2007-10-01 2008-09-17 @hanmaceng.co.kr NULL NULL
35 J07212 권준모 E4 3 9 權埈模 Kwon Jun Mo 2007-10-16 2008-07-15 @hanmaceng.co.kr NULL NULL
36 J07213 권준모 E4 3 9 NULL NULL 0000-00-00 2010-01-01 NULL NULL NULL
37 J07214 권준모 E4 3 9 NULL NULL 0000-00-00 2010-01-01 NULL NULL NULL
38 J17201 김범석 E7 4 9 金範席 Kim Bum Seok 2007-10-17 2007-12-31 @hanmaceng.co.kr
39 J01203 주상구 C8 6 9 周相龜 Ju Sang Gu 1996-07-08 2015-07-31 @hanmaceng.co.kr NULL NULL
40 J14201 서정락 E1 4 9 徐正洛 Seo jeong lack 2008-01-14 2019-03-31 sas1465@hanmaceng.co.kr JANG JANG
41 J11201 윤상훈 E3 5 9 尹祥勳 YOUN SANGHUN 2008-02-11 2009-10-22 @hanmaceng.co.kr NULL NULL
42 J11202 양종식 C7 4 1 楊鐘植 Yang Jong Sik 2008-02-11 0000-00-00 cejs76@jangheon.co.kr JANG JANG
43 J08301 이민진 E7 8 9 李旼珍 LEE MINJIN 2008-03-03 2012-04-24 @hanmaceng.co.kr NULL NULL
44 J08201 김재호 C7 8 9 金載澔 Kim jae ho 2008-04-14 2024-04-30 hazaking@jangheon.co.kr JANG JANG
45 T03236 강호선 E4 2 9 姜浩仙 Kang ho-sun 2003-06-04 2003-06-04 hsunny@hmtele.com NULL NULL
46 J08202 염인순 E7 2 9 염인순 2008-05-26 2008-05-26 @hanmaceng.co.kr NULL NULL
47 J08203 곽은지 E7 2 9 郭恩智 Kwak eun ji 2008-06-09 2010-06-30 kawgi@jangheon.co.kr NULL NULL
48 J18201 신영인 E1 5 9 辛泳寅 2008-06-18 2008-09-30 @hanmaceng.co.kr NULL NULL
49 J14301 장은영 E7 5 9 장은영 Jang eun young 2008-07-14 2009-03-16 @hanmaceng.co.kr NULL NULL
50 J01204 김종열 E1 2 9 金鐘烈 kim chong yoeal 2008-08-01 2009-05-31 @hanmaceng.co.kr NULL NULL
51 J08302 홍석철 E7 2 9 洪錫哲 Hong Seok Chul 2008-08-04 2010-11-30 preya20@jangheon.co.kr NULL NULL
52 J08101 우창윤 C6 4 9 禹昌潤 2008-09-01 2009-08-31 @hanmaceng.co.kr NULL NULL
53 J08303 윤희민 E7 5 9 尹喜珉 Yoon Hee Min 2008-10-01 2009-10-22 thms4@jangheon.co.kr NULL NULL
54 J08304 정은택 E7 5 9 鄭恩宅 Jeong Eun Taek 2008-10-01 2009-10-22 windbreak@jangheon.co.kr NULL NULL
55 J08305 김규호 E3 2 9 金圭鎬 Kim Gyu Ho 2008-10-09 2008-10-09 mofaiu@jangheon.co.kr NULL NULL
56 J08306 주영진 E3 2 9 周泳鎭 Joo Young Jin 2008-10-09 2016-01-31 icarus@jangheon.co.kr NULL NULL
57 J08307 박찬영 E7 4 9 朴贊煐 Park chan young 2008-10-27 2012-12-31 pcy0503@jangheon.co.kr NULL NULL
58 J08204 송성윤 E1 4 9 宋祥鉉 SONG SANG HYUN 2008-11-14 2014-03-31 @hanmaceng.co.kr JANG JANG
59 J08205 황영섭 E2 2 9 2008-11-17 2008-11-30 @hanmaceng.co.kr NULL NULL
60 J08206 김재헌 C7 2 2 金哉憲 KIM JAE HEON 2008-11-12 0000-00-00 @hanmaceng.co.kr BARON
61 T02303 신현우 C6 2 2 申鉉宇 Hyun-Woo, Shin 2000-01-03 0000-00-00 recruit@hanmaceng.co.kr BARON
62 J15202 류한규 C8 8 9 柳漢圭 Ryu Han Kyu 2015-06-01 2021-05-31 ipkn1919@jangheon.co.kr JANG JANG
63 Tadmin 관리자 E5 12 1 Admin 2020-05-20 0000-00-00 erp@jangheon.co.kr BARON NULL
64 J09301 김옥영 E7 5 9 金玉永 Kim Ok Young 2009-04-06 2009-05-30 @hanmaceng.co.kr NULL NULL
65 J09101 김우천 C7 8 9 金祐千 kim woo chun 2009-05-06 2020-03-18 wckim@jangheon.co.kr JANG JANG
66 T08301 최은영 E3 2 9 崔銀英 Choi Eunyoung 2008-03-03 2021-04-06 dms9020@hmtele.com NULL NULL
67 J09601 박영훈 E8 6 9 박영훈 2009-02-01 2010-01-31 @hanmaceng.co.kr NULL NULL
68 J09302 윤선일 E4 4 9 尹宣壹 Sun Il Youn 2009-11-09 2018-03-31 TLKSKY@jangheon.co.kr NULL NULL
69 J09102 강상욱 C6 8 9 姜相郁 Sang wook, Kang 2009-12-07 2022-10-31 kangswksm@jangheon.co.kr JANG JANG
70 J09304 손윤정 E7 6 9 2009-11-12 2010-05-20 SYJ0805@jangheon.co.kr NULL NULL
71 J09305 이윤정 E7 3 9 李倫正 Yun-jung, Lee 2009-11-16 2011-11-30 yj870722@jangheon.co.kr NULL NULL
72 J09201 방희철 C6 3 9 方熙喆 Bang Heui Chul 2009-12-14 2011-03-30 hcbang59@jangheon.co.kr NULL NULL
73 J09202 김봉준 E1 8 9 金鳳俊 Bong-Joon, Kim 2009-12-14 2012-10-31 bjkim08@hanmaceng.co.kr NULL NULL
74 M02302 김승국 C7 6 8 金承局 Kim Seung Guk 2010-10-01 2026-01-05 civilksk@jangheon.co.kr JANG JANG
75 J13310 남점권 C6 4 9 南点權 Nam Jeom Kwon 2013-07-01 2017-02-28 jknam61@jangheon.co.kr NULL NULL
76 J10401 윤진호 C8 4 9 尹鎭浩 Jason.Yoon(Jinho) 2010-02-17 2011-03-25 yetoto@jangheon.co.kr NULL NULL
77 J10301 최태순 C7 4 1 崔泰洵 Chil tae soon 2010-02-22 0000-00-00 khw04@jangheon.co.kr JANG JANG
78 J10501 오정태 E2 4 9 吳定泰 Oh jeong tae 2010-02-22 2011-05-31 ohjungtae@jangheon.co.kr NULL NULL
79 J10302 이승열 E4 8 9 李丞烈 Lee seung yeol 2010-02-22 2013-02-25 sy820420@jangheon.co.kr NULL NULL
80 J10202 이장욱 E2 8 9 李章旭 lee jang uk 1997-10-11 2014-03-31 19720308@jangheon.co.kr JANG JANG
81 M05102 정해웅 C1 1 9 鄭海雄 CHUNG HAE UNG 2005-12-01 2005-12-01 huc@hanmaceng.co.kr NULL NULL
82 J10303 강지성 E3 6 9 姜智聲 KANG JI SUNG 2009-07-20 2016-07-31 @hanmaceng.co.kr NULL NULL
83 J10304 노홍주 E3 8 9 盧弘周 NOH HONG JU 2010-06-22 2012-09-30 hee7812@jangheon.co.kr NULL NULL
84 J10305 강미정 E7 6 9 2010-06-21 2010-08-30 @hanmaceng.co.kr NULL NULL
85 J10307 정지영 E7 2 9 鄭智英 Ji Young, Jung 2010-07-05 2013-04-30 unity1213@jangheon.co.kr NULL NULL
86 J10308 차성대 C7 4 1 車成大 CHA SUNG DAI 2010-07-19 0000-00-00 csd915@jangheon.co.kr JANG JANG
87 M06315 허유미 E4 8 9 許有美 Heo Yu-Mi 2006-12-11 2018-08-31 hyumi@hanmaceng.co.kr JANG JANG
88 J10311 이호재 E1 4 9 李鎬在 Lee Ho Jae 2003-12-15 2014-03-31 @hanmaceng.co.kr JANG JANG
89 J10310 김정기 C7 4 9 金正基 Kim Jung Gi 2010-11-15 2023-07-31 @hanmaceng.co.kr JANG JANG
90 J10309 이동주 E1 4 9 李棟株 LEE DONG JU 2010-10-25 2022-02-02 djlee@jangheon.co.kr JANG JANG
91 J10312 김경환 E2 4 9 金京煥 KIM KYUNG HWAN 2002-10-14 2011-04-12 @hanmaceng.co.kr NULL NULL
92 J10313 김미자 E3 6 8 金美子 KIM MI JA 2010-11-11 2025-12-31 @hanmaceng.co.kr JANG JANG
93 J10314 김진 C8 8 1 金 眞 kim jin 2010-11-29 0000-00-00 kimjin1971@jangheon.co.kr JANG BARON
94 J10315 허남덕 C6 4 9 許南德 Hur Nam DUK 2010-11-29 2021-12-31 hkn1010@naver.com JANG NULL
95 M09103 박영옥 C7 2 9 朴永玉 Park Youngok 2009-04-01 2012-01-15 kkumenergy@hanmaceng.co.kr NULL NULL
96 M01103 서성열 C1 1 1 徐聖烈 Seo, Sung Yeol 2015-01-20 0000-00-00 sys55@jangheon.co.kr JANG PTC
97 J11301 동원영 C7 1 9 董原榮 Dong Won Young 2011-05-16 2014-12-31 @hanmaceng.co.kr JANG JANG
98 J11203 박재홍 E1 8 9 朴宰弘 Park Jae Hong 2011-06-13 2019-10-31 j11203@jangheon.co.kr JANG JANG
99 J11302 박진오 E2 4 9 朴珍五 Park Jin Oh 2011-07-01 2022-02-06 jino4516@hanmaceng.co.kr JANG JANG
100 J11303 유붕종 C8 2 9 劉 鵬 鍾 YOO BOUNG JONG 2011-11-01 2017-03-31 @hanmaceng.co.kr JANG JANG
101 J11204 김현중 E3 8 9 金炫中 Kim Hyon-Joong 2011-11-01 2012-02-28 J11204@jangheon.co.kr NULL NULL
102 J11304 윤효상 E3 6 9 2010-10-04 2015-08-31 yunhyo24@jangheon.co.kr NULL NULL
103 J11305 정대수 C7 8 9 鄭大洙 Jung Dae Soo 2012-01-01 2021-05-31 dsjung67@gmail.com JANG JANG
104 T02230 조영훈 E1 2 2 趙令勳 ChoYoungHoon 1999-06-21 1999-06-21 atoz20002@hanmaceng.co.kr NULL
105 T02328 김지우 E4 2 9 金祉佑 kim ji woo 2002-01-07 2002-01-07 juyajuya@hanmaceng.co.kr NULL
106 B09301 오석근 E5 2 9 吳碩根 Oh seok keun 2009-06-01 2009-06-01 mivacore@hanmaceng.co.kr NULL
107 J12201 오승현 C9 12 9 吳昇炫 Oh Seung Hyun 2008-08-04 2021-07-31 hyun3201@jangheon.co.kr JANG JANG
108 J12202 이종승 C8 4 9 李鐘承 Yi Jong seung 2007-12-03 2023-03-25 @hanmaceng.co.kr JANG JANG
109 J12203 지영걸 C7 9 9 池英杰 JI YOUNG GEOL 2012-07-02 2013-02-28 hirojee@jangheon.co.kr NULL NULL
110 J12301 전웅 C8 1 9 田雄 Jun WoongJun Woong 0000-00-00 2013-04-30 junito@hanmaceng.co.kr NULL NULL
111 J12302 최호란 E1 4 9 NULL NULL 0000-00-00 2012-12-31 NULL NULL NULL
112 T04204 신윤식 C8 6 9 申允湜 Yoon-Shik Shin 2004-03-15 2023-01-31 gyvermc@phonex.co.kr JANG JANG
113 J13201 문종탁 E1 8 1 文鐘卓 Moon Jong-Tak 2013-02-18 0000-00-00 jtmoon@jangheon.co.kr JANG BARON
114 J13301 김시배 E4 8 9 金時培 KIM SI BAE 2013-03-04 2013-07-11 ksb1212@jangheon.co.kr JANG JANG
115 J13302 심현리 E7 2 9 沈炫里 Sim Hyeon-ri 2013-04-01 2014-04-30 hyeonri@jangheon.co.kr NULL NULL
116 J13303 김근혁 E4 2 9 金根赫 KIM KeunHyuk 2013-04-22 2018-03-31 khkim@jangheon.co.kr JANG JANG
117 J13305 윤두현 E2 4 9 尹斗鉉 Yun Du Hyun 2013-04-22 2022-03-15 doohyuny04@jangheon.co.kr JANG JANG
118 J13309 정재환 E7 8 9 鄭在桓 Jung Jae Hwan 2013-04-29 2013-06-18 alltogether34@jangheon.co.kr JANG JANG
119 J13308 이의환 E1 4 1 李義煥 Eui-Hwan, Lee 2013-04-22 0000-00-00 j13308@jangheon.co.kr JANG JANG
120 M02107 이경훈 C2 1 9 NULL NULL 1997-04-01 1997-04-01 NULL NULL NULL
121 tadmin2 관리자2 E1 6 8 TEST 2018-02-01 0000-00-00
122 J13311 나지영 E7 9 9 羅志映 Na Jiyoung 2013-12-09 2013-12-16 blue8831@jangheon.co.kr NULL NULL
123 J13312 조수민 E7 1 9 趙秀珉 Jo Su Min 2013-12-26 2014-12-25 NULL NULL
124 J14302 이석준 E1 4 9 李碩俊 lee seok jun 2014-03-01 2024-10-27 neosj21@jangheon.co.kr JANG JANG
125 J14303 이철우 C2 1 9 李哲雨 lee cheol woo 2014-01-01 2025-03-31 lee@jangheon.co.kr JANG HANMAC
126 J14304 김문호 C2 1 9 金 汶 祜 Kim Moon Ho 2014-03-03 2015-04-19 mhkim313@jangheon.co.kr JANG JANG
127 M02105 최동식 C5 1 9 崔東植 Choi Dong Sig 2001-07-09 2001-07-09 cds@hanmaceng.co.kr NULL
128 M02206 김원근 C7 1 9 金源根 kim won geon 2001-07-09 2001-07-09 kimwg7872@hanmaceng.co.kr NULL
129 B13306 이지혜 E5 2 9 李知惠 Lee JiHye 2013-12-13 2013-12-13 leejh@hanmaceng.co.kr NULL
130 B10301 선우현 E5 2 9 鮮于 玄 Sunwoo Hyun 2010-01-04 2010-01-04 sianneas@hanmaceng.co.kr NULL
131 B14301 최지은 E5 20 9 崔지은 Choi Ji Eun 2014-03-19 2014-03-19 jieun@hanmaceng.co.kr NULL
132 J14306 이지혜 E4 4 9 李知惠 Lee JiHye 2013-12-13 2020-03-08 leejh@jangheon.co.kr NULL NULL
133 J14202 황재민 E1 8 1 黃載珉 Hwang Jae Min 2014-05-21 0000-00-00 jmhwang@hanmaceng.co.kr JANG PTC
134 P13302 이세민 E1 6 8 李洗旼 2013-02-25 2025-12-31 jini3474@jangheon.co.kr JANG JANG
135 J14308 고영배 E2 6 9 高泳培 Go Yeongbae 2008-05-26 2022-07-31 go4zzang@jangheon.co.kr JANG JANG
136 J14101 남궁전 C6 8 9 南宮典 Namgung jeon 2014-09-15 2021-02-28 nam1309@jangheon.co.kr JANG JANG
137 J14203 이중경 E2 8 9 李重慶 Lee Joong kyung 2014-09-22 2016-04-25 first7777@jangheon.co.kr NULL NULL
138 J14309 최명희 E3 4 9 2014-02-01 2016-12-31 @hanmaceng.co.kr JANG JANG
139 J14204 배규환 C8 6 9 裵圭煥 Bae Kyu Whan 2014-10-13 2016-10-12 bkh@jangheon.co.kr NULL NULL
140 J14601 우승욱 E7 4 9 禹勝昱 Woo Seung Uk 2014-10-01 2015-03-31 xian8909@jangheon.co.kr JANG JANG
141 J14310 최혜란 E2 2 9 2006-09-01 2020-04-30 @hanmaceng.co.kr JANG JANG
142 J14311 이정수 E3 2 9 2011-04-01 2024-04-01 @hanmaceng.co.kr JANG JANG
143 J14312 박지현 E3 6 9 2014-03-01 2025-08-31 pakgh7@hanmail.net JANG JANG
144 J14313 양정규 E3 2 9 2012-01-01 2012-01-01 @hanmaceng.co.kr JANG JANG
145 M12201 남갑준 C1 1 9 南甲俊 Nam Kab Joon 2014-03-01 2019-06-30 JANG JANG
146 J15201 조수원 C6 8 9 趙秀元 CHO SUWON 2015-02-01 2026-03-08 jomabal@naver. com JANG JANG
147 M08102 정태준 C1 2 9 NULL NULL 0000-00-00 2000-01-01 NULL NULL NULL
148 B15302 하유미 E5 20 9 NULL NULL 0000-00-00 2000-01-01 NULL NULL NULL
149 J15301 권민준 E2 4 9 權?埈 Kwon Min Jun 2015-04-01 2025-06-19 kgamja89@naver.com JANG JANG
150 J15302 장승현 E3 8 9 張昇賢 Jang SeungHyun 2015-04-01 2023-08-31 keunnamu1000@jangheon.co.kr JANG JANG
151 J15101 류영섭 C3A 1 1 柳永燮 Ryoo young sub 2015-05-06 0000-00-00 ysryoo@gmail.com JANG BARON
152 J15307 이병수 E2 8 9 李炳秀 Lee Byung Soo 2015-11-16 2025-06-30 leebs@jangheon.co.kr JANG JANG
153 M16319 박규식 C6 2 9 NULL NULL 0000-00-00 2017-07-31 NULL NULL NULL
154 J15206 이태준 C8 4 9 李泰俊 LEE TAE JOON 2015-10-01 2020-12-31 uccpl109@empas.com JANG JANG
155 B16315 손다혜 E5 2 9 孫多慧 Dahhye Sohn 2016-12-13 2017-03-20 jane9029@naver.com NULL
156 J15303 이상호 E3 6 9 NULL NULL 2015-07-08 2015-07-24 NULL NULL NULL
157 J15304 양수현 E7 6 9 梁修顯 Yang Su Hyeon 2015-07-20 2016-12-15 JANG JANG
158 J15203 김기홍 C6 8 9 金起弘 Kim Ki-hong 2015-08-17 2017-03-31 shapren@jangheon.co.kr JANG JANG
159 B15306 남궁성 E3 4 1 南宮珹 Nam Kung Sung 2015-08-10 0000-00-00 sunga13@hanmaceng.co.kr JANG JANG
160 J15204 임진홍 C7 8 9 任眞弘 IMJINHONG 2015-09-01 2017-01-31 yjh04569@naver.com JANG JANG
161 J15205 김도훈 E1D 12 9 金度勳 Kim Do Hoon 2015-09-01 2021-09-30 dhkim@jangheon.co.kr JANG JANG
162 J15305 이우승 E5 8 9 李祐昇 Lee Woo Seung 2015-09-02 2019-02-28 vl_civil@jangheon.co.kr JANG JANG
163 M21201 정태원 C6 1 9 Taewon Chung 2014-07-01 2014-07-01 ctw@hanmaceng.co.kr NULL
164 J15306 김세열 E1D 12 9 金世悅 Kim Se Yul 2015-10-05 2025-12-31 j15306@hanmaceng.co.kr JANG BARON
165 J16101 남철우 C8 6 9 南哲祐 Nam Chul Woo 2016-02-16 2017-04-18 cwnam@samaneng.com NULL NULL
166 J16201 권명호 E1 4 9 2016-04-01 2018-04-30 JANG JANG
167 J16202 이중경 C8 8 1 李重慶 Lee Joong Kyung 2016-06-02 0000-00-00 first7777@jangheon.co.kr JANG JANG
168 J16203 표용암 E1 6 9 表 龍 岩 yong am pyo 2016-07-01 2020-01-31 yapyo2002@hanmail.net NULL NULL
169 B17305 정혜윤 E4 2 2 2017-03-02 0000-00-00 jhyy12@naver.com BARON NULL
170 J17202 송효근 E2 6 9 宋效根 2017-04-03 2018-06-30 cmp78@nate.com NULL NULL
171 J17301 정환주 E5 6 9 鄭煥主 Jung Hwan Joo 2017-04-03 2017-10-31 tkels200@naver.com NULL NULL
172 J17203 이상엽 C7 6 9 李相曄 Lee Sang Yeob 2017-04-17 2018-11-15 yeobi0717@hanmail.net JANG JANG
173 J17204 전영신 E2 4 9 全永信 Jeon Young Sin 2017-07-10 2021-08-16 ysjeon@jangheon.co.kr JANG JANG
174 J17205 김성원 E1 8 1 金成元 Kim Sung Won 2017-09-01 0000-00-00 yi04@nate.com JANG JANG
175 J17206 신상한 C8 4 9 辛相翰 Shin Sang Han 2017-12-18 2018-08-10 shinys43@korea.com JANG JANG
176 J18202 이휘창 C7 4 9 李暉彰 Lee Hwi Chang 2018-02-01 2021-03-31 lee2373g@hanmail.net JANG JANG
177 J18203 김인수 C7 4 1 金寅洙 Kim In Soo 2018-02-01 0000-00-00 cclkiss@hanmail.net JANG JANG
178 J18204 김상준 E2 4 9 金商俊 Kim Sang Jun 2018-02-01 2019-05-31 m16mmk3@hotmail.com JANG JANG
179 J22201 윤선일 E2 4 1 尹宣壹 2022-02-28 0000-00-00 j22201@jangheon.co.kr JANG JANG
180 J17207 김량균 C5 8 1 金亮均 Kim Ryang Gyun 2017-08-01 0000-00-00 rgkim@jangheon.co.kr JANG JANG
181 J18205 정충열 E1 8 9 鄭忠烈 Jeong Choong Yeol 2008-02-11 2025-06-05 JANG JANG
182 J18206 남점권 C5 1 9 南点權 Nam Jeom Kwon 2018-07-01 2025-12-31 jknam61@hanmail.net JANG JANG
183 J18301 이재영 E1 4 1 李在英 Lee Jae Young 2018-05-02 0000-00-00 young7471@jangheon.co.kr JANG JANG
184 B18305 황선영 E5 2 9 2018-05-08 2019-07-25 NULL
185 J18207 권길수 C6 4 9 權吉秀 Kwon Gil Soo 2018-11-12 2021-03-31 kgs1350@hanmail.net JANG JANG
186 J18208 박종석 E2 6 9 朴種錫 Park Jong Seok 2018-12-03 2020-01-31 lodpower@naver.com NULL NULL
187 J18302 강동해 E8 4 9 2018-11-01 2019-07-08 kangdh960481@naver.com JANG JANG
188 J18303 문교선 E2 4 9 文敎鮮 Mun Kyo Sun 2018-09-03 2020-03-31 skm7773@nate.com NULL
189 J19201 최현진 E3 8 9 崔賢鎭 Choi Hyun Jin 2019-04-15 2019-05-31 guswis@naver.com JANG JANG
190 J19202 김태균 E2 10 9 金泰均 Kim Tai Kyun 2019-05-01 2020-10-31 taikyun77@naver.com JANG JANG
191 J19301 강용환 E1 4 9 康溶桓 Kang Yong Hwan 2019-06-19 2023-04-30 yhkang@jangheon.co.kr JANG JANG
192 B19306 김지영 E5 2 9 金智瑛 Kim Ji Young 2019-06-03 2021-06-02 welcome0426@naver.com BARON
193 J19101 남갑준 C1 1 9 2019-07-01 2021-12-31 JANG JANG
194 J19302 박상호 E2 10 9 朴相鎬 2019-09-18 2021-03-31 antkddlstod@hanmail.net JANG JANG
195 J19303 김원삼 E1 4 9 2019-10-21 2020-07-13 kjdu2801@naver.com JANG JANG
196 J18209 이승준 E2 4 9 2018-11-01 2018-11-01 NULL NULL
197 J20201 박영철 E1 6 9 朴映澈 Park Young Cheol 2020-01-02 2022-03-12 parkk7034@hanmail.net JANG JANG
198 J20202 박영철 E1 6 9 NULL NULL 2020-01-02 2020-01-02 NULL NULL NULL
199 B20306 이민규 E5 2 2 NULL NULL 2020-04-20 0000-00-00 NULL BARON NULL
200 B20305 현동규 E5 2 2 NULL NULL 2020-04-20 0000-00-00 NULL BARON NULL
201 J20601 김민균 E3 4 9 金玟均 KIM MIN GYUN 2020-06-01 2021-04-25 gyun1126@naver.com JANG JANG
202 J20602 이은창 E1 4 9 2020-07-14 2020-10-13 JANG JANG
203 J20603 주정운 E1 4 9 Ju jeongun 2020-11-01 2022-07-31 jeongun3654@naver.com JANG JANG
204 J20301 김근형 E9 12 9 金根亨 Kim Geun Hyeong 2020-06-01 2025-12-31 rmsgud1202@naver.com JANG BARON
205 J20302 홍대기 E9 12 9 洪大基 Hong Dae Ki 2020-06-08 2024-12-03 hdk@hanmaceng.co.kr JANG HANMAC
206 J20303 김영배 E9 12 9 金英培 Kim Young Bae 2020-09-07 2025-12-31 b20327@hanmaceng.co.kr JANG BARON
207 J20304 조아라 E9 13 9 Jo a ra 2020-08-03 2024-07-25 joara778@gmail.com JANG HANMAC
208 J20305 황규관 E9 12 9 黃圭冠 Kyukwan Hwang 2020-06-22 2025-10-17 hwang7kk@gmail.com JANG BARON
209 J20203 김유식 C9 12 9 Kim Yu Sic 2016-12-15 2025-12-31 samasil@hanmail.net JANG BARON
210 B20334 유재욱 E3 2 2 兪哉旭 Yu Jae Wook 2020-11-09 0000-00-00 b20334@hanmaceng.co.kr BARON
211 HM02146 이준희 E3 2 2 2018-01-22 0000-00-00 BARON
212 B20107 조서경 C5 4 9 曺瑞卿 Cho Seo Kyung 2020-11-02 2023-02-28 B20107@hanmaceng.co.kr SAMAN
213 B21308 정창빈 E5 2 2 NULL NULL 2021-02-02 0000-00-00 NULL BARON NULL
214 B21303 오혜성 E5 2 2 NULL NULL 2021-01-18 0000-00-00 NULL BARON NULL
215 B21321 윤성찬 E5 2 2 NULL NULL 2021-03-22 0000-00-00 NULL BARON NULL
216 J21601 권민수 E2 4 9 權珉首 Kwon min soo 2021-05-07 2021-07-27 i6367@hanmail.net JANG JANG
217 J21301 윤성연 E5 8 9 Yun seong yeon 2021-05-10 2023-01-31 j21301@jangheon.co.kr JANG JANG
218 J21602 박선영 E6 8 9 朴宣映 Park Sun Young 2021-06-07 2025-07-16 j21602@jangheon.co.kr JANG JANG
219 J21603 송재일 E3 4 9 2021-07-01 2021-07-31 JANG JANG
220 J21604 김재수 E1 4 9 金在洙 2021-08-01 2022-01-26 463kjs@naver.com JANG JANG
221 J21302 박상은 E5 8 9 朴相恩 2021-08-04 2023-10-31 pasaeu1@naver.com JANG JANG
222 B21355 최고은 E5 2 9 2021-08-20 2021-08-23 BARON NULL
223 J21303 조동일 E4 8 1 趙東逸 CHO DONG IL 2021-10-01 0000-00-00 j21303@jangheon.co.kr JANG JANG
224 B21361 김윤지 E5 2 2 NULL NULL 2021-10-05 0000-00-00 NULL BARON HANMAC
225 insa 인사관리자 E1 6 9 0000-00-00 2000-01-01 erp@jangheon.co.kr BARON NULL
226 J21605 나정현 E5 4 9 2021-10-01 2021-10-13 JANG JANG
227 J21201 조규일 E3 4 9 曺奎一 2021-11-01 2022-02-22 j21201@jangheon.co.kr JANG JANG
228 ERP 총괄ERP E1 6 8 planner 2018-02-01 2000-01-01 erp@jangheon.co.kr BARON NULL
229 J21606 김형주 E4 4 9 金亨主 2021-11-01 2024-08-09 dksusddl3406@naver.com JANG JANG
230 M21417 김동현 E5 2 2 金東賢 Kim Dong Hyun 2021-01-04 0000-00-00 b21301@hanmaceng.co.kr HANMAC NULL
231 B14303 윤영주 E5 2 2 尹永周 Yoon Young Joo 2014-05-14 0000-00-00 nangam92@hanmaceng.co.kr BARON NULL
232 M21411 남궁전 C6 1 9 南宮典 Namgung jeon 2021-03-01 2022-07-31 m21411@hanmaceng.co.kr JANG HANMAC
233 J21607 정대성 E1 4 9 丁大成 2021-12-08 2024-10-04 daisan71@hanmail.net JANG JANG
234 J22301 최동찬 E4 6 8 崔東燦 2020-05-20 0225-12-31 cdc0601@naver.com JANG JANG
235 J22601 이태검 E1 4 9 2022-01-26 2022-03-09 secom88@hanmail.net JANG JANG
236 J16301 김동환 C4 1 1 2016-01-01 0000-00-00 JANG JANG
237 J21304 한형관 C2 1 2 HanHyungKwan 2021-11-01 0000-00-00 han@hanmaceng.co.kr JANG HANMAC
238 J22302 김상철 C8 4 1 金相哲 2022-02-14 0000-00-00 j22302@jangheon.co.kr JANG JANG
239 J22202 김범석 E1 4 1 金範席 Kim bum seok 2022-03-14 0000-00-00 j22202@jangheon.co.kr JANG JANG
240 projt_mng 사업관리 E99 6 9 projt_mng 2018-02-01 2000-01-01 JANG NULL
241 J22203 김경태 E1 4 9 2022-03-10 2022-11-20 JANG JANG
242 J22204 윤두현 E1 4 1 2022-04-18 0000-00-00 doohyuny04@jangheon.co.kr JANG JANG
243 M22021 김윤희 E5 2 9 2022-04-20 2023-06-26
244 M22019 허인 E5 2 9 NULL NULL 2022-04-20 2022-12-31 NULL HANMAC JANG
245 J22304 E5 1 9 NULL NULL 2022-06-03 0000-00-00 NULL JANG JANG
246 J22205 김동원 E3 4 1 金東院 Kim Dong Won 2022-07-11 0000-00-00 J22205@jangheon.co.kr JANG JANG
247 J22206 박진현 E1 4 9 Park Jin Hyun 2022-07-25 2024-02-29 choops21@hanmail.net JANG JANG
248 J22207 안태욱 C8 8 9 安台彧 An Tae Wook 2022-08-01 2025-06-23 atw3258@gmail.com JANG JANG
249 J22305 최만규 E3 6 8 崔萬圭 2022-08-22 2025-12-31 mkchae2@naver.com JANG JANG
250 J21305 김지영A E99 13 2 NULL NULL 2019-06-03 0000-00-00 NULL HANMAC JANG
251 J22306 허남덕 C6 4 9 許南德 Hur Nam DUK 2022-11-01 2024-10-31 j22306@jangheon.co.kr JANG JANG
252 J22208 김태후 E1 4 9 2022-11-21 2023-03-10 kmg0808@hanmail.net JANG JANG
253 J22209 양종선 E3 4 9 Yang Joungsun 2022-12-01 2023-12-29 yjs8080@naver.com JANG JANG
254 J22501 이태수 E8A 4 9 Li Taizhu 2022-12-01 2025-02-25 JANG JANG
255 J22307 Security E5 6 9 NULL NULL 2022-12-27 2022-12-31 NULL HANMAC HANMAC
256 J23301 이호범 E6 4 1 Lee Hobeom 2023-01-02 0000-00-00 ghghqja4402@naver.com JANG JANG
257 J23302 손현수 E6 8 9 2023-01-02 2024-08-31 gust7253@naver.com JANG JANG
258 M04101 이종관 C2 1 1 李鍾官 Lee Jong Kwan 2004-06-01 0000-00-00 jmslee@dreamwiz.com JANG JANG
259 B22059 김윤아 E5 2 9 NULL NULL 2023-01-03 2023-12-31 NULL
260 J23303 최성용 E4 4 1 2023-01-01 0000-00-00 ctjddyd@gmail.com JANG JANG
261 J23304 00 E4 4 9 NULL NULL 2023-01-01 2023-03-07 NULL JANG JANG
262 B23007 유지원 E5 2 9 NULL NULL 2023-02-06 2025-03-11 NULL BARON
263 J23305 이새봄 E99 13 9 2023-03-02 2025-12-31 j23305@jangheon.co.kr JANG BARON
264 M22045 윤여훈 E5 2 9 NULL NULL 2016-06-07 2022-06-30 NULL HANMAC JANG
265 J23201 김경태 E1 4 9 NULL NULL 2023-03-10 2023-03-20 NULL JANG JANG
266 J23306 테스트2 E5 12 8 NULL NULL 2023-03-17 0000-00-00 NULL
267 J23601 강용길 E1 4 9 Kang Yong gil 2023-03-20 2025-01-15 kyg0084@naver.com JANG JANG
268 J23307 정우성 C7 8 1 鄭宇城 Cheung Woo Sung 2021-04-01 0000-00-00 b21323@hanmaceng.co.kr JANG JANG
269 B23050 심보혜 C7 13 9 Simbohye 2023-09-01 2024-08-31 sandysim@hanmaceng.co.kr JANG HANMAC
270 J23101 주상구 C7 4 1 周相龜 Joo Sang Gu 2023-08-01 0000-00-00 twojoo96@hmtele.com JANG JANG
271 J23308 김인범 E5 6 8 金仁凡 2023-10-18 2025-12-31 J23308@jangheon.co.kr JANG JANG
272 J23202 송용 E5 8 9 宋龍 2023-12-18 2024-03-31 J23202@jangheon.co.kr JANG JANG
273 J24301 박선우 E5 8 1 朴善優 2024-01-02 0000-00-00 J24301@jangheon.co.kr JANG JANG
274 J24302 이가연 E5 8 9 李佳硏 2024-01-02 2025-05-09 J24302@jangheon.co.kr JANG JANG
275 B23071 김현지 E5 2 9 2024-01-02 2025-02-09 B23071@hanmaceng.co.kr
276 J24303 신기욱 E5 4 9 2024-01-02 2024-05-20 JANG JANG
277 M02210 장종찬 C5 13 2 張鍾讚 Jang Jong Chan 2001-07-02 0000-00-00 jcjang@hanmaceng.co.kr HANMAC JANG
278 J24304 김성규 E1 6 9 NULL NULL 2009-08-17 2025-10-30 NULL PTC PTC
279 J24307 김갑성 C6 4 1 金甲成 Kim Kapseong 2024-04-01 0000-00-00 j24307@jangheon.co.kr JANG JANG
280 M24028 현경탁 C5 1 9 2024-04-01 2024-05-31 hkt2101@hanmail.net PTC PTC
281 J24201 최영준 C6 8 1 崔永駿 choi young joon 2024-08-01 0000-00-00 zephyryj@naver.com SAMAN JANG
282 public 공통 E1 2 2 NULL 2018-02-01 2000-01-01 NULL BARON NULL
283 public E4 2 2 2018-01-22 0000-00-00 BARON NULL
284 J24101 이훈재 C5 1 1 李?在 2024-10-01 0000-00-00 seoul513@naver.com JANG JANG
285 J24501 박성일 C7 4 1 朴性一 2024-10-24 0000-00-00 bboljji@hanmail.net JANG JANG
286 J24502 이창호 E8A 4 1 李昌鎬 Lee chang ho 2024-11-01 0000-00-00 lchseoul@empas.com JANG JANG
287 J24503 이수식 C8 4 9 李洙植 Lee soo sik 2024-11-01 2025-05-31 sik2012@naver.com JANG JANG
288 TOCUH_ADMIN 터치스크린 E1 6 8 터치스크린 2024-12-16 NULL
289 J25301 김성환 E1 4 1 2025-01-01 0000-00-00 3298748@naver.com JANG JANG
290 P25101 은도찬 C8 8 2 2025-01-06 0000-00-00 civileun96@naver.com PTC JANG
291 P25301 박지우 E5 4 1 2025-01-01 0000-00-00 pgu9961@naver.com PTC JANG
292 M24069 김유진 E5 2 2 2024-09-23 0000-00-00 ETC JANG
293 J25401 조양주 C6 4 9 CHO YANG JOO 2025-02-19 2025-02-28 M23032@hanmaceng.co.kr JANG JANG
294 J25501 주유천 C8 4 9 周裕千 2025-03-17 2025-07-15 jjyc6000@naver.com JANG JANG
295 B24014 송대일 E4A 13 8 0000-00-00 0000-00-00 BARON
296 J25602 곽승용 E1 4 1 2025-06-25 0000-00-00 j25602@jangheon.co.kr JANG JANG
297 M07318 김원기 E4A 13 8 0000-00-00 0000-00-00 BARON
298 J25403 유이식 C8 4 9 2025-05-26 2025-08-31 JANG JANG
299 G25001 센터_기술기획팀 E5 12 8 Admin 2020-05-20 0000-00-00 BARON NULL
300 J25303 김하영 E5 4 9 2025-07-01 2025-08-31 JANG JANG
301 J25601 윤충열 E1 4 1 2025-06-25 0000-00-00 ycy0922@hanmail.net JANG JANG
302 J25503 김영빈 E2 4 9 2025-07-14 2025-09-15 j25503@jangheon.co.kr JANG JANG
303 J25201 임재상 E4 4 9 Lee JAE SANG 2025-07-14 2025-11-30 j25201@jangheon.co.kr JANG JANG
304 J25603 조부건 E1 4 1 2025-06-25 0000-00-00 j25603@jangheon.co.kr JANG JANG
305 J25604 서범진 E3 4 1 2025-06-25 0000-00-00 j25604@jangheon.co.kr JANG JANG
306 J25504 안종기 C8 4 1 2025-07-16 0000-00-00 j25504@jangheon.co.kr JANG JANG
307 J25101 배문교 C2 1 1 裵文敎 Bae Mun Gyo 2025-08-01 0000-00-00 baemg27@daum.net JANG JANG
308 J25505 박보희 E3 4 9 2025-08-01 2025-08-31 JANG JANG
309 P11302 김경수 E1 4 1 金暻洙 KIM KYUNG SOO 2011-04-07 0000-00-00 diejsa@naver.com 장헌 장헌
310 J25304 이동열 E5 4 9 2025-09-01 2026-03-07 alovea640@naver.com JANG JANG
311 J25506 남수용 C8 4 1 2025-09-03 0000-00-00 nsy9067@hanmail.net JANG JANG
312 J25507 이형래 E2 4 9 2025-09-10 2025-09-17 j25507@jangheon.co.kr JANG JANG
313 J25305 박은별 E5 4 1 2025-09-22 0000-00-00 j25305@jangheon.co.kr JANG JANG
314 J25508 이수식 E8A 4 1 李洙植 2025-08-28 0000-00-00 sik2012@naver.com JANG JANG
315 J25509 김기환 E4 4 9 金己桓 2025-11-03 2026-04-10 j25509@jangheon.co.kr JANG JANG
316 admin2025 관리자3 E1 6 8 NULL 안전관리 2025-09-25 0000-00-00 NULL NULL NULL
317 J25510 이인갑 C8 4 1 2025-11-24 0000-00-00 JANG JANG
318 M24046 서우석 E4 2 2 2024-06-17 0000-00-00 BARON NULL
319 J26301 서우석 E4 2 1 NULL NULL 2026-03-09 0000-00-00 NULL BARON JANG
320 J26302 김진규 C8 4 1 金 鎭 圭 2026-04-01 0000-00-00 jingkimm@naver.com JANG JANG
321 J26501 박대원 C8 4 1 2026-04-20 0000-00-00 J26501@jangheon.co.kr JANG JANG

2707
csv/project.csv Normal file

File diff suppressed because it is too large Load Diff

14134
csv/state.csv Normal file

File diff suppressed because it is too large Load Diff

234
csv/worker.csv Normal file
View File

@@ -0,0 +1,234 @@
memberno,s_date,e_date,tardy_h,tardy_m,info,row_num,update_time
M03204,2020-03-12,2020-03-31,8,0,코로나,33,NULL
M13301,2018-04-10,2020-03-31,9,30,탄력근무,2,NULL
M09311,2020-03-12,2020-03-31,8,0,코로나,37,NULL
M16316,2020-03-12,2020-03-31,8,0,코로나,36,NULL
M17209,2020-03-12,2020-03-31,8,0,코로나,35,NULL
M18205,2020-03-12,2020-03-31,8,0,코로나,34,NULL
M18207,2020-03-12,2020-03-31,10,0,코로나,61,NULL
M18206,2020-03-12,2020-03-31,10,0,코로나,59,NULL
M19328,2020-03-12,2020-03-31,8,0,코로나,31,NULL
M18308,2020-03-12,2020-03-31,8,0,코로나,30,NULL
M19312,2020-03-12,2020-03-31,10,0,코로나,58,NULL
M17217,2020-03-12,2020-03-31,8,0,코로나,29,NULL
M18213,2020-03-12,2020-03-31,8,0,코로나,38,NULL
M19305,2020-03-12,2020-03-31,8,0,코로나,39,NULL
J14303,2020-03-12,2020-03-31,10,0,코로나,57,NULL
B20301,2020-03-12,2020-03-31,10,0,코로나,60,NULL
M02210,2020-03-12,2020-03-31,10,0,코로나,55,NULL
M16320,2020-03-12,2020-03-31,8,0,코로나,40,NULL
M10202,2020-03-12,2020-03-30,8,0,코로나,9,NULL
B20304,2020-03-12,2020-03-31,10,0,코로나,63,NULL
J08305,2020-03-12,2020-03-22,8,0,코로나,8,NULL
B19202,2020-03-12,2020-03-31,10,0,코로나,56,NULL
B18202,2020-03-12,2020-03-31,10,0,코로나,62,NULL
B19309,2020-03-12,2020-03-31,10,0,코로나,54,NULL
M17212,2020-03-12,2020-03-31,10,0,코로나,53,NULL
B20101,2020-03-12,2020-03-31,10,0,코로나,52,NULL
M15204,2020-03-12,2020-03-31,8,0,코로나,28,NULL
B19208,2020-03-12,2020-03-31,8,0,코로나,27,NULL
M17203,2020-03-12,2020-03-31,8,0,코로나,15,NULL
B16214,2020-03-12,2020-03-31,10,0,코로나,48,NULL
M18302,2020-04-01,2020-12-31,8,30,탄력근무,101,NULL
P11202,2020-03-12,2020-03-31,10,0,코로나,64,NULL
M06309,2020-03-12,2020-03-31,10,0,코로나,75,NULL
B18204,2020-03-12,2020-03-31,10,0,코로나,74,NULL
J14202,2020-03-12,2020-03-31,10,0,코로나,73,NULL
B19201,2020-03-12,2020-03-31,10,0,코로나,72,NULL
B18206,2020-03-12,2020-03-31,10,0,코로나,71,NULL
B18216,2020-03-12,2020-03-31,10,0,코로나,70,NULL
B18212,2020-03-12,2020-03-31,10,0,코로나,69,NULL
M12205,2020-03-12,2020-03-31,10,0,코로나,68,NULL
M06203,2020-03-12,2020-03-31,10,0,코로나,67,NULL
M04308,2020-03-12,2020-03-31,10,0,코로나,66,NULL
B17204,2020-03-12,2020-03-31,8,0,코로나,22,NULL
B10201,2020-03-12,2020-03-31,8,0,코로나,21,NULL
M18302,2020-03-12,2020-03-31,8,0,코로나,20,NULL
B17314,2020-03-12,2020-03-31,8,0,코로나,19,NULL
B14306,2020-03-12,2020-03-31,8,0,코로나,18,NULL
B18217,2020-03-12,2020-03-31,10,0,코로나,65,NULL
B18313,2020-03-12,2020-03-31,10,0,코로나,51,NULL
J19301,2020-03-12,2020-03-31,10,0,코로나,50,NULL
M08303,2020-03-12,2020-03-31,10,0,코로나,49,NULL
M18218,2020-03-12,2020-03-31,8,0,코로나,17,NULL
M16215,2020-03-12,2020-03-31,8,0,코로나,23,NULL
B19206,2020-03-12,2020-03-31,8,0,코로나,24,NULL
M17401,2020-03-12,2020-03-31,8,0,코로나,25,NULL
B17308,2020-03-12,2020-03-31,8,0,코로나,26,NULL
B19314,2020-03-12,2020-03-31,10,0,코로나,42,NULL
B16307,2020-03-12,2020-03-31,8,0,코로나,16,NULL
B16312,2020-03-12,2020-03-31,8,0,코로나,14,NULL
B18303,2020-03-12,2020-03-31,8,0,코로나,13,NULL
B16305,2020-03-12,2020-03-31,8,0,코로나,11,NULL
B19310,2020-03-12,2020-03-31,8,0,코로나,10,NULL
B17315,2020-03-12,2020-03-31,8,0,코로나,12,NULL
B18311,2020-03-12,2020-03-31,8,0,코로나,41,NULL
H15301,2020-03-12,2020-03-31,10,0,코로나,43,NULL
B19313,2020-03-12,2020-03-31,10,0,코로나,44,NULL
B16301,2020-03-12,2020-03-31,10,0,코로나,45,NULL
M16316,2020-04-01,2020-04-17,8,0,코로나,91,NULL
M17209,2020-04-01,2020-04-17,8,0,코로나,88,NULL
M18205,2020-04-01,2020-04-17,8,0,코로나,87,NULL
M18207,2020-04-01,2020-04-17,8,0,코로나,85,NULL
M18206,2020-04-01,2020-04-17,10,0,코로나,96,NULL
M19312,2020-04-01,2020-04-17,8,0,코로나,95,NULL
M18201,2020-04-01,2020-04-17,10,0,코로나,97,NULL
M19210,2020-04-01,2020-04-17,8,0,코로나,86,NULL
M20303,2020-04-01,2020-04-17,8,0,코로나,89,NULL
B17204,2020-04-01,2020-04-17,8,0,코로나,90,NULL
B19314,2020-04-01,2020-05-09,10,0,코로나,99,NULL
B19312,2020-04-01,2020-04-17,8,0,코로나,92,NULL
B10201,2020-04-01,2020-04-17,8,0,코로나,93,NULL
M18302,2019-02-01,2020-03-11,8,30,탄력근무,4,NULL
B16307,2020-04-01,2020-04-17,8,0,코로나,94,NULL
B16312,2020-04-01,2020-04-17,8,0,코로나,84,NULL
B18303,2020-04-01,2020-04-17,8,0,코로나,83,NULL
B16305,2020-04-01,2020-04-17,8,0,코로나,77,NULL
B19310,2020-04-01,2020-04-17,8,0,코로나,78,NULL
B17315,2020-04-01,2020-04-17,8,0,코로나,79,NULL
B18311,2020-04-01,2020-04-17,8,0,코로나,80,NULL
B19303,2020-04-01,2020-04-17,8,0,코로나,81,NULL
J14202,2020-04-01,2020-04-17,8,0,코로나,82,NULL
M08303,2020-04-01,2020-04-17,10,0,코로나,98,NULL
M18206,2020-06-02,2020-06-19,10,0,코로나,121,NULL
M18308,2020-06-02,2020-06-19,8,0,코로나,111,NULL
M19312,2020-06-02,2020-06-19,8,0,코로나,112,NULL
M05508,2020-06-02,2020-06-19,10,0,코로나,122,NULL
M20310,2020-06-02,2020-06-19,8,0,코로나,113,NULL
B17308,2020-06-02,2020-06-19,8,0,코로나,114,NULL
B19314,2020-06-02,2020-06-19,10,0,코로나,124,NULL
B18211,2020-11-06,2022-03-31,7,30,근로시간단축,199,NULL
B17206,2020-06-02,2020-06-19,8,0,코로나,106,NULL
B19316,2020-06-02,2020-06-19,8,0,코로나,115,NULL
B10201,2020-06-02,2020-06-19,8,0,코로나,110,NULL
B16307,2020-06-02,2020-06-19,8,0,코로나,117,NULL
B16312,2020-06-02,2020-06-19,10,0,코로나,123,NULL
B16305,2020-06-02,2020-06-19,8,0,코로나,119,NULL
B19310,2020-06-02,2020-06-19,8,0,코로나,116,NULL
B17315,2020-06-02,2020-06-19,8,0,코로나,118,NULL
B18311,2020-06-02,2020-06-19,8,0,코로나,109,NULL
B19303,2020-06-02,2020-06-19,8,0,코로나,108,NULL
M18201,2020-08-19,2020-09-11,8,0,코로나,145,NULL
M05508,2020-08-19,2020-09-11,10,0,코로나,150,NULL
M06203,2020-08-19,2020-09-11,10,0,코로나,149,NULL
B20314,2020-08-19,2020-09-11,8,0,코로나,134,NULL
M20310,2020-08-19,2020-09-11,8,0,코로나,135,NULL
B20313,2020-08-19,2020-09-11,8,0,코로나,136,NULL
B19314,2020-08-19,2020-09-28,10,0,코로나,154,NULL
B20317,2020-08-19,2020-09-11,8,0,코로나,137,NULL
B20312,2020-08-19,2020-09-11,8,0,코로나,138,NULL
B19316,2020-08-19,2020-09-11,8,0,코로나,147,NULL
B17315,2020-08-19,2020-09-11,8,0,코로나,139,NULL
B18211,2020-10-17,2020-11-05,9,0,근로시간단축,197,NULL
B20308,2020-08-19,2020-09-07,8,0,코로나,128,NULL
B20309,2020-08-19,2020-09-11,8,0,코로나,146,NULL
B19303,2020-08-19,2020-09-11,8,0,코로나,140,NULL
B18311,2020-08-19,2020-09-11,8,0,코로나,141,NULL
M20317,2020-08-19,2020-09-11,8,0,코로나,142,NULL
B20320,2020-08-19,2020-09-11,8,0,코로나,148,NULL
B18211,2020-10-07,2020-10-16,8,0,코로나,183,NULL
B10201,2020-08-19,2020-09-06,8,0,코로나,127,NULL
B16305,2020-08-19,2020-09-11,8,0,코로나,144,NULL
B20315,2020-08-19,2020-09-11,8,0,코로나,143,NULL
B19310,2020-08-19,2020-09-11,8,0,코로나,133,NULL
B16307,2020-08-19,2020-09-11,8,0,코로나,132,NULL
B16312,2020-08-19,2020-09-11,10,0,코로나,151,NULL
J10315,2020-08-19,2020-09-11,8,0,코로나,129,NULL
M02231,2020-08-19,2020-09-11,8,0,코로나,130,NULL
J13201,2020-08-19,2020-09-11,8,0,코로나,131,NULL
B20314,2020-09-07,2020-09-13,8,0,코로나,155,NULL
M20310,2020-09-07,2020-09-13,8,0,코로나,170,NULL
B20313,2020-09-07,2020-09-13,8,0,코로나,158,NULL
B19314,2020-09-07,2020-09-13,10,0,코로나,171,NULL
B20317,2020-09-07,2020-09-13,8,0,코로나,159,NULL
B17315,2020-09-07,2020-09-13,8,0,코로나,160,NULL
B20309,2020-09-07,2020-09-13,8,0,코로나,161,NULL
B19303,2020-09-07,2020-09-13,8,0,코로나,162,NULL
B18311,2020-09-07,2020-09-13,8,0,코로나,163,NULL
M20317,2020-09-07,2020-09-13,8,0,코로나,164,NULL
B20320,2020-09-07,2020-09-13,8,0,코로나,156,NULL
B18211,2020-09-14,2020-10-06,9,0,근로시간단축,172,NULL
B10201,2020-09-07,2020-09-13,8,0,코로나,165,NULL
B16305,2020-09-07,2020-09-13,8,0,코로나,166,NULL
B20315,2020-09-07,2020-09-13,8,0,코로나,167,NULL
B19310,2020-09-07,2020-09-13,8,0,코로나,168,NULL
B16307,2020-09-07,2020-09-13,8,0,코로나,169,NULL
B16312,2020-09-07,2020-09-13,8,0,코로나,157,NULL
M18201,2020-10-07,2020-10-16,10,0,코로나,193,NULL
M05508,2020-10-07,2020-10-16,10,0,코로나,194,NULL
M12502,2020-10-07,2020-10-16,10,0,코로나,196,NULL
M18207,2020-10-07,2020-10-16,8,0,코로나,176,NULL
M18308,2020-10-07,2020-10-16,8,0,코로나,177,NULL
M19312,2020-10-07,2020-10-16,8,0,코로나,178,NULL
B19314,2020-10-07,2020-10-16,10,0,코로나,191,NULL
B20317,2020-10-07,2020-10-16,8,0,코로나,179,NULL
B18211,2020-08-19,2020-09-13,8,0,코로나,152,NULL
B20309,2020-10-07,2020-10-16,8,0,코로나,180,NULL
B19303,2020-10-07,2020-10-16,8,0,코로나,181,NULL
B18311,2020-10-07,2020-10-16,10,0,코로나,192,NULL
M20317,2020-10-07,2020-10-16,8,0,코로나,182,NULL
B20320,2020-10-07,2020-10-16,8,0,코로나,190,NULL
B10201,2020-10-07,2020-10-16,8,0,코로나,189,NULL
B16305,2020-10-07,2020-10-16,8,0,코로나,188,NULL
B20315,2020-10-07,2020-10-16,8,0,코로나,175,NULL
B19310,2020-10-07,2020-10-16,8,0,코로나,187,NULL
B16307,2020-10-07,2020-10-16,8,0,코로나,174,NULL
B16312,2020-10-07,2020-10-16,8,0,코로나,184,NULL
J10315,2020-10-07,2020-10-16,8,0,코로나,185,NULL
J13201,2020-10-07,2020-10-16,8,0,코로나,186,NULL
B18211,2020-06-20,2020-08-18,9,0,근로시간단축,125,NULL
B18211,2020-06-02,2020-06-19,8,0,코로나,107,NULL
B18213,2018-11-19,2020-12-31,9,30,탄력근무,3,NULL
B18211,2020-04-01,2020-06-01,9,0,근로시간단축,100,NULL
B18211,2020-03-12,2020-03-31,8,0,코로나,32,NULL
B18211,2020-01-01,2020-03-11,9,0,근로시간단축,6,NULL
J15306,2020-02-03,2020-12-07,9,30,탄력근무(육아),7,NULL
M13301,2020-04-01,2020-04-17,8,0,코로나,76,NULL
M13301,2020-04-18,2020-11-30,9,30,탄력근무,105,NULL
J15205,2017-08-17,2020-03-11,9,30,탄력근무,1,NULL
J15205,2020-03-12,2020-03-31,10,0,코로나,46,NULL
J15205,2020-04-01,2020-12-31,9,30,탄력근무,103,NULL
M05205,2019-03-04,2020-03-11,9,30,탄력근무,5,NULL
M05205,2020-03-12,2020-03-31,10,0,코로나,47,NULL
M05205,2020-04-01,2020-12-31,9,30,탄력근무,102,NULL
B13301,2020-10-17,2020-12-07,9,30,탄력근무,198,NULL
B13301,2020-04-18,2020-06-01,10,0,탄력근무,104,NULL
B13301,2020-06-02,2020-06-19,10,0,코로나,120,NULL
B13301,2020-06-20,2020-08-18,10,0,탄력근무,126,NULL
B13301,2020-08-19,2020-09-13,10,0,코로나,153,NULL
B13301,2020-09-14,2020-10-06,10,0,탄력근무,173,NULL
B13301,2020-10-07,2020-10-16,10,0,코로나,195,NULL
B13301,2021-01-01,2021-07-05,9,30,탄력근무,230,NULL
M18207,2020-12-08,2020-12-31,8,0,코로나,214,NULL
M20310,2020-12-08,2020-12-31,8,0,코로나,215,NULL
B20314,2020-12-08,2020-12-31,8,0,코로나,216,NULL
M20322,2020-12-08,2020-12-31,8,0,코로나,217,NULL
B20329,2020-12-08,2020-12-31,8,0,코로나,218,NULL
B10201,2020-12-08,2020-12-31,8,0,코로나,219,NULL
B16305,2020-12-08,2020-12-31,8,0,코로나,221,NULL
B16312,2020-12-08,2020-12-31,8,0,코로나,222,NULL
B16307,2020-12-08,2020-12-31,8,0,코로나,213,NULL
B17309,2020-12-08,2020-12-31,8,0,코로나,212,NULL
B19310,2020-12-08,2020-12-31,8,0,코로나,211,NULL
B20315,2020-12-08,2020-12-31,8,0,코로나,200,NULL
B18311,2020-12-08,2020-12-31,8,0,코로나,201,NULL
B19303,2020-12-08,2020-12-31,8,0,코로나,202,NULL
B20308,2020-12-08,2020-12-31,8,0,코로나,203,NULL
B20309,2020-12-08,2020-12-31,8,0,코로나,204,NULL
M20317,2020-12-08,2020-12-31,8,0,코로나,205,NULL
B17315,2020-12-08,2020-12-31,8,0,코로나,206,NULL
B20317,2020-12-08,2020-12-31,8,0,코로나,207,NULL
B20332,2020-12-08,2020-12-31,8,0,코로나,208,NULL
B20320,2020-12-08,2020-12-31,8,0,코로나,209,NULL
M05508,2020-12-08,2020-12-31,10,0,코로나,228,NULL
B19313,2020-12-08,2020-12-31,10,0,코로나,227,NULL
B20322,2020-12-08,2020-12-31,10,0,코로나,226,NULL
B13301,2020-12-08,2020-12-31,10,0,코로나,225,NULL
B19314,2020-12-08,2020-12-31,10,0,코로나,224,NULL
J15306,2020-12-08,2020-12-31,8,0,코로나,220,NULL
J15306,2021-01-01,2021-02-02,9,30,탄력근무(육아),229,NULL
J18205,2021-07-14,2022-12-31,8,0,코로나,235,"2022-04-01 10:40:07"
J17205,2021-07-14,2022-12-31,8,0,코로나,234,"2022-04-01 10:40:07"
J13201,2021-07-14,2022-12-31,8,0,코로나,233,"2022-04-01 10:40:07"
J15307,2021-07-14,2022-12-31,8,0,코로나,232,"2022-04-01 10:40:07"
J21602,2021-07-14,2022-12-31,8,0,코로나,231,"2022-04-01 10:40:07"
1 memberno s_date e_date tardy_h tardy_m info row_num update_time
2 M03204 2020-03-12 2020-03-31 8 0 코로나 33 NULL
3 M13301 2018-04-10 2020-03-31 9 30 탄력근무 2 NULL
4 M09311 2020-03-12 2020-03-31 8 0 코로나 37 NULL
5 M16316 2020-03-12 2020-03-31 8 0 코로나 36 NULL
6 M17209 2020-03-12 2020-03-31 8 0 코로나 35 NULL
7 M18205 2020-03-12 2020-03-31 8 0 코로나 34 NULL
8 M18207 2020-03-12 2020-03-31 10 0 코로나 61 NULL
9 M18206 2020-03-12 2020-03-31 10 0 코로나 59 NULL
10 M19328 2020-03-12 2020-03-31 8 0 코로나 31 NULL
11 M18308 2020-03-12 2020-03-31 8 0 코로나 30 NULL
12 M19312 2020-03-12 2020-03-31 10 0 코로나 58 NULL
13 M17217 2020-03-12 2020-03-31 8 0 코로나 29 NULL
14 M18213 2020-03-12 2020-03-31 8 0 코로나 38 NULL
15 M19305 2020-03-12 2020-03-31 8 0 코로나 39 NULL
16 J14303 2020-03-12 2020-03-31 10 0 코로나 57 NULL
17 B20301 2020-03-12 2020-03-31 10 0 코로나 60 NULL
18 M02210 2020-03-12 2020-03-31 10 0 코로나 55 NULL
19 M16320 2020-03-12 2020-03-31 8 0 코로나 40 NULL
20 M10202 2020-03-12 2020-03-30 8 0 코로나 9 NULL
21 B20304 2020-03-12 2020-03-31 10 0 코로나 63 NULL
22 J08305 2020-03-12 2020-03-22 8 0 코로나 8 NULL
23 B19202 2020-03-12 2020-03-31 10 0 코로나 56 NULL
24 B18202 2020-03-12 2020-03-31 10 0 코로나 62 NULL
25 B19309 2020-03-12 2020-03-31 10 0 코로나 54 NULL
26 M17212 2020-03-12 2020-03-31 10 0 코로나 53 NULL
27 B20101 2020-03-12 2020-03-31 10 0 코로나 52 NULL
28 M15204 2020-03-12 2020-03-31 8 0 코로나 28 NULL
29 B19208 2020-03-12 2020-03-31 8 0 코로나 27 NULL
30 M17203 2020-03-12 2020-03-31 8 0 코로나 15 NULL
31 B16214 2020-03-12 2020-03-31 10 0 코로나 48 NULL
32 M18302 2020-04-01 2020-12-31 8 30 탄력근무 101 NULL
33 P11202 2020-03-12 2020-03-31 10 0 코로나 64 NULL
34 M06309 2020-03-12 2020-03-31 10 0 코로나 75 NULL
35 B18204 2020-03-12 2020-03-31 10 0 코로나 74 NULL
36 J14202 2020-03-12 2020-03-31 10 0 코로나 73 NULL
37 B19201 2020-03-12 2020-03-31 10 0 코로나 72 NULL
38 B18206 2020-03-12 2020-03-31 10 0 코로나 71 NULL
39 B18216 2020-03-12 2020-03-31 10 0 코로나 70 NULL
40 B18212 2020-03-12 2020-03-31 10 0 코로나 69 NULL
41 M12205 2020-03-12 2020-03-31 10 0 코로나 68 NULL
42 M06203 2020-03-12 2020-03-31 10 0 코로나 67 NULL
43 M04308 2020-03-12 2020-03-31 10 0 코로나 66 NULL
44 B17204 2020-03-12 2020-03-31 8 0 코로나 22 NULL
45 B10201 2020-03-12 2020-03-31 8 0 코로나 21 NULL
46 M18302 2020-03-12 2020-03-31 8 0 코로나 20 NULL
47 B17314 2020-03-12 2020-03-31 8 0 코로나 19 NULL
48 B14306 2020-03-12 2020-03-31 8 0 코로나 18 NULL
49 B18217 2020-03-12 2020-03-31 10 0 코로나 65 NULL
50 B18313 2020-03-12 2020-03-31 10 0 코로나 51 NULL
51 J19301 2020-03-12 2020-03-31 10 0 코로나 50 NULL
52 M08303 2020-03-12 2020-03-31 10 0 코로나 49 NULL
53 M18218 2020-03-12 2020-03-31 8 0 코로나 17 NULL
54 M16215 2020-03-12 2020-03-31 8 0 코로나 23 NULL
55 B19206 2020-03-12 2020-03-31 8 0 코로나 24 NULL
56 M17401 2020-03-12 2020-03-31 8 0 코로나 25 NULL
57 B17308 2020-03-12 2020-03-31 8 0 코로나 26 NULL
58 B19314 2020-03-12 2020-03-31 10 0 코로나 42 NULL
59 B16307 2020-03-12 2020-03-31 8 0 코로나 16 NULL
60 B16312 2020-03-12 2020-03-31 8 0 코로나 14 NULL
61 B18303 2020-03-12 2020-03-31 8 0 코로나 13 NULL
62 B16305 2020-03-12 2020-03-31 8 0 코로나 11 NULL
63 B19310 2020-03-12 2020-03-31 8 0 코로나 10 NULL
64 B17315 2020-03-12 2020-03-31 8 0 코로나 12 NULL
65 B18311 2020-03-12 2020-03-31 8 0 코로나 41 NULL
66 H15301 2020-03-12 2020-03-31 10 0 코로나 43 NULL
67 B19313 2020-03-12 2020-03-31 10 0 코로나 44 NULL
68 B16301 2020-03-12 2020-03-31 10 0 코로나 45 NULL
69 M16316 2020-04-01 2020-04-17 8 0 코로나 91 NULL
70 M17209 2020-04-01 2020-04-17 8 0 코로나 88 NULL
71 M18205 2020-04-01 2020-04-17 8 0 코로나 87 NULL
72 M18207 2020-04-01 2020-04-17 8 0 코로나 85 NULL
73 M18206 2020-04-01 2020-04-17 10 0 코로나 96 NULL
74 M19312 2020-04-01 2020-04-17 8 0 코로나 95 NULL
75 M18201 2020-04-01 2020-04-17 10 0 코로나 97 NULL
76 M19210 2020-04-01 2020-04-17 8 0 코로나 86 NULL
77 M20303 2020-04-01 2020-04-17 8 0 코로나 89 NULL
78 B17204 2020-04-01 2020-04-17 8 0 코로나 90 NULL
79 B19314 2020-04-01 2020-05-09 10 0 코로나 99 NULL
80 B19312 2020-04-01 2020-04-17 8 0 코로나 92 NULL
81 B10201 2020-04-01 2020-04-17 8 0 코로나 93 NULL
82 M18302 2019-02-01 2020-03-11 8 30 탄력근무 4 NULL
83 B16307 2020-04-01 2020-04-17 8 0 코로나 94 NULL
84 B16312 2020-04-01 2020-04-17 8 0 코로나 84 NULL
85 B18303 2020-04-01 2020-04-17 8 0 코로나 83 NULL
86 B16305 2020-04-01 2020-04-17 8 0 코로나 77 NULL
87 B19310 2020-04-01 2020-04-17 8 0 코로나 78 NULL
88 B17315 2020-04-01 2020-04-17 8 0 코로나 79 NULL
89 B18311 2020-04-01 2020-04-17 8 0 코로나 80 NULL
90 B19303 2020-04-01 2020-04-17 8 0 코로나 81 NULL
91 J14202 2020-04-01 2020-04-17 8 0 코로나 82 NULL
92 M08303 2020-04-01 2020-04-17 10 0 코로나 98 NULL
93 M18206 2020-06-02 2020-06-19 10 0 코로나 121 NULL
94 M18308 2020-06-02 2020-06-19 8 0 코로나 111 NULL
95 M19312 2020-06-02 2020-06-19 8 0 코로나 112 NULL
96 M05508 2020-06-02 2020-06-19 10 0 코로나 122 NULL
97 M20310 2020-06-02 2020-06-19 8 0 코로나 113 NULL
98 B17308 2020-06-02 2020-06-19 8 0 코로나 114 NULL
99 B19314 2020-06-02 2020-06-19 10 0 코로나 124 NULL
100 B18211 2020-11-06 2022-03-31 7 30 근로시간단축 199 NULL
101 B17206 2020-06-02 2020-06-19 8 0 코로나 106 NULL
102 B19316 2020-06-02 2020-06-19 8 0 코로나 115 NULL
103 B10201 2020-06-02 2020-06-19 8 0 코로나 110 NULL
104 B16307 2020-06-02 2020-06-19 8 0 코로나 117 NULL
105 B16312 2020-06-02 2020-06-19 10 0 코로나 123 NULL
106 B16305 2020-06-02 2020-06-19 8 0 코로나 119 NULL
107 B19310 2020-06-02 2020-06-19 8 0 코로나 116 NULL
108 B17315 2020-06-02 2020-06-19 8 0 코로나 118 NULL
109 B18311 2020-06-02 2020-06-19 8 0 코로나 109 NULL
110 B19303 2020-06-02 2020-06-19 8 0 코로나 108 NULL
111 M18201 2020-08-19 2020-09-11 8 0 코로나 145 NULL
112 M05508 2020-08-19 2020-09-11 10 0 코로나 150 NULL
113 M06203 2020-08-19 2020-09-11 10 0 코로나 149 NULL
114 B20314 2020-08-19 2020-09-11 8 0 코로나 134 NULL
115 M20310 2020-08-19 2020-09-11 8 0 코로나 135 NULL
116 B20313 2020-08-19 2020-09-11 8 0 코로나 136 NULL
117 B19314 2020-08-19 2020-09-28 10 0 코로나 154 NULL
118 B20317 2020-08-19 2020-09-11 8 0 코로나 137 NULL
119 B20312 2020-08-19 2020-09-11 8 0 코로나 138 NULL
120 B19316 2020-08-19 2020-09-11 8 0 코로나 147 NULL
121 B17315 2020-08-19 2020-09-11 8 0 코로나 139 NULL
122 B18211 2020-10-17 2020-11-05 9 0 근로시간단축 197 NULL
123 B20308 2020-08-19 2020-09-07 8 0 코로나 128 NULL
124 B20309 2020-08-19 2020-09-11 8 0 코로나 146 NULL
125 B19303 2020-08-19 2020-09-11 8 0 코로나 140 NULL
126 B18311 2020-08-19 2020-09-11 8 0 코로나 141 NULL
127 M20317 2020-08-19 2020-09-11 8 0 코로나 142 NULL
128 B20320 2020-08-19 2020-09-11 8 0 코로나 148 NULL
129 B18211 2020-10-07 2020-10-16 8 0 코로나 183 NULL
130 B10201 2020-08-19 2020-09-06 8 0 코로나 127 NULL
131 B16305 2020-08-19 2020-09-11 8 0 코로나 144 NULL
132 B20315 2020-08-19 2020-09-11 8 0 코로나 143 NULL
133 B19310 2020-08-19 2020-09-11 8 0 코로나 133 NULL
134 B16307 2020-08-19 2020-09-11 8 0 코로나 132 NULL
135 B16312 2020-08-19 2020-09-11 10 0 코로나 151 NULL
136 J10315 2020-08-19 2020-09-11 8 0 코로나 129 NULL
137 M02231 2020-08-19 2020-09-11 8 0 코로나 130 NULL
138 J13201 2020-08-19 2020-09-11 8 0 코로나 131 NULL
139 B20314 2020-09-07 2020-09-13 8 0 코로나 155 NULL
140 M20310 2020-09-07 2020-09-13 8 0 코로나 170 NULL
141 B20313 2020-09-07 2020-09-13 8 0 코로나 158 NULL
142 B19314 2020-09-07 2020-09-13 10 0 코로나 171 NULL
143 B20317 2020-09-07 2020-09-13 8 0 코로나 159 NULL
144 B17315 2020-09-07 2020-09-13 8 0 코로나 160 NULL
145 B20309 2020-09-07 2020-09-13 8 0 코로나 161 NULL
146 B19303 2020-09-07 2020-09-13 8 0 코로나 162 NULL
147 B18311 2020-09-07 2020-09-13 8 0 코로나 163 NULL
148 M20317 2020-09-07 2020-09-13 8 0 코로나 164 NULL
149 B20320 2020-09-07 2020-09-13 8 0 코로나 156 NULL
150 B18211 2020-09-14 2020-10-06 9 0 근로시간단축 172 NULL
151 B10201 2020-09-07 2020-09-13 8 0 코로나 165 NULL
152 B16305 2020-09-07 2020-09-13 8 0 코로나 166 NULL
153 B20315 2020-09-07 2020-09-13 8 0 코로나 167 NULL
154 B19310 2020-09-07 2020-09-13 8 0 코로나 168 NULL
155 B16307 2020-09-07 2020-09-13 8 0 코로나 169 NULL
156 B16312 2020-09-07 2020-09-13 8 0 코로나 157 NULL
157 M18201 2020-10-07 2020-10-16 10 0 코로나 193 NULL
158 M05508 2020-10-07 2020-10-16 10 0 코로나 194 NULL
159 M12502 2020-10-07 2020-10-16 10 0 코로나 196 NULL
160 M18207 2020-10-07 2020-10-16 8 0 코로나 176 NULL
161 M18308 2020-10-07 2020-10-16 8 0 코로나 177 NULL
162 M19312 2020-10-07 2020-10-16 8 0 코로나 178 NULL
163 B19314 2020-10-07 2020-10-16 10 0 코로나 191 NULL
164 B20317 2020-10-07 2020-10-16 8 0 코로나 179 NULL
165 B18211 2020-08-19 2020-09-13 8 0 코로나 152 NULL
166 B20309 2020-10-07 2020-10-16 8 0 코로나 180 NULL
167 B19303 2020-10-07 2020-10-16 8 0 코로나 181 NULL
168 B18311 2020-10-07 2020-10-16 10 0 코로나 192 NULL
169 M20317 2020-10-07 2020-10-16 8 0 코로나 182 NULL
170 B20320 2020-10-07 2020-10-16 8 0 코로나 190 NULL
171 B10201 2020-10-07 2020-10-16 8 0 코로나 189 NULL
172 B16305 2020-10-07 2020-10-16 8 0 코로나 188 NULL
173 B20315 2020-10-07 2020-10-16 8 0 코로나 175 NULL
174 B19310 2020-10-07 2020-10-16 8 0 코로나 187 NULL
175 B16307 2020-10-07 2020-10-16 8 0 코로나 174 NULL
176 B16312 2020-10-07 2020-10-16 8 0 코로나 184 NULL
177 J10315 2020-10-07 2020-10-16 8 0 코로나 185 NULL
178 J13201 2020-10-07 2020-10-16 8 0 코로나 186 NULL
179 B18211 2020-06-20 2020-08-18 9 0 근로시간단축 125 NULL
180 B18211 2020-06-02 2020-06-19 8 0 코로나 107 NULL
181 B18213 2018-11-19 2020-12-31 9 30 탄력근무 3 NULL
182 B18211 2020-04-01 2020-06-01 9 0 근로시간단축 100 NULL
183 B18211 2020-03-12 2020-03-31 8 0 코로나 32 NULL
184 B18211 2020-01-01 2020-03-11 9 0 근로시간단축 6 NULL
185 J15306 2020-02-03 2020-12-07 9 30 탄력근무(육아) 7 NULL
186 M13301 2020-04-01 2020-04-17 8 0 코로나 76 NULL
187 M13301 2020-04-18 2020-11-30 9 30 탄력근무 105 NULL
188 J15205 2017-08-17 2020-03-11 9 30 탄력근무 1 NULL
189 J15205 2020-03-12 2020-03-31 10 0 코로나 46 NULL
190 J15205 2020-04-01 2020-12-31 9 30 탄력근무 103 NULL
191 M05205 2019-03-04 2020-03-11 9 30 탄력근무 5 NULL
192 M05205 2020-03-12 2020-03-31 10 0 코로나 47 NULL
193 M05205 2020-04-01 2020-12-31 9 30 탄력근무 102 NULL
194 B13301 2020-10-17 2020-12-07 9 30 탄력근무 198 NULL
195 B13301 2020-04-18 2020-06-01 10 0 탄력근무 104 NULL
196 B13301 2020-06-02 2020-06-19 10 0 코로나 120 NULL
197 B13301 2020-06-20 2020-08-18 10 0 탄력근무 126 NULL
198 B13301 2020-08-19 2020-09-13 10 0 코로나 153 NULL
199 B13301 2020-09-14 2020-10-06 10 0 탄력근무 173 NULL
200 B13301 2020-10-07 2020-10-16 10 0 코로나 195 NULL
201 B13301 2021-01-01 2021-07-05 9 30 탄력근무 230 NULL
202 M18207 2020-12-08 2020-12-31 8 0 코로나 214 NULL
203 M20310 2020-12-08 2020-12-31 8 0 코로나 215 NULL
204 B20314 2020-12-08 2020-12-31 8 0 코로나 216 NULL
205 M20322 2020-12-08 2020-12-31 8 0 코로나 217 NULL
206 B20329 2020-12-08 2020-12-31 8 0 코로나 218 NULL
207 B10201 2020-12-08 2020-12-31 8 0 코로나 219 NULL
208 B16305 2020-12-08 2020-12-31 8 0 코로나 221 NULL
209 B16312 2020-12-08 2020-12-31 8 0 코로나 222 NULL
210 B16307 2020-12-08 2020-12-31 8 0 코로나 213 NULL
211 B17309 2020-12-08 2020-12-31 8 0 코로나 212 NULL
212 B19310 2020-12-08 2020-12-31 8 0 코로나 211 NULL
213 B20315 2020-12-08 2020-12-31 8 0 코로나 200 NULL
214 B18311 2020-12-08 2020-12-31 8 0 코로나 201 NULL
215 B19303 2020-12-08 2020-12-31 8 0 코로나 202 NULL
216 B20308 2020-12-08 2020-12-31 8 0 코로나 203 NULL
217 B20309 2020-12-08 2020-12-31 8 0 코로나 204 NULL
218 M20317 2020-12-08 2020-12-31 8 0 코로나 205 NULL
219 B17315 2020-12-08 2020-12-31 8 0 코로나 206 NULL
220 B20317 2020-12-08 2020-12-31 8 0 코로나 207 NULL
221 B20332 2020-12-08 2020-12-31 8 0 코로나 208 NULL
222 B20320 2020-12-08 2020-12-31 8 0 코로나 209 NULL
223 M05508 2020-12-08 2020-12-31 10 0 코로나 228 NULL
224 B19313 2020-12-08 2020-12-31 10 0 코로나 227 NULL
225 B20322 2020-12-08 2020-12-31 10 0 코로나 226 NULL
226 B13301 2020-12-08 2020-12-31 10 0 코로나 225 NULL
227 B19314 2020-12-08 2020-12-31 10 0 코로나 224 NULL
228 J15306 2020-12-08 2020-12-31 8 0 코로나 220 NULL
229 J15306 2021-01-01 2021-02-02 9 30 탄력근무(육아) 229 NULL
230 J18205 2021-07-14 2022-12-31 8 0 코로나 235 2022-04-01 10:40:07
231 J17205 2021-07-14 2022-12-31 8 0 코로나 234 2022-04-01 10:40:07
232 J13201 2021-07-14 2022-12-31 8 0 코로나 233 2022-04-01 10:40:07
233 J15307 2021-07-14 2022-12-31 8 0 코로나 232 2022-04-01 10:40:07
234 J21602 2021-07-14 2022-12-31 8 0 코로나 231 2022-04-01 10:40:07

138
detail-view-project.html Normal file
View File

@@ -0,0 +1,138 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>프로젝트 상세보기</title>
<style>
body{font-family:"Pretendard","Noto Sans KR",sans-serif;margin:0;background:#f5f1ea;color:#1c1b1a}
.wrap{max-width:1200px;margin:14px auto;padding:0 14px}
.card{background:#fff;border:1px solid #e1d7cb;border-radius:14px;padding:14px;margin-bottom:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
select{padding:7px 9px;border:1px solid #e1d7cb;border-radius:10px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{border-bottom:1px solid #ece4d9;padding:7px 8px;text-align:left;white-space:nowrap}
th{background:#f4ece0;color:#6e675f}
.table-wrap{max-height:60vh;overflow:auto}
.donut-wrap{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:center;background:#fff;border:1px solid #e1d7cb;border-radius:14px;padding:12px}
.donut{width:190px;height:190px;border-radius:50%;margin:0 auto;position:relative;box-shadow:0 8px 18px rgba(30,24,16,.12)}
.donut:after{content:'';position:absolute;inset:30%;background:#fff;border-radius:50%;border:1px solid #e1d7cb}
.center{position:absolute;inset:0;display:grid;place-items:center;font-weight:900;z-index:2;text-align:center;font-size:13px}
.legend{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.legend-item{display:flex;gap:8px;align-items:center;font-size:12px;background:#fff;border:1px solid #e1d7cb;border-radius:10px;padding:7px 9px}
.dot{width:11px;height:11px;border-radius:999px}
</style>
</head>
<body>
<div class="wrap">
<div class="card"><div class="row" style="justify-content:space-between"><h3 id="title" style="margin:0">선택 프로젝트 상세 (년도별)</h3><label>년도 <select id="yearSel"></select></label></div></div>
<div class="card"><div id="donutWrap" class="donut-wrap"></div></div>
<div class="card"><h3 style="margin:0 0 8px">인원 투입 상세 (년/월)</h3><div class="table-wrap"><table id="tblA"></table></div></div>
</div>
<script>
const q = new URLSearchParams(location.search);
const projectCode = (q.get('projectCode')||'').trim();
const start = (q.get('start')||'').trim();
const end = (q.get('end')||'').trim();
const colors=['#2f6b5f','#e27d2f','#4f5bd5','#b33c2e','#0f766e','#0369a1','#c2410c','#7c3aed','#0891b2','#ca8a04'];
const esc=(s)=>String(s??'').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
const personNameWithRank=(name, rank)=>{const n=String(name||'').trim();const r=String(rank||'').trim();if(n&&r)return `${n} ${r}`;return n||'';};
let rows=[];
let alias={};
const projectLabel=(code)=>{const c=String(code||'').trim(); if(!c) return ''; const short=alias[c]||''; return short?`${short} (${c})`:c;};
function getYears(){
const ys=[...new Set(rows.map(r=>String(r.yearMonth||'').slice(0,4)).filter(v=>/^\d{4}$/.test(v)))];
return ys.sort((a,b)=>Number(a)-Number(b));
}
function byYear(y){ return rows.filter(r=>String(r.yearMonth||'').startsWith(y+'-')); }
function agg(y){
const data=byYear(y); const m=new Map(); let t=0;
data.forEach(r=>{
const person=(r.korName||'').trim()?`${personNameWithRank(r.korName||'', r.rankName||'')} (${r.MemberNo||''})`:String(r.MemberNo||'');
const h=Number(r.hours||0); const rh=Number(r.regularHours||0); const oh=Number(r.overtimeHours||0);
const prev=m.get(person)||{hours:0,regularHours:0,overtimeHours:0};
m.set(person,{hours:prev.hours+h,regularHours:prev.regularHours+rh,overtimeHours:prev.overtimeHours+oh}); t+=h;
});
const people=[...m.entries()].map(([person,v])=>({
person,
hours:v.hours,
regularHours:v.regularHours,
overtimeHours:v.overtimeHours,
sharePct:t?v.hours/t*100:0
})).sort((a,b)=>b.hours-a.hours);
return {rows:data,total:t,people};
}
function renderTable(el,rows,heads){
if(!rows.length){el.innerHTML='<tr><td>데이터 없음</td></tr>';return;}
el.innerHTML='<thead><tr>'+heads.map(h=>'<th>'+h+'</th>').join('')+'</tr></thead><tbody>'+
rows.map(r=>'<tr>'+heads.map(h=>'<td>'+esc(r[h]??'')+'</td>').join('')+'</tr>').join('')+'</tbody>';
}
function renderMerged(el,rows){
if(!rows.length){el.innerHTML='<tr><td>데이터 없음</td></tr>';return;}
const heads=['yearMonth','korName','MemberNo','hours','regularHours','overtimeHours'];
const c=new Map(); rows.forEach(r=>c.set(r.yearMonth,(c.get(r.yearMonth)||0)+1));
const seen=new Set();
const sum = rows.reduce((acc, r) => {
acc.hours += Number(r.hours || 0);
acc.regular += Number(r.regularHours || 0);
acc.overtime += Number(r.overtimeHours || 0);
return acc;
}, {hours:0, regular:0, overtime:0});
let body = '';
let curMonth = '';
let monthSum = {hours:0, regular:0, overtime:0};
for(const r of rows){
const ym = String(r.yearMonth || '');
if(curMonth && ym !== curMonth){
body += '<tr><td colspan="3" style="font-weight:700;background:#f8f2e8">월 소계 ('+esc(curMonth)+')</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.hours.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.regular.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.overtime.toFixed(2)+'</td></tr>';
monthSum = {hours:0, regular:0, overtime:0};
}
const m=seen.has(ym)?'':'<td rowspan="'+c.get(ym)+'">'+esc(ym)+'</td>';
seen.add(ym);
body += '<tr>'+m+'<td>'+esc(personNameWithRank(r.korName, r.rankName))+'</td><td>'+esc(r.MemberNo)+'</td><td>'+esc(r.hours)+'</td><td>'+esc(r.regularHours)+'</td><td>'+esc(r.overtimeHours)+'</td></tr>';
monthSum.hours += Number(r.hours || 0);
monthSum.regular += Number(r.regularHours || 0);
monthSum.overtime += Number(r.overtimeHours || 0);
curMonth = ym;
}
if(curMonth){
body += '<tr><td colspan="3" style="font-weight:700;background:#f8f2e8">월 소계 ('+esc(curMonth)+')</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.hours.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.regular.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.overtime.toFixed(2)+'</td></tr>';
}
el.innerHTML='<thead><tr>'+heads.map(h=>'<th>'+h+'</th>').join('')+'</tr></thead><tbody>'+body+'</tbody><tfoot><tr><td colspan="3" style="font-weight:800;background:#f4ece0">합계</td><td style="font-weight:800;background:#f4ece0">'+sum.hours.toFixed(2)+'</td><td style="font-weight:800;background:#f4ece0">'+sum.regular.toFixed(2)+'</td><td style="font-weight:800;background:#f4ece0">'+sum.overtime.toFixed(2)+'</td></tr></tfoot>';
}
function draw(y){
const g=agg(y); const total=g.total||0;
const sorted=g.rows.slice().sort((a,b)=>String(a.yearMonth).localeCompare(String(b.yearMonth))||Number(b.hours)-Number(a.hours));
renderMerged(document.getElementById('tblA'), sorted.map(r=>({...r, korName:r.korName||''})));
if(!g.people.length){document.getElementById('donutWrap').innerHTML='<div>데이터 없음</div>';return;}
let acc=0; const segs=g.people.map((p,i)=>{const s=acc; acc+=p.sharePct; return colors[i%colors.length]+' '+s.toFixed(1)+'% '+acc.toFixed(1)+'%';}).join(', ');
const legend=g.people.map((p,i)=>'<div class="legend-item"><span class="dot" style="background:'+colors[i%colors.length]+'"></span><span>'+esc(p.person)+': '+p.hours.toFixed(1)+'h ('+p.sharePct.toFixed(1)+'%)</span></div>').join('');
document.getElementById('donutWrap').innerHTML='<div style="position:relative"><div class="donut" style="background:conic-gradient('+segs+')"></div><div class="center">'+esc(y)+'년<br>'+total.toFixed(1)+'h</div></div><div class="legend">'+legend+'</div>';
}
async function init(){
if(!projectCode || !start || !end){ document.body.innerHTML='<div style="padding:20px">필수 파라미터가 없습니다.</div>'; return; }
alias=((await (await fetch('/api/project-aliases')).json()).aliases)||{};
document.getElementById('title').textContent='선택 프로젝트 상세 (년도별): '+projectLabel(projectCode);
const d=await (await fetch(`/api/project-monthly-detail?start=${encodeURIComponent(start)}&end=${encodeURIComponent(end)}&projectCode=${encodeURIComponent(projectCode)}`)).json();
rows=(d.rows||[]).map(x=>({
yearMonth:x.yearMonth||'',
MemberNo:x.MemberNo||'',
korName:x.korName||'',
rankName:x.rankName||'',
hours:Number(x.hours||0),
regularHours:Number(x.regularHours||0),
overtimeHours:Number(x.overtimeHours||0)
}));
const years=getYears();
const sel=document.getElementById('yearSel');
sel.innerHTML=years.map(y=>`<option value="${y}">${y}년</option>`).join('');
sel.value=years[0]||'';
sel.addEventListener('change',()=>draw(sel.value));
draw(sel.value);
}
init();
</script>
</body>
</html>

145
detail-view.html Normal file
View File

@@ -0,0 +1,145 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>상세보기</title>
<style>
body{font-family:"Pretendard","Noto Sans KR",sans-serif;margin:0;background:#f5f1ea;color:#1c1b1a}
.wrap{max-width:1200px;margin:14px auto;padding:0 14px}
.card{background:#fff;border:1px solid #e1d7cb;border-radius:14px;padding:14px;margin-bottom:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
select{padding:7px 9px;border:1px solid #e1d7cb;border-radius:10px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{border-bottom:1px solid #ece4d9;padding:7px 8px;text-align:left;white-space:nowrap}
th{background:#f4ece0;color:#6e675f}
.table-wrap{max-height:60vh;overflow:auto}
.donut-wrap{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:center;background:#fff;border:1px solid #e1d7cb;border-radius:14px;padding:12px}
.donut{width:190px;height:190px;border-radius:50%;margin:0 auto;position:relative;box-shadow:0 8px 18px rgba(30,24,16,.12)}
.donut:after{content:'';position:absolute;inset:30%;background:#fff;border-radius:50%;border:1px solid #e1d7cb}
.center{position:absolute;inset:0;display:grid;place-items:center;font-weight:900;z-index:2;text-align:center;font-size:13px}
.legend{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.legend-item{display:flex;gap:8px;align-items:center;font-size:12px;background:#fff;border:1px solid #e1d7cb;border-radius:10px;padding:7px 9px}
.dot{width:11px;height:11px;border-radius:999px}
.hours-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.hours-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid #e1d7cb;border-radius:999px;font-size:12px;background:#fff}
</style>
</head>
<body>
<div class="wrap">
<div class="card"><div class="row" style="justify-content:space-between"><h3 id="detailTitle" style="margin:0">선택 인원 상세 (년도별)</h3><label>년도 <select id="yearSel"></select></label></div></div>
<div class="card"><div id="donutWrap" class="donut-wrap"></div></div>
<div class="card"><h3 style="margin:0 0 8px">프로젝트 투입 상세 (년/월/유형)</h3><div class="table-wrap"><table id="tblA"></table></div></div>
</div>
<script>
const q = new URLSearchParams(location.search);
const memberNo = (q.get('memberNo')||'').trim();
const start = (q.get('start')||'').trim();
const end = (q.get('end')||'').trim();
const colors=['#2f6b5f','#e27d2f','#4f5bd5','#b33c2e','#0f766e','#0369a1','#c2410c'];
const esc=(s)=>String(s??'').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
let rows=[];
let alias={};
const projectLabel=(code)=>{const c=String(code||'').trim(); if(!c) return ''; const short=alias[c]||''; return short?`${short} (${c})`:c;};
function getYears(){
const ys=[...new Set(rows.map(r=>String(r.yearMonth||'').slice(0,4)).filter(v=>/^\d{4}$/.test(v)))];
return ys.sort((a,b)=>Number(a)-Number(b));
}
function byYear(y){ return rows.filter(r=>String(r.yearMonth||'').startsWith(y+'-')); }
function agg(y){
const data=byYear(y); const m=new Map(); let t=0;
let regularTotal=0, overtimeTotal=0, businessTripTotal=0;
data.forEach(r=>{
const k=r.typeCode||'기타'; const h=Number(r.hours||0);
m.set(k,(m.get(k)||0)+h); t+=h;
regularTotal += Number(r.regularHours||0);
overtimeTotal += Number(r.overtimeHours||0);
businessTripTotal += Number(r.businessTripHours||0);
});
const types=[...m.entries()].map(([typeCode,hours])=>({typeCode,hours,sharePct:t?hours/t*100:0})).sort((a,b)=>b.hours-a.hours);
return {rows:data,total:t,types,regularTotal,overtimeTotal,businessTripTotal};
}
function renderTable(el,rows,heads){
if(!rows.length){el.innerHTML='<tr><td>데이터 없음</td></tr>';return;}
el.innerHTML='<thead><tr>'+heads.map(h=>'<th>'+h+'</th>').join('')+'</tr></thead><tbody>'+
rows.map(r=>'<tr>'+heads.map(h=>'<td>'+esc(r[h]??'')+'</td>').join('')+'</tr>').join('')+'</tbody>';
}
function renderMerged(el,rows){
if(!rows.length){el.innerHTML='<tr><td>데이터 없음</td></tr>';return;}
const heads=['yearMonth','typeCode','projectCode','hours','regularHours','businessTripHours','overtimeHours'];
const c=new Map(); rows.forEach(r=>c.set(r.yearMonth,(c.get(r.yearMonth)||0)+1));
const seen=new Set();
const sum = rows.reduce((acc, r) => {
acc.hours += Number(r.hours || 0);
acc.regular += Number(r.regularHours || 0);
acc.businessTrip += Number(r.businessTripHours || 0);
acc.overtime += Number(r.overtimeHours || 0);
return acc;
}, {hours:0, regular:0, businessTrip:0, overtime:0});
let body = '';
let curMonth = '';
let monthSum = {hours:0, regular:0, businessTrip:0, overtime:0};
for(const r of rows){
const ym = String(r.yearMonth || '');
if(curMonth && ym !== curMonth){
body += '<tr><td colspan="3" style="font-weight:700;background:#f8f2e8">월 소계 ('+esc(curMonth)+')</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.hours.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.regular.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.businessTrip.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.overtime.toFixed(2)+'</td></tr>';
monthSum = {hours:0, regular:0, businessTrip:0, overtime:0};
}
const m=seen.has(ym)?'':'<td rowspan="'+c.get(ym)+'">'+esc(ym)+'</td>';
seen.add(ym);
body += '<tr>'+m+'<td>'+esc(r.typeCode)+'</td><td>'+esc(r.projectCode)+'</td><td>'+esc(r.hours)+'</td><td>'+esc(r.regularHours)+'</td><td>'+esc(r.businessTripHours)+'</td><td>'+esc(r.overtimeHours)+'</td></tr>';
monthSum.hours += Number(r.hours || 0);
monthSum.regular += Number(r.regularHours || 0);
monthSum.businessTrip += Number(r.businessTripHours || 0);
monthSum.overtime += Number(r.overtimeHours || 0);
curMonth = ym;
}
if(curMonth){
body += '<tr><td colspan="3" style="font-weight:700;background:#f8f2e8">월 소계 ('+esc(curMonth)+')</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.hours.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.regular.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.businessTrip.toFixed(2)+'</td><td style="font-weight:700;background:#f8f2e8">'+monthSum.overtime.toFixed(2)+'</td></tr>';
}
el.innerHTML='<thead><tr>'+heads.map(h=>'<th>'+h+'</th>').join('')+'</tr></thead><tbody>'+body+'</tbody><tfoot><tr><td colspan=\"3\" style=\"font-weight:800;background:#f4ece0\">합계</td><td style=\"font-weight:800;background:#f4ece0\">'+sum.hours.toFixed(2)+'</td><td style=\"font-weight:800;background:#f4ece0\">'+sum.regular.toFixed(2)+'</td><td style=\"font-weight:800;background:#f4ece0\">'+sum.businessTrip.toFixed(2)+'</td><td style=\"font-weight:800;background:#f4ece0\">'+sum.overtime.toFixed(2)+'</td></tr></tfoot>';
}
function draw(y){
const g=agg(y); const total=g.total||0;
const sorted=g.rows.slice().sort((a,b)=>String(a.yearMonth).localeCompare(String(b.yearMonth))||Number(b.hours)-Number(a.hours));
renderMerged(document.getElementById('tblA'), sorted.map(r=>({...r, projectCode: projectLabel(r.projectCode)})));
if(!g.types.length){document.getElementById('donutWrap').innerHTML='<div>데이터 없음</div>';return;}
let acc=0; const segs=g.types.map((t,i)=>{const s=acc; acc+=t.sharePct; return colors[i%colors.length]+' '+s.toFixed(1)+'% '+acc.toFixed(1)+'%';}).join(', ');
const legend=g.types.map((t,i)=>'<div class="legend-item"><span class="dot" style="background:'+colors[i%colors.length]+'"></span><span>'+esc(t.typeCode)+': '+t.hours.toFixed(1)+'h ('+t.sharePct.toFixed(1)+'%)</span></div>').join('');
const hoursSummary =
'<div class="hours-summary">' +
'<div class="hours-chip">근무: <b>'+g.regularTotal.toFixed(1)+'h</b></div>' +
'<div class="hours-chip">출장: <b>'+g.businessTripTotal.toFixed(1)+'h</b></div>' +
'<div class="hours-chip">추가: <b>'+g.overtimeTotal.toFixed(1)+'h</b></div>' +
'</div>';
document.getElementById('donutWrap').innerHTML='<div style="position:relative"><div class="donut" style="background:conic-gradient('+segs+')"></div><div class="center">'+esc(y)+'년<br>'+total.toFixed(1)+'h</div></div><div>'+hoursSummary+'<div class="legend">'+legend+'</div></div>';
}
async function init(){
if(!memberNo || !start || !end){ document.body.innerHTML='<div style="padding:20px">필수 파라미터가 없습니다.</div>'; return; }
alias=((await (await fetch('/api/project-aliases')).json()).aliases)||{};
const d=await (await fetch(`/api/member-dashboard?start=${encodeURIComponent(start)}&end=${encodeURIComponent(end)}&memberNo=${encodeURIComponent(memberNo)}`)).json();
const displayName = (d.korName||'').trim() ? `${d.korName} (${memberNo})` : memberNo;
document.getElementById('detailTitle').textContent = `선택 인원 상세 (년도별) - ${displayName}`;
document.title = `상세보기 - ${displayName}`;
rows=(d.projectYearly||[]).map(x=>({
yearMonth:x.yearMonth||'',
typeCode:x.typeCode||'',
projectCode:x.projectCode||'',
hours:Number(x.hours||0),
regularHours:Number(x.regularHours||0),
businessTripHours:Number(x.businessTripHours||0),
overtimeHours:Number(x.overtimeHours||0)
}));
const years=getYears();
const sel=document.getElementById('yearSel');
sel.innerHTML=years.map(y=>`<option value="${y}">${y}년</option>`).join('');
sel.value=years[0]||'';
sel.addEventListener('change',()=>draw(sel.value));
draw(sel.value);
}
init();
</script>
</body>
</html>

24
docker-compose.yml Normal file
View File

@@ -0,0 +1,24 @@
version: "3.9"
services:
manhour-dashboard:
build: .
container_name: manhour-dashboard
ports:
- "8090:8090"
environment:
PORT: "8090"
MYSQL_HOST: "${MYSQL_HOST:-172.16.42.111}"
MYSQL_PORT: "${MYSQL_PORT:-3306}"
MYSQL_USER: "${MYSQL_USER:-root}"
MYSQL_PASSWORD: "${MYSQL_PASSWORD:-hanmacerp!}"
MYSQL_DB: "${MYSQL_DB:-jangheon_manhour}"
ERP_BASE_URL: "${ERP_BASE_URL:-http://erp.jangheon.co.kr/projt_mng}"
ERP_LOGIN_ID: "${ERP_LOGIN_ID:-g25001}"
ERP_LOGIN_PW: "${ERP_LOGIN_PW:-00000}"
INTRANET_BASE_URL: "${INTRANET_BASE_URL:-http://erp.jangheon.co.kr/intranet/}"
INTRANET_LOGIN_ID: "${INTRANET_LOGIN_ID:-G25001}"
INTRANET_LOGIN_PW: "${INTRANET_LOGIN_PW:-00000}"
volumes:
- ./data:/app/data
restart: unless-stopped

Binary file not shown.

View File

@@ -0,0 +1,237 @@
# 인트라넷 / 사업관리 이상케이스 보고서
- 작성일: 2026-06-04 17:47:53
- 기준 데이터: 현재 로컬 `matching.db`에 수집된 인트라넷 SQL, 사업관리 작업일보, userstate
- 판단 단위: 같은 사람 + 같은 날짜
- 시간 비교 기준: 인트라넷 `정규시간` vs 사업관리 `공수 * 8시간`
- 업무 판단 기준: 같은 날짜에 인트라넷과 사업관리 기록이 함께 있으면 `사업관리 기록 우선`
## 정상 / 이상 기준
정상으로 보는 경우는 아래 2가지입니다.
1. 사업관리만 있고 사업관리 기록이 1개인 경우
2. 인트라넷과 사업관리가 모두 있고, 사업관리 기록이 1개이며, 프로젝트와 시간이 모두 같은 경우
추가로 `연차인데 근무기록이 있는 경우`는 이상케이스로 봅니다.
## 이상케이스 요약
| 구분 | 케이스 | 건수 | 인원수 |
|---|---:|---:|---:|
| A | 사업관리만 있는데 사업관리 기록이 2개 이상인 경우 | 18 | 3 |
| B | 인트라넷과 사업관리 시간이 같지만 프로젝트가 다른 경우 | 88 | 8 |
| C | 인트라넷과 사업관리 프로젝트는 같지만 시간이 다른 경우 | 124 | 3 |
| D | 인트라넷과 사업관리 프로젝트도 다르고 시간도 다른 경우 | 32 | 5 |
| E | 인트라넷도 있고 사업관리 기록이 2개 이상인 경우 | 5 | 1 |
| F | 연차인데 근무기록이 있는 경우 | 66 | 25 |
| 합계 | | 333 | 30 |
## A. 사업관리만 있는데 사업관리 기록이 2개 이상인 경우
인트라넷에는 해당 날짜 기록이 없지만, 사업관리에는 같은 사람/같은 날짜에 현장 기록이 2개 이상 존재합니다.
- 건수: 18건
- 인원수: 3명
### 사람별 건수
| 사람 | 팀 | 직급 | 건수 |
|---|---|---|---:|
| 이호범 (J23301) | 건설본부 | 사원 | 9 |
| 김인열 (M05510) | 건설본부 | 전무이사 | 5 |
| 김성환 (J25301) | 건설본부 | 부장 | 4 |
### 상세 예시
| 날짜 | 사람 | 인트라넷 | 사업관리 | 확인 포인트 |
|---|---|---|---|---|
| 2026-01-31 | 김성환 (J25301) | 없음 | 25-시공-07 (신평교), 24-시공-03 (은화삼지구(지하화구간)) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 인장/가설 현장관리 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2026-01-30 | 김성환 (J25301) | 없음 | 24-시공-03 (은화삼지구(지하화구간)), 22-시공-24 (전동교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 인장/가설 관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2026-01-29 | 김성환 (J25301) | 없음 | 24-시공-03 (은화삼지구(지하화구간)), 22-시공-24 (전동교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 인장/가설 관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2026-01-28 | 김성환 (J25301) | 없음 | 24-시공-03 (은화삼지구(지하화구간)), 22-시공-24 (전동교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 인장/가설 관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2025-12-13 | 이호범 (J23301) | 없음 | 25-시공-01 (신촌교), 22-시공-24 (전동교) / 1.5공수 = 12h / 사업관리 행 2개 / 작업내용: 철근조립,관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2025-12-12 | 이호범 (J23301) | 없음 | 25-시공-01 (신촌교), 22-시공-24 (전동교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 철근조립,관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2025-12-11 | 이호범 (J23301) | 없음 | 25-시공-01 (신촌교), 22-시공-24 (전동교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 철근조립,관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2025-12-10 | 이호범 (J23301) | 없음 | 25-시공-01 (신촌교), 22-시공-24 (전동교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 철근조립,관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2025-12-09 | 이호범 (J23301) | 없음 | 25-시공-01 (신촌교), 22-시공-24 (전동교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 철근조립,관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
| 2025-12-08 | 이호범 (J23301) | 없음 | 25-시공-01 (신촌교), 22-시공-24 (전동교) / 1.5공수 = 12h / 사업관리 행 2개 / 작업내용: 철근조립,관리자 | 인트라넷 기록 없음, 사업관리 현장 기록 2개 이상 |
## B. 인트라넷과 사업관리 시간이 같지만 프로젝트가 다른 경우
양쪽 모두 같은 시간으로 잡혔지만 프로젝트 코드가 다릅니다. 최종 판단은 사업관리 프로젝트를 우선합니다.
- 건수: 88건
- 인원수: 8명
### 사람별 건수
| 사람 | 팀 | 직급 | 건수 |
|---|---|---|---:|
| 최영준 (J24201) | 기술영업본부 | 전무이사 | 55 |
| 김인열 (M05510) | 건설본부 | 전무이사 | 14 |
| 최태순 (J10301) | 건설본부 | 상무이사 | 9 |
| 김인수 (J18203) | 건설본부 | 상무이사 | 3 |
| 차성대 (J10308) | 건설본부 | 상무이사 | 2 |
| 윤선일 (J22201) | 건설본부 | 차장 | 2 |
| 윤두현 (J22204) | 건설본부 | 부장 | 2 |
| 주상구 (J23101) | 건설본부 | 상무이사 | 1 |
### 상세 예시
| 날짜 | 사람 | 인트라넷 | 사업관리 | 확인 포인트 |
|---|---|---|---|---|
| 2026-01-14 | 김인수 (J18203) | 24-시공-16 (시화MTV) / 정규 8h / OT 0h | 22-시공-24 (전동교) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 인장/가설 관리자 | 시간은 같지만 프로젝트가 다름 |
| 2026-01-13 | 김인수 (J18203) | 24-시공-16 (시화MTV) / 정규 8h / OT 0h | 22-시공-24 (전동교) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 인장/가설 관리자 | 시간은 같지만 프로젝트가 다름 |
| 2026-01-12 | 김인수 (J18203) | 24-시공-16 (시화MTV) / 정규 8h / OT 0h | 22-시공-24 (전동교) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 인장/가설 관리자 | 시간은 같지만 프로젝트가 다름 |
| 2025-10-01 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 시간은 같지만 프로젝트가 다름 |
| 2025-09-30 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 시간은 같지만 프로젝트가 다름 |
| 2025-09-29 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 3h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 시간은 같지만 프로젝트가 다름 |
| 2025-09-26 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 시간은 같지만 프로젝트가 다름 |
| 2025-09-25 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 시간은 같지만 프로젝트가 다름 |
| 2025-09-23 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 3h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 시간은 같지만 프로젝트가 다름 |
| 2025-09-19 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 시간은 같지만 프로젝트가 다름 |
## C. 인트라넷과 사업관리 프로젝트는 같지만 시간이 다른 경우
프로젝트는 동일하지만 인트라넷 정규시간과 사업관리 공수 환산 시간이 다릅니다.
- 건수: 124건
- 인원수: 3명
### 사람별 건수
| 사람 | 팀 | 직급 | 건수 |
|---|---|---|---:|
| 김인열 (M05510) | 건설본부 | 전무이사 | 122 |
| 이인갑 (J25510) | 건설본부 | 이사 | 1 |
| 이호범 (J23301) | 건설본부 | 사원 | 1 |
### 상세 예시
| 날짜 | 사람 | 인트라넷 | 사업관리 | 확인 포인트 |
|---|---|---|---|---|
| 2026-01-06 | 이인갑 (J25510) | 25-시공-07 (신평교) / 정규 3h / OT 0h | 25-시공-07 (신평교) / 1공수 = 8h / 사업관리 행 1개 | 프로젝트는 같지만 시간이 다름 |
| 2025-12-31 | 김인열 (M05510) | 21-시공-33 (지산교) / 정규 5h / OT 0h | 21-시공-33 (지산교) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 인장/가설 관리자 | 프로젝트는 같지만 시간이 다름 |
| 2025-09-09 | 김인열 (M05510) | 22-시공-41 (영산강교(물품)) / 정규 7h / OT 0h | 22-시공-41 (영산강교(물품)) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 관리자 | 프로젝트는 같지만 시간이 다름 |
| 2025-08-08 | 김인열 (M05510) | 24-시공-17 (오산교) / 정규 7h / OT 0h | 24-시공-17 (오산교) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 인장/가설 관리자 | 프로젝트는 같지만 시간이 다름 |
| 2025-06-19 | 김인열 (M05510) | 23-시공-33 (중리교) / 정규 7h / OT 0h | 23-시공-33 (중리교) / 1공수 = 8h / 사업관리 행 1개 | 프로젝트는 같지만 시간이 다름 |
| 2025-06-12 | 김인열 (M05510) | 23-시공-33 (중리교) / 정규 2h / OT 0h | 23-시공-33 (중리교) / 1공수 = 8h / 사업관리 행 1개 | 프로젝트는 같지만 시간이 다름 |
| 2025-05-22 | 김인열 (M05510) | 22-시공-41 (영산강교(물품)) / 정규 3h / OT 0h | 22-시공-41 (영산강교(물품)) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 관리자 | 프로젝트는 같지만 시간이 다름 |
| 2025-05-15 | 김인열 (M05510) | 22-시공-41 (영산강교(물품)) / 정규 5h / OT 0h | 22-시공-41 (영산강교(물품)) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 관리자 | 프로젝트는 같지만 시간이 다름 |
| 2025-05-07 | 김인열 (M05510) | 22-시공-41 (영산강교(물품)) / 정규 1h / OT 0h | 22-시공-41 (영산강교(물품)) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 관리자 | 프로젝트는 같지만 시간이 다름 |
| 2025-04-25 | 김인열 (M05510) | 22-시공-41 (영산강교(물품)) / 정규 3h / OT 0h | 22-시공-41 (영산강교(물품)) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 관리자 | 프로젝트는 같지만 시간이 다름 |
## D. 인트라넷과 사업관리 프로젝트도 다르고 시간도 다른 경우
프로젝트와 시간 모두 일치하지 않습니다.
- 건수: 32건
- 인원수: 5명
### 사람별 건수
| 사람 | 팀 | 직급 | 건수 |
|---|---|---|---:|
| 최영준 (J24201) | 기술영업본부 | 전무이사 | 19 |
| 김인열 (M05510) | 건설본부 | 전무이사 | 10 |
| 이의환 (J13308) | 건설본부 | 부장 | 1 |
| 윤선일 (J22201) | 건설본부 | 차장 | 1 |
| 최태순 (J10301) | 건설본부 | 상무이사 | 1 |
### 상세 예시
| 날짜 | 사람 | 인트라넷 | 사업관리 | 확인 포인트 |
|---|---|---|---|---|
| 2025-12-24 | 김인열 (M05510) | 22-시공-41 (영산강교(물품)) / 정규 5h / OT 0h | 21-시공-33 (지산교) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 인장/가설 인장관리자 | 프로젝트와 시간이 모두 다름 |
| 2025-10-02 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 7h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,반출 | 프로젝트와 시간이 모두 다름 |
| 2025-09-24 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 0h | 24-시공-30 (공릉천교 외) / 0.5공수 = 4h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 프로젝트와 시간이 모두 다름 |
| 2025-09-22 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 6h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 프로젝트와 시간이 모두 다름 |
| 2025-09-16 | 최영준 (J24201) | 25-영업-01 / 정규 5h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 프로젝트와 시간이 모두 다름 |
| 2025-09-15 | 김인열 (M05510) | 22-시공-41 (영산강교(물품)) / 정규 7h / OT 0h | 21-시공-23 (청룡2교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 인장/가설 관리자 | 프로젝트와 시간이 모두 다름 |
| 2025-09-11 | 최영준 (J24201) | 25-영업-01 / 정규 8h / OT 0h | 24-시공-30 (공릉천교 외) / 1.5공수 = 12h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 프로젝트와 시간이 모두 다름 |
| 2025-09-05 | 최영준 (J24201) | 25-교영-01 (신규과업) / 정규 8h / OT 0h | 24-시공-30 (공릉천교 외) / 1.5공수 = 12h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 프로젝트와 시간이 모두 다름 |
| 2025-09-02 | 최영준 (J24201) | 24-교영-01 (2024년 신규과업) / 정규 6h / OT 0h | 24-시공-30 (공릉천교 외) / 1공수 = 8h / 사업관리 행 1개 / 작업내용: 거푸집해체,설치 | 프로젝트와 시간이 모두 다름 |
| 2025-08-29 | 최영준 (J24201) | 24-교영-01 (2024년 신규과업) / 정규 8h / OT 2.5h | 24-시공-30 (공릉천교 외) / 0.5공수 = 4h / 사업관리 행 1개 / 작업내용: 거푸집해체 | 프로젝트와 시간이 모두 다름 |
## E. 인트라넷도 있고 사업관리 기록이 2개 이상인 경우
인트라넷에도 같은 날짜 기록이 있고, 사업관리에는 같은 날짜에 2개 이상 현장 기록이 있습니다.
- 건수: 5건
- 인원수: 1명
### 사람별 건수
| 사람 | 팀 | 직급 | 건수 |
|---|---|---|---:|
| 김인열 (M05510) | 건설본부 | 전무이사 | 5 |
### 상세 예시
| 날짜 | 사람 | 인트라넷 | 사업관리 | 확인 포인트 |
|---|---|---|---|---|
| 2021-11-23 | 김인열 (M05510) | 21-시공-16 (양천2교) / 정규 8h / OT 3h | 21-시공-16 (양천2교), 21-시공-13 (안막교,안막IC교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 현장관리 | 인트라넷도 있고 사업관리 현장 기록 2개 이상 |
| 2021-11-18 | 김인열 (M05510) | 21-시공-16 (양천2교) / 정규 8h / OT 3h | 21-시공-16 (양천2교), 21-시공-13 (안막교,안막IC교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 현장관리 | 인트라넷도 있고 사업관리 현장 기록 2개 이상 |
| 2021-11-17 | 김인열 (M05510) | 21-시공-16 (양천2교) / 정규 8h / OT 3h | 21-시공-16 (양천2교), 21-시공-13 (안막교,안막IC교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 현장관리 | 인트라넷도 있고 사업관리 현장 기록 2개 이상 |
| 2020-04-02 | 김인열 (M05510) | 20-시공-01 (검단천교) / 정규 5h / OT 0h | 20-시공-01 (검단천교), 18-시공-03 (왕림교,정남1육교) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 제작현장관리,제작 현장관리 | 인트라넷도 있고 사업관리 현장 기록 2개 이상 |
| 2020-03-16 | 김인열 (M05510) | 18-시공-03 (왕림교,정남1육교) / 정규 8h / OT 0h | 18-시공-03 (왕림교,정남1육교), 17-시공-21 (북수원1교 외) / 2공수 = 16h / 사업관리 행 2개 / 작업내용: 인장/가설 인장관리,인장/가설 용접관리 | 인트라넷도 있고 사업관리 현장 기록 2개 이상 |
## F. 연차인데 근무기록이 있는 경우
userstate에는 연차로 등록되어 있지만 같은 날짜에 인트라넷 또는 사업관리 근무기록이 존재합니다.
- 건수: 66건
- 인원수: 25명
### 사람별 건수
| 사람 | 팀 | 직급 | 건수 |
|---|---|---|---:|
| 이호범 (J23301) | 건설본부 | 사원 | 9 |
| 이세민 (P13302) | 생산본부 | 부장 | 8 |
| 김인수 (J18203) | 건설본부 | 상무이사 | 8 |
| 김인열 (M05510) | 건설본부 | 전무이사 | 7 |
| 최영준 (J24201) | 기술영업본부 | 전무이사 | 6 |
| 최성용 (J23303) | 건설본부 | 대리 | 4 |
| 남궁전 (J14101) | 기술영업본부 | 전무이사 | 2 |
| 김승국 (M02302) | 생산본부 | 상무이사 | 2 |
| 김범석 (J22202) | 건설본부 | 부장 | 2 |
| 이중경 (J16202) | 기술영업본부 | 이사 | 2 |
| 김진 (J10314) | 기술영업본부 | 이사 | 2 |
| 최동찬 (J22301) | 생산본부 | 대리 | 1 |
| 허남덕 (J10315) | 건설본부 | 전무이사 | 1 |
| 윤두현 (J22204) | 건설본부 | 부장 | 1 |
| 이가연 (J24302) | 기술영업본부 | 사원 | 1 |
| 김재호 (J08201) | 기술영업본부 | 상무이사 | 1 |
| 김상철 (J22302) | 건설본부 | 이사 | 1 |
| 김량균 (J17207) | 기술영업본부 | 부사장 | 1 |
| 김인범 (J23308) | 생산본부 | 사원 | 1 |
| 최만규 (J22305) | 생산본부 | 과장 | 1 |
| 차성대 (J10308) | 건설본부 | 상무이사 | 1 |
| 임재상 (J25201) | 건설본부 | 대리 | 1 |
| 윤선일 (J22201) | 건설본부 | 차장 | 1 |
| 김갑성 (J24307) | 건설본부 | 전무이사 | 1 |
| 정우성 (J23307) | 기술영업본부 | 상무이사 | 1 |
### 상세 예시
| 날짜 | 사람 | 인트라넷 | 사업관리 | 확인 포인트 |
|---|---|---|---|---|
| 2024-01-12 | 김인열 (M05510) | 없음 | 22-시공-39 (용두교) / 0.5공수 = 4h | 연차 등록: 연차(개인사유 ) |
| 2024-01-30 | 최동찬 (J22301) | 24-제조-02 (생산) / 정규 8h / OT 3h | 없음 | 연차 등록: 연차(개인사유로 연차를 신청합니다.) |
| 2020-01-03 | 남궁전 (J14101) | 16-시공-20 (산외교) / 정규 8h / OT 0h | 없음 | 연차 등록: 연차(개인사유) |
| 2020-02-10 | 허남덕 (J10315) | 17-설계-05 (충청내륙(2-1) 구안천교) / 정규 8h / OT 0h | 없음 | 연차 등록: 연차(개인사유(감기몸살)) |
| 2020-03-20 | 남궁전 (J14101) | 19-시공-22 (산외교-슬라브) / 정규 8h / OT 0h | 없음 | 연차 등록: 병원진료(안과 검진) |
| 2021-02-04 | 김인열 (M05510) | 없음 | 20-시공-39 (가곡교, 평능2교) / 1공수 = 8h | 연차 등록: 연차(병원 허리 검사 진료) |
| 2021-04-05 | 김승국 (M02302) | 20-기술-01 (스마트건설(10과제)) / 정규 3h / OT 0h | 없음 | 연차 등록: 연차(개인사유(코로나 검사 결과 대기)) |
| 2022-02-03 | 김인열 (M05510) | 21-시공-14 (상관교 외) / 정규 8h / OT 3h | 없음 | 연차 등록: 연차(병원진료) |
| 2022-07-29 | 김범석 (J22202) | 없음 | 20-시공-36 (도하4교) / 1공수 = 8h | 연차 등록: 연차(연차휴가사용계획서) |
| 2022-08-12 | 김범석 (J22202) | 없음 | 20-시공-36 (도하4교) / 1공수 = 8h | 연차 등록: 연차(연차휴가사용계획서) |
## 해석 메모
- 사업관리 기록이 2개 이상인 경우는 하루에 여러 현장/프로젝트가 잡힌 것으로 보입니다.
- 인트라넷과 사업관리 프로젝트가 다른 경우는 최종 프로젝트 판단 시 사업관리 프로젝트를 우선하는 것이 현재 합의된 기준입니다.
- 연차인데 근무기록이 있는 경우는 userstate와 근무기록 간 충돌이므로 별도 확인이 필요합니다.
- 단, 이 보고서는 현재 수집된 데이터 기준입니다. 사업관리 추가 수집 후 건수는 바뀔 수 있습니다.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,62 @@
from PIL import Image, ImageDraw, ImageFont
from pathlib import Path
OUT=Path('/home/hyein/jh-mh/장헌산업/exports')
PNG=OUT/'work_data_erd_clean.png'
W,H=1700,1150
img=Image.new('RGB',(W,H),'#151718'); d=ImageDraw.Draw(img)
font=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf',17)
font_b=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',20)
font_t=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',30)
font_s=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf',14)
BG='#151718'; CARD='#1f2426'; HEADER='#252b2e'; BORDER='#59636a'; TEXT='#edf2f4'; MUTED='#a9b2b8'; PK='#f5d76e'; FK='#87c8ff'
BLUE='#60d7f2'; GREEN='#80e27e'; PURPLE='#b99bff'; GRAY='#9ca7ad'
entities={
'member':(70,150,300,['PK MemberNo','korName','teamName','rankName','groupCode','rankCode','isRetired']),
'dallyproject':(70,490,330,['PK id','FK MemberNo','WorkDate','EntryPCode','EntryTime / LeaveTime','OverTime','TotalHours','RegularHours','OvertimeHours']),
'project_alias':(70,875,330,['PK projectCode','shortName','bridge/project name']),
'site_worksheet_worker_cache':(590,120,390,['PK projectCode + workDate','PK korName + jobType','workText','note','personCount','syncedAt']),
'site_worksheet_record':(590,455,390,['PK projectCode + workDate','PK memberNo + korName','FK memberNo','jobType','workText','note','personCount']),
'site_worksheet_day_sync':(590,760,390,['PK projectCode + workDate','syncedAt']),
'site_worksheet_menu_sync':(590,940,390,['PK projectCode + workDate','PK selMenu','2 = normal worksheet','3 = tension/temp works','syncedAt']),
'work_calendar_detail':(1190,255,370,['PK id','source: sql / site','FK memberNo','workDate','projectCode','projectName','workText','jobType','hours','regularHours','overtimeHours','personCount']),
'work_calendar_day':(1190,745,370,['PK memberNo + workDate','korName / teamName / rankName','sqlHours','sqlProjectCodes','siteCount','siteProjectCodes','siteWorkTexts','hasSql / hasSite'])}
heights={k:52+len(v[3])*25+18 for k,v in entities.items()}
def card(n):
x,y,w,fs=entities[n]; h=heights[n]
d.rounded_rectangle((x,y,x+w,y+h),radius=8,fill=CARD,outline=BORDER,width=2)
d.rectangle((x,y,x+w,y+42),fill=HEADER); d.line((x,y+42,x+w,y+42),fill=BORDER,width=1)
d.text((x+16,y+11),n,font=font_b,fill=TEXT); yy=y+58
for f in fs:
c=PK if f.startswith('PK') else FK if f.startswith('FK') else TEXT
d.text((x+18,yy),f,font=font_s,fill=c); yy+=25
def a(n,s,off=0):
x,y,w,_=entities[n]; h=heights[n]
return {'r':(x+w,y+h//2+off),'l':(x,y+h//2+off),'t':(x+w//2+off,y),'b':(x+w//2+off,y+h)}[s]
def arrow(points,label,color):
d.line(points,fill=color,width=4,joint='curve')
x,y=points[-1]; d.polygon([(x,y),(x-10,y-6),(x-10,y+6)],fill=color)
mx,my=points[len(points)//2]
tw=d.textlength(label,font=font_s)
d.rounded_rectangle((mx-tw/2-8,my-14,mx+tw/2+8,my+14),radius=5,fill=BG,outline='#4b5358')
d.text((mx-tw/2,my-9),label,font=font_s,fill=MUTED)
# columns
for x1,x2,title in [(40,430,'SOURCE'),(540,1030,'ERP CACHE / MATCH'),(1140,1620,'CALENDAR')]:
d.rounded_rectangle((x1,105,x2,1080),radius=12,fill='#181b1c',outline='#2c3235')
d.text((x1+22,126),title,font=font_b,fill='#7f8a90')
d.text((60,38),'Work Data ERD',font=font_t,fill=TEXT)
d.text((60,75),'Clean column layout with primary data-flow lines',font=font_s,fill=MUTED)
# main flow only
arrow([a('member','r',0),(500,a('member','r')[1]),(500,a('site_worksheet_record','l')[1]),a('site_worksheet_record','l')],'employee match',BLUE)
arrow([a('dallyproject','r',0),(1100,a('dallyproject','r')[1]),(1100,a('work_calendar_detail','l',-55)[1]),a('work_calendar_detail','l',-55)],'SQL work -> detail',BLUE)
arrow([a('project_alias','r',0),(520,a('project_alias','r')[1]),(520,a('site_worksheet_worker_cache','l',-20)[1]),a('site_worksheet_worker_cache','l',-20)],'project code/name',GREEN)
arrow([a('site_worksheet_worker_cache','b'),(785,420),a('site_worksheet_record','t')],'raw rows -> matched rows',PURPLE)
arrow([a('site_worksheet_day_sync','t'),(980,700),(980,300),a('site_worksheet_worker_cache','r',35)],'date fetched',GRAY)
arrow([a('site_worksheet_menu_sync','t'),(1030,880),(1030,320),a('site_worksheet_worker_cache','r',75)],'menu 2/3 fetched',GRAY)
arrow([a('site_worksheet_record','r'),(1100,a('site_worksheet_record','r')[1]),(1100,a('work_calendar_detail','l',45)[1]),a('work_calendar_detail','l',45)],'site work -> detail',PURPLE)
arrow([a('project_alias','r',40),(1135,a('project_alias','r')[1]+40),(1135,a('work_calendar_detail','l',95)[1]),a('work_calendar_detail','l',95)],'projectName',GREEN)
arrow([a('work_calendar_detail','b'),(1375,710),a('work_calendar_day','t')],'daily summary',GRAY)
for n in entities: card(n)
# legend
d.rounded_rectangle((60,1090,1600,1138),radius=8,fill='#1d2123',outline='#3a4247')
d.text((80,1103),'Blue employee/SQL Green project name Purple ERP worksheet match Gray sync/calendar flow',font=font_s,fill=MUTED)
img.save(PNG); print(PNG)

View File

@@ -0,0 +1,130 @@
from PIL import Image, ImageDraw, ImageFont
from pathlib import Path
OUT = Path('/home/hyein/jh-mh/장헌산업/exports')
PNG = OUT / 'work_data_erd_columns.png'
W, H = 1800, 1250
img = Image.new('RGB', (W, H), '#151718')
d = ImageDraw.Draw(img)
font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 17)
font_b = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 19)
font_t = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 30)
font_s = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 14)
BG = '#151718'
CARD = '#1f2426'
HEADER = '#242a2d'
BORDER = '#4c555a'
LINE = '#8b969d'
TEXT = '#e7ecef'
MUTED = '#a6b0b6'
PK = '#f6d365'
FK = '#8bc7ff'
BLUE = '#67d8ef'
PURPLE = '#c4a7ff'
GREEN = '#8be28b'
entities = {
# col 1 source
'member': (80, 170, 310, ['PK MemberNo', 'korName', 'teamName', 'rankName', 'groupCode', 'rankCode', 'isRetired']),
'dallyproject': (80, 500, 330, ['PK id', 'FK MemberNo', 'WorkDate', 'EntryPCode', 'EntryTime', 'LeaveTime', 'OverTime', 'TotalHours', 'RegularHours', 'OvertimeHours']),
'project_alias': (80, 900, 330, ['PK projectCode', 'shortName', 'bridge/project name']),
# col 2 erp collection
'site_worksheet_worker_cache': (610, 140, 400, ['PK projectCode + workDate', 'PK korName + jobType', 'workText', 'note', 'personCount', 'syncedAt']),
'site_worksheet_record': (610, 500, 400, ['PK projectCode + workDate', 'PK memberNo + korName', 'FK memberNo', 'jobType', 'workText', 'note', 'personCount']),
'site_worksheet_day_sync': (610, 850, 400, ['PK projectCode + workDate', 'syncedAt']),
'site_worksheet_menu_sync': (610, 1035, 400, ['PK projectCode + workDate', 'PK selMenu', '2 = normal worksheet', '3 = tension/temp works', 'syncedAt']),
# col 3 integrated calendar
'work_calendar_detail': (1240, 310, 390, ['PK id', 'source: sql / site', 'FK memberNo', 'workDate', 'projectCode', 'projectName', 'workText', 'jobType', 'hours', 'regularHours', 'overtimeHours', 'personCount']),
'work_calendar_day': (1240, 790, 390, ['PK memberNo + workDate', 'korName', 'teamName', 'rankName', 'sqlHours', 'sqlProjectCodes', 'siteCount', 'siteProjectCodes', 'siteWorkTexts', 'hasSql', 'hasSite']),
}
heights = {}
for k,(x,y,w,fields) in entities.items():
heights[k] = 52 + len(fields)*25 + 18
def draw_card(name):
x,y,w,fields = entities[name]
h = heights[name]
d.rounded_rectangle((x,y,x+w,y+h), radius=8, fill=CARD, outline=BORDER, width=2)
d.rectangle((x,y,x+w,y+42), fill=HEADER)
d.line((x,y+42,x+w,y+42), fill=BORDER, width=1)
d.text((x+16,y+11), name, font=font_b, fill=TEXT)
yy = y+58
for f in fields:
color = TEXT
if f.startswith('PK'): color = PK
elif f.startswith('FK'): color = FK
d.text((x+18,yy), f, font=font_s, fill=color)
yy += 25
def anchor(name, side, offset=0):
x,y,w,_ = entities[name]
h = heights[name]
if side == 'r': return (x+w, y+h//2+offset)
if side == 'l': return (x, y+h//2+offset)
if side == 't': return (x+w//2+offset, y)
if side == 'b': return (x+w//2+offset, y+h)
def orth(a, b, label='', color=LINE, via_x=None, via_y=None):
x1,y1 = a; x2,y2 = b
pts = [(x1,y1)]
if via_x is not None:
pts += [(via_x,y1), (via_x,y2)]
elif via_y is not None:
pts += [(x1,via_y), (x2,via_y)]
else:
mx = (x1+x2)//2
pts += [(mx,y1), (mx,y2)]
pts += [(x2,y2)]
d.line(pts, fill=color, width=3)
for p in (pts[0], pts[-1]):
d.ellipse((p[0]-5,p[1]-5,p[0]+5,p[1]+5), fill=color)
if label:
# place label around middle point
mid = pts[len(pts)//2]
tw = d.textlength(label, font=font_s)
x,y = mid
d.rounded_rectangle((x-tw/2-8,y-13,x+tw/2+8,y+13), radius=5, fill=BG, outline='#4a5054')
d.text((x-tw/2,y-9), label, font=font_s, fill=MUTED)
# background columns
cols = [(50,120,470,1135,'SOURCE'), (570,120,1050,1135,'ERP CACHE / MATCH'), (1200,120,1680,1135,'CALENDAR INTEGRATION')]
for x1,y1,x2,y2,title in cols:
d.rounded_rectangle((x1,y1,x2,y2), radius=12, fill='#181b1c', outline='#2a2f31')
d.text((x1+20,y1+18), title, font=font_b, fill='#6f7a80')
# title
d.text((60,40), 'Work Data ERD', font=font_t, fill=TEXT)
d.text((60,78), 'Columns arranged by data flow: source -> ERP cache/match -> calendar integration', font=font_s, fill=MUTED)
# lines first
orth(anchor('member','r',-25), anchor('dallyproject','l',-60), 'MemberNo', via_x=500, color=BLUE)
orth(anchor('member','r',10), anchor('site_worksheet_record','l',-40), 'MemberNo', via_x=535, color=BLUE)
orth(anchor('project_alias','r',-30), anchor('dallyproject','r',20), 'EntryPCode', via_x=500, color=GREEN)
# project alias to erp and calendar
orth(anchor('project_alias','r',10), anchor('site_worksheet_worker_cache','l',-30), 'projectCode', via_x=540, color=GREEN)
# cache and sync to worker cache
orth(anchor('site_worksheet_day_sync','t'), anchor('site_worksheet_worker_cache','b',80), 'project+date fetched', via_x=1110, color=LINE)
ord_start = anchor('site_worksheet_menu_sync','t')
orth(ord_start, anchor('site_worksheet_worker_cache','b',150), 'menu 2/3 fetched', via_x=1160, color=LINE)
# worker cache to record
orth(anchor('site_worksheet_worker_cache','b'), anchor('site_worksheet_record','t'), 'match name/date/project', via_x=820, color=PURPLE)
# sources to detail
orth(anchor('dallyproject','r',-10), anchor('work_calendar_detail','l',-80), 'source=sql', via_x=1120, color=BLUE)
orth(anchor('site_worksheet_record','r'), anchor('work_calendar_detail','l',20), 'source=site', via_x=1120, color=PURPLE)
orth(anchor('project_alias','r',55), anchor('work_calendar_detail','l',70), 'projectName', via_x=1120, color=GREEN)
# detail to day
orth(anchor('work_calendar_detail','b'), anchor('work_calendar_day','t'), 'daily summary', via_x=1435, color=LINE)
# member to day
orth(anchor('member','r',55), anchor('work_calendar_day','l',-60), 'MemberNo + workDate', via_x=520, color=BLUE)
for name in entities:
draw_card(name)
# legend
d.rounded_rectangle((60,1160,1660,1225), radius=8, fill='#1c2022', outline='#343a3e')
d.text((80,1178), 'Legend', font=font_b, fill=TEXT)
d.text((180,1179), 'Blue = employee relation Green = project relation Purple = ERP site worksheet matching Gray = sync/calendar flow', font=font_s, fill=MUTED)
img.save(PNG)
print(PNG)

View File

@@ -0,0 +1,135 @@
from PIL import Image, ImageDraw, ImageFont
from pathlib import Path
OUT = Path('/home/hyein/jh-mh/장헌산업/exports')
PNG = OUT / 'work_data_erd_dark.png'
W, H = 1400, 1900
img = Image.new('RGB', (W, H), '#17191a')
d = ImageDraw.Draw(img)
font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 17)
font_b = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 18)
font_t = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 24)
font_s = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 13)
BG = '#17191a'
CARD = '#1e2224'
CARD2 = '#202426'
LINE = '#4b5256'
LINE2 = '#697176'
TEXT = '#e6ecef'
MUTED = '#9aa4aa'
PK = '#f4d06f'
FK = '#8cc7ff'
ACCENT = '#d0d6d9'
entities = {
'member': {
'xy': (150, 360), 'w': 250,
'fields': ['PK MemberNo', 'korName', 'teamName', 'rankName', 'groupCode', 'rankCode', 'isRetired']
},
'dallyproject': {
'xy': (185, 720), 'w': 290,
'fields': ['PK id', 'FK MemberNo', 'WorkDate', 'EntryPCode', 'EntryTime', 'LeaveTime', 'OverTime', 'TotalHours', 'RegularHours', 'OvertimeHours']
},
'work_calendar_day': {
'xy': (70, 1190), 'w': 315,
'fields': ['PK memberNo + workDate', 'korName', 'teamName', 'rankName', 'sqlHours', 'sqlProjectCodes', 'siteCount', 'siteProjectCodes', 'siteWorkTexts', 'hasSql', 'hasSite']
},
'work_calendar_detail': {
'xy': (515, 920), 'w': 310,
'fields': ['PK id', 'source: sql / site', 'FK memberNo', 'workDate', 'projectCode', 'projectName', 'workText', 'jobType', 'hours', 'regularHours', 'overtimeHours', 'personCount']
},
'project_alias': {
'xy': (655, 70), 'w': 315,
'fields': ['PK projectCode', 'shortName', 'bridge/project name']
},
'site_worksheet_record': {
'xy': (680, 430), 'w': 340,
'fields': ['PK projectCode + workDate', 'PK memberNo + korName', 'FK memberNo', 'jobType', 'workText', 'note', 'personCount']
},
'site_worksheet_worker_cache': {
'xy': (960, 170), 'w': 360,
'fields': ['PK projectCode + workDate', 'PK korName + jobType', 'workText', 'note', 'personCount', 'syncedAt']
},
'site_worksheet_day_sync': {
'xy': (930, 760), 'w': 310,
'fields': ['PK projectCode + workDate', 'syncedAt']
},
'site_worksheet_menu_sync': {
'xy': (860, 1090), 'w': 335,
'fields': ['PK projectCode + workDate', 'PK selMenu', '2 = normal worksheet', '3 = tension/temp works', 'syncedAt']
},
}
# compute heights
for e in entities.values():
e['h'] = 52 + len(e['fields']) * 26 + 18
def rounded_box(x, y, w, h, name, fields):
d.rounded_rectangle((x, y, x+w, y+h), radius=6, fill=CARD, outline='#3c4246', width=2)
d.rectangle((x, y, x+w, y+42), fill=CARD2)
d.line((x, y+42, x+w, y+42), fill='#3c4246', width=1)
d.text((x+16, y+12), name, font=font_b, fill=TEXT)
yy = y + 58
for f in fields:
color = TEXT
if f.startswith('PK'):
color = PK
elif f.startswith('FK'):
color = FK
d.text((x+18, yy), f, font=font_s, fill=color)
yy += 26
def pt(name, side):
e = entities[name]
x, y = e['xy']; w = e['w']; h = e['h']
if side == 'l': return (x, y+h//2)
if side == 'r': return (x+w, y+h//2)
if side == 't': return (x+w//2, y)
if side == 'b': return (x+w//2, y+h)
def poly(points, label=None, label_pos=None):
d.line(points, fill=LINE, width=2, joint='curve')
for x, y in (points[0], points[-1]):
d.ellipse((x-4, y-4, x+4, y+4), fill=ACCENT)
if label:
x, y = label_pos or points[len(points)//2]
tw = d.textlength(label, font=font_s)
d.rounded_rectangle((x-tw/2-7, y-12, x+tw/2+7, y+12), radius=4, fill=BG, outline='#363b3f')
d.text((x-tw/2, y-9), label, font=font_s, fill=MUTED)
# title
d.text((70, 35), 'Work Data ERD', font=font_t, fill=TEXT)
d.text((70, 68), 'SQL work records + ERP site worksheet integration', font=font_s, fill=MUTED)
# relation lines behind cards
poly([pt('member','b'), (275, 665), pt('dallyproject','t')], 'MemberNo', (300, 650))
poly([pt('dallyproject','b'), (330, 1085), (520, 1085), pt('work_calendar_detail','l')], 'source=sql', (450, 1072))
poly([pt('work_calendar_detail','l'), (425, 1100), (425, 1350), pt('work_calendar_day','r')], 'daily summary', (426, 1280))
poly([pt('member','l'), (55, 460), (55, 1370), pt('work_calendar_day','l')], 'MemberNo', (56, 820))
poly([pt('member','r'), (520, 500), (520, 560), pt('site_worksheet_record','l')], 'MemberNo', (520, 538))
poly([pt('project_alias','b'), (815, 330), pt('site_worksheet_record','t')], 'projectCode', (810, 340))
poly([pt('project_alias','r'), (1070, 170), pt('site_worksheet_worker_cache','l')], 'projectCode', (1050, 145))
poly([pt('site_worksheet_worker_cache','b'), (1050, 405), (1000, 405), pt('site_worksheet_record','r')], 'match name/date/project', (1010, 410))
poly([pt('site_worksheet_record','b'), (740, 880), pt('work_calendar_detail','t')], 'source=site', (715, 850))
poly([pt('site_worksheet_day_sync','t'), (1005, 650), (1080, 400), pt('site_worksheet_worker_cache','b')], 'project+date fetched', (1040, 645))
poly([pt('site_worksheet_menu_sync','t'), (935, 1030), (1085, 400), pt('site_worksheet_worker_cache','b')], 'menu 2/3 fetched', (950, 1035))
poly([pt('project_alias','l'), (560, 185), (560, 825), pt('dallyproject','r')], 'EntryPCode', (560, 420))
poly([pt('project_alias','b'), (750, 780), pt('work_calendar_detail','r')], 'projectName', (755, 760))
# draw cards
for name, e in entities.items():
x, y = e['xy']
rounded_box(x, y, e['w'], e['h'], name, e['fields'])
# subtle legend
d.rounded_rectangle((70, 1740, 1270, 1845), radius=8, fill='#1c2022', outline='#343a3e')
d.text((90, 1765), 'Flow', font=font_b, fill=TEXT)
d.text((90, 1795), 'dallyproject -> work_calendar_detail -> work_calendar_day', font=font_s, fill=MUTED)
d.text((90, 1820), 'site_worksheet_worker_cache -> site_worksheet_record -> work_calendar_detail/day', font=font_s, fill=MUTED)
img.save(PNG)
print(PNG)

109
exports/create_erd_image.py Normal file
View File

@@ -0,0 +1,109 @@
from PIL import Image, ImageDraw, ImageFont
from pathlib import Path
OUT = Path('/home/hyein/jh-mh/장헌산업/exports')
PNG = OUT / 'work_data_erd.png'
SVG = OUT / 'work_data_erd.svg'
W, H = 1900, 1280
img = Image.new('RGB', (W, H), '#f6f8fb')
d = ImageDraw.Draw(img)
font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 18)
font_b = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 20)
font_title = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 34)
font_small = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 15)
entities = {
'member': (70, 110, 330, 330, ['PK MemberNo', 'korName', 'teamName', 'rankName', 'groupCode', 'rankCode', 'isRetired']),
'dallyproject': (470, 80, 780, 360, ['PK id', 'FK MemberNo', 'WorkDate', 'EntryPCode', 'EntryTime / LeaveTime', 'TotalHours', 'RegularHours', 'OvertimeHours']),
'project_alias': (1040, 110, 1330, 280, ['PK projectCode', 'shortName (bridge/project name)']),
'site_worksheet_worker_cache': (1360, 360, 1810, 610, ['PK projectCode + workDate + korName', 'jobType', 'workText', 'note', 'personCount', 'syncedAt']),
'site_worksheet_record': (900, 430, 1260, 690, ['PK projectCode + workDate + memberNo + korName', 'FK memberNo', 'jobType', 'workText', 'personCount']),
'site_worksheet_day_sync': (1370, 720, 1740, 870, ['PK projectCode + workDate', 'syncedAt']),
'site_worksheet_menu_sync': (1370, 930, 1740, 1090, ['PK projectCode + workDate + selMenu', 'selMenu 2 = normal', 'selMenu 3 = tension/temp works', 'syncedAt']),
'work_calendar_detail': (520, 800, 900, 1110, ['PK id', 'source: sql / site', 'FK memberNo', 'workDate', 'projectCode', 'projectName', 'workText', 'hours / regular / overtime', 'personCount']),
'work_calendar_day': (120, 770, 430, 1080, ['PK memberNo + workDate', 'korName / teamName / rankName', 'sqlHours', 'sqlProjectCodes', 'siteCount', 'siteProjectCodes', 'siteWorkTexts', 'hasSql / hasSite']),
}
colors = {
'member': ('#e0f2fe', '#0369a1'),
'dallyproject': ('#ecfdf5', '#047857'),
'project_alias': ('#fff7ed', '#c2410c'),
'site_worksheet_worker_cache': ('#fef3c7', '#b45309'),
'site_worksheet_record': ('#ede9fe', '#6d28d9'),
'site_worksheet_day_sync': ('#f1f5f9', '#475569'),
'site_worksheet_menu_sync': ('#f1f5f9', '#475569'),
'work_calendar_detail': ('#fee2e2', '#b91c1c'),
'work_calendar_day': ('#dbeafe', '#1d4ed8'),
}
def box(name, rect, fields):
x1,y1,x2,y2 = rect
fill, stroke = colors[name]
d.rounded_rectangle(rect, radius=14, fill=fill, outline=stroke, width=3)
d.rectangle((x1, y1, x2, y1+42), fill=stroke)
d.text((x1+14, y1+10), name, fill='white', font=font_b)
y = y1 + 55
for f in fields:
d.text((x1+16, y), f, fill='#0f172a', font=font_small if len(f) > 34 else font)
y += 26
def center(name, side):
x1,y1,x2,y2 = entities[name][:4]
if side == 'right': return (x2, (y1+y2)//2)
if side == 'left': return (x1, (y1+y2)//2)
if side == 'top': return ((x1+x2)//2, y1)
if side == 'bottom': return ((x1+x2)//2, y2)
def line(a, aside, b, bside, label, color='#334155'):
p1 = center(a, aside); p2 = center(b, bside)
d.line((p1, p2), fill=color, width=3)
# endpoint dots
for p in (p1, p2):
d.ellipse((p[0]-5,p[1]-5,p[0]+5,p[1]+5), fill=color)
mx, my = (p1[0]+p2[0])//2, (p1[1]+p2[1])//2
tw = d.textlength(label, font=font_small)
d.rounded_rectangle((mx-tw/2-8, my-13, mx+tw/2+8, my+13), radius=7, fill='#ffffff', outline='#cbd5e1')
d.text((mx-tw/2, my-9), label, fill=color, font=font_small)
# title
d.text((70, 30), 'Work Data ERD: SQL + Site Worksheet Integration', fill='#0f172a', font=font_title)
d.text((72, 72), 'SQLite DB: /home/hyein/jh-mh/장헌산업/matching.db', fill='#475569', font=font_small)
for name, data in entities.items():
box(name, data[:4], data[4])
# relationships
line('member','right','dallyproject','left','MemberNo')
line('member','right','site_worksheet_record','left','MemberNo')
line('member','bottom','work_calendar_day','top','MemberNo + workDate')
line('dallyproject','bottom','work_calendar_detail','top','source=sql')
line('site_worksheet_record','bottom','work_calendar_detail','right','source=site')
line('work_calendar_detail','left','work_calendar_day','right','daily summary')
line('project_alias','bottom','site_worksheet_record','top','projectCode')
line('project_alias','right','site_worksheet_worker_cache','top','projectCode')
line('site_worksheet_worker_cache','left','site_worksheet_record','right','match by name/date/project')
line('site_worksheet_day_sync','top','site_worksheet_worker_cache','bottom','project+date fetched')
line('site_worksheet_menu_sync','top','site_worksheet_worker_cache','bottom','menu 2/3 fetched')
line('project_alias','left','dallyproject','right','EntryPCode')
line('project_alias','bottom','work_calendar_detail','right','projectName')
# legend
lx, ly = 70, 1140
d.rounded_rectangle((lx, ly, 760, ly+95), radius=12, fill='#ffffff', outline='#cbd5e1', width=2)
d.text((lx+18, ly+14), 'Flow', font=font_b, fill='#0f172a')
d.text((lx+18, ly+43), 'dallyproject = SQL work records / site_worksheet_worker_cache = ERP site worksheet raw rows', font=font_small, fill='#334155')
d.text((lx+18, ly+68), 'site_worksheet_record = matched employee rows / work_calendar_* = calendar-ready integrated data', font=font_small, fill='#334155')
img.save(PNG)
# simple SVG wrapper embeds the PNG path as text fallback is not needed; create standalone SVG rectangles too minimal
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" width="{W}" height="{H}" viewBox="0 0 {W} {H}">
<rect width="100%" height="100%" fill="#f6f8fb"/>
<text x="70" y="55" font-family="DejaVu Sans, Arial" font-size="34" font-weight="700" fill="#0f172a">Work Data ERD: SQL + Site Worksheet Integration</text>
<text x="72" y="82" font-family="DejaVu Sans, Arial" font-size="15" fill="#475569">PNG version generated at {PNG}</text>
<image href="{PNG.name}" x="0" y="0" width="{W}" height="{H}" opacity="0"/>
<text x="70" y="150" font-family="DejaVu Sans, Arial" font-size="22" fill="#334155">Open the PNG file for the full ERD diagram.</text>
</svg>'''
SVG.write_text(svg, encoding='utf-8')
print(PNG)
print(SVG)

View File

@@ -0,0 +1,95 @@
from PIL import Image, ImageDraw, ImageFont
from pathlib import Path
OUT=Path('/home/hyein/jh-mh/장헌산업/exports')
font=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf',17)
font_b=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',20)
font_t=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',30)
font_s=ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf',14)
BG='#151718'; CARD='#1f2426'; HEADER='#252b2e'; BORDER='#59636a'; TEXT='#edf2f4'; MUTED='#a9b2b8'; PK='#f5d76e'; FK='#87c8ff'; BLUE='#60d7f2'; GREEN='#80e27e'; PURPLE='#b99bff'; GRAY='#9ca7ad'
def draw_erd(path, title, subtitle, entities, lines, legend):
W,H=1500,1000
img=Image.new('RGB',(W,H),BG); d=ImageDraw.Draw(img)
heights={k:52+len(v[3])*25+18 for k,v in entities.items()}
def card(n):
x,y,w,fs=entities[n]; h=heights[n]
d.rounded_rectangle((x,y,x+w,y+h),radius=8,fill=CARD,outline=BORDER,width=2)
d.rectangle((x,y,x+w,y+42),fill=HEADER); d.line((x,y+42,x+w,y+42),fill=BORDER,width=1)
d.text((x+16,y+11),n,font=font_b,fill=TEXT)
yy=y+58
for f in fs:
c=PK if f.startswith('PK') else FK if f.startswith('FK') else TEXT
d.text((x+18,yy),f,font=font_s,fill=c); yy+=25
def a(n,s,off=0):
x,y,w,_=entities[n]; h=heights[n]
return {'r':(x+w,y+h//2+off),'l':(x,y+h//2+off),'t':(x+w//2+off,y),'b':(x+w//2+off,y+h)}[s]
def arrow(p1,p2,label,color,via_x=None,via_y=None):
x1,y1=p1; x2,y2=p2
pts=[p1]
if via_x is not None: pts += [(via_x,y1),(via_x,y2)]
elif via_y is not None: pts += [(x1,via_y),(x2,via_y)]
else:
mx=(x1+x2)//2; pts += [(mx,y1),(mx,y2)]
pts += [p2]
d.line(pts,fill=color,width=4,joint='curve')
x,y=pts[-1]
if x2>=x1: tri=[(x,y),(x-10,y-6),(x-10,y+6)]
else: tri=[(x,y),(x+10,y-6),(x+10,y+6)]
d.polygon(tri,fill=color)
mid=pts[len(pts)//2]
tw=d.textlength(label,font=font_s)
d.rounded_rectangle((mid[0]-tw/2-8,mid[1]-14,mid[0]+tw/2+8,mid[1]+14),radius=5,fill=BG,outline='#4b5358')
d.text((mid[0]-tw/2,mid[1]-9),label,font=font_s,fill=MUTED)
d.text((60,35),title,font=font_t,fill=TEXT)
d.text((60,73),subtitle,font=font_s,fill=MUTED)
for x1,x2,col_title in [(45,445,'SOURCE'),(535,985,'MATCH / DETAIL'),(1090,1455,'OUTPUT')]:
d.rounded_rectangle((x1,110,x2,890),radius=12,fill='#181b1c',outline='#2c3235')
d.text((x1+20,130),col_title,font=font_b,fill='#7f8a90')
for ln in lines:
src,ss,dst,ds,label,color,via=ln
kwargs={}
if via and via[0]=='x': kwargs['via_x']=via[1]
if via and via[0]=='y': kwargs['via_y']=via[1]
arrow(a(src,ss),a(dst,ds),label,color,**kwargs)
for n in entities: card(n)
d.rounded_rectangle((60,920,1440,970),radius=8,fill='#1d2123',outline='#3a4247')
d.text((80,936),legend,font=font_s,fill=MUTED)
img.save(path)
print(path)
people_entities={
'member':(80,170,320,['PK MemberNo','korName','teamName','rankName','groupCode','rankCode','isRetired']),
'dallyproject':(80,510,350,['PK id','FK MemberNo','WorkDate','EntryPCode','TotalHours','RegularHours','OvertimeHours']),
'site_worksheet_record':(570,250,390,['PK projectCode + workDate','PK memberNo + korName','FK memberNo','jobType','workText','personCount']),
'work_calendar_detail':(570,610,390,['PK id','source: sql / site','FK memberNo','workDate','projectCode','hours','personCount']),
'work_calendar_day':(1120,360,360,['PK memberNo + workDate','korName / teamName / rankName','sqlHours','siteCount','sqlProjectCodes','siteProjectCodes','hasSql / hasSite'])}
people_lines=[
('member','r','site_worksheet_record','l','employee match',BLUE,('x',500)),
('member','r','dallyproject','l','MemberNo',BLUE,('y',470)),
('dallyproject','r','work_calendar_detail','l','SQL rows',BLUE,('x',505)),
('site_worksheet_record','b','work_calendar_detail','t','site rows',PURPLE,('x',765)),
('work_calendar_detail','r','work_calendar_day','l','daily summary',GRAY,('x',1040)),
('member','r','work_calendar_day','l','person/day output',BLUE,('x',1030)),
]
project_entities={
'project_alias':(80,190,350,['PK projectCode','shortName','bridge/project name']),
'dallyproject':(80,520,350,['PK id','EntryPCode','WorkDate','MemberNo','TotalHours','OvertimeHours']),
'site_worksheet_worker_cache':(570,150,420,['PK projectCode + workDate','PK korName + jobType','workText','note','personCount','syncedAt']),
'site_worksheet_day_sync':(570,500,390,['PK projectCode + workDate','syncedAt']),
'site_worksheet_menu_sync':(570,700,390,['PK projectCode + workDate','PK selMenu','2 = normal worksheet','3 = tension/temp works','syncedAt']),
'work_calendar_detail':(1120,240,370,['PK id','source: sql / site','projectCode','projectName','workText','memberNo','hours','personCount']),
'work_calendar_day':(1120,650,370,['PK memberNo + workDate','siteProjectCodes','siteWorkTexts','sqlProjectCodes','siteCount','hasSql / hasSite'])}
project_lines=[
('project_alias','r','site_worksheet_worker_cache','l','projectCode',GREEN,('x',515)),
('project_alias','r','dallyproject','l','EntryPCode',GREEN,('y',450)),
('site_worksheet_day_sync','t','site_worksheet_worker_cache','b','date fetched',GRAY,('x',1040)),
('site_worksheet_menu_sync','t','site_worksheet_worker_cache','b','menu 2/3 fetched',GRAY,('x',1080)),
('site_worksheet_worker_cache','r','work_calendar_detail','l','ERP raw site rows',PURPLE,('x',1040)),
('dallyproject','r','work_calendar_detail','l','SQL project rows',BLUE,('x',1040)),
('project_alias','r','work_calendar_detail','l','projectName',GREEN,('x',1040)),
('work_calendar_detail','b','work_calendar_day','t','calendar output',GRAY,('x',1305)),
]
draw_erd(OUT/'work_data_erd_people.png','People-Centered ERD','How one employee is connected to SQL work, ERP site work, and calendar output',people_entities,people_lines,'Blue = employee/SQL relation Purple = ERP matched rows Gray = calendar aggregation')
draw_erd(OUT/'work_data_erd_project.png','Project-Centered ERD','How project codes, bridge names, ERP worksheet menus, and calendar details are connected',project_entities,project_lines,'Green = project code/name Purple = ERP worksheet data Blue = SQL project rows Gray = sync/calendar flow')

View File

@@ -0,0 +1,159 @@
from PIL import Image, ImageDraw, ImageFont
from pathlib import Path
OUT = Path('/home/hyein/jh-mh/장헌산업/exports')
PNG = OUT / 'work_data_erd_unified_lanes.png'
W, H = 1900, 1980
img = Image.new('RGB', (W, H), '#151718')
d = ImageDraw.Draw(img)
font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 18)
font_b = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 21)
font_t = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 34)
font_s = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 15)
font_badge = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 16)
BG = '#151718'
PANEL = '#181b1c'
CARD = '#202527'
HEADER = '#293033'
BORDER = '#667179'
TEXT = '#eef3f5'
MUTED = '#a8b1b7'
PK = '#f5d76e'
FK = '#87c8ff'
PEOPLE = '#55d8f4'
PROJECT = '#81e681'
ERP = '#b99bff'
CAL = '#a6b0b6'
BADGE = '#263036'
entities = {
# left source column
'member': (80, 210, 330, ['PK MemberNo', 'korName', 'teamName', 'rankName', 'groupCode', 'rankCode', 'isRetired']),
'dallyproject': (80, 585, 360, ['PK id', 'FK MemberNo', 'WorkDate', 'EntryPCode', 'EntryTime / LeaveTime', 'OverTime', 'TotalHours', 'RegularHours', 'OvertimeHours']),
'project_alias': (80, 1035, 360, ['PK projectCode', 'shortName', 'bridge/project name']),
# shared center columns
'site_worksheet_worker_cache': (640, 170, 430, ['PK projectCode + workDate', 'PK korName + jobType', 'workText', 'note', 'personCount', 'syncedAt']),
'site_worksheet_record': (640, 570, 430, ['PK projectCode + workDate', 'PK memberNo + korName', 'FK memberNo', 'jobType', 'workText', 'note', 'personCount']),
'site_worksheet_day_sync': (640, 960, 410, ['PK projectCode + workDate', 'syncedAt']),
'site_worksheet_menu_sync': (640, 1140, 410, ['PK projectCode + workDate', 'PK selMenu', '2 = normal worksheet', '3 = tension/temp works', 'syncedAt']),
# right output column
'work_calendar_detail': (1350, 330, 430, ['PK id', 'source: sql / site', 'FK memberNo', 'workDate', 'projectCode', 'projectName', 'workText', 'jobType', 'hours', 'regularHours', 'overtimeHours', 'personCount']),
'work_calendar_day': (1350, 920, 430, ['PK memberNo + workDate', 'korName / teamName / rankName', 'sqlHours', 'sqlProjectCodes', 'siteCount', 'siteProjectCodes', 'siteWorkTexts', 'hasSql / hasSite']),
'project_yearly_summary': (1350, 1285, 430, ['VIEW project tab output', 'projectCode + yearMonth', 'memberNo / korName', 'intranetRegularHours', 'siteHours = personCount * 8', 'commonHours', 'total = intranet + site - common']),
}
heights = {k: 54 + len(v[3]) * 27 + 20 for k, v in entities.items()}
relations = [
('1', 'member -> dallyproject', PEOPLE),
('2', 'member -> site_worksheet_record', PEOPLE),
('3', 'project_alias -> dallyproject', PROJECT),
('4', 'project_alias -> worker_cache', PROJECT),
('5', 'day_sync: fetched project/date', CAL),
('6', 'menu_sync: fetched menu 2/3', CAL),
('7', 'worker_cache -> record', ERP),
('8', 'dallyproject -> calendar_detail', PEOPLE),
('9', 'record -> calendar_detail', ERP),
('10', 'project_alias -> projectName', PROJECT),
('11', 'calendar_detail -> calendar_day', CAL),
('12', 'dallyproject -> project summary', PEOPLE),
('13', 'record -> project summary', ERP),
]
def panel(x1, y1, x2, y2, title, color):
d.rounded_rectangle((x1, y1, x2, y2), radius=16, fill=PANEL, outline='#2e3437', width=2)
d.text((x1 + 24, y1 + 20), title, font=font_b, fill=color)
def card(name):
x, y, w, fields = entities[name]
h = heights[name]
d.rounded_rectangle((x, y, x + w, y + h), radius=8, fill=CARD, outline=BORDER, width=2)
d.rectangle((x, y, x + w, y + 46), fill=HEADER)
d.line((x, y + 46, x + w, y + 46), fill=BORDER, width=1)
d.text((x + 18, y + 12), name, font=font_b, fill=TEXT)
yy = y + 64
for f in fields:
color = PK if f.startswith('PK') else FK if f.startswith('FK') else TEXT
d.text((x + 20, yy), f, font=font_s, fill=color)
yy += 27
def anchor(name, side, off=0):
x, y, w, _ = entities[name]
h = heights[name]
if side == 'r': return (x + w, y + h // 2 + off)
if side == 'l': return (x, y + h // 2 + off)
if side == 't': return (x + w // 2 + off, y)
if side == 'b': return (x + w // 2 + off, y + h)
def badge(num, x, y, color):
d.ellipse((x - 14, y - 14, x + 14, y + 14), fill=BADGE, outline=color, width=2)
tw = d.textlength(num, font=font_badge)
d.text((x - tw / 2, y - 10), num, font=font_badge, fill=color)
def arrow(points, color, num=None, badge_at=None):
d.line(points, fill=color, width=4, joint='curve')
x1, y1 = points[-2]
x2, y2 = points[-1]
if abs(x2 - x1) >= abs(y2 - y1):
tri = [(x2, y2), (x2 - 12 if x2 >= x1 else x2 + 12, y2 - 7), (x2 - 12 if x2 >= x1 else x2 + 12, y2 + 7)]
else:
tri = [(x2, y2), (x2 - 7, y2 - 12 if y2 >= y1 else y2 + 12), (x2 + 7, y2 - 12 if y2 >= y1 else y2 + 12)]
d.polygon(tri, fill=color)
if num:
bx, by = badge_at if badge_at else points[len(points)//2]
badge(num, bx, by, color)
# title
d.text((70, 40), 'Unified Work Data ERD', font=font_t, fill=TEXT)
d.text((72, 82), 'One diagram, separated into people flow and project flow. Numbered connectors avoid line-label overlap.', font=font_s, fill=MUTED)
# panels
panel(45, 130, 500, 1535, 'SOURCE TABLES', MUTED)
panel(585, 130, 1130, 1535, 'SHARED ERP CACHE / MATCH TABLES', MUTED)
panel(1300, 130, 1860, 1535, 'OUTPUT / VIEW TABLES', MUTED)
# connectors without text labels
arrow([anchor('member','b'), (245, 545), anchor('dallyproject','t')], PEOPLE, '1', (245, 545))
arrow([anchor('member','r',10), (555, anchor('member','r',10)[1]), (555, anchor('site_worksheet_record','l',-40)[1]), anchor('site_worksheet_record','l',-40)], PEOPLE, '2', (555, 470))
arrow([anchor('project_alias','t'), (260, 925), anchor('dallyproject','b')], PROJECT, '3', (260, 925))
arrow([anchor('project_alias','r',-20), (560, anchor('project_alias','r',-20)[1]), (560, anchor('site_worksheet_worker_cache','l',-35)[1]), anchor('site_worksheet_worker_cache','l',-35)], PROJECT, '4', (560, 825))
arrow([anchor('site_worksheet_day_sync','t'), (1110, 910), (1110, 340), anchor('site_worksheet_worker_cache','r',45)], CAL, '5', (1110, 910))
arrow([anchor('site_worksheet_menu_sync','t'), (1160, 1120), (1160, 370), anchor('site_worksheet_worker_cache','r',90)], CAL, '6', (1160, 1120))
arrow([anchor('site_worksheet_worker_cache','b'), (855, 520), anchor('site_worksheet_record','t')], ERP, '7', (855, 520))
arrow([anchor('dallyproject','r',-30), (1235, anchor('dallyproject','r',-30)[1]), (1235, anchor('work_calendar_detail','l',-80)[1]), anchor('work_calendar_detail','l',-80)], PEOPLE, '8', (1235, 610))
arrow([anchor('site_worksheet_record','r'), (1240, anchor('site_worksheet_record','r')[1]), (1240, anchor('work_calendar_detail','l',40)[1]), anchor('work_calendar_detail','l',40)], ERP, '9', (1240, 690))
arrow([anchor('project_alias','r',35), (1200, anchor('project_alias','r',35)[1]), (1200, anchor('work_calendar_detail','l',95)[1]), anchor('work_calendar_detail','l',95)], PROJECT, '10', (1200, 1030))
arrow([anchor('work_calendar_detail','b'), (1565, 880), anchor('work_calendar_day','t')], CAL, '11', (1565, 880))
arrow([anchor('dallyproject','r',35), (1280, anchor('dallyproject','r',35)[1]), (1280, anchor('project_yearly_summary','l',-45)[1]), anchor('project_yearly_summary','l',-45)], PEOPLE, '12', (1280, 800))
arrow([anchor('site_worksheet_record','r',55), (1265, anchor('site_worksheet_record','r',55)[1]), (1265, anchor('project_yearly_summary','l',30)[1]), anchor('project_yearly_summary','l',30)], ERP, '13', (1265, 1185))
# cards
for name in entities:
card(name)
# connector legend bottom
legend_x, legend_y = 70, 1590
d.rounded_rectangle((legend_x, legend_y, 1830, 1775), radius=10, fill='#1d2123', outline='#3a4247')
d.text((legend_x + 20, legend_y + 16), 'CONNECTORS', font=font_b, fill=TEXT)
col_w = 570
for idx, (num, text, color) in enumerate(relations):
col = idx // 5
row = idx % 5
x = legend_x + 28 + col * col_w
y = legend_y + 55 + row * 34
badge(num, x, y + 8, color)
d.text((x + 28, y), text, font=font_s, fill=TEXT)
# mini flow labels
d.rounded_rectangle((70, 1810, 1830, 1850), radius=8, fill='#1d2123', outline='#3a4247')
d.text((90, 1820), 'People flow: member + dallyproject + matched ERP rows -> calendar | Project flow: dallyproject + matched ERP rows -> project summary', font=font_s, fill=MUTED)
img.save(PNG)
print(PNG)

BIN
exports/work_data_erd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1900" height="1280" viewBox="0 0 1900 1280">
<rect width="100%" height="100%" fill="#f6f8fb"/>
<text x="70" y="55" font-family="DejaVu Sans, Arial" font-size="34" font-weight="700" fill="#0f172a">Work Data ERD: SQL + Site Worksheet Integration</text>
<text x="72" y="82" font-family="DejaVu Sans, Arial" font-size="15" fill="#475569">PNG version generated at /home/hyein/jh-mh/장헌산업/exports/work_data_erd.png</text>
<image href="work_data_erd.png" x="0" y="0" width="1900" height="1280" opacity="0"/>
<text x="70" y="150" font-family="DejaVu Sans, Arial" font-size="22" fill="#334155">Open the PNG file for the full ERD diagram.</text>
</svg>

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

1925
index.html Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

View File

@@ -0,0 +1,146 @@
{
"left_core_tables": [
"dallyproject_tbl",
"member_tbl"
],
"right_tables": [
"dallyproject_2005_2015_tbl",
"dallyproject_2016_tbl",
"dallyproject_2017_tbl",
"dallyproject_2018_tbl",
"dallyproject_2019_tbl",
"dallyproject_2020_tbl",
"project_tbl",
"systemconfig_tbl",
"userstate_tbl",
"worker_tardy_tbl"
],
"relations": [
{
"from": "dallyproject_tbl",
"from_col": "MemberNo",
"to": "member_tbl",
"to_col": "MemberNo",
"card": "N:1"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "MemberNo",
"to": "member_tbl",
"to_col": "MemberNo",
"card": "N:1"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "MemberNo",
"to": "member_tbl",
"to_col": "MemberNo",
"card": "N:1"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "MemberNo",
"to": "member_tbl",
"to_col": "MemberNo",
"card": "N:1"
},
{
"from": "dallyproject_2018_tbl",
"from_col": "MemberNo",
"to": "member_tbl",
"to_col": "MemberNo",
"card": "N:1"
},
{
"from": "dallyproject_2019_tbl",
"from_col": "MemberNo",
"to": "member_tbl",
"to_col": "MemberNo",
"card": "N:1"
},
{
"from": "dallyproject_2020_tbl",
"from_col": "MemberNo",
"to": "member_tbl",
"to_col": "MemberNo",
"card": "N:1"
},
{
"from": "worker_tardy_tbl",
"from_col": "MemberNo",
"to": "member_tbl",
"to_col": "MemberNo",
"card": "N:1"
},
{
"from": "dallyproject_tbl",
"from_col": "EntryPCode",
"to": "project_tbl",
"to_col": "ProjectCode",
"card": "N:1"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "EntryPCode",
"to": "project_tbl",
"to_col": "ProjectCode",
"card": "N:1"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "EntryPCode",
"to": "project_tbl",
"to_col": "ProjectCode",
"card": "N:1"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "EntryPCode",
"to": "project_tbl",
"to_col": "ProjectCode",
"card": "N:1"
},
{
"from": "dallyproject_2018_tbl",
"from_col": "EntryPCode",
"to": "project_tbl",
"to_col": "ProjectCode",
"card": "N:1"
},
{
"from": "dallyproject_2019_tbl",
"from_col": "EntryPCode",
"to": "project_tbl",
"to_col": "ProjectCode",
"card": "N:1"
},
{
"from": "dallyproject_2020_tbl",
"from_col": "EntryPCode",
"to": "project_tbl",
"to_col": "ProjectCode",
"card": "N:1"
},
{
"from": "member_tbl",
"from_col": "RankCode",
"to": "systemconfig_tbl",
"to_col": "Code(PositionCode)",
"card": "N:1"
},
{
"from": "member_tbl",
"from_col": "GroupCode",
"to": "systemconfig_tbl",
"to_col": "Code(GroupCode*)",
"card": "N:1"
},
{
"from": "member_tbl",
"from_col": "WorkPosition",
"to": "systemconfig_tbl",
"to_col": "Code(WorkPositionCode)",
"card": "N:1"
}
]
}

View File

@@ -0,0 +1,145 @@
{
"database": "jangheon_manhour",
"tables": [
"dallyproject_2005_2015_tbl",
"dallyproject_2016_tbl",
"dallyproject_2017_tbl",
"dallyproject_2018_tbl",
"dallyproject_2019_tbl",
"dallyproject_2020_tbl",
"dallyproject_tbl",
"member_tbl",
"project_tbl",
"systemconfig_tbl",
"userstate_tbl",
"worker_tardy_tbl"
],
"relations": [
{
"from_table": "dallyproject_tbl",
"from_col": "MemberNo",
"to_table": "member_tbl",
"to_col": "MemberNo",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2005_2015_tbl",
"from_col": "MemberNo",
"to_table": "member_tbl",
"to_col": "MemberNo",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2016_tbl",
"from_col": "MemberNo",
"to_table": "member_tbl",
"to_col": "MemberNo",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2017_tbl",
"from_col": "MemberNo",
"to_table": "member_tbl",
"to_col": "MemberNo",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2018_tbl",
"from_col": "MemberNo",
"to_table": "member_tbl",
"to_col": "MemberNo",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2019_tbl",
"from_col": "MemberNo",
"to_table": "member_tbl",
"to_col": "MemberNo",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2020_tbl",
"from_col": "MemberNo",
"to_table": "member_tbl",
"to_col": "MemberNo",
"cardinality": "N:1"
},
{
"from_table": "worker_tardy_tbl",
"from_col": "MemberNo",
"to_table": "member_tbl",
"to_col": "MemberNo",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_tbl",
"from_col": "EntryPCode",
"to_table": "project_tbl",
"to_col": "ProjectCode",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2005_2015_tbl",
"from_col": "EntryPCode",
"to_table": "project_tbl",
"to_col": "ProjectCode",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2016_tbl",
"from_col": "EntryPCode",
"to_table": "project_tbl",
"to_col": "ProjectCode",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2017_tbl",
"from_col": "EntryPCode",
"to_table": "project_tbl",
"to_col": "ProjectCode",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2018_tbl",
"from_col": "EntryPCode",
"to_table": "project_tbl",
"to_col": "ProjectCode",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2019_tbl",
"from_col": "EntryPCode",
"to_table": "project_tbl",
"to_col": "ProjectCode",
"cardinality": "N:1"
},
{
"from_table": "dallyproject_2020_tbl",
"from_col": "EntryPCode",
"to_table": "project_tbl",
"to_col": "ProjectCode",
"cardinality": "N:1"
},
{
"from_table": "member_tbl",
"from_col": "RankCode",
"to_table": "systemconfig_tbl",
"to_col": "Code (SysKey=PositionCode)",
"cardinality": "N:1"
},
{
"from_table": "member_tbl",
"from_col": "GroupCode",
"to_table": "systemconfig_tbl",
"to_col": "Code (SysKey=GroupCode*)",
"cardinality": "N:1"
},
{
"from_table": "member_tbl",
"from_col": "WorkPosition",
"to_table": "systemconfig_tbl",
"to_col": "Code (SysKey=WorkPositionCode)",
"cardinality": "N:1"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

View File

@@ -0,0 +1,340 @@
{
"tables": [
"dallyproject_2005_2015_tbl",
"dallyproject_2016_tbl",
"dallyproject_2017_tbl",
"dallyproject_2018_tbl",
"dallyproject_2019_tbl",
"dallyproject_2020_tbl",
"dallyproject_tbl",
"member_tbl",
"project_tbl",
"systemconfig_tbl",
"userstate_tbl",
"worker_tardy_tbl"
],
"relationships": [
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2016_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2017_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2018_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2019_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2020_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "memberno",
"to": "member_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "memberno",
"to": "userstate_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2005_2015_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2017_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2018_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2019_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2020_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "memberno",
"to": "member_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "memberno",
"to": "userstate_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2016_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2018_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2019_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2020_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "memberno",
"to": "member_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "memberno",
"to": "userstate_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2017_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2018_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2019_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2018_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2020_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2018_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2018_tbl",
"from_col": "memberno",
"to": "member_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2018_tbl",
"from_col": "memberno",
"to": "userstate_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2018_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2019_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_2020_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2019_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2019_tbl",
"from_col": "memberno",
"to": "member_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2019_tbl",
"from_col": "memberno",
"to": "userstate_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2019_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2020_tbl",
"from_col": "entryjobcode,entrypcode",
"to": "dallyproject_tbl",
"to_col": "entryjobcode,entrypcode",
"type": "INFERRED"
},
{
"from": "dallyproject_2020_tbl",
"from_col": "memberno",
"to": "member_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2020_tbl",
"from_col": "memberno",
"to": "userstate_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_2020_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_tbl",
"from_col": "memberno",
"to": "member_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_tbl",
"from_col": "memberno",
"to": "userstate_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "dallyproject_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "member_tbl",
"from_col": "groupcode,memberno",
"to": "userstate_tbl",
"to_col": "groupcode,memberno",
"type": "INFERRED"
},
{
"from": "member_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
},
{
"from": "project_tbl",
"from_col": "projectcode",
"to": "userstate_tbl",
"to_col": "projectcode",
"type": "INFERRED"
},
{
"from": "userstate_tbl",
"from_col": "memberno",
"to": "worker_tardy_tbl",
"to_col": "memberno",
"type": "INFERRED"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

62
key_usage_analysis.csv Normal file
View File

@@ -0,0 +1,62 @@
table,column,keyflag,rows,distinct,empty,fill_rate,uniqueness,usage_score
userstate_tbl,num,PRI,14133,14133,0,1.0,1.0,1.0
project_tbl,ProjectCode,PRI,2149,2149,0,1.0,1.0,1.0
worker_tardy_tbl,row_num,PRI,233,233,0,1.0,1.0,1.0
member_tbl,MemberNo,PRI,320,319,0,1.0,0.9969,0.9984
member_tbl,korName,PRI,320,301,2,0.9938,0.9406,0.9672
dallyproject_tbl,EntryTime,PRI,73489,60540,0,1.0,0.8238,0.9119
dallyproject_2020_tbl,EntryTime,PRI,8732,7172,0,1.0,0.8213,0.9107
dallyproject_2019_tbl,EntryTime,PRI,8779,6747,0,1.0,0.7685,0.8843
dallyproject_2016_tbl,EntryTime,PRI,9359,7167,0,1.0,0.7658,0.8829
dallyproject_2018_tbl,EntryTime,PRI,9485,7219,0,1.0,0.7611,0.8805
dallyproject_2017_tbl,EntryTime,PRI,9177,6859,0,1.0,0.7474,0.8737
dallyproject_2005_2015_tbl,EntryTime,PRI,80964,57059,0,1.0,0.7047,0.8524
systemconfig_tbl,Code,-,676,352,0,1.0,0.5207,0.7604
worker_tardy_tbl,memberno,-,233,103,0,1.0,0.4421,0.721
project_tbl,mpCode,-,2149,884,355,0.8348,0.4114,0.6231
project_tbl,oldProjectCode,-,2149,906,669,0.6887,0.4216,0.5551
member_tbl,RankCode,-,320,22,0,1.0,0.0688,0.5344
userstate_tbl,ProjectCode,-,14133,604,15,0.9989,0.0427,0.5208
member_tbl,GroupCode,-,320,12,0,1.0,0.0375,0.5188
dallyproject_2016_tbl,EntryPCode,-,9359,214,17,0.9982,0.0229,0.5105
dallyproject_2017_tbl,EntryPCode,-,9177,195,8,0.9991,0.0212,0.5102
dallyproject_2020_tbl,EntryPCode,-,8732,176,3,0.9997,0.0202,0.5099
dallyproject_2019_tbl,EntryPCode,-,8779,153,2,0.9998,0.0174,0.5086
dallyproject_2018_tbl,EntryPCode,-,9485,166,10,0.9989,0.0175,0.5082
member_tbl,WorkPosition,-,320,4,0,1.0,0.0125,0.5062
dallyproject_tbl,EntryPCode,-,73489,854,35,0.9995,0.0116,0.5056
userstate_tbl,MemberNo,-,14133,109,0,1.0,0.0077,0.5039
dallyproject_2018_tbl,MemberNo,PRI,9485,58,1,0.9999,0.0061,0.503
dallyproject_2016_tbl,MemberNo,PRI,9359,55,1,0.9999,0.0059,0.5029
dallyproject_2019_tbl,MemberNo,PRI,8779,52,1,0.9999,0.0059,0.5029
dallyproject_2017_tbl,MemberNo,PRI,9177,53,1,0.9999,0.0058,0.5028
dallyproject_2005_2015_tbl,EntryPCode,-,80964,603,160,0.998,0.0074,0.5027
dallyproject_2020_tbl,MemberNo,PRI,8732,47,0,1.0,0.0054,0.5027
dallyproject_2019_tbl,EntryJobCode,-,8779,30,2,0.9998,0.0034,0.5016
dallyproject_2020_tbl,EntryJobCode,-,8732,32,4,0.9995,0.0037,0.5016
dallyproject_2016_tbl,EntryJobCode,-,9359,40,14,0.9985,0.0043,0.5014
dallyproject_2017_tbl,EntryJobCode,-,9177,33,9,0.999,0.0036,0.5013
dallyproject_2018_tbl,EntryJobCode,-,9485,33,11,0.9988,0.0035,0.5012
dallyproject_2005_2015_tbl,MemberNo,PRI,80964,149,36,0.9996,0.0018,0.5007
dallyproject_tbl,MemberNo,PRI,73489,96,6,0.9999,0.0013,0.5006
userstate_tbl,GroupCode,-,14133,10,0,1.0,0.0007,0.5004
dallyproject_tbl,EntryJobCode,-,73489,49,57,0.9992,0.0007,0.4999
dallyproject_2005_2015_tbl,EntryJobCode,-,80964,124,743,0.9908,0.0015,0.4962
dallyproject_2020_tbl,LeavePCode,-,8732,168,1486,0.8298,0.0192,0.4245
dallyproject_2016_tbl,LeavePCode,-,9359,206,1643,0.8244,0.022,0.4232
dallyproject_2020_tbl,LeaveJobCode,-,8732,32,1488,0.8296,0.0037,0.4166
dallyproject_2019_tbl,LeavePCode,-,8779,149,1621,0.8154,0.017,0.4162
dallyproject_2017_tbl,LeavePCode,-,9177,189,1748,0.8095,0.0206,0.4151
dallyproject_tbl,LeavePCode,-,73489,861,13412,0.8175,0.0117,0.4146
dallyproject_2016_tbl,LeaveJobCode,-,9359,36,1640,0.8248,0.0038,0.4143
dallyproject_2019_tbl,LeaveJobCode,-,8779,29,1622,0.8152,0.0033,0.4093
dallyproject_tbl,LeaveJobCode,-,73489,44,13500,0.8163,0.0006,0.4084
dallyproject_2005_2015_tbl,LeavePCode,-,80964,594,15683,0.8063,0.0073,0.4068
dallyproject_2017_tbl,LeaveJobCode,-,9177,31,1749,0.8094,0.0034,0.4064
dallyproject_2018_tbl,LeavePCode,-,9485,162,2057,0.7831,0.0171,0.4001
dallyproject_2018_tbl,LeaveJobCode,-,9485,33,2062,0.7826,0.0035,0.393
dallyproject_2005_2015_tbl,LeaveJobCode,-,80964,112,22652,0.7202,0.0014,0.3608
project_tbl,OrderCompanyCode,-,2149,12,1256,0.4155,0.0056,0.2106
systemconfig_tbl,orderno,-,676,50,555,0.179,0.074,0.1265
userstate_tbl,sub_code,-,14133,449,12614,0.1075,0.0318,0.0696
userstate_tbl,active_code,-,14133,34,13939,0.0137,0.0024,0.0081
1 table column keyflag rows distinct empty fill_rate uniqueness usage_score
2 userstate_tbl num PRI 14133 14133 0 1.0 1.0 1.0
3 project_tbl ProjectCode PRI 2149 2149 0 1.0 1.0 1.0
4 worker_tardy_tbl row_num PRI 233 233 0 1.0 1.0 1.0
5 member_tbl MemberNo PRI 320 319 0 1.0 0.9969 0.9984
6 member_tbl korName PRI 320 301 2 0.9938 0.9406 0.9672
7 dallyproject_tbl EntryTime PRI 73489 60540 0 1.0 0.8238 0.9119
8 dallyproject_2020_tbl EntryTime PRI 8732 7172 0 1.0 0.8213 0.9107
9 dallyproject_2019_tbl EntryTime PRI 8779 6747 0 1.0 0.7685 0.8843
10 dallyproject_2016_tbl EntryTime PRI 9359 7167 0 1.0 0.7658 0.8829
11 dallyproject_2018_tbl EntryTime PRI 9485 7219 0 1.0 0.7611 0.8805
12 dallyproject_2017_tbl EntryTime PRI 9177 6859 0 1.0 0.7474 0.8737
13 dallyproject_2005_2015_tbl EntryTime PRI 80964 57059 0 1.0 0.7047 0.8524
14 systemconfig_tbl Code - 676 352 0 1.0 0.5207 0.7604
15 worker_tardy_tbl memberno - 233 103 0 1.0 0.4421 0.721
16 project_tbl mpCode - 2149 884 355 0.8348 0.4114 0.6231
17 project_tbl oldProjectCode - 2149 906 669 0.6887 0.4216 0.5551
18 member_tbl RankCode - 320 22 0 1.0 0.0688 0.5344
19 userstate_tbl ProjectCode - 14133 604 15 0.9989 0.0427 0.5208
20 member_tbl GroupCode - 320 12 0 1.0 0.0375 0.5188
21 dallyproject_2016_tbl EntryPCode - 9359 214 17 0.9982 0.0229 0.5105
22 dallyproject_2017_tbl EntryPCode - 9177 195 8 0.9991 0.0212 0.5102
23 dallyproject_2020_tbl EntryPCode - 8732 176 3 0.9997 0.0202 0.5099
24 dallyproject_2019_tbl EntryPCode - 8779 153 2 0.9998 0.0174 0.5086
25 dallyproject_2018_tbl EntryPCode - 9485 166 10 0.9989 0.0175 0.5082
26 member_tbl WorkPosition - 320 4 0 1.0 0.0125 0.5062
27 dallyproject_tbl EntryPCode - 73489 854 35 0.9995 0.0116 0.5056
28 userstate_tbl MemberNo - 14133 109 0 1.0 0.0077 0.5039
29 dallyproject_2018_tbl MemberNo PRI 9485 58 1 0.9999 0.0061 0.503
30 dallyproject_2016_tbl MemberNo PRI 9359 55 1 0.9999 0.0059 0.5029
31 dallyproject_2019_tbl MemberNo PRI 8779 52 1 0.9999 0.0059 0.5029
32 dallyproject_2017_tbl MemberNo PRI 9177 53 1 0.9999 0.0058 0.5028
33 dallyproject_2005_2015_tbl EntryPCode - 80964 603 160 0.998 0.0074 0.5027
34 dallyproject_2020_tbl MemberNo PRI 8732 47 0 1.0 0.0054 0.5027
35 dallyproject_2019_tbl EntryJobCode - 8779 30 2 0.9998 0.0034 0.5016
36 dallyproject_2020_tbl EntryJobCode - 8732 32 4 0.9995 0.0037 0.5016
37 dallyproject_2016_tbl EntryJobCode - 9359 40 14 0.9985 0.0043 0.5014
38 dallyproject_2017_tbl EntryJobCode - 9177 33 9 0.999 0.0036 0.5013
39 dallyproject_2018_tbl EntryJobCode - 9485 33 11 0.9988 0.0035 0.5012
40 dallyproject_2005_2015_tbl MemberNo PRI 80964 149 36 0.9996 0.0018 0.5007
41 dallyproject_tbl MemberNo PRI 73489 96 6 0.9999 0.0013 0.5006
42 userstate_tbl GroupCode - 14133 10 0 1.0 0.0007 0.5004
43 dallyproject_tbl EntryJobCode - 73489 49 57 0.9992 0.0007 0.4999
44 dallyproject_2005_2015_tbl EntryJobCode - 80964 124 743 0.9908 0.0015 0.4962
45 dallyproject_2020_tbl LeavePCode - 8732 168 1486 0.8298 0.0192 0.4245
46 dallyproject_2016_tbl LeavePCode - 9359 206 1643 0.8244 0.022 0.4232
47 dallyproject_2020_tbl LeaveJobCode - 8732 32 1488 0.8296 0.0037 0.4166
48 dallyproject_2019_tbl LeavePCode - 8779 149 1621 0.8154 0.017 0.4162
49 dallyproject_2017_tbl LeavePCode - 9177 189 1748 0.8095 0.0206 0.4151
50 dallyproject_tbl LeavePCode - 73489 861 13412 0.8175 0.0117 0.4146
51 dallyproject_2016_tbl LeaveJobCode - 9359 36 1640 0.8248 0.0038 0.4143
52 dallyproject_2019_tbl LeaveJobCode - 8779 29 1622 0.8152 0.0033 0.4093
53 dallyproject_tbl LeaveJobCode - 73489 44 13500 0.8163 0.0006 0.4084
54 dallyproject_2005_2015_tbl LeavePCode - 80964 594 15683 0.8063 0.0073 0.4068
55 dallyproject_2017_tbl LeaveJobCode - 9177 31 1749 0.8094 0.0034 0.4064
56 dallyproject_2018_tbl LeavePCode - 9485 162 2057 0.7831 0.0171 0.4001
57 dallyproject_2018_tbl LeaveJobCode - 9485 33 2062 0.7826 0.0035 0.393
58 dallyproject_2005_2015_tbl LeaveJobCode - 80964 112 22652 0.7202 0.0014 0.3608
59 project_tbl OrderCompanyCode - 2149 12 1256 0.4155 0.0056 0.2106
60 systemconfig_tbl orderno - 676 50 555 0.179 0.074 0.1265
61 userstate_tbl sub_code - 14133 449 12614 0.1075 0.0318 0.0696
62 userstate_tbl active_code - 14133 34 13939 0.0137 0.0024 0.0081

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

BIN
matching.db Normal file

Binary file not shown.

270
member_match_page.html Normal file
View File

@@ -0,0 +1,270 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MemberNo - korName 매칭</title>
<style>
:root {
--bg: #f5f7fb;
--card: #ffffff;
--text: #18212f;
--muted: #546174;
--line: #d8dee8;
--brand: #1f6feb;
}
* { box-sizing: border-box; }
body {
margin: 0;
background: linear-gradient(180deg, #eef3ff 0%, var(--bg) 35%);
color: var(--text);
font-family: "Noto Sans KR", "Malgun Gothic", sans-serif;
}
.wrap {
max-width: 1200px;
margin: 32px auto;
padding: 0 16px;
}
.card {
background: var(--card);
border: 1px solid var(--line);
border-radius: 12px;
padding: 18px;
box-shadow: 0 8px 20px rgba(24, 33, 47, 0.06);
margin-bottom: 16px;
}
h1 { margin: 0 0 10px; font-size: 24px; }
p { margin: 8px 0; color: var(--muted); }
.row { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.filebox { display: flex; flex-direction: column; gap: 6px; min-width: 280px; }
label { font-weight: 700; }
input[type="file"] { padding: 8px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
button {
border: 0;
border-radius: 8px;
padding: 10px 14px;
font-weight: 700;
cursor: pointer;
background: var(--brand);
color: #fff;
}
button:disabled { background: #8caee8; cursor: not-allowed; }
.ghost { background: #eef4ff; color: #204f9c; border: 1px solid #c9daf9; }
.stats { display: flex; gap: 10px; flex-wrap: wrap; }
.pill { background: #f4f7ff; border: 1px solid #d7e2ff; border-radius: 999px; padding: 6px 10px; font-size: 13px; }
.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 8px; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th, td { border-bottom: 1px solid #ecf0f6; padding: 8px; text-align: left; white-space: nowrap; }
th { position: sticky; top: 0; background: #f9fbff; }
.warn { color: #ac3d00; font-weight: 700; }
</style>
</head>
<body>
<div class="wrap">
<div class="card">
<h1>MemberNo → korName 매칭 페이지</h1>
<p>`dallyproject.csv`의 `MemberNo`를 `member.csv`의 `MemberNo`와 매치해서 `korName`을 붙입니다.</p>
<p>인코딩이 깨질 경우를 대비해 <b>UTF-8 / EUC-KR(CP949)</b> 자동 시도 후, 실패 시 수동 선택도 지원합니다.</p>
<div class="row">
<div class="filebox">
<label for="dailyFile">1) dallyproject.csv</label>
<input id="dailyFile" type="file" accept=".csv,text/csv" />
</div>
<div class="filebox">
<label for="memberFile">2) member.csv</label>
<input id="memberFile" type="file" accept=".csv,text/csv" />
</div>
</div>
<div class="row" style="margin-top: 10px;">
<button id="runBtn">매칭 실행</button>
<button id="downloadBtn" class="ghost" disabled>결과 CSV 다운로드</button>
<select id="encodingSelect" class="ghost" style="padding:10px; border-radius:8px;">
<option value="auto">인코딩 자동</option>
<option value="utf-8">UTF-8</option>
<option value="euc-kr">EUC-KR (CP949)</option>
</select>
</div>
</div>
<div class="card">
<div class="stats" id="stats"></div>
<p id="status">파일을 선택한 뒤 매칭을 실행하세요.</p>
<div class="table-wrap">
<table id="resultTable"></table>
</div>
</div>
</div>
<script>
const dailyFileEl = document.getElementById('dailyFile');
const memberFileEl = document.getElementById('memberFile');
const runBtn = document.getElementById('runBtn');
const downloadBtn = document.getElementById('downloadBtn');
const tableEl = document.getElementById('resultTable');
const statusEl = document.getElementById('status');
const statsEl = document.getElementById('stats');
const encodingEl = document.getElementById('encodingSelect');
let mergedRows = [];
let mergedHeaders = [];
function normalizeHeader(h) {
return (h || '').replace(/^\uFEFF/, '').trim().toLowerCase();
}
function splitCsvLine(line) {
const out = [];
let cur = '';
let q = false;
for (let i = 0; i < line.length; i++) {
const c = line[i];
if (c === '"') {
if (q && line[i + 1] === '"') { cur += '"'; i++; }
else q = !q;
} else if (c === ',' && !q) {
out.push(cur);
cur = '';
} else {
cur += c;
}
}
out.push(cur);
return out;
}
function parseCsv(text) {
const lines = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n').filter(Boolean);
if (!lines.length) return { headers: [], rows: [] };
const headers = splitCsvLine(lines[0]).map(h => h.trim());
const rows = [];
for (let i = 1; i < lines.length; i++) {
const vals = splitCsvLine(lines[i]);
const row = {};
headers.forEach((h, idx) => row[h] = vals[idx] ?? '');
rows.push(row);
}
return { headers, rows };
}
async function readFileText(file, encodingMode) {
const ab = await file.arrayBuffer();
if (encodingMode !== 'auto') {
return new TextDecoder(encodingMode).decode(ab);
}
const utf8 = new TextDecoder('utf-8').decode(ab);
const sample = utf8.slice(0, 2000);
const badScore = (sample.match(/<2F>/g) || []).length;
if (badScore > 3) {
try {
return new TextDecoder('euc-kr').decode(ab);
} catch {
return utf8;
}
}
return utf8;
}
function toCsv(rows, headers) {
const esc = (v) => {
const s = String(v ?? '');
if (/[",\n]/.test(s)) return '"' + s.replace(/"/g, '""') + '"';
return s;
};
const lines = [headers.map(esc).join(',')];
for (const r of rows) lines.push(headers.map(h => esc(r[h])).join(','));
return lines.join('\n');
}
function renderTable(headers, rows) {
if (!headers.length) {
tableEl.innerHTML = '';
return;
}
const head = '<thead><tr>' + headers.map(h => `<th>${h}</th>`).join('') + '</tr></thead>';
const bodyRows = rows.slice(0, 500).map(r => '<tr>' + headers.map(h => `<td>${(r[h] ?? '').toString().replace(/</g, '&lt;')}</td>`).join('') + '</tr>').join('');
tableEl.innerHTML = head + '<tbody>' + bodyRows + '</tbody>';
}
function renderStats(total, matched, unmatched) {
statsEl.innerHTML = `
<span class="pill">전체 행: ${total.toLocaleString()}</span>
<span class="pill">매칭 성공: ${matched.toLocaleString()}</span>
<span class="pill">매칭 실패: ${unmatched.toLocaleString()}</span>
`;
}
runBtn.addEventListener('click', async () => {
const dailyFile = dailyFileEl.files[0];
const memberFile = memberFileEl.files[0];
if (!dailyFile || !memberFile) {
statusEl.innerHTML = '<span class="warn">두 파일을 모두 선택해 주세요.</span>';
return;
}
runBtn.disabled = true;
downloadBtn.disabled = true;
statusEl.textContent = 'CSV 읽는 중...';
try {
const mode = encodingEl.value;
const [dailyText, memberText] = await Promise.all([
readFileText(dailyFile, mode),
readFileText(memberFile, mode)
]);
const daily = parseCsv(dailyText);
const member = parseCsv(memberText);
const dailyMemberNo = daily.headers.find(h => normalizeHeader(h) === 'memberno');
const memberMemberNo = member.headers.find(h => normalizeHeader(h) === 'memberno');
const korNameHeader = member.headers.find(h => normalizeHeader(h) === 'korname');
if (!dailyMemberNo || !memberMemberNo || !korNameHeader) {
throw new Error('필수 컬럼(MemberNo, korName)을 찾을 수 없습니다. 헤더를 확인해 주세요.');
}
const memberMap = new Map();
for (const r of member.rows) {
const key = (r[memberMemberNo] || '').trim();
if (!key) continue;
if (!memberMap.has(key)) memberMap.set(key, r[korNameHeader] || '');
}
let matched = 0;
mergedRows = daily.rows.map(r => {
const key = (r[dailyMemberNo] || '').trim();
const name = memberMap.get(key) || '';
if (name) matched++;
return { ...r, korName: name };
});
mergedHeaders = [...daily.headers, 'korName'];
renderStats(mergedRows.length, matched, mergedRows.length - matched);
renderTable(mergedHeaders, mergedRows);
statusEl.textContent = `완료: ${mergedRows.length.toLocaleString()}건 처리 (표는 500행만 미리보기)`;
downloadBtn.disabled = false;
} catch (err) {
statusEl.innerHTML = `<span class="warn">오류: ${err.message}</span>`;
} finally {
runBtn.disabled = false;
}
});
downloadBtn.addEventListener('click', () => {
const csv = toCsv(mergedRows, mergedHeaders);
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'dallyproject_with_korname.csv';
document.body.appendChild(a);
a.click();
a.remove();
URL.revokeObjectURL(url);
});
</script>
</body>
</html>

109
mysql-preview.html Normal file
View File

@@ -0,0 +1,109 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>MySQL 데이터 미리보기</title>
<style>
:root {
--bg: #f5f7fb;
--card: #ffffff;
--line: #d6deea;
--text: #1f2a44;
--accent: #0d9488;
}
body { margin: 0; font-family: "Noto Sans KR", sans-serif; color: var(--text); background: linear-gradient(180deg, #eef4ff, var(--bg)); }
.wrap { max-width: 1200px; margin: 24px auto; padding: 0 16px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px; }
.row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
select, input, button { padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; }
button { background: var(--accent); color: #fff; border: 0; cursor: pointer; }
button:hover { filter: brightness(0.95); }
.meta { margin: 10px 0; font-size: 13px; color: #475569; }
.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 10px; }
table { border-collapse: collapse; width: 100%; min-width: 900px; background: #fff; }
th, td { border-bottom: 1px solid #ebf0f8; padding: 7px 9px; font-size: 13px; text-align: left; white-space: nowrap; }
th { position: sticky; top: 0; background: #f8fbff; z-index: 1; }
</style>
</head>
<body>
<div class="wrap">
<div class="card">
<h2 style="margin-top:0;">MySQL 데이터 미리보기</h2>
<div class="row">
<button id="btnLoadTables">테이블 목록 불러오기</button>
<select id="tableSelect"><option value="">테이블 선택</option></select>
<input id="limitInput" type="number" min="1" max="500" value="100">
<button id="btnLoadRows">데이터 조회</button>
</div>
<div id="meta" class="meta">대기 중</div>
<div class="table-wrap">
<table id="resultTable">
<thead></thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
<script>
const tableSelect = document.getElementById('tableSelect');
const limitInput = document.getElementById('limitInput');
const meta = document.getElementById('meta');
const thead = document.querySelector('#resultTable thead');
const tbody = document.querySelector('#resultTable tbody');
function setMeta(text) { meta.textContent = text; }
async function loadTables() {
setMeta('테이블 목록 조회 중...');
const res = await fetch('/api/mysql-tables');
const data = await res.json();
tableSelect.innerHTML = '<option value="">테이블 선택</option>';
(data.tables || []).forEach((t) => {
const opt = document.createElement('option');
opt.value = t;
opt.textContent = t;
tableSelect.appendChild(opt);
});
setMeta(`테이블 ${data.count || 0}개 로드 완료`);
}
async function loadRows() {
const table = tableSelect.value;
const limit = Number(limitInput.value || 100);
if (!table) return setMeta('테이블을 먼저 선택하세요.');
setMeta(`${table} 조회 중...`);
const res = await fetch(`/api/mysql-table-preview?table=${encodeURIComponent(table)}&limit=${encodeURIComponent(limit)}`);
const data = await res.json();
renderRows(data.rows || []);
setMeta(`${data.table} - ${data.count || 0}`);
}
function renderRows(rows) {
thead.innerHTML = '';
tbody.innerHTML = '';
if (!rows.length) return;
const cols = Object.keys(rows[0]);
const trh = document.createElement('tr');
cols.forEach((c) => {
const th = document.createElement('th');
th.textContent = c;
trh.appendChild(th);
});
thead.appendChild(trh);
rows.forEach((r) => {
const tr = document.createElement('tr');
cols.forEach((c) => {
const td = document.createElement('td');
td.textContent = r[c] == null ? '' : String(r[c]);
tr.appendChild(td);
});
tbody.appendChild(tr);
});
}
document.getElementById('btnLoadTables').addEventListener('click', loadTables);
document.getElementById('btnLoadRows').addEventListener('click', loadRows);
</script>
</body>
</html>

4200
mysql_preview_server.py Normal file

File diff suppressed because it is too large Load Diff

1146
people-unified.html Normal file

File diff suppressed because it is too large Load Diff

1253
project-codes.html Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,33 @@
#!/usr/bin/env python3
import os
import sqlite3
from http.server import ThreadingHTTPServer
from urllib.parse import urlparse
import mysql_preview_server as base
class ProjectCodeViewerHandler(base.Handler):
def do_GET(self):
parsed = urlparse(self.path)
if parsed.path == '/':
return self._html(base.PROJECT_CODES_HTML)
return super().do_GET()
if __name__ == '__main__':
os.makedirs(base.BASE_DIR, exist_ok=True)
try:
with sqlite3.connect(base.DB_PATH, timeout=30) as conn:
base.init_db(conn)
except sqlite3.OperationalError as error:
if 'locked' in str(error).lower():
print(f'Skip startup DB init because database is locked: {error}')
else:
raise
port = int(os.environ.get('PORT', '8092'))
host = '0.0.0.0'
print(f'Server running: http://{base.local_ip()}:{port}')
print(f'Local access: http://127.0.0.1:{port}')
print('Tip: root path serves the project code viewer page.')
ThreadingHTTPServer((host, port), ProjectCodeViewerHandler).serve_forever()

2
requirements.txt Normal file
View File

@@ -0,0 +1,2 @@
requests>=2.31.0
PyMySQL>=1.1.0