knowledge(경쟁사): 스크립트 경로 이식성 · 자원 코드·명칭 목록 894개 추출
브레인(데스크탑 메인) 요청 둘 처리. ① 16번 골든셋 재현 의존성 - 골든셋·단가조립·자재채택 계열은 로컬 원본 C:\경영정보(주) 를 안 씀. 저장소 안 실무문서/ 자료만 봄 → 랩탑에서도 그대로 돎 - 다만 D:\aislo-wt\sub 절대경로가 박혀 있어 창마다 깨졌음. 스크립트 23개를 저장소 뿌리 자동탐색(_repo_root)으로 고침 - 고친 뒤 골든셋 재실행해 6건 전부 여전히 초록 확인 - 로컬 원본이 필요한 25개는 설치폴더 분석용이며 검산과 무관 ② 자원 이름·코드 목록 (단가 없이도 축 매칭에 쓸 것) - STC 의 COSTN.DBF 가 평문이라 코드·명칭·규격·단위가 그대로 읽힘 - 실무 7건 합쳐 서로 다른 코드 894개 M 재료 228 · D 단가산출 273 · B 일위대가 158 · X 중기 96 · S 경비 92 · L 노무 37 · W 일식견적 10 - 출력 XLSX 의 목록표 시트 6종에서도 317개가 평문으로 읽힘 - 30_원자료/stmate_code_name_list.csv 로 저장 (code·name·size·unit) - 곁들여 ST_U_Convert 에 노임 직종 사전 106종이 평문 (28번 §3.1) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA
This commit is contained in:
@@ -0,0 +1,895 @@
|
||||
code,name,size,unit
|
||||
B00001,유로폼,보통,m2
|
||||
B00002,철근(현장)가공,Type-Ⅰ-----아님,ton
|
||||
B00003,모르타르배합,1:3,m3
|
||||
B00004,깬잡석찰쌓기,L3=45cm내외,M2
|
||||
B00005,임도준공표지석,30x20x60,개소
|
||||
B00006,돌붙임,"메붙임,L3=35cm이하",m2
|
||||
B00007,횡단개거(토사형),,m
|
||||
B00008,횡단개거(토사형),L=5.0m,개소
|
||||
B00009,깬잡석메쌓기,L3=45cm내외,M2
|
||||
B00010,"기슭막이(깬잡석,찰쌓기 L3=45m)","H=2.0m, 채집",M
|
||||
B00011,"기슭막이(깬잡석,찰쌓기 L3=45m)","H=2.5m, 채집",M
|
||||
B00012,취수장 설치,뚜껑설치,개소
|
||||
B00013,콘크리트포장포설,"A-Type,t=20CM이하",M3
|
||||
B00014,콘크리트포장,T=20cm(레미콘),M2
|
||||
B00015,철근(현장)조립,Type-Ⅰ-----아님,ton
|
||||
B00016,돌쌓기,"찰(켜)쌓기,L3=55cm이하",m2
|
||||
B00017,관보호공,"Φ800, 집수정 ㄷ형",개소
|
||||
B00018,관보호공,"Φ800, 동물이동L형",개소
|
||||
B00019,깬잡석찰붙임,L3=30cm내외,M2
|
||||
B00020,"돌붙임(깬잡석,찰붙임)",L3=30cm,M2
|
||||
B00021,콘크리트포장거푸집,T=20cm(양면),M
|
||||
B00022,"기슭막이(깬잡석,메쌓기 L3=45m)","H=2.0m, 채집",M
|
||||
B00023,잡철물 제작및설치(현장),일반철재,ton
|
||||
B00024,철부도장페인트,녹막이1회조합2회,㎡
|
||||
B00025,임도차단기,"H=1.2m, B=5.6m",개소
|
||||
B00026,파형강관부설,D=800mm,m
|
||||
B00027,관보호공,돌쌓기(ㅁ형),개소
|
||||
B00028,기초CON'C,"T=50cm, B=70cm",m
|
||||
B00029,관보호공,"Φ800, 동물이동ㄷ형",개소
|
||||
B00030,횡단개거(포장형),L=4.0,개소당
|
||||
B00031,표면마무리,,㎡
|
||||
B00032,"돌붙임(깬잡석,메붙임)",L3=30cm,M2
|
||||
B00033,깬잡석메붙임,L3=30cm내외,M2
|
||||
B00034,돌수로(넓은호형),"B=2.3, H=0.4",M
|
||||
B00035,깬잡석찰붙임,L3=35cm내외,M2
|
||||
B00036,"돌붙임(깬잡석,메붙임)",L3=60cm,M2
|
||||
B00037,깬잡석메붙임,L3=60cm내외,M2
|
||||
B00038,포장 난간,H=0.30m,m
|
||||
B00039,PE관 매설,D50mm,m
|
||||
B00040,PE관 부설 및 접합,D50,m
|
||||
B00041,관보호공 안전난간,H=0.35,개소
|
||||
B00042,유성페인트칠(붓칠)-황색,"콘크리트,모르타르면3회",㎡
|
||||
B00043,유성페인트칠(붓칠)-흑색,"콘크리트,모르타르면3회",㎡
|
||||
B00044,"기슭막이(H=1.2m),기초무","깬돌, 메쌓기 L3=45",m
|
||||
B00045,파형강관부설,D=800mm(토공별도),m
|
||||
B00046,와이어메쉬 바닥깔기,,㎡
|
||||
B00047,"기슭막이(깬잡석,찰쌓기 L3=45m)","H=3.0m, 채집",M
|
||||
B00048,관보호공-유출구,"Φ800, 일반형",개소
|
||||
B00049,관보호공-유입구,"Φ800, 일반형",개소
|
||||
B00050,집수정,2.0×2.0 H=1.4m,개소
|
||||
B00051,집수정,2.0×1.5 H=1.4m,개소
|
||||
B00052,7급선떼,H=0.4,M
|
||||
B00055,관보호공,"Φ1000, 일반형",개소
|
||||
B00056,관보호공,"Φ1000,(유출구)",개소
|
||||
B00058,BOX구체,5.0x2.5x1@,m
|
||||
B00062,BOX난간벽,H=0.20m,m
|
||||
B00064,"돌붙임(깬잡석,찰붙임)",L3=60cm,M2
|
||||
B00065,깬잡석찰붙임,L3=60cm내외,M2
|
||||
B00135,글자새김,자당 6*6,자
|
||||
B00194,규준틀설치,종단규준틀,개소
|
||||
B00233,문양 거푸집,,m2
|
||||
B00260,녹생토(종자배합),암절개지 및 특수지반 녹화용 (700kg/㎥),M3
|
||||
B00287,연결(이음)철근,,kg
|
||||
B00353,찰쌓기(켜쌓기),L3=55cm이하,m2
|
||||
B00363,임도준공표지석,30x20x60,개소
|
||||
B00374,돌붙임,"메붙임,L3=35cm이하",m2
|
||||
B00378,돌붙임,"찰붙임,L3=55cm이하",m2
|
||||
B00437,파형강관부설,D=800mm,m
|
||||
B00442,물구멍설치,D=50mm,m
|
||||
B00467,규준틀설치,횡단규준틀,개소
|
||||
B00704,국가지점번호판,300x486x1950,개소
|
||||
B00800,가설창고(콘테이너),3m*6m 6개월,개소
|
||||
B00836,선떼(7급)붙이기,(단끊기無;천단부),m
|
||||
B00839,찰붙임,L3=55cm이하,m2
|
||||
B00866,찰붙임,L3=35cm이하,m2
|
||||
B00884,메쌓기(켜쌓기),L3=55cm이하,m2
|
||||
B01014,파형강관부설,D=800mm,m
|
||||
B01077,모르터바르기,1:3,m3
|
||||
B01078,돌쌓기(켜쌓기),"찰쌓기,L3=55cm이하",m2
|
||||
B01079,돌붙임,"찰붙임,L3=55cm이하",m2
|
||||
B01080,7급선떼붙이기,단끊기무,m
|
||||
B01092,돌붙임,"메붙임,L3=55cm이하",m2
|
||||
B01093,돌쌓기(켜쌓기),"메쌓기,L3=55cm이하",m2
|
||||
B01094,돌붙임,"메붙임,L3=35cm이하",m2
|
||||
B01095,돌붙임,"찰붙임,L3=35cm이하",m2
|
||||
B01097,돌묻이기,"메쌓기,L3=35cm이하",m
|
||||
B01098,돌쌓기,"메쌓기,L3=35cm이하",m2
|
||||
B01099,자생수종이식,관목4주이식,㎡
|
||||
B01107,굴취(관목),H=0.3~0.7m,주
|
||||
B01109,관목식재(단식),H=0.3~0.7m,주
|
||||
B01143,제근,밀림(90㎥/ha),m2
|
||||
B01146,수로형토사개거,,개소
|
||||
B01147,돌붙임(채집),찰붙임 L3=45,m2
|
||||
B01155,관보호공(Φ800m/m),동물이동통로 돌집수정ㄴ형,개소
|
||||
B01156,관보호공(Φ800m/m),동물이동통로 돌집수정ㄷ형,개소
|
||||
B01180,"돌기슭막이(찰쌓기,기초무,구입)",H=1.5 L3=45cm,m
|
||||
B01183,"돌기슭막이(메쌓기,기초무,구입)",H=2.0 L3=45cm,m
|
||||
B01184,"돌기슭막이(메쌓기,기초무,구입)",H=2.5 L3=45cm,m
|
||||
B01189,물넘이 집수부,,개소
|
||||
B01190,콘크리트비빔,기계비빔40mm,m3
|
||||
B01191,콘크리트포장(t=0.2m),물넘이,m2
|
||||
B01192,포장거푸집,T=20cm(양면),m
|
||||
B01195,"돌기슭막이(찰쌓기,기초무,구입)",H=2.0 L3=45cm,m
|
||||
B01196,"돌기슭막이(찰쌓기,기초무,구입)",H=2.5 L3=45cm,m
|
||||
B01197,"돌기슭막이(메쌓기,기초무,구입)",H=1.5 L3=45cm,m
|
||||
B01198,메붙임,L3=55cm이하,m2
|
||||
B01199,돌붙임(채집),메붙임 L3=45,m2
|
||||
B01201,파형강관부설,D=1200mm,m
|
||||
B01202,기슭막이(H=2.0m)구입,"깬돌, 찰쌓기 L3=45",m
|
||||
B01203,기슭막이(H=1.5m)채집,"깬돌, 메쌓기 L3=45",m
|
||||
B01204,기슭막이(H=2.0m)채집,"깬돌, 메쌓기 L3=45",m
|
||||
B01207,돌붙임(구입),L3=35 (찰붙임),m2
|
||||
B01208,돌붙임(채집),L3=35 (메붙임),m2
|
||||
B01299,유로폼,간단,m2
|
||||
B01303,L형옹벽측구,H=1.05m,m
|
||||
B01582,철근(현장)조립,Type-Ⅰ-----아님,ton
|
||||
B01608,돌쌓기,"찰(켜)쌓기,L3=55cm이하",m2
|
||||
B01609,포장거푸집,T=20cm(1면기준),m
|
||||
B01680,돌쌓기(깬돌),"메(골)쌓기,L3=55cm이하",m2
|
||||
B01963,동물이동통로,B=1.0M,M
|
||||
B01981,배수관보호공(유입구),D=1000m/m(일반형),개소
|
||||
B01982,임도안전표지판,삼각 D=900,개소
|
||||
B01983,배수관보호공(유입구),D=800㎜(동물이동통로L형),개소
|
||||
B01984,측구보호용잡석채움,B=1.0m,M
|
||||
B01988,배수관보호공(유입구),D=800m/m(일반형),개소
|
||||
B01989,제형돌수로,B=0.75m,m
|
||||
B01997,도로반사경설치,D=1000m/m(STS),개소
|
||||
B01998,콘크리트포장,T=20㎝,m2
|
||||
B02002,산불진화취수장,2.0x2.0x1.2,개소
|
||||
B02016,돌수로(넓은호형),"B=2.3,H=0.4,야면석,찰붙임",m
|
||||
B02017,돌수로(넓은호형),"B=2.6,야면석,메붙임",m
|
||||
B02019,횡단개거,"독립구간,0.3×0.3, L=4m",개소
|
||||
B02045,배수관보호공(유입구),D=1200m/m(일반형),개소
|
||||
B02052,횡단개거,"포장구간,0.15×0.15, L=4m",개소
|
||||
B02053,혼합골재부설,"B=4.0,T=0.1(영월-산불)",M2
|
||||
B02059,콘크리트포장,"B=4.0M,T=0.2M",M
|
||||
B02071,관보호공,돌쌓기(ㅁ형),개소
|
||||
B02073,돌붙임,"깬돌,메붙임 L3=35cm",m2
|
||||
B02080,돌기슭막이(고1.0),"(찰쌓기,L3=45cm)",m
|
||||
B02116,기초CON'C,(0.4×0.4 H:0.6),개소
|
||||
B02118,돌조공(고0.5),"(메쌓기,L3=45cm)",m
|
||||
B02119,파형강관부설,D=800mm,m
|
||||
B02120,관보호공,돌쌓기(ㅁ형),개소
|
||||
B02121,기초CON'C,"T=50cm, B=70cm",m
|
||||
B02122,돌기슭막이(고1.0),"(찰쌓기,L3=45cm)",m
|
||||
B02123,돌조공(고0.5),"(메쌓기,L3=45cm)",m
|
||||
B02124,제형돌수로,B=0.75m,m
|
||||
B02125,돌붙임,"깬돌,메붙임 L3=35cm",m2
|
||||
B02126,콘크리트포장,T=20㎝,m2
|
||||
B02127,포장거푸집,T=20cm(1면기준),m
|
||||
B02128,L형옹벽측구,H=1.05m,m
|
||||
B02129,기초CON'C,(0.4×0.4 H:0.6),개소
|
||||
B02130,선떼(7급)붙이기,(단끊기無;천단부),m
|
||||
B02133,큰돌메쌓기,구입+채집,M2
|
||||
B02134,횡단개거(잡석),B=5.0,개소
|
||||
B02152,산불취수장안내판,800x700,개소
|
||||
B02155,배수관보호공(유입구),D=800㎜(동물이동통로형)-영월,개소
|
||||
B02156,큰돌흙막이,산불(영월),M2
|
||||
D00001,무대처리,,M3
|
||||
D00002,구조물 터파기(토사),굴삭기 0.2m3,m3
|
||||
D00003,깬잡석채집,L=35cm 내외,M2
|
||||
D00004,글자새김,자당 6*6,자
|
||||
D00005,고임돌채집,"기계(0.7㎥,100%)",M3
|
||||
D00006,막자갈채집,"기계(0.7㎥,100%)",M3
|
||||
D00007,구조물 되메우기,굴삭기 0.2m3,m3
|
||||
D00008,기초다짐 및 뒤채움,소형 장비사용 시공,M3
|
||||
D00009,잔토처리,인력100%,M3
|
||||
D00010,레미콘타설(장비사용),소형구조물,M3
|
||||
D00012,콘크리트(기계비빔),무근구조물,M3
|
||||
D00013,제근,,M2
|
||||
D00014,수평규준틀(변곡점),,개소
|
||||
D00015,비탈규준틀(@60M),,개소
|
||||
D00016,측구터파기(토사),기계100%(굴삭기 0.4m3),M3
|
||||
D00017,성토사면다짐,B/H0.7+콤팩터,M2
|
||||
D00018,노면정리,,M2
|
||||
D00019,암절취,굴삭기0.7m3+대형브레카,M3
|
||||
D00020,파형강관 부설 및 접합,D=800mm,M
|
||||
D00021,토사절취(흙깎기),굴삭기 0.7m3,M3
|
||||
D00022,측구터파기(암),기계100%(굴삭기 0.4m3),M3
|
||||
D00023,구조물터파기(육상토사0~1m),기계90%+인력10%(굴삭기 0.7M3),M3
|
||||
D00024,잔토처리,굴삭기 0.7m3,M3
|
||||
D00025,구조물터파기(육상토사0~1m),기계100%(굴삭기 0.7M3),M3
|
||||
D00026,구조물 되메우기,기계100%(굴삭기 0.7M3),M3
|
||||
D00027,구조물터파기(육상암0~1m),기계100%(굴삭기 0.7M3),M3
|
||||
D00029,구조물 되메우기(사질양토),기계100%(굴삭기 0.7M3),M3
|
||||
D00030,평떼붙이기,,m2
|
||||
D00031,노면고르기및다짐,그레이더+진동로울러,M2
|
||||
D00032,유로폼 설치 및 해체,간단,m2
|
||||
D00033,잡관목제거,벌목(5m미만),M2
|
||||
D00034,콘크리포장(T=20cm)포설,인력포설,m3
|
||||
D00035,비탈 규준틀,0.48x0.60,개소
|
||||
D00037,포장절단,콘크리트포장,M
|
||||
D00038,층따기,,M3
|
||||
D00039,파형강관 부설 및 접합,D=1200mm,M
|
||||
D00040,구조물잔토처리,굴착기0.6m3,m3
|
||||
D00041,제근,밀림(90m3/ha이상),m2
|
||||
D00042,구조물터파기(연암),대형브레카+B/H0.7㎥,m3
|
||||
D00043,깬잡석채집,L=45cm 내외,M2
|
||||
D00044,흙 쌓 기,,M3
|
||||
D00045,옆도랑파기(연암),대형브레카(굴삭기0.7㎥),m3
|
||||
D00046,도자운반-토사,L=46m,m3
|
||||
D00047,도자운반-연암,L=44m,m3
|
||||
D00048,덤프운반-토사,L=85m,m3
|
||||
D00049,잔토처리,굴삭기 0.2m3,M3
|
||||
D00050,성토사면다짐,진동콤팩터,m2
|
||||
D00051,깬잡석채집,L=30cm 내외,M2
|
||||
D00052,깬잡석채집,L=60cm 내외,M2
|
||||
D00053,수축줄눈(컷팅),콘크리트포장,m
|
||||
D00054,혼합석부설,"T=0.1, 임도품셈",M2
|
||||
D00055,암발파,중규모진동제어발파,㎥
|
||||
D00056,합판거푸집(6회),간단,M2
|
||||
D00057,씨뿌리기,,m
|
||||
D00058,"유로폼 설치,해체(보통)",수직고7.0m 이하,M2
|
||||
D00059,"유로폼 설치,해체(복잡)",수직고7.0m 이하,M2
|
||||
D00060,철근가공조립(현장),TYPE Ⅰ,Ton
|
||||
D00061,시멘트(대)운반,L=77.4km,대
|
||||
D00062,파쇄(굴림)석 대운반,L=77.4km,톤
|
||||
D00063,덤프운반-토사,L=113m,m3
|
||||
D00064,덤프운반-연암,L=89m,m3
|
||||
D00065,도자운반-연암,L=46.62m,m3
|
||||
D00066,도자운반-토사,L=48.62m,m3
|
||||
D00067,사토운반,"L=2,835m",m3
|
||||
D00068,"돌 채집,운반","L3=45cm,덤프15톤",m2
|
||||
D00069,뒷채움,75m/m 미만,m3
|
||||
D00070,콘크리트비빔,채움재,m3
|
||||
D00071,파형강관부설,Φ800mm,M
|
||||
D00072,파형강관부설,Φ1000mm,M
|
||||
D00073,파쇄(굴림)석 대운반,L=63.2km,톤
|
||||
D00074,플륨관설치,500~700kg미만/본,본
|
||||
D00075,콘크리트믹서사용,0.45 m3,m3
|
||||
D00076,철근가공 및 조립,"Type-Ⅰ-1,현장가공조립",ton
|
||||
D00077,합판거푸집,3회(복잡),M2
|
||||
D00079,성토사면다짐,진동콤팩터,m2
|
||||
D00081,철근가공및조립(현장),일반(Type-Ⅰ-1),Ton
|
||||
D00083,콘크리트믹서사용,0.45 m3,m3
|
||||
D00089,콘크리트믹서사용,0.45 m3,m3
|
||||
D00090,평떼붙임,,m2
|
||||
D00091,단끊기,,m
|
||||
D00093,유로폼 설치 및 해체,간단,m2
|
||||
D00094,유로폼 설치 및 해체,보통,m2
|
||||
D00095,레미콘타설(장비),무근,m3
|
||||
D00096,레미콘타설(장비),"무근,소형",m3
|
||||
D00097,레미콘타설(장비),철근,m3
|
||||
D00098,철근가공 및 조립,"Type-Ⅰ-1,현장가공조립",ton
|
||||
D00099,철근가공 및 조립,"Type-Ⅱ-1,현장가공조립",ton
|
||||
D00102,합판거푸집(간단),간단,m2
|
||||
D00103,레미콘타설(장비),"무근,버림",m3
|
||||
D00105,씨뿌리기(성토면),줄파종,m
|
||||
D00107,도자운반-토사(19ton),현동 L=39.47,M3
|
||||
D00108,도자운반-암(19ton),현동 L=39.3m,M3
|
||||
D00109,덤프운반-토사,현동 L=0.185km,M3
|
||||
D00110,덤프운반-암,현동 L=0.198km,M3
|
||||
D00111,사토 무대처리,"현동, L=126m",M3
|
||||
D00112,강관비계,3개월사용,M2
|
||||
D00113,강관동바리,암거용-3개월사용,공/㎥
|
||||
D00115,중기운반(현동),L=36.1km,대
|
||||
D00116,기계운반(현동),L=36.1km,대
|
||||
D00117,시멘트운반(현동),L=62.5km,포
|
||||
D00118,모래운반(현동),L=37.8km,㎥
|
||||
D00119,자갈운반(현동),L=37.8km,㎥
|
||||
D00120,철근운반(현동),L=62.5km,TON
|
||||
D00121,혼합석운반(현동),L=62.5km,M3
|
||||
D00150,고임돌채집,기계,m3
|
||||
D00154,노면정리,굴삭기 0.7m3,m2
|
||||
D00159,뒷채움,150m/m 내외,m3
|
||||
D00208,덤프운반-토사,L=85m,m3
|
||||
D00258,측구수로관부설,500∼700kg미만,m
|
||||
D00408,막자갈(파쇄석)채집,,m3
|
||||
D00411,야면석 채집 운반,(25x25x35㎝)장비,M2
|
||||
D00450,콘크리트소운반,(L=20m),M3
|
||||
D00492,채움 콘크리트,기계비빔,m3
|
||||
D00600,기초잡석채집및운반부설,4.5톤(L=500),M3
|
||||
D00644,야면석찰붙임,뒷길이 35Cm,M2
|
||||
D00649,사토운반,L=409m,m3
|
||||
D00720,중기운반,L=34.5km,식
|
||||
D00794,단끊기,절취없음,m
|
||||
D00808,노면 고르기,,m2
|
||||
D00867,막자갈채우기,150mm내외,m3
|
||||
D00918,채움CON'C,기계비빔,m3
|
||||
D00959,막자갈채집,기계,m3
|
||||
D00963,제근,밀림(90m3/ha이상),m2
|
||||
D01010,암(연암)절취,굴삭기07+브레카,m3
|
||||
D01030,고임돌채집,굴삭기0.2m3,m3
|
||||
D01036,유용토운반,무대,m3
|
||||
D01038,성토사면다짐,굴삭기0.7m3,m2
|
||||
D01075,수축줄눈(컷팅),콘크리트포장,m
|
||||
D01124,고임돌채집,기계,m3
|
||||
D01129,야면석채집,L3=45cm내외,m2
|
||||
D01132,자갈류(대)운반,L=77.4km,m3
|
||||
D01140,시멘트(대)운반,L=77.4km,대
|
||||
D01154,낙석방지책(표준부),"H=2.5m,B=2.0m",경간
|
||||
D01155,낙석방지책(단부),"H=2.5m,B=2.0m",경간
|
||||
D01248,도자운반-연암,L=44m,m3
|
||||
D01249,덤프운반-연암,L=82m,m3
|
||||
D01251,측구파기(연암),대형브레카+B/H0.7㎥,m3
|
||||
D01254,옆도랑파기(연암),대형브레카(굴삭기0.7㎥),m3
|
||||
D01256,파쇄(굴림)석 대운반,L=77.4km,톤
|
||||
D01259,도자운반-토사,L=46m,m3
|
||||
D01329,평떼붙이기,,m2
|
||||
D01336,레미콘타설,무근(장비),m3
|
||||
D01341,절토(토사),굴삭기0.7m3,m3
|
||||
D01343,구조물터파기(토사),굴삭기0.7m3,m3
|
||||
D01344,구조물 되메우기,굴삭기0.7m3,m3
|
||||
D01351,유로폼 설치 및 해체,간단,m2
|
||||
D01352,유로폼 설치 및 해체,보통,m2
|
||||
D01354,콘크리포장(T=20cm)포설,인력포설,m3
|
||||
D01361,고임돌채집운반,4.5톤덤프(L=500),M3
|
||||
D01396,평떼붙임,,m2
|
||||
D01398,씨뿌리기,,m
|
||||
D01416,토사절취,B/H 0.7m3,m3
|
||||
D01417,암절취(연암),B/H0.7m3+대형브레카,m3
|
||||
D01418,구조물 터파기,B/H0.7m3+인력,m3
|
||||
D01419,구조물터파기(연암),대형브레카+B/H0.7㎥,m3
|
||||
D01420,구조물 되메우기,B/H0.7m3+인력,m3
|
||||
D01421,성토(운반무대),B/H 0.7m3,m3
|
||||
D01422,순성토,덤프+0.7m3,m3
|
||||
D01423,잔토처리,0.7m3 현장내처리,m3
|
||||
D01424,콘크리트비빔,채움재,m3
|
||||
D01425,고임돌채집,기계,m3
|
||||
D01426,뒤채움,소형장비,m3
|
||||
D01427,돌채집,L3=45cm내외,m2
|
||||
D01428,떼붙임,평떼,m2
|
||||
D01429,씨뿌리기,줄파종,m
|
||||
D01430,중기운반,L=35.0km,대
|
||||
D01431,기계운반,L=35.0km,대
|
||||
D01432,모래운반,L=27.8km,m3
|
||||
D01433,자갈운반,L=27.8km,m3
|
||||
D01434,막자갈운반,L=27.8km,m3
|
||||
D01435,시멘트운반,L=35.0km,대
|
||||
D01436,깬돌운반,L=27.8km,ton
|
||||
D01438,돌채집,L3=35cm내외,m2
|
||||
D01439,혼합석운반,L=27.8km,m3
|
||||
D01441,노면정리,,m2
|
||||
D01442,혼합석부설 및 다짐,굴삭기+진동롤러(10톤),m3
|
||||
D01443,노면정비,,m
|
||||
D01445,모래소운반,소운반 4.5ton(L=0.10km),m3
|
||||
D01446,자갈소운반,소운반 4.5ton(L=0.10km),m3
|
||||
D01447,막자갈소운반,소운반 4.5ton(L=0.10km),m3
|
||||
D01448,돌소운반,소운반 4.5ton(L=0.10km),ton
|
||||
D01453,인력운반,기타,ton
|
||||
D01455,혼합석소운반,소운반 4.5ton(L=0.10km),m3
|
||||
D01456,구조물터파기(토사),굴착기0.6m3,m3
|
||||
D01466,야면석소운반(L=35CM),(L=20m),M2
|
||||
D01474,구조물되메우기,굴착기0.6m3,m3
|
||||
D01475,구조물잔토처리,굴착기0.6m3,m3
|
||||
D01476,제근,밀림(90m3/ha이상),m2
|
||||
D01477,토사절취,굴삭기 0.7m3,m3
|
||||
D01478,암(연암)절취,굴삭기07+브레카,m3
|
||||
D01479,옆도랑파기(토사),굴삭기 0.4m3,m3
|
||||
D01480,옆도랑파기(연암),대형브레카(굴삭기0.7㎥),m3
|
||||
D01481,도자운반-토사,L=46m,m3
|
||||
D01482,도자운반-연암,L=44m,m3
|
||||
D01483,덤프운반-토사,L=85m,m3
|
||||
D01484,덤프운반-연암,L=82m,m3
|
||||
D01485,성토사면다짐,진동콤팩터,m2
|
||||
D01486,노면 고르기,,m2
|
||||
D01487,사토운반,L=409m,m3
|
||||
D01488,수축줄눈(컷팅),콘크리트포장,m
|
||||
D01489,낙석방지책(표준부),"H=2.5m,B=2.0m",경간
|
||||
D01490,낙석방지책(단부),"H=2.5m,B=2.0m",경간
|
||||
D01491,구조물헐기,"무근,30cm미만",m3
|
||||
D01492,씨뿌리기,,m
|
||||
D01493,중기운반,L=34.5km,식
|
||||
D01494,모래(대)운반,L=103.3km,m3
|
||||
D01495,자갈류(대)운반,L=77.4km,m3
|
||||
D01496,시멘트(대)운반,L=77.4km,대
|
||||
D01497,파쇄(굴림)석 대운반,L=77.4km,톤
|
||||
D01519,뒷채움돌채집운반부설,4.5톤 덤프트럭(L=500m),M3
|
||||
D01611,초류종자파종,㎡당 2줄,M2
|
||||
D01748,콘크리트포장(인력),T=20㎝,M3
|
||||
D01752,콘크리트포장절단공,임도,M
|
||||
D01755,사토운반,L=500m,M3
|
||||
D01759,도로반사경설치,D=1000(STS),개소
|
||||
D01810,큰돌채집운반(뒷길이 0.6~0.8m),장비(80%) + 인력(20%),M2
|
||||
D01841,합판거푸집(4회),보통,M2
|
||||
D01843,야면석메붙임,뒷길이 35Cm,M2
|
||||
D01844,콘크리트타설,장비사용타설(소형),M3
|
||||
D01854,지수판 설치(PVC 용접),200×5t,m
|
||||
D01855,배수관부설및접합(P.V.C),Ø 50 MM - VG2 일반관,m
|
||||
D01874,절토(연암),굴삭기0.7m3+대형브레카,m3
|
||||
D01926,임도안전표지판설치,"삼각,D=900",개소
|
||||
D01927,면고르기,,M2
|
||||
D01928,잡석운반및다짐,,M3
|
||||
D01932,파형강관부설,Φ1200mm,M
|
||||
D01942,구조물터파기,인력(경질토사),M3
|
||||
D01989,파쇄석운반(울진군 울진읍 대흥리),L=80.00km,ton
|
||||
D01999,사질양토운반,산불-영월(지선),M3
|
||||
D02001,혼합골재부설,영월-산불,M3
|
||||
D02002,중기운반,산불 영월,회
|
||||
D02003,자주식중기운반,그레이더3.6M(산불-영월),회
|
||||
D02004,컨테이너운반,10톤크레인트럭(영월-산불),회
|
||||
D02005,철근운반,영월 산불,Ton
|
||||
D02008,암절취(연암+보통암),B/H0.7m3+대형브레카,M3
|
||||
D02030,흙운반 D/Z19Ton,영월 산불(지선),M3
|
||||
D02031,흙운반D/P+B/H,영월 산불(지선),M3
|
||||
D02032,흙운반 D/Z19Ton,영월 산불(본선),M3
|
||||
D02033,흙운반D/P+B/H,영월 산불(본선),M3
|
||||
D02034,사질양토운반,산불-영월(본선),M3
|
||||
D02036,사토운반,L=200m,M3
|
||||
D02058,무근콘크리트타설,인력운반타설,M3
|
||||
D02071,철근콘크리트타설,장비사용타설,M3
|
||||
D02074,큰돌(0.6~0.8m)운반(영월),B/H07㎥ + D/T15Ton,M3
|
||||
D02119,야면석채집,L3=35cm내외,m2
|
||||
D02139,다지기,굴삭기0.7m3,m3
|
||||
D02145,사토처리,,m3
|
||||
D02153,중기운반(울진군 울진읍 대흥리),L=19.00km,대
|
||||
D02154,모래운반(울진군 울진읍 대흥리),L=16.40km,m3
|
||||
D02155,자갈운반(울진군 울진읍 대흥리),L=16.40km,m3
|
||||
D02157,시멘트운반(울진군 울진읍 대흥리),L=19.00km,대
|
||||
D02172,도자운반-토사,L=40.94m,m3
|
||||
D02173,도자운반-암,L=39.13m,m3
|
||||
D02174,덤프운반-토사,L=64.00m,m3
|
||||
D02175,덤프운반-암,L=64.00m,m3
|
||||
D02195,유로폼 설치 및 해체,간단,m2
|
||||
D02200,콘크리트비빔,채움재,m3
|
||||
D02242,기계운반(울진군 울진읍 대흥리),L=19.00km,대
|
||||
D02246,유로폼 설치 및 해체,보통,m2
|
||||
D02248,콘크리트포장(B-type),t=20cm,m2
|
||||
D02251,철근가공 및 조립,"Type-Ⅱ-2,현장가공조립",ton
|
||||
D02252,철근운반(울진군 울진읍 대흥리),L=19.00km,톤
|
||||
D02253,사토처리,,m3
|
||||
D02254,도자운반-토사,L=43.66m,m3
|
||||
D02255,도자운반-암,L=39.07m,m3
|
||||
D02256,덤프운반-토사,L=293.78m,m3
|
||||
D02257,덤프운반-암,L=318.60m,m3
|
||||
D02258,도자운반-토사,L=38.30m,m3
|
||||
D02259,도자운반-암,L=40.90m,m3
|
||||
D02260,덤프운반-토사,L=385.00m,m3
|
||||
D02261,덤프운반-암,L=353.00m,m3
|
||||
D02262,레미콘타설,무근(장비사용타설),m3
|
||||
D02263,사토처리,대흥2공구 L=0.118km,m3
|
||||
L00001,건축목공,,인
|
||||
L00002,형틀목공,,인
|
||||
L00003,철근공,,인
|
||||
L00004,석공,,인
|
||||
L00005,콘크리트공,,인
|
||||
L00006,특별인부,,인
|
||||
L00007,보통인부,,인
|
||||
L00008,건설기계운전사,,인
|
||||
L00009,화물차운전사,,인
|
||||
L00010,일반기계운전사,,인
|
||||
L00011,배관공(수도),,인
|
||||
L00012,포장공,,인
|
||||
L00013,도장공,,인
|
||||
L00014,철공,,인
|
||||
L00015,용접공,,인
|
||||
L00016,화약취급공,,인
|
||||
L00017,작업반장,,인
|
||||
L00018,조경공,,인
|
||||
L00019,비계공,,인
|
||||
L00020,기구손료,"품의 %,노무비의%",L%
|
||||
L00021,일반기계운전사,,인
|
||||
L00023,건축목공,,인
|
||||
L00024,건설기계운전사,,인
|
||||
L00025,포장공,,인
|
||||
L00026,화물차운전사,,인
|
||||
L00027,일반기계운전사,,인
|
||||
L00032,배관공(수도),,인
|
||||
L00033,석공,,인
|
||||
L00034,포장공,,인
|
||||
L00037,벌목부,,인
|
||||
L00038,건설기계운전사,,인
|
||||
L00039,화물차운전사,,인
|
||||
L00040,배관공(수도),,인
|
||||
L00048,건설기계운전사,,인
|
||||
L00049,화물차운전사,,인
|
||||
L00050,일반기계운전사,,인
|
||||
L00061,배관공(수도),,인
|
||||
M00001,"철못,대구",N 50,KG
|
||||
M00002,"외송판재, 대구",30*300*3600,M3
|
||||
M00003,경유,저유황(0.05%),L
|
||||
M00004,요소,,KG
|
||||
M00005,인산질비료,용성인비인산,KG
|
||||
M00006,요소,,KG
|
||||
M00007,판재,외송,M3
|
||||
M00008,화강석,(원석 거창석),M3
|
||||
M00009,PVC파이프,VG1(50m/m),M
|
||||
M00010,조달수수료,재료비*0.54%,M%
|
||||
M00011,치즐,0.7m3,개
|
||||
M00012,휘발유,무연,L
|
||||
M00013,내부코너패널,(200+200)*1200mm,매
|
||||
M00014,천연부엽토,,KG
|
||||
M00015,국가지점번호(임도형),140*140*2200(설치비포함),식
|
||||
M00016,이형철근 D13,별도계상,TON
|
||||
M00017,와이어매쉬,"#6,100*100",M2
|
||||
M00018,경유,저유황,L
|
||||
M00019,시멘트,40kg/포,포
|
||||
M00020,측점표지판(임도번호판),180*100,EA
|
||||
M00021,휘발유,무연,L
|
||||
M00022,경유,저유황,L
|
||||
M00023,물,,L
|
||||
M00024,산림종자,(안고초),KG
|
||||
M00025,깬돌,구입-자재별산,m2
|
||||
M00026,와이어메쉬,#6 100*100,M2
|
||||
M00027,면목,28 20*20,m
|
||||
M00028,비닐,0.07mm,M2
|
||||
M00029,블레이드(커터),"d=320 400mm 14""xt3.2",개
|
||||
M00030,이형철근,별도계상,TON
|
||||
M00031,떼,,m2
|
||||
M00032,연마지,#120,매
|
||||
M00033,구조용강관(백),D=125mm(외경139.8mmx3.2t),m
|
||||
M00034,구조용강관(백),D=100mm(외경114.3mmx3.2t),m
|
||||
M00035,구조용강관(백),D=80mm(외경89.1mmx2.3),m
|
||||
M00036,구조용강관(백),D=50mm(외경60.5mmx2.3t),m
|
||||
M00037,광명단조합페인트,1종2류(철재),L
|
||||
M00038,열연강판,3.0mm,Kg
|
||||
M00039,자물쇠,50m/m,개
|
||||
M00040,조합페인트,"KSM-6020 2급,백색",L
|
||||
M00041,레미콘,별도계상,㎥
|
||||
M00042,"이형철근,SD400",D13~32m/m(세액별도),TON
|
||||
M00043,파쇄석(L3=45~55cm),상차가(영주),톤
|
||||
M00044,파쇄석(L3=45~55cm),상차가(울진),톤
|
||||
M00045,스틸그레팅(날개형),"1000×400×50mm,",M
|
||||
M00046,스틸그레이팅,1000×1000×100mm,개소
|
||||
M00047,PE관,Φ50m/m,M
|
||||
M00048,취수정뚜껑,삼각형,개소
|
||||
M00051,천연부엽토,,KG
|
||||
M00052,잡재료비,재료비의 %,M%
|
||||
M00053,파형강관,"Φ800m/m, 2.7t.아연도금",M
|
||||
M00054,파형강관,"Φ1000m/m, 2.7t.아연도금",M
|
||||
M00055,인산질비료,용성인비인산,KG
|
||||
M00056,요소,,KG
|
||||
M00057,폭 약,28mm(메가마이트Ⅰ),KG
|
||||
M00058,전기뇌관,3.5m,개
|
||||
M00059,PE 직관(수도용),D50mm,m
|
||||
M00060,PE유니온 볼밸브,D50mm,개
|
||||
M00061,구조용강관(백),D=32mm(외경42.7mmx2.0t),m
|
||||
M00062,신너(조합페인트용),KSM-6060(2종),ℓ
|
||||
M00063,조합페인트,KSM-6020 1급(황색),ℓ
|
||||
M00064,조합페인트,KSM-6020 1급(흑색),ℓ
|
||||
M00067,모 래,봉화 상차도,M3
|
||||
M00068,자 갈(40m/m),봉화 상차도,M3
|
||||
M00069,혼합석,영주 상차도,M3
|
||||
M00075,화강석,거창석,M3
|
||||
M00077,"아연도철선(결속선),서울","#20, 0.9mm",kg
|
||||
M00080,각재,외송,M3
|
||||
M00081,합판(내수),12×1220×2440,M2
|
||||
M00082,결속선(철선),"#20 , 0.9M/M",KG
|
||||
M00083,떼,,m2
|
||||
M00084,패널(유로폼),600*1200mm,매
|
||||
M00085,내부코너패널(유로폼),(100x200)x1200mm,매
|
||||
M00086,종자,"생태복원형,초본류",KG
|
||||
M00087,종자,"생태복원형,목본류",KG
|
||||
M00088,이음철물,,EA
|
||||
M00089,조임철물,(직교자재),EA
|
||||
M00090,받침철물,,EA
|
||||
M00091,철물,,EA
|
||||
M00093,잡품,주연료의 %,M%
|
||||
M00094,면목,42 30*30,m
|
||||
M00095,내수합판1급,12mmx1220x2440,M2
|
||||
M00099,잡유,주연료의 %,M%
|
||||
M00100,시멘트,별도계상,KG
|
||||
M00101,강관동바리,"Φ48.6x2.4,L=2.6~4.0",본
|
||||
M00102,강관비계,φ48.6m/m×2.3mm,M
|
||||
M00103,레미콘(봉화),25-18-80,M3
|
||||
M00104,레미콘(봉화),25-21-80,M3
|
||||
M00106,레미콘(봉화),25-24-120,M3
|
||||
M00109,잡품,주연료의 %,M%
|
||||
M00112,"이형철근,SD400",HD13m/m(부가세별도),TON
|
||||
M00113,"이형철근,SD400",HD16m/m(부가세별도),TON
|
||||
M00114,"이형철근,SD400",HD19m/m(부가세별도),TON
|
||||
M00115,"이형철근,SD400",HD22m/m(부가세별도),TON
|
||||
M00116,"이형철근,SD400",HD25m/m(부가세별도),TON
|
||||
M00117,시멘트,별도계상,KG
|
||||
M00118,치즐(대형 브레이카),0.7 m3,본
|
||||
M00125,레미콘,별도계상,M3
|
||||
M00131,패널,600*1200mm,매
|
||||
M00132,내부코너패널,(200+200)*1200mm,매
|
||||
M00133,천연부엽토,,KG
|
||||
M00157,천연부엽토,,KG
|
||||
M00211,산림종자,참싸리(박피),KG
|
||||
M00214,파형강관(800M/M),별도계상,M
|
||||
M00219,파형강관(1000M/M),별도계상,M
|
||||
M00222,파형강관(800mm),별도계상,M
|
||||
M00227,이형철근 D13,별도계상,TON
|
||||
M00231,와이어매쉬,"#6,100*100",M2
|
||||
M00255,치즐,0.7m3,개
|
||||
M00275,모래,상차가(안동),M3
|
||||
M00276,자갈,상차가(영주),M3
|
||||
M00286,파쇄석(L3=45~55cm),상차가(영주),톤
|
||||
M00292,치즐,0.7m3,개
|
||||
M00299,시 멘 트,40Kg/포,대
|
||||
M00302,휘발유,무연,L
|
||||
M00303,경유,저유황,L
|
||||
M00344,레미콘(울진),25-18-80(세액포함),M3
|
||||
M00404,복합비료,21-17-17,㎏
|
||||
M00424,레미콘(울진),25-21-80(세액포함),M3
|
||||
M00453,깬돌,구입-자재별산,m2
|
||||
M00488,모래,별도계상,㎥
|
||||
M00495,자 갈(40m/m),울진,M3
|
||||
M00513,막자갈,상차가(영주),M3
|
||||
M00580,잡재료비,재료비의 %,M%
|
||||
M00654,이형철근,D13~D32,Ton
|
||||
M00661,종자,"생태복원형,초본류",KG
|
||||
M00671,종자,"생태복원형,목본류",KG
|
||||
M00684,돌(L3=45cm),별도계상,m2
|
||||
M00745,임도번호판,180×100,EA
|
||||
M00747,국가지점번호판,300x486x1950,개
|
||||
M00758,경유,저유황,L
|
||||
M00759,휘발유,무연,L
|
||||
M00760,P.V.C PIPE,VG2(50m/m),M
|
||||
M00761,돌(L3=45cm),별도계상,m2
|
||||
M00762,막자갈,별도계상,M3
|
||||
M00763,모 래,상차가(영덕),M3
|
||||
M00764,자 갈(40m/m),상차가(영덕),M3
|
||||
M00765,막자갈,상차가(영덕),M3
|
||||
M00766,시 멘 트,40Kg/포,대
|
||||
M00767,깬돌,상차가(영덕),ton
|
||||
M00768,떼,,m2
|
||||
M00770,잡품,주연료의 %,M%
|
||||
M00775,녹화끈,6mm×200m,M
|
||||
M00776,녹화마대,15cm×20m,M
|
||||
M00777,발근촉진제(루트테크),1ℓ/병,g
|
||||
M00778,살균제(톱신페스트),1kg/포,g
|
||||
M00779,혼합석,상차가(영덕),M3
|
||||
M00782,모래,울진,M3
|
||||
M00792,파쇄암,별도계상,㎡
|
||||
M00793,이형철근,별도계상,Ton
|
||||
M00798,파형강관,"Φ800m/m, 2.7t",M
|
||||
M00815,폭약,28㎜(메가마이트Ⅰ),KG
|
||||
M00816,전기뇌관(MS),3.5m×500개(하이데토),EA
|
||||
M00817,BUTTON BIT,Ø38×76㎜,EA
|
||||
M00818,유압드릴샹크,T38×CM470,EA
|
||||
M00819,유압식드릴스리브,T38×190mm,EA
|
||||
M00820,유압식드릴롯드,T38×R32x3660mm,EA
|
||||
M00832,인공토양(녹생토),암절개지 및 특수지반 녹화용 (700kg/㎥),M3
|
||||
M00862,산림종자,(비수리),KG
|
||||
M00863,유기질퇴비,,㎏
|
||||
M00865,파형강관,별도계상,M
|
||||
M00904,유로폼(패널),600*1200,매
|
||||
M00905,내부코너패널,(200+200)*1200,매
|
||||
M00914,와이어매쉬,"#6,(100*100)",M2
|
||||
M00915,블레이드,14"X 3.2,개
|
||||
M00916,PE비닐(저밀도),0.03x180x183,M2
|
||||
M00918,조달수수료,,T%
|
||||
M00920,공구손료,인건비의 %,L%
|
||||
M00921,국가지점번호판,임도(말뚝형),개소
|
||||
M00923,도로반사경(지주포함),D=1000mm(STS),EA
|
||||
M00924,파쇄암,상차가(영덕 축산),ton
|
||||
M00932,경유,저유황,L
|
||||
M00933,휘발유,무연,L
|
||||
M00934,파형강관,"Φ1000m/m, 2.7t",M
|
||||
M00938,면목,A25,M
|
||||
M00939,내부코너패널(유로폼),(100x200)x1200mm,매
|
||||
M00940,와이어메쉬,#6-100mm×100mm,m2
|
||||
M00941,자 갈,별도계상,M3
|
||||
M00943,결속선(철선),"#20 , 0.9M/M",KG
|
||||
M00944,"이형철근,SD400",HD16m/m,TON
|
||||
M00945,파형강관이음관,Φ800m/m,개
|
||||
M00946,파형강관이음관,Φ1000m/m,개
|
||||
M00947,경유,저유황,L
|
||||
M00948,깬돌(L3=45cm),별도계상,m2
|
||||
M00949,"파형강관(68X13,1RS)",별도계상,M
|
||||
M00950,공구손료 및 잡재료,노무비의 %,L%
|
||||
M00951,깬돌(L3=35cm),별도계상,m2
|
||||
M00952,레미콘(울진),25-18-80,M3
|
||||
M00953,파형강관,"Φ1200m/m, 3.2t",M
|
||||
M00954,파형강관이음관,Φ1200m/m,개
|
||||
M00985,레미콘,별도계상,M3
|
||||
M00996,안전표지판,"삼각,D=900",개
|
||||
M00998,산불취수장안내판,800x700x2000,개
|
||||
M01016,PVC지수판,200x5T KSM3805,M
|
||||
M01017,PVC용접봉,Ø3.2 (국산),KG
|
||||
M01019,PVC엘보,D50mm,개
|
||||
M01020,PVC벨브소켓,D50mm,개
|
||||
M01024,측구수로관,300x300x120,본
|
||||
M01025,스틸그레이팅(중하중용),395x995x50,개
|
||||
M01031,"이형철근,SD400",D13~32m/m(세액별도),TON
|
||||
M01054,물,,ℓ
|
||||
M01082,큰돌(별도계상),직경 0.6~0.8m,M2
|
||||
M01087,PVC파이프(일반용VG2),50㎜ × 4m,M
|
||||
M01090,PE직관,D75mm,m
|
||||
M01091,보호덮개,2550×2550,EA
|
||||
M01092,파형강관(2.7T)-영월,Φ800-1RS,M
|
||||
M01094,파형강관이음관-영월,φ800m/m,개
|
||||
M01095,파형강관이음관-영월,φ1200m/m,개
|
||||
M01097,레미콘(영월),25-21-12,M3
|
||||
M01098,혼합골재,영월,M3
|
||||
M01110,파형강관(3.2T)-영월,Φ1200-1RS,M
|
||||
M01111,파형강관이음관-영월,φ1000m/m,개
|
||||
M01112,파형강관(2.7T)-영월,Φ1000-1RS,M
|
||||
M01137,표지판지주,"D=76.3mm, 3.5M",개
|
||||
M01147,큰돌(영월),직경 0.6~0.8m,Ton
|
||||
M01150,떼,,m2
|
||||
M01225,종자,초본류,KG
|
||||
M01226,종자,목본류,KG
|
||||
M01324,낙석방지책,H2500×W2000(표준),경간
|
||||
M01325,낙석방지책,H2500×W2000(단부),경간
|
||||
M01436,P.V.C PIPE,VG2(50m/m),M
|
||||
M01513,파형강관,"Φ800m/m, 2.7t",M
|
||||
M01514,모래,상차가(안동),M3
|
||||
M01515,자갈,상차가(영주),M3
|
||||
M01516,막자갈,상차가(영주),M3
|
||||
M01517,시멘트,40Kg/포,대
|
||||
M01518,"이형철근,SD400",D13~32m/m(세액별도),TON
|
||||
M01519,파쇄석(L3=45~55cm),상차가(영주),톤
|
||||
S00001,굴삭기(무한궤도),0.2㎥,천원
|
||||
S00002,굴삭기(무한궤도),0.7㎥,천원
|
||||
S00003,대형 브레이커,0.7㎥,천원
|
||||
S00004,덤프트럭,2.5톤,천원
|
||||
S00005,덤프트럭 자동덮개시설,15톤용,천원
|
||||
S00006,트럭 트랙터 및 평판트레일러,20톤,천원
|
||||
S00007,콘크리트 믹서,0.45㎥,천원
|
||||
S00008,트럭탑재형 크레인,5톤,천원
|
||||
S00009,굴삭기(타이어),0.6㎥,천원
|
||||
S00010,덤프트럭,15톤,천원
|
||||
S00011,유압식 진동콤팩터(굴삭기 부착용),0.7㎥,천원
|
||||
S00012,불도저(무한궤도),19톤,천원
|
||||
S00013,덤프트럭,24톤,천원
|
||||
S00014,덤프트럭,2.5톤,천원
|
||||
S00015,트럭탑재형 크레인,10톤,천원
|
||||
S00016,물탱크(살수차),5500ℓ,천원
|
||||
S00017,굴삭기(무한궤도),1.0㎥,천원
|
||||
S00018,동력분무기,4.85㎾,천원
|
||||
S00019,진동롤러(자주식),12톤,천원
|
||||
S00020,커터(콘크리트 및 아스팔트용),320-440mm,천원
|
||||
S00021,부착용 집게,0.6~0.8㎥,천원
|
||||
S00022,크롤러드릴(탑승유압식),110㎾,천원
|
||||
S00023,유압식진동콤팩터,0.7m3 굴삭기용,천원
|
||||
S00024,부착용 집게,0.6~0.8㎥,천원
|
||||
S00025,굴삭기(무한궤도),0.4㎥,천원
|
||||
S00026,대형 브레이커,0.4㎥,천원
|
||||
S00028,구역화물자동차(8톤),40km이내,회
|
||||
S00031,구역화물자동차,10.5톤(70km 이내),회
|
||||
S00036,트럭 트랙터 및 평판트레일러,20Ton,천원
|
||||
S00038,콘크리트믹서0.45m3,,천원
|
||||
S00043,크로울러드릴(탑승유압식),110kw,천원
|
||||
S00051,치즐(0.7m3),,천원
|
||||
S00058,트럭탑재형크레인,5톤,천원
|
||||
S00073,구역화물자동차,5톤(20km 이내),회
|
||||
S00075,구역화물자동차,5톤(40km 이내),회
|
||||
S00102,덤프트럭,4.5톤,천원
|
||||
S00104,불도저(무한궤도),19톤,천원
|
||||
S00114,트럭탑재형 크레인,5톤,천원
|
||||
S00138,부착용집게,굴삭기0.7m3,천원
|
||||
S00145,덤프트럭2.5톤,,천원
|
||||
S00146,굴삭기(0.6m3),타이어,천원
|
||||
S00151,굴착기(타이어),0.6㎥,천원
|
||||
S00162,굴삭기(무한궤도),0.2㎥,천원
|
||||
S00163,굴삭기(무한궤도),0.4㎥,천원
|
||||
S00164,굴삭기(무한궤도),0.7㎥,천원
|
||||
S00165,덤프트럭 자동덮개시설,24톤용,천원
|
||||
S00167,덤프트럭24.0톤,,천원
|
||||
S00168,덤프자동덮개,24톤,천원
|
||||
S00169,부착용 집게,0.6~0.8㎥,천원
|
||||
S00170,굴삭기(타이어),0.6㎥,천원
|
||||
S00174,대형브레이카용 치즐,0.7㎥,천원
|
||||
S00175,유압식 진동콤팩터(굴삭기 부착용),0.7㎥,천원
|
||||
S00202,굴삭기(무한궤도),0.2㎥,천원
|
||||
S00203,굴삭기(무한궤도),0.4㎥,천원
|
||||
S00204,굴삭기(무한궤도),0.6㎥,천원
|
||||
S00205,굴삭기(무한궤도),0.7㎥,천원
|
||||
S00206,굴삭기(무한궤도),0.8㎥,천원
|
||||
S00207,굴삭기(무한궤도),1.0㎥,천원
|
||||
S00212,굴삭기(타이어),0.6㎥,천원
|
||||
S00233,대형 브레이커,0.7㎥,천원
|
||||
S00276,트럭탑재형 크레인,10톤,천원
|
||||
S00346,트럭트랙터 및 트레일러,20톤,$
|
||||
S00391,커터(콘크리트 및 아스팔트용),320-440mm,천원
|
||||
S00502,모터그레이더,3.6m (일반용),천원
|
||||
S00603,덤프트럭,4.5톤,천원
|
||||
S00607,덤프트럭,15톤,천원
|
||||
S00610,덤프트럭 자동덮개시설,15톤용,천원
|
||||
S00724,덤프트럭,24톤,천원
|
||||
S00734,운반비 계,,T%
|
||||
S00741,굴삭기(타이어),0.6㎥,천원
|
||||
S01045,공구손료,인건비의 %,L%
|
||||
S01262,부착용집게,0.6-0.8㎥용,천원
|
||||
S01263,동력분무기,4.85㎾,천원
|
||||
S01309,진동롤러(자주식),10톤,천원
|
||||
S02104,크레인(타이어),10톤,천원
|
||||
S02107,트럭탑재형 크레인,5톤,천원
|
||||
S02108,트럭탑재형 크레인,10톤,천원
|
||||
S02702,트럭 트랙터 및 평판트레일러,20톤,천원
|
||||
S04330,커터(콘크리트 및 아스팔트용),320-440mm,천원
|
||||
S04612,콘크리트 진동기,45φ(2.6㎾)엔진식플렉시블형,천원
|
||||
S05405,크롤러드릴(탑승유압식),110㎾,천원
|
||||
S07204,물탱크(살수차),5500ℓ,천원
|
||||
S07205,물탱크(살수차),16000ℓ,천원
|
||||
S07206,이동식 임목파쇄기,93.25㎾,천원
|
||||
S07208,부착용 집게,0.2㎥,천원
|
||||
S07209,부착용 집게,0.6~0.8㎥,천원
|
||||
S07210,동력분무기,4.85㎾,천원
|
||||
S07507,발전기,250㎾,천원
|
||||
S09600,국가지점번호검증수수료,,식
|
||||
S11006,일반하역요금(하차비),,원
|
||||
S11012,구역화물 (2.5TON),40㎞ 이내,TON
|
||||
S11039,국가지점번호판 검증수수료,별도계상,식
|
||||
W00002,폐기물처리,폐콘크리트,TON
|
||||
W00003,폐기물운반,30km이하,TON
|
||||
W00004,깬돌,구입별산,m2
|
||||
W00005,켜쌓기적용,전체금액의 %,T%
|
||||
W00006,무대처리,,m3
|
||||
W00045,폐기물처리,폐콘크리트,TON
|
||||
W00046,폐기물운반,30km이하,TON
|
||||
W01835,깬돌,구입별산,m2
|
||||
W02335,깬돌,구입별산,Ton
|
||||
W02336,무대처리,,m3
|
||||
X00001,굴삭기(무한궤도),0.2㎥,X
|
||||
X00002,굴삭기(무한궤도),0.7㎥,X
|
||||
X00003,덤프트럭,15톤,X
|
||||
X00004,덤프트럭,"2.5톤,(암석)",X
|
||||
X00005,덤프트럭 자동덮개시설,15톤용,X
|
||||
X00006,트럭탑재형 크레인,5톤,X
|
||||
X00007,트럭 트랙터 및 평판트레일러,20톤,X
|
||||
X00008,콘크리트 믹서,0.45㎥,X
|
||||
X00009,굴삭기(타이어),0.6㎥,X
|
||||
X00010,굴삭기(무한궤도),"0.7㎥,(브레이커조합)",X
|
||||
X00011,유압식 진동콤팩터(굴삭기 부착용),0.7㎥,X
|
||||
X00012,굴삭기(무한궤도),"0.7㎥,(암석)",X
|
||||
X00013,불도저(무한궤도),19톤,X
|
||||
X00014,덤프트럭,24톤,X
|
||||
X00015,덤프트럭,"15톤,(암석)",X
|
||||
X00016,커터(콘크리트 및 아스팔트용),320-440mm,X
|
||||
X00017,물탱크(살수차),5500ℓ,X
|
||||
X00018,동력분무기,4.85㎾,X
|
||||
X00019,진동롤러(자주식),12톤,X
|
||||
X00020,굴삭기(타이어),"0.6㎥,(부착용집게)",X
|
||||
X00021,크롤러드릴(탑승유압식),110㎾,X
|
||||
X00022,굴삭기(무한궤도),"1.0㎥,(암석)",X
|
||||
X00023,굴삭기+부착용집게(06),,X
|
||||
X00024,덤프트럭,4.5톤,X
|
||||
X00025,굴착기(무한궤도),0.2㎥,X
|
||||
X00026,굴삭기(무한궤도),0.4㎥,X
|
||||
X00027,굴삭기(무한궤도),"0.4㎥,(암석)",X
|
||||
X00028,굴삭기(무한궤도),"0.4㎥,(브레이커조합)",X
|
||||
X00029,대형 브레이커,0.7㎥,X
|
||||
X00030,덤프트럭10.5ton(암),할증율:1.25,X
|
||||
X00031,덤프트럭15ton(암),할증율:1.25,X
|
||||
X00032,덤프자동덮개,15톤,X
|
||||
X00044,트럭탑재형크레인,5톤,X
|
||||
X00046,트럭 트랙터 및 평판트레일러,20Ton,X
|
||||
X00048,콘크리트믹서0.45m3,,X
|
||||
X00055,크로울러드릴,탑승유압식,X
|
||||
X00060,덤프트럭,2.5톤,X
|
||||
X00061,덤프트럭,4.5톤,X
|
||||
X00063,덤프트럭,10.5톤,X
|
||||
X00064,덤프트럭,15톤,X
|
||||
X00074,덤프트럭2.5ton(토사),,X
|
||||
X00084,불도우저19ton,(암),X
|
||||
X00085,덤프트럭,24톤,X
|
||||
X00086,덤프자동덮개,24톤,X
|
||||
X00087,덤프트럭24ton(토사),,X
|
||||
X00088,굴삭기(0.7m3),할증율:1.20,X
|
||||
X00089,굴삭기+부착용 집게(0.6m3),,X
|
||||
X00090,덤프트럭(2.5ton),할증율:1.25,X
|
||||
X00092,덤프트럭4.5ton(암),,X
|
||||
X00094,진동롤러(자주식),10톤,X
|
||||
X00099,굴삭기+진동콤팩터,0.7m3,X
|
||||
X00101,굴삭기(1.0m3),할증율:1.20,X
|
||||
X00102,덤프트럭,10.5톤,X
|
||||
X00104,불도저(무한궤도),19톤,X
|
||||
X00105,굴삭기(타이어),"0.6㎥,(부착용집게,0.7~0.8㎥)",X
|
||||
X00127,트럭트랙터및트레일러,20톤,X
|
||||
X00202,굴삭기(무한궤도),0.2㎥,X
|
||||
X00203,굴삭기(무한궤도),0.4㎥,X
|
||||
X00204,굴삭기(무한궤도),0.6㎥,X
|
||||
X00205,굴삭기(무한궤도),0.7㎥,X
|
||||
X00206,굴삭기(무한궤도),0.8㎥,X
|
||||
X00207,굴삭기(무한궤도),1.0㎥,X
|
||||
X00212,굴삭기(타이어),0.6㎥,X
|
||||
X00233,굴삭기(무한궤도),"0.7㎥,(브레이커조합)",X
|
||||
X00268,굴삭기(무한궤도),0.2㎥:할증120%,X
|
||||
X00270,굴삭기(무한궤도),0.7㎥:할증120%,X
|
||||
X00272,덤프트럭,2.5톤:할증125%,X
|
||||
X00275,덤프트럭,15톤:할증125%,X
|
||||
X00283,굴삭기(타이어),0.6㎥,X
|
||||
X00292,덤프트럭,24톤,X
|
||||
X00350,콘크리트 믹서,0.45㎥,X
|
||||
X00352,커터(콘크리트 및 아스팔트용),320-440mm,X
|
||||
X00503,모터그레이더,3.6m (일반용),X
|
||||
X00568,트럭탑재형 크레인,10톤,X
|
||||
X00603,덤프트럭,4.5톤,X
|
||||
X00606,덤프트럭,15톤,X
|
||||
X00607,덤프트럭,"15톤,(암석)",X
|
||||
X00610,덤프트럭 자동덮개시설,15톤용,X
|
||||
X00740,덤프트럭,24톤(할증125%),X
|
||||
X00750,굴삭기+부착용집게(06),,X
|
||||
X00751,동력분무기,4.85㎾,X
|
||||
X01309,진동롤러(자주식),10톤,X
|
||||
X02104,크레인(타이어),10톤,X
|
||||
X02107,트럭탑재형 크레인,5톤,X
|
||||
X02108,트럭탑재형 크레인,10톤,X
|
||||
X02702,트럭 트랙터 및 평판트레일러,20톤,X
|
||||
X04330,커터(콘크리트 및 아스팔트용),320-440mm,X
|
||||
X05405,크롤러드릴(탑승유압식),110㎾,X
|
||||
X07204,물탱크(살수차),5500ℓ,X
|
||||
X07205,물탱크(살수차),16000ℓ,X
|
||||
X07206,이동식 임목파쇄기,93.25㎾,X
|
||||
X07207,부착용 집게,0.2㎥,X
|
||||
X07208,부착용 집게,0.6~0.8㎥,X
|
||||
X07210,동력분무기,4.85㎾,X
|
||||
X07507,발전기,250㎾,X
|
||||
X08802,콘크리트 진동기,45φ(2.6㎾)엔진식플렉시블형,X
|
||||
|
@@ -1,8 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""큰 편집 폼 깊이 파싱 + PM_* 인쇄폼 ↔ SET_REP 서식 대응."""
|
||||
import sys, io, re, pathlib, struct, importlib.util, collections
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
spec=importlib.util.spec_from_file_location("pd", r"D:\aislo-wt\sub\resources\knowledge\original\경쟁사 프로그램\STmate 분석\40_스크립트\parse_dfm.py")
|
||||
spec=importlib.util.spec_from_file_location("pd", REPO + r"\resources\knowledge\original\경쟁사 프로그램\STmate 분석\40_스크립트\parse_dfm.py")
|
||||
pd=importlib.util.module_from_spec(spec); spec.loader.exec_module(pd)
|
||||
F=pathlib.Path(r"C:\Users\umsan\AppData\Local\Temp\claude\D--aislo-wt-sub\df75230a-b05b-4088-ad34-bb0c9da0a312\scratchpad\forms")
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""자원 이름·코드 목록이 평문으로 읽히는 자리를 모은다 (단가 없이도 축 매칭에 쓸 것)."""
|
||||
import sys, io, re, pathlib, zipfile, struct, warnings, collections
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
def _repo_root():
|
||||
p=pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q/"resources"/"knowledge").is_dir(): return q
|
||||
return pathlib.Path(r"D:\aislo-wt\sub")
|
||||
REPO=_repo_root(); PRAC=REPO/"resources"/"knowledge"/"original"/"실무문서"
|
||||
|
||||
def dbf(zf,n):
|
||||
b=zf.read(n); nrec,hlen,rlen=struct.unpack_from("<IHH",b,4)
|
||||
f=[];o=32
|
||||
while b[o]!=0x0D: f.append((b[o:o+11].rstrip(b"\0").decode("cp949","replace"),b[o+16]));o+=32
|
||||
R=[]
|
||||
for i in range(nrec):
|
||||
r=b[hlen+i*rlen:hlen+(i+1)*rlen]; d={};c=1
|
||||
for nm,ln in f: d[nm]=r[c:c+ln].decode("cp949","replace").strip(); c+=ln
|
||||
R.append(d)
|
||||
return R
|
||||
|
||||
# ① STC COSTN — 코드·명칭·규격·단위
|
||||
res=collections.OrderedDict()
|
||||
for p in sorted(PRAC.rglob("*.STC")):
|
||||
try: rows=dbf(zipfile.ZipFile(p),"COSTN.DBF")
|
||||
except Exception: continue
|
||||
for r in rows:
|
||||
c=(r.get("CODE") or "").strip()
|
||||
if not c: continue
|
||||
res.setdefault(c, (r.get("NAME","").strip(), r.get("SIZE","").strip(), r.get("UNIT","").strip()))
|
||||
print("### ① STC `COSTN.DBF` (평문) — 코드·명칭·규격·단위")
|
||||
print(" 실무 7건 합쳐 서로 다른 코드 %d개" % len(res))
|
||||
kind=collections.Counter(c[0] for c in res)
|
||||
print(" 접두별: %s" % dict(sorted(kind.items())))
|
||||
|
||||
# ② 출력 XLSX 목록표 시트
|
||||
SHEETS=["재료비목록표","노무비목록표","경비목록표","중기목록표","일위대가목록표","단가산출근거목록표","일식견적목록표"]
|
||||
xl=collections.defaultdict(collections.OrderedDict)
|
||||
for p in sorted(PRAC.rglob("*.xlsx")):
|
||||
if p.name.startswith("~$"): continue
|
||||
try: wb=openpyxl.load_workbook(p,data_only=True,read_only=True)
|
||||
except Exception: continue
|
||||
if "공사원가계산서" not in wb.sheetnames: continue
|
||||
for s in SHEETS:
|
||||
if s not in wb.sheetnames: continue
|
||||
for row in wb[s].iter_rows(min_row=1,max_row=wb[s].max_row,max_col=8,values_only=True):
|
||||
cells=[("" if v is None else str(v)).strip() for v in row]
|
||||
code=next((c for c in cells if re.fullmatch(r"[A-Z]\d{5}", c)), "")
|
||||
if not code: continue
|
||||
nm=next((c for c in cells if len(c)>1 and not re.fullmatch(r"[\d.,]+", c) and c!=code), "")
|
||||
xl[s].setdefault(code, nm)
|
||||
print("\n### ② 출력 XLSX 목록표 시트 (평문)")
|
||||
tot=0
|
||||
for s in SHEETS:
|
||||
if s in xl: print(" %-20s 코드 %4d개" % (s, len(xl[s]))); tot+=len(xl[s])
|
||||
print(" 합계 %d개" % tot)
|
||||
|
||||
print("\n### ③ 합치면")
|
||||
allc=dict(res)
|
||||
for s in xl:
|
||||
for c,n in xl[s].items(): allc.setdefault(c,(n,"",""))
|
||||
print(" 서로 다른 자원·단가 코드 %d개" % len(allc))
|
||||
k=collections.Counter(c[0] for c in allc)
|
||||
LBL={"M":"재료","L":"노무","S":"경비","X":"중기","B":"일위대가","D":"단가산출","W":"일식/견적","C":"기타","T":"제목","E":"계"}
|
||||
for kk,v in sorted(k.items()): print(" %s %-8s %4d개" % (kk, LBL.get(kk,"?"), v))
|
||||
out=REPO/"resources"/"knowledge"/"original"/"경쟁사 프로그램"/"STmate 분석"/"30_원자료"/"stmate_code_name_list.csv"
|
||||
import csv
|
||||
with open(out,"w",newline="",encoding="utf-8-sig") as fh:
|
||||
w=csv.writer(fh); w.writerow(["code","name","size","unit"])
|
||||
for c,(n,sz,u) in sorted(allc.items()): w.writerow([c,n,sz,u])
|
||||
print("\n → 저장: %s" % out.name)
|
||||
@@ -1,5 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import pathlib, zipfile, struct, sys, io
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
|
||||
def rd(zf, name):
|
||||
@@ -48,7 +57,7 @@ print(" RATE_A 첫행: %s" % " ".join(x or "·" for x in ra[0]))
|
||||
print(" RATE_M 첫행: %s" % " ".join(x or "·" for x in rm[0]))
|
||||
|
||||
print("\n### 다른 프로젝트에도 RATE_A/RATE_B 가 있나")
|
||||
for p in sorted(pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서").rglob("*.STC")):
|
||||
for p in sorted(pathlib.Path(REPO + r"\resources\knowledge\original\실무문서").rglob("*.STC")):
|
||||
try:
|
||||
zz = zipfile.ZipFile(p)
|
||||
rs = sorted(n for n in zz.namelist() if re.match(r"RATE", n, re.I))
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""진행률 장부 — 원천별로 무엇을 어디까지 봤나 실제로 센다."""
|
||||
import sys, io, pathlib, zipfile, struct, re, warnings, collections
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
SYS = pathlib.Path(r"C:\경영정보(주)\System")
|
||||
PRAC = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
PRAC = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
|
||||
# ── ① 설치 폴더 186개 ──
|
||||
files = [p for p in SYS.rglob("*") if p.is_file()]
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""COSTN.SMT 의 Cm(사이클) 식과 인자 정의를 꼴별로 모은다."""
|
||||
import sys, io, re, pathlib, zipfile, collections
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
PRAC = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
PRAC = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
SRC = [pathlib.Path(r"C:\경영정보(주)\STmate 자료\설계자료\실습(맛보기)\COSTN.SMT")] + sorted(PRAC.rglob("*.STC"))
|
||||
|
||||
def body(b):
|
||||
|
||||
@@ -6,7 +6,16 @@ sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="repla
|
||||
warnings.filterwarnings("ignore")
|
||||
import openpyxl
|
||||
|
||||
BASE = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서")
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
|
||||
BASE = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서")
|
||||
STC = BASE/"13-2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.STC"
|
||||
XLS = BASE/"2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.xlsx"
|
||||
D = Decimal
|
||||
|
||||
@@ -5,7 +5,16 @@ from decimal import Decimal as D, ROUND_DOWN, ROUND_HALF_UP, ROUND_UP
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore")
|
||||
import openpyxl
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
def dn(x): return D(x).quantize(D(1), rounding=ROUND_DOWN)
|
||||
|
||||
def dbf(zf,name):
|
||||
|
||||
@@ -2,13 +2,22 @@
|
||||
"""중기사용료 호표에서 시간당 손료율·연료·잡품률을 뽑는다."""
|
||||
import sys, io, pathlib, warnings, re, collections
|
||||
from decimal import Decimal as D
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
def dec(v):
|
||||
if v in (None,""): return None
|
||||
try: return D(str(v))
|
||||
except Exception: return None
|
||||
P = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서\2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.xlsx")
|
||||
P = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서\2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.xlsx")
|
||||
ws = openpyxl.load_workbook(P, data_only=True)["중기사용료"]
|
||||
rows=[list(r) for r in ws.iter_rows(min_row=1,max_row=ws.max_row,max_col=12,values_only=True)]
|
||||
호표=[]; cur=None; title=None
|
||||
|
||||
@@ -2,13 +2,22 @@
|
||||
"""자재 채택 규칙 검정 — 적용단가가 후보 중 무엇인가."""
|
||||
import sys, io, pathlib, warnings, collections
|
||||
from decimal import Decimal as D
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
def dec(v):
|
||||
if v in (None,""): return None
|
||||
try: return D(str(v))
|
||||
except Exception: return None
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
SLOTS = [("조달가격",5),("물가자료",7),("물가정보",9),("거래가격",11),("견적단가",13)]
|
||||
APPLY = 15
|
||||
stat = collections.Counter(); examples=[]
|
||||
|
||||
@@ -1,9 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys, io, pathlib, zipfile, struct, re, warnings
|
||||
from decimal import Decimal as D, ROUND_DOWN
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
B = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서\25년 산불진화임도(기번8)(울진소광)")
|
||||
B = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서\25년 산불진화임도(기번8)(울진소광)")
|
||||
def dbf(zf,name):
|
||||
b=zf.read(name); nrec,hlen,rlen=struct.unpack_from("<IHH",b,4)
|
||||
f=[];o=32
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
"""설계변경 직접비 — 차수1(당초)·차수2(변경)를 내역에서 다시 세워 출력과 대조."""
|
||||
import sys, io, pathlib, zipfile, struct, re, warnings
|
||||
from decimal import Decimal as D, ROUND_DOWN
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
def dn(x): return D(x).quantize(D(1), rounding=ROUND_DOWN)
|
||||
@@ -37,7 +46,7 @@ def direct(boq, s):
|
||||
return (sum(g(r,"M_AMT"+s) for r in leaf), sum(g(r,"L_AMT"+s) for r in leaf),
|
||||
sum(g(r,"S_AMT"+s) for r in leaf), len(leaf), ok, bad)
|
||||
|
||||
BASE=pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서\20250527 2025년 계류보전사업(기번1-영덕.병곡.영리.산214-1)(변경)")
|
||||
BASE=pathlib.Path(REPO + r"\resources\knowledge\original\실무문서\20250527 2025년 계류보전사업(기번1-영덕.병곡.영리.산214-1)(변경)")
|
||||
stc=next(BASE.rglob("*.STC")); xls=next(p for p in BASE.rglob("*.xlsx") if p.stem==stc.stem)
|
||||
boq=dbf(zipfile.ZipFile(stc),"BOQ11.DBF")
|
||||
ws=openpyxl.load_workbook(xls,data_only=True)["공사원가계산서"]
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""변경 차수 저장 구조 — DBF 슬롯 4벌 vs 화면 8차의 어긋남을 가른다."""
|
||||
import sys, io, re, pathlib, zipfile, struct, collections
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
|
||||
def fields(b):
|
||||
f=[];o=32
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""화면 선택축 ↔ PRJLST.SMT 저장키 대응, 그리고 간접비 식 템플릿 전수."""
|
||||
import sys, io, re, pathlib, zipfile, collections
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
PRAC = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
PRAC = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
SYS = pathlib.Path(r"C:\경영정보(주)\System")
|
||||
|
||||
# ── PRJLST.SMT 키 모으기 ─────────────────────────
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
"""남은 시트 전수 훑기 — 머리 몇 줄과 수량×단가=금액 반올림 판정."""
|
||||
import sys, io, pathlib, warnings, collections
|
||||
from decimal import Decimal as D, ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
def q(x,m): return D(x).quantize(D(1), rounding=m)
|
||||
@@ -9,7 +18,7 @@ def dec(v):
|
||||
if v in (None,""): return None
|
||||
try: return D(str(v))
|
||||
except Exception: return None
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
REST = ["중기시간금액집계표","일위대가수량금액집계표","단가산출근거수량금액집계표","일식견적수량금액집계표",
|
||||
"총괄설계내역서","총괄내역서","착공내역서","설계변경내역서",
|
||||
"일위대가목록표","단가산출근거목록표","중기목록표","재료비목록표","노무비목록표","경비목록표","일식견적목록표"]
|
||||
|
||||
@@ -2,10 +2,19 @@
|
||||
"""COSTN.SMT 전개 텍스트 전수 파싱 — 자원 참조·품·할증·중간라벨·Q식.
|
||||
문법 출처: original/원가계산/STmate/SIxMemo_구조.md (2026-08-15)."""
|
||||
import sys, io, re, pathlib, zipfile, collections, json
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
|
||||
SRC = [pathlib.Path(r"C:\경영정보(주)\STmate 자료\설계자료\실습(맛보기)\COSTN.SMT")]
|
||||
for p in sorted(pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서").rglob("*.STC")):
|
||||
for p in sorted(pathlib.Path(REPO + r"\resources\knowledge\original\실무문서").rglob("*.STC")):
|
||||
SRC.append(p)
|
||||
|
||||
RE_REF = re.compile(r"&([A-Z])(\d{5})([A-Z])&") # &M00034M& 종류·번호·성분
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""큰 편집 폼 깊이 파싱 + PM_* 인쇄폼 ↔ SET_REP 서식 대응."""
|
||||
import sys, io, re, pathlib, struct, importlib.util, collections
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
spec=importlib.util.spec_from_file_location("pd", r"D:\aislo-wt\sub\resources\knowledge\original\경쟁사 프로그램\STmate 분석\40_스크립트\parse_dfm.py")
|
||||
spec=importlib.util.spec_from_file_location("pd", REPO + r"\resources\knowledge\original\경쟁사 프로그램\STmate 분석\40_스크립트\parse_dfm.py")
|
||||
pd=importlib.util.module_from_spec(spec); spec.loader.exec_module(pd)
|
||||
F=pathlib.Path(r"C:\Users\umsan\AppData\Local\Temp\claude\D--aislo-wt-sub\df75230a-b05b-4088-ad34-bb0c9da0a312\scratchpad\forms")
|
||||
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""STC 프로젝트 안의 표들이 실제로 읽히는지 본다. 복호화 시도 없음."""
|
||||
import pathlib, zipfile, struct, sys, io, collections
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
|
||||
roots = [pathlib.Path(r"C:\경영정보(주)"),
|
||||
pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")]
|
||||
pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")]
|
||||
stcs = []
|
||||
for r in roots:
|
||||
if r.exists(): stcs += sorted(r.rglob("*.STC"))
|
||||
|
||||
+10
-1
@@ -1,9 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""T1 대체 — 통제시험 없이, 모든 프로젝트에서 동시에 성립하는 좌표만 남긴다."""
|
||||
import sys, io, pathlib, re, zipfile, struct, collections, warnings, difflib
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
def dbf(zf,name):
|
||||
b=zf.read(name); nrec,hlen,rlen=struct.unpack_from("<IHH",b,4)
|
||||
f=[];o=32
|
||||
|
||||
@@ -4,7 +4,16 @@ import sys, io, pathlib, re, zipfile, struct, collections, warnings, difflib
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore")
|
||||
import openpyxl
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
|
||||
def dbf(zf, name):
|
||||
b = zf.read(name); nrec, hlen, rlen = struct.unpack_from("<IHH", b, 4)
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""STmate 고유 폼 전수 — 캡션·선택지를 뽑아 UI 카탈로그를 만든다. 원본은 읽기만."""
|
||||
import sys, io, re, pathlib, importlib.util, collections
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
spec=importlib.util.spec_from_file_location("pd", r"D:\aislo-wt\sub\resources\knowledge\original\경쟁사 프로그램\STmate 분석\40_스크립트\parse_dfm.py")
|
||||
spec=importlib.util.spec_from_file_location("pd", REPO + r"\resources\knowledge\original\경쟁사 프로그램\STmate 분석\40_스크립트\parse_dfm.py")
|
||||
pd=importlib.util.module_from_spec(spec); spec.loader.exec_module(pd)
|
||||
ROOT=pathlib.Path(r"C:\경영정보(주)\System")
|
||||
THIRD=re.compile(r"^(Dclhrp60|designide60|RTL60|VCL60|DBRTL60|BDERTL60|RealGrid|Apollo|dsnide|JDLCHK)",re.I)
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
"""호표 성분 소계의 반올림 방식을 가른다 — 절사 / 사사오입 / 은행가 / 원값."""
|
||||
import sys, io, pathlib, warnings, re, collections
|
||||
from decimal import Decimal as D, ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
def q(x,m): return D(x).quantize(D(1), rounding=m)
|
||||
@@ -9,7 +18,7 @@ def dec(v):
|
||||
if v in (None,""): return D(0)
|
||||
try: return D(str(v))
|
||||
except Exception: return D(0)
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
|
||||
def scan(path, sheet, stat):
|
||||
try: wb = openpyxl.load_workbook(path, data_only=True, read_only=True)
|
||||
|
||||
@@ -2,9 +2,18 @@
|
||||
"""단가산출근거 — Q식과 성분단가 = 시간단가/Q 의 반올림 규칙을 전수 확인."""
|
||||
import sys, io, pathlib, warnings, re, collections
|
||||
from decimal import Decimal as D, ROUND_DOWN, ROUND_HALF_UP
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
NUM = r"([\d,]+(?:\.\d+)?)"
|
||||
RE_Q = re.compile(r"Q\s*=\s*([0-9.*/\sqKfECm+\-]+?)\s*=\s*"+NUM)
|
||||
RE_C = re.compile(r"(노\s*무\s*비|재\s*료\s*비|경\s*비)\s*:\s*"+NUM+r"\s*/\s*Q\s*=\s*"+NUM)
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
"""일위대가 호표 참조 그래프 — 구성행이 다른 호표를 가리키는지, 위상순서가 성립하는지."""
|
||||
import sys, io, pathlib, warnings, re, collections
|
||||
from decimal import Decimal as D, ROUND_DOWN
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
def dn(x): return D(x).quantize(D(1), rounding=ROUND_DOWN)
|
||||
@@ -9,7 +18,7 @@ def dec(v):
|
||||
if v in (None,""): return None
|
||||
try: return D(str(v))
|
||||
except Exception: return None
|
||||
P = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서\2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.xlsx")
|
||||
P = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서\2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.xlsx")
|
||||
wb = openpyxl.load_workbook(P, data_only=True)
|
||||
|
||||
def blocks(sheet):
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
"""누락 확인 ① 노임 시간당 환산식 ② 집계표 반올림 ③ INITIAL 설정"""
|
||||
import sys, io, pathlib, warnings, re, collections
|
||||
from decimal import Decimal as D, ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN
|
||||
|
||||
# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) --
|
||||
def _repo_root():
|
||||
p = pathlib.Path(__file__).resolve()
|
||||
for q in p.parents:
|
||||
if (q / "resources" / "knowledge").is_dir(): return str(q)
|
||||
raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것")
|
||||
REPO = _repo_root()
|
||||
|
||||
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
warnings.filterwarnings("ignore"); import openpyxl
|
||||
def dec(v):
|
||||
@@ -9,7 +18,7 @@ def dec(v):
|
||||
try: return D(str(v))
|
||||
except Exception: return None
|
||||
def q(x,m): return D(x).quantize(D(1), rounding=m)
|
||||
ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")
|
||||
ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")
|
||||
XL=[p for p in sorted(ROOT.rglob("*.xlsx")) if not p.name.startswith("~$")]
|
||||
|
||||
print("### ① 노임 시간당 환산식 — 환율및기초자료 시트")
|
||||
|
||||
Reference in New Issue
Block a user