Merge remote-tracking branch 'origin/main_desktop_1' into main_laptop_1

This commit is contained in:
2026-09-20 20:29:49 +09:00
6 changed files with 75 additions and 145 deletions
+3 -19
View File
@@ -1,6 +1,6 @@
{
"다음": {"LB": 409, "EQ": 655, "RT": 20, "MN": 7000, "MT": 24361, "MO": 73, "MP": 364, "FX": 6, "CF": 159, "QF": 477, "GF": 252, "CC": 337, "GC": 1104, "QC": 2060},
"폐기": {"MT000001": "자재품목 휘발유 — 값이 비고 글뿐 · 유가 테이블로 감", "MT000002": "자재품목 경유 — 값이 비고 글뿐 · 유가 테이블로 감", "MT000003": "자재품목 선박용경유 — 값이 비고 글뿐 · 유가 테이블로 감", "MT000004": "자재품목 중유 — 값이 비고 글뿐 · 유가 테이블로 감", "MT000005": "자재품목 등유 — 값이 비고 글뿐 · 유가 테이블로 감", "LB000399": "이름 「〃」 — 직종이 아니라 되풀이 기호 · 소요량 13-6-9 에서 윗줄 직종으로 바로잡음", "MN": "재료_나라장터자재 — old 로 옮김 · 로직은 자재품목·품셈재료로 갈아 끼움", "LB000372": "미확보 고급기능사 — 측량노임 항공사진고급기능사 옛이름으로 옮김", "LB000393": "미확보 리베팅공 — 건설노임 철골공 옛이름으로 옮김(2010 통합표 연번10)", "LB000405": "미확보 Belt Conveyor 설치공 — 품셈 13-10-1 주② 배분으로 다섯 직종에 나눔", "MT000006": "자재품목 전력 — 재료_유가전력 전력 줄로 감", "MT000007": "자재품목 전력 — 재료_유가전력 전력 줄로 감", "LB000368": "미확보 기술사 — 기술사(건설) 옛이름으로 옮김", "LB000369": "미확보 특급기술자 — 특급기술자(건설) 옛이름으로 옮김", "LB000370": "미확보 고급기술자 — 고급기술자(건설) 옛이름으로 옮김", "LB000361": "미확보 중급기술자 — 중급기술자(건설) 옛이름으로 옮김", "LB000364": "미확보 초급기술자 — 초급기술자(건설) 옛이름으로 옮김", "LB000365": "미확보 고급숙련기술자 — 고급숙련기술자(건설) 옛이름으로 옮김", "LB000366": "미확보 중급숙련기술자 — 중급숙련기술자(건설) 옛이름으로 옮김", "LB000367": "미확보 초급숙련기술자 — 초급숙련기술자(건설) 옛이름으로 옮김", "LB000389": "미확보 기계기사 — 초급기술자(기계·설비) 옛이름으로 옮김", "LB000388": "미확보 기계산업기사 — 초급숙련기술자(기계·설비) 옛이름으로 옮김"},
"다음": {"LB": 409, "EQ": 655, "RT": 20, "MN": 7000, "MT": 24361, "MO": 74, "MP": 364, "FX": 6, "CF": 159, "QF": 477, "GF": 252, "CC": 337, "GC": 1104, "QC": 2060},
"폐기": {"MT000001": "자재품목 휘발유 — 값이 비고 글뿐 · 유가 테이블로 감", "MT000002": "자재품목 경유 — 값이 비고 글뿐 · 유가 테이블로 감", "MT000003": "자재품목 선박용경유 — 값이 비고 글뿐 · 유가 테이블로 감", "MT000004": "자재품목 중유 — 값이 비고 글뿐 · 유가 테이블로 감", "MT000005": "자재품목 등유 — 값이 비고 글뿐 · 유가 테이블로 감", "LB000399": "이름 「〃」 — 직종이 아니라 되풀이 기호 · 소요량 13-6-9 에서 윗줄 직종으로 바로잡음", "MN": "재료_나라장터자재 — old 로 옮김 · 로직은 자재품목·품셈재료로 갈아 끼움", "LB000372": "미확보 고급기능사 — 측량노임 항공사진고급기능사 옛이름으로 옮김", "LB000393": "미확보 리베팅공 — 건설노임 철골공 옛이름으로 옮김(2010 통합표 연번10)", "LB000405": "미확보 Belt Conveyor 설치공 — 품셈 13-10-1 주② 배분으로 다섯 직종에 나눔", "MT000006": "자재품목 전력 — 재료_유가전력 전력 줄로 감", "MT000007": "자재품목 전력 — 재료_유가전력 전력 줄로 감", "LB000368": "미확보 기술사 — 기술사(건설) 옛이름으로 옮김", "LB000369": "미확보 특급기술자 — 특급기술자(건설) 옛이름으로 옮김", "LB000370": "미확보 고급기술자 — 고급기술자(건설) 옛이름으로 옮김", "LB000361": "미확보 중급기술자 — 중급기술자(건설) 옛이름으로 옮김", "LB000364": "미확보 초급기술자 — 초급기술자(건설) 옛이름으로 옮김", "LB000365": "미확보 고급숙련기술자 — 고급숙련기술자(건설) 옛이름으로 옮김", "LB000366": "미확보 중급숙련기술자 — 중급숙련기술자(건설) 옛이름으로 옮김", "LB000367": "미확보 초급숙련기술자 — 초급숙련기술자(건설) 옛이름으로 옮김", "LB000389": "미확보 기계기사 — 초급기술자(기계·설비) 옛이름으로 옮김", "LB000388": "미확보 기계산업기사 — 초급숙련기술자(기계·설비) 옛이름으로 옮김", "MO000055": {"원문번호": "주택용저압:기본_200이하", "파일": "재료_유가전력.json"}, "MO000056": {"원문번호": "주택용저압:기본_201~400", "파일": "재료_유가전력.json"}, "MO000057": {"원문번호": "주택용저압:기본_400초과", "파일": "재료_유가전력.json"}, "MO000059": {"원문번호": "주택용저압:전력량_다음200", "파일": "재료_유가전력.json"}, "MO000060": {"원문번호": "주택용저압:전력량_400초과", "파일": "재료_유가전력.json"}, "MO000061": {"원문번호": "주택용저압:월간최저요금", "파일": "재료_유가전력.json"}, "MO000062": {"원문번호": "일반용갑I저압:기본", "파일": "재료_유가전력.json"}, "MO000063": {"원문번호": "일반용갑I저압:전력량_여름철", "파일": "재료_유가전력.json"}, "MO000064": {"원문번호": "일반용갑I저압:전력량_봄가을철", "파일": "재료_유가전력.json"}, "MO000065": {"원문번호": "일반용갑I저압:전력량_겨울철", "파일": "재료_유가전력.json"}, "MO000066": {"원문번호": "산업용갑I저압:기본", "파일": "재료_유가전력.json"}, "MO000067": {"원문번호": "산업용갑I저압:전력량_여름철", "파일": "재료_유가전력.json"}, "MO000068": {"원문번호": "산업용갑I저압:전력량_봄가을철", "파일": "재료_유가전력.json"}, "MO000069": {"원문번호": "산업용갑I저압:전력량_겨울철", "파일": "재료_유가전력.json"}, "MO000070": {"원문번호": "임시전력갑:기본요금적용", "파일": "재료_유가전력.json"}, "MO000071": {"원문번호": "임시전력갑:전력량요금적용", "파일": "재료_유가전력.json"}, "MO000072": {"원문번호": "임시전력갑:월간최저요금", "파일": "재료_유가전력.json"}},
"키": {
"CC000001": {"원문번호": "공통 1-3-1 콘크리트 및 포장용 재료", "파일": "계수_건설품셈_01장_적용기준.json"},
"CC000002": {"원문번호": "공통 1-3-1 노상 및 노반재료", "파일": "계수_건설품셈_01장_적용기준.json"},
@@ -2957,24 +2957,8 @@
"MO000052": {"원문번호": "실내등유:울산", "파일": "재료_유가전력.json"},
"MO000053": {"원문번호": "실내등유:세종", "파일": "재료_유가전력.json"},
"MO000054": {"원문번호": "실내등유:전남광주", "파일": "재료_유가전력.json"},
"MO000055": {"원문번호": "주택용저압:기본_200이하", "파일": "재료_유가전력.json"},
"MO000056": {"원문번호": "주택용저압:기본_201~400", "파일": "재료_유가전력.json"},
"MO000057": {"원문번호": "주택용저압:기본_400초과", "파일": "재료_유가전력.json"},
"MO000058": {"원문번호": "주택용저압:전력량_처음200", "파일": "재료_유가전력.json"},
"MO000059": {"원문번호": "주택용저압:전력량_다음200", "파일": "재료_유가전력.json"},
"MO000060": {"원문번호": "주택용저압:전력량_400초과", "파일": "재료_유가전력.json"},
"MO000061": {"원문번호": "주택용저압:월간최저요금", "파일": "재료_유가전력.json"},
"MO000062": {"원문번호": "일반용갑I저압:기본", "파일": "재료_유가전력.json"},
"MO000063": {"원문번호": "일반용갑I저압:전력량_여름철", "파일": "재료_유가전력.json"},
"MO000064": {"원문번호": "일반용갑I저압:전력량_봄가을철", "파일": "재료_유가전력.json"},
"MO000065": {"원문번호": "일반용갑I저압:전력량_겨울철", "파일": "재료_유가전력.json"},
"MO000066": {"원문번호": "산업용갑I저압:기본", "파일": "재료_유가전력.json"},
"MO000067": {"원문번호": "산업용갑I저압:전력량_여름철", "파일": "재료_유가전력.json"},
"MO000068": {"원문번호": "산업용갑I저압:전력량_봄가을철", "파일": "재료_유가전력.json"},
"MO000069": {"원문번호": "산업용갑I저압:전력량_겨울철", "파일": "재료_유가전력.json"},
"MO000070": {"원문번호": "임시전력갑:기본요금적용", "파일": "재료_유가전력.json"},
"MO000071": {"원문번호": "임시전력갑:전력량요금적용", "파일": "재료_유가전력.json"},
"MO000072": {"원문번호": "임시전력갑:월간최저요금", "파일": "재료_유가전력.json"},
"MO000073": {"원문번호": "일반용갑I저압:전력량_평균", "파일": "재료_유가전력.json"},
"MP000001": {"원문번호": "레미콘", "파일": "재료_품셈재료.json"},
"MP000002": {"원문번호": "시멘트", "파일": "재료_품셈재료.json"},
"MP000003": {"원문번호": "모래(중량)", "파일": "재료_품셈재료.json"},
@@ -5,7 +5,9 @@
(`master_keys.issue`). 휘발유·경유 36줄은 옛 판(전국평균 2026-08-14 · 시도별 2026-09-09) 값을
그대로 지님 — 여기서 새로 안 받음(로직 계산 결과가 이 작업 전후로 갈리지 않게). 새로 받는 것은
① 실내등유(C004, `유가_오피넷/` 최신 전국평균·시도별) ② 전력(한전 전기요금표 별표1(C),
`전기요금_한국전력/20250101/`, 저압 위주 주요 계약종별만 — 나머지는 md 원문만 참조).
`전기요금_한국전력/20250101/`). 전력은 사용자 확정으로 전력량요금 두 줄만(주택용 저압 ·
일반용(갑)Ⅰ 저압 계절 평균) — 기본요금·최저요금·산업용·임시전력 등은 md 원문만 참조, 옛
키는 _키대장.json 「폐기」로 옮김(다시 빌드해도 같은 결과).
쓰기: ./venv/Scripts/python.exe resources/master_data/scripts/build_재료_유가전력.py
"""
@@ -104,100 +106,18 @@ def 실내등유_rows(national: Path, sido: Path) -> list[dict]:
POWER_SOURCE = "유가전력 한전 전기요금표 2025-01-01"
# 별표1(C) 저압 위주 주요 계약종별만(원문 § 1.가 · 2.가(1) · 2.다(1) · 6.가) — 그 밖은 md 참조.
# 사용자 확정 — 전력량요금 두 줄만(2026-09-20). 기본요금·최저요금·산업용·임시전력 등
# 나머지 계약종별은 md 원문(전기요금_한국전력/20250101/)만 참조 · 옛 키는 대장 「폐기」.
POWER_ROWS = [
# 주택용 저압(원문 1.가)
("주택용저압:기본_200이하", "주택용 저압", "기본요금(200kWh 이하)", "원/호", 910, None),
("주택용저압:기본_201~400", "주택용 저압", "기본요금(201~400kWh)", "원/호", 1600, None),
("주택용저압:기본_400초과", "주택용 저압", "기본요금(400kWh 초과)", "원/호", 7300, None),
("주택용저압:전력량_처음200", "주택용 저압", "전력량요금", "원/kWh", 120.0, "처음 200kWh까지"),
(
"주택용저압:전력량_처음200",
"주택용 저압",
"전력량요금(처음 200kWh까지)",
"원/kWh",
120.0,
None,
),
(
"주택용저압:전력량_다음200",
"주택용 저압",
"전력량요금(다음 200kWh까지)",
"원/kWh",
214.6,
None,
),
("주택용저압:전력량_400초과", "주택용 저압", "전력량요금(400kWh 초과)", "원/kWh", 307.3, None),
("주택용저압:월간최저요금", "주택용 저압", "월간 최저요금", "원/월", 1000, None),
# 일반용(갑)Ⅰ 저압(원문 2.가(1))
("일반용갑I저압:기본", "일반용(갑) 저압", "기본요금", "원/kW", 6160, None),
(
"일반용갑I저압:전력량_여름철",
"일반용갑I저압:전력량_평균",
"일반용(갑) 저압",
"전력량요금(여름철)",
"원/kWh",
132.4,
None,
),
(
"일반용갑I저압:전력량_봄가을철",
"일반용(갑) 저압",
"전력량요금(봄·가을철)",
"원/kWh",
91.9,
None,
),
(
"일반용갑I저압:전력량_겨울철",
"일반용(갑) 저압",
"전력량요금(겨울철)",
"원/kWh",
119.0,
None,
),
# 산업용(갑)Ⅰ 저압(원문 2.다(1))
("산업용갑I저압:기본", "산업용(갑) 저압", "기본요금", "원/kW", 5550, None),
(
"산업용갑I저압:전력량_여름철",
"산업용(갑) 저압",
"전력량요금(여름철)",
"원/kWh",
107.7,
None,
),
(
"산업용갑I저압:전력량_봄가을철",
"산업용(갑) 저압",
"전력량요금(봄·가을철)",
"원/kWh",
85.9,
None,
),
(
"산업용갑I저압:전력량_겨울철",
"산업용(갑) 저압",
"전력량요금(겨울철)",
"원/kWh",
106.0,
None,
),
# 임시전력(갑)(원문 6.가) — 자체 요율 없이 주택용전력 요금을 그대로 적용
(
"임시전력갑:기본요금적용",
"임시전력(갑)",
"기본요금",
"-",
None,
"주택용 저압 요금 그대로 적용(원문 6.가.(1))",
),
(
"임시전력갑:전력량요금적용",
"임시전력(갑)",
"전력량요금",
"-",
None,
"주택용 저압 요금 그대로 적용(원문 6.가.(2))",
"원/kWh",
114.4,
"계절 평균: 여름 132.4 · 봄가을 91.9 · 겨울 119.0",
),
("임시전력갑:월간최저요금", "임시전력(갑)", "월간 최저요금", "원/월", 1000, None),
]
@@ -229,6 +149,15 @@ def main() -> None:
book = mk.load_book()
file = OUT.name
new_numbers = {r["원문번호"] for r in rows}
retired = book.setdefault("폐기", {})
for key in [
k
for k, v in book[""].items()
if k[:2] == "MO" and v.get("파일") == file and v["원문번호"] not in new_numbers
]:
retired[key] = book[""].pop(key)
out_rows = []
for r in rows:
key = mk.issue(book, "MO", r["원문번호"], file)
@@ -287,7 +216,7 @@ def main() -> None:
"규격 = 기준일(유류: 수집일 · 전력: 시행일) · 구분 = 유류/전력 · 상세구분 = 유류(지역 이름)·전력(계약종별)",
"휘발유·경유는 옛 판(전국평균 2026-08-14 · 시도별 2026-09-09) 값 그대로 — 이번엔 실내등유만 새로 받음(로직 계산 결과가 갈리지 않게). 다음에 유류 전체를 갱신할 땐 이 셋을 한 수집일로 맞출 것.",
"전력비 계상 기준 조문 없음 — 계약예규 「예정가격작성기준」 §19③1·§34③1, 건설품셈 1-5-2호, 산림품셈 1-7-2호 모두 「전력비는 실비를 계상」만 정하고 특정 계약종별 지정 없음.",
"전력 — 별표1(C) 저압 위주 주요 계약종별(주택용·일반용(갑)Ⅰ·산업용(갑)Ⅰ·임시전력(갑))만 올림. 고압·을종·교육용·농사용·가로등 등 나머지 계약종별과 슈퍼유저요금·하계 특례는 md 원문(전기요금_한국전력/20250101/)만 참조.",
"전력 — 사용자 확정(2026-09-20)으로 두 줄만 남김: 주택용 저압 전력량요금(처음 200kWh까지, 120.0원/kWh) · 일반용(갑)Ⅰ 저압 전력량요금(여름·봄가을·겨울 단순평균, 114.4원/kWh). 기본요금·최저요금·산업용·임시전력 등 나머지 계약종별은 md 원문(전기요금_한국전력/20250101/)만 참조 — 옛 키는 _키대장.json 「폐기」로 옮김.",
],
}
dump_master(OUT, head, out_rows)
@@ -2328,8 +2328,7 @@
"이름": "전력 계약종별",
"고르기": [
"주택용 저압",
"일반용(갑) 저압",
"산업용(갑) 저압"
"일반용(갑) 저압"
],
"출처": "유가전력 한전 전기요금표 2025-01-01",
"비고": "품셈·계약예규에 계약종별 규정 없음(전력비는 실비 계상) · 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가)"
@@ -2440,8 +2439,7 @@
"이름": "전력 계약종별",
"고르기": [
"주택용 저압",
"일반용(갑) 저압",
"산업용(갑) 저압"
"일반용(갑) 저압"
],
"출처": "유가전력 한전 전기요금표 2025-01-01",
"비고": "품셈·계약예규에 계약종별 규정 없음(전력비는 실비 계상) · 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가)"
@@ -2547,8 +2545,7 @@
"이름": "전력 계약종별",
"고르기": [
"주택용 저압",
"일반용(갑) 저압",
"산업용(갑) 저압"
"일반용(갑) 저압"
],
"출처": "유가전력 한전 전기요금표 2025-01-01",
"비고": "품셈·계약예규에 계약종별 규정 없음(전력비는 실비 계상) · 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가)"
@@ -2662,8 +2659,7 @@
"이름": "전력 계약종별",
"고르기": [
"주택용 저압",
"일반용(갑) 저압",
"산업용(갑) 저압"
"일반용(갑) 저압"
],
"출처": "유가전력 한전 전기요금표 2025-01-01",
"비고": "품셈·계약예규에 계약종별 규정 없음(전력비는 실비 계상) · 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가)"
@@ -2772,8 +2768,7 @@
"이름": "전력 계약종별",
"고르기": [
"주택용 저압",
"일반용(갑) 저압",
"산업용(갑) 저압"
"일반용(갑) 저압"
],
"출처": "유가전력 한전 전기요금표 2025-01-01",
"비고": "품셈·계약예규에 계약종별 규정 없음(전력비는 실비 계상) · 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가)"
@@ -8475,8 +8470,7 @@
"이름": "전력 계약종별",
"고르기": [
"주택용 저압",
"일반용(갑) 저압",
"산업용(갑) 저압"
"일반용(갑) 저압"
],
"출처": "유가전력 한전 전기요금표 2025-01-01",
"비고": "품셈·계약예규에 계약종별 규정 없음(전력비는 실비 계상) · 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가)"
@@ -8784,8 +8778,7 @@
"이름": "전력 계약종별",
"고르기": [
"주택용 저압",
"일반용(갑) 저압",
"산업용(갑) 저압"
"일반용(갑) 저압"
],
"출처": "유가전력 한전 전기요금표 2025-01-01",
"비고": "품셈·계약예규에 계약종별 규정 없음(전력비는 실비 계상) · 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가)"
@@ -9990,8 +9983,7 @@
"이름": "전력 계약종별",
"고르기": [
"주택용 저압",
"일반용(갑) 저압",
"산업용(갑) 저압"
"일반용(갑) 저압"
],
"출처": "유가전력 한전 전기요금표 2025-01-01",
"비고": "품셈·계약예규에 계약종별 규정 없음(전력비는 실비 계상) · 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가)"
+3 -19
View File
@@ -48,7 +48,7 @@
"규격 = 기준일(유류: 수집일 · 전력: 시행일) · 구분 = 유류/전력 · 상세구분 = 유류(지역 이름)·전력(계약종별)",
"휘발유·경유는 옛 판(전국평균 2026-08-14 · 시도별 2026-09-09) 값 그대로 — 이번엔 실내등유만 새로 받음(로직 계산 결과가 갈리지 않게). 다음에 유류 전체를 갱신할 땐 이 셋을 한 수집일로 맞출 것.",
"전력비 계상 기준 조문 없음 — 계약예규 「예정가격작성기준」 §19③1·§34③1, 건설품셈 1-5-2호, 산림품셈 1-7-2호 모두 「전력비는 실비를 계상」만 정하고 특정 계약종별 지정 없음.",
"전력 — 별표1(C) 저압 위주 주요 계약종별(주택용·일반용(갑)Ⅰ·산업용(갑)Ⅰ·임시전력(갑))만 올림. 고압·을종·교육용·농사용·가로등 등 나머지 계약종별과 슈퍼유저요금·하계 특례는 md 원문(전기요금_한국전력/20250101/)만 참조."
"전력 — 사용자 확정(2026-09-20)으로 두 줄만 남김: 주택용 저압 전력량요금(처음 200kWh까지, 120.0원/kWh) · 일반용(갑)Ⅰ 저압 전력량요금(여름·봄가을·겨울 단순평균, 114.4원/kWh). 기본요금·최저요금·산업용·임시전력 등 나머지 계약종별은 md 원문(전기요금_한국전력/20250101/)만 참조 — 옛 키는 _키대장.json 「폐기」로 옮김."
],
"줄": [
{ "키": "MO000001", "원문번호": "휘발유:전국평균", "구분": "유류", "상세구분": "전국평균", "이름": "휘발유", "규격": "2026-08-14", "단위": "원/L", "값": 1863.25, "출처": "유가전력 오피넷유가 B027", "비고": null },
@@ -105,23 +105,7 @@
{ "키": "MO000052", "원문번호": "실내등유:울산", "구분": "유류", "상세구분": "울산", "이름": "실내등유", "규격": "2026-09-20", "단위": "원/L", "값": 1594.43, "출처": "유가전력 오피넷유가 C004", "비고": null },
{ "키": "MO000053", "원문번호": "실내등유:세종", "구분": "유류", "상세구분": "세종", "이름": "실내등유", "규격": "2026-09-20", "단위": "원/L", "값": 1536.15, "출처": "유가전력 오피넷유가 C004", "비고": null },
{ "키": "MO000054", "원문번호": "실내등유:전남광주", "구분": "유류", "상세구분": "전남광주", "이름": "실내등유", "규격": "2026-09-20", "단위": "원/L", "값": 1563.45, "출처": "유가전력 오피넷유가 C004", "비고": null },
{ "키": "MO000055", "원문번호": "주택용저압:기본_200이하", "구분": "전력", "상세구분": "주택용 저압", "이름": "기본요금(200kWh 이하)", "규격": "2025-01-01", "단위": "원/", "값": 910, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000056", "원문번호": "주택용저압:기본_201~400", "구분": "전력", "상세구분": "주택용 저압", "이름": "기본요금(201~400kWh)", "규격": "2025-01-01", "단위": "원/", "값": 1600, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000057", "원문번호": "주택용저압:기본_400초과", "구분": "전력", "상세구분": "주택용 저압", "이름": "기본요금(400kWh 초과)", "규격": "2025-01-01", "단위": "원/호", "값": 7300, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000058", "원문번호": "주택용저압:전력량_처음200", "구분": "전력", "상세구분": "주택용 저압", "이름": "전력량요금(처음 200kWh까지)", "규격": "2025-01-01", "단위": "원/kWh", "값": 120.0, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000059", "원문번호": "주택용저압:전력량_다음200", "구분": "전력", "상세구분": "주택용 저압", "이름": "전력량요금(다음 200kWh까지)", "규격": "2025-01-01", "단위": "원/kWh", "값": 214.6, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000060", "원문번호": "주택용저압:전력량_400초과", "구분": "전력", "상세구분": "주택용 저압", "이름": "전력량요금(400kWh 초과)", "규격": "2025-01-01", "단위": "원/kWh", "값": 307.3, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000061", "원문번호": "주택용저압:월간최저요금", "구분": "전력", "상세구분": "주택용 저압", "이름": "월간 최저요금", "규격": "2025-01-01", "단위": "원/월", "값": 1000, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000062", "원문번호": "일반용갑I저압:기본", "구분": "전력", "상세구분": "일반용(갑) 저압", "이름": "기본요금", "규격": "2025-01-01", "단위": "원/kW", "값": 6160, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000063", "원문번호": "일반용갑I저압:전력량_여름철", "구분": "전력", "상세구분": "일반용(갑) 저압", "이름": "전력량요금(여름철)", "규격": "2025-01-01", "단위": "원/kWh", "값": 132.4, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000064", "원문번호": "일반용갑I저압:전력량_봄가을철", "구분": "전력", "상세구분": "일반용(갑) 저압", "이름": "전력량요금(봄·가을철)", "규격": "2025-01-01", "단위": "원/kWh", "값": 91.9, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000065", "원문번호": "일반용갑I저압:전력량_겨울철", "구분": "전력", "상세구분": "일반용(갑) 저압", "이름": "전력량요금(겨울철)", "규격": "2025-01-01", "단위": "원/kWh", "값": 119.0, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000066", "원문번호": "산업용갑I저압:기본", "구분": "전력", "상세구분": "산업용(갑) 저압", "이름": "기본요금", "규격": "2025-01-01", "단위": "원/kW", "값": 5550, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000067", "원문번호": "산업용갑I저압:전력량_여름철", "구분": "전력", "상세구분": "산업용(갑) 저압", "이름": "전력량요금(여름철)", "규격": "2025-01-01", "단위": "원/kWh", "값": 107.7, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000068", "원문번호": "산업용갑I저압:전력량_봄가을철", "구분": "전력", "상세구분": "산업용(갑) 저압", "이름": "전력량요금(봄·가을철)", "규격": "2025-01-01", "단위": "원/kWh", "값": 85.9, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000069", "원문번호": "산업용갑I저압:전력량_겨울철", "구분": "전력", "상세구분": "산업용(갑) 저압", "이름": "전력량요금(겨울철)", "규격": "2025-01-01", "단위": "원/kWh", "값": 106.0, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null },
{ "키": "MO000070", "원문번호": "임시전력갑:기본요금적용", "구분": "전력", "상세구분": "임시전력(갑)", "이름": "기본요금", "규격": "2025-01-01", "단위": "-", "값": null, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": "주택용 저압 요금 그대로 적용(원문 6.가.(1))" },
{ "키": "MO000071", "원문번호": "임시전력갑:전력량요금적용", "구분": "전력", "상세구분": "임시전력(갑)", "이름": "전력량요금", "규격": "2025-01-01", "단위": "-", "값": null, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": "주택용 저압 요금 그대로 적용(원문 6.가.(2))" },
{ "키": "MO000072", "원문번호": "임시전력갑:월간최저요금", "구분": "전력", "상세구분": "임시전력(갑)", "이름": "월간 최저요금", "규격": "2025-01-01", "단위": "원/월", "값": 1000, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": null }
{ "키": "MO000058", "원문번호": "주택용저압:전력량_처음200", "구분": "전력", "상세구분": "주택용 저압", "이름": "전력량요금", "규격": "2025-01-01", "단위": "원/kWh", "값": 120.0, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": "처음 200kWh까지" },
{ "키": "MO000073", "원문번호": "일반용갑I저압:전력량_평균", "구분": "전력", "상세구분": "일반용(갑) 저압", "이름": "전력량요금", "규격": "2025-01-01", "단위": "원/kWh", "값": 114.4, "출처": "유가전력 한전 전기요금표 2025-01-01", "비고": "계절 평균: 여름 132.4 · 봄가을 91.9 · 겨울 119.0" }
]
}
+38
View File
@@ -389,3 +389,41 @@ def test_자재품목_저장은_띄어쓰기를_안_바꿈(client: TestClient) -
assert diff[0][1].replace('"물가자료": 1,', '"물가자료": X,').count("{ ") == diff[0][0].count(
"{ "
)
def test_준용_저장은_직종_값을_다시_읽고_상태_거름(client: TestClient) -> None:
subs = _get(client, "/api/m01/subs", file=LABOR)
assert subs["states"] == ["공표", "산정", "미공표", "미확보", "추정"]
guess = _get(client, "/api/m01/rows", file=LABOR, size=500, state="추정")
assert 0 < guess["total"] < 30 and {r["상태"] for r in guess["rows"]} == {"추정"}
row = next(r for r in guess["rows"] if r["이름"] == "제관공")
other, version = _labor_row(client, "1016") # 화약취급공
edited = {**row, "준용": other[""], "": 1} # 화면이 보낸 값은 믿지 않음
body = {
"files": [
{
"file": LABOR,
"version": guess["version"],
"changes": [{"op": "edit", "key": row[""], "row": edited}],
}
]
}
assert client.post("/api/m01/save", json=body).status_code == 200
saved = next(r for r in _get(client, "/api/m01/rows", file=LABOR, q=row[""])["rows"])
assert saved["준용"] == other[""] and saved[""] == other[""]
def test_유가전력_구분_상세구분_거름(client: TestClient) -> None:
subs = _get(client, "/api/m01/subs", file="재료_유가전력.json")["subs"]
assert {s["name"] for s in subs} == {"유류", "전력"}
power = next(s for s in subs if s["name"] == "전력")
assert "주택용 저압" in power["details"]
hit = _get(
client,
"/api/m01/rows",
file="재료_유가전력.json",
size=500,
sub="전력",
detail="주택용 저압",
)
assert hit["total"] > 0 and {r["상세구분"] for r in hit["rows"]} == {"주택용 저압"}
+3
View File
@@ -55,6 +55,9 @@ export const ui_locales_m1 = {
M01_All: ["전체", "All"],
M01_LaborSub: ["구분", "Category"],
M01_LaborDetail: ["상세구분", "Detail"],
M01_FuelSub: ["구분", "Category"],
M01_FuelDetail: ["상세구분", "Detail"],
M01_LaborState: ["상태", "Status"],
M01_MachineSub: ["세부분류", "Sub-category"],
M01_GroupLabor: ["인력", "Labor"],
M01_GroupMaterial: ["재료", "Materials"],