- 지움(git rm) 10 파일 3,374 줄: M02_Hopyo_Finger · Ours · Option · Fit · Combine · Verdict · Line · SkLink · SkPatch · Basis
- Match: 흐름 몫(candidates · name_cands · fix_typo · clause · b_order · _logic_specs · _line_mod · units_of · _state · view · guess · picks · chain) 지움 · 이름 도구 몫 · line_key 남김
- Words: conds · cond_score · close · cosine · jacc 지움 / Shares: sections 지움(trade · eq_key 남김)
- 옮김: Finger.kind_of → Fixed.kind_of · SkLink(sk_line · kept · left · LEFT · WHY) → Sangeun · SkPatch 기계 몫(MACH_IN · MACHINE · SOLO · _mach_logics) → Units.mach_logics
- Sangeun: 옛 /sangeun 몸(build · _sure · Maker.basis · judge · plan · make) 지움 · Kids: first · proposal · order 지움 · Build: build() · unlinked() 지움(모두 고정 Builder · build_all · _order · _origins 남김)
- Router: 옛 길 지움(GET hopyo/{키}/{번} · guess · hopyo-picks · hopyo-build · hopyo-unlinked · hopyo/{키}/sangeun) · GET hopyo/{키} = Judge.view(1차 줄 판정 줄상태 · 만든 · 블록 풀이 셈)
- Marks: 칠 = Judge.judged 만 · Forget: 맞춤 캐시 지움 줄 걷음 · Ledger: Ours.version 판 칸 걷음 · Item: Kids.first 걷음
- Row(덧): 단산 줄 = 장부 짝이 있어도 늘 「2차 필요」(장부 = 1차 후보 힌트만)
시험 정리(까닭 = 지운 길 · 모듈만 시험함):
- 지움 11 파일: test_m02_hopyo_finger · fit · golden · option · ours · basis · seam · flow · draft_calc · test_635 · test_628(지문 · 순위 · 옵션 거꾸로 · 맡은 절 · 옛 확인 흐름)
- 함수 지움: /sangeun · /hopyo-build · /hopyo-unlinked · hopyo-picks · 옛 줄 맞춤 보기를 부르던 것(572 · 718_1 · 729 · 739_1 · 777_1 · 778_5 · 780_1 · labor_national · 705_3 · m02_hopyo_match · 746_1)
- test_621 S2(지문 해시) 지움 · S1 남김 · test_m02_hopyo_build = 장부 길 시험만(PUT 으로 심음)
- 새 길로: 779_2(줄상태 = 1차 판정 · 칠 셈 전 None) · grid · stmate(hopyo-judge 줄 판) · 778_1 · 778_2(Units.mach_logics) · 642_6(Marks 원문) · 642_3 장부 짝 단산 줄 2차 지킴
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
60 lines
3.1 KiB
Python
60 lines
3.1 KiB
Python
"""불러오기 [단가산출 만들기] 같은 내용 SK 씀(PLAN 733-1b · 요구서_572 3장 2).
|
|
|
|
북부청 임도(실물)를 임시 층에 → 같은 파일 안 같은 내용 SK 한 벌 · 바이트만 다른 사본 다시 = 새 SK 0 ·
|
|
뒤 출처 = `본뜬.또` · 다시 = 그대로 · 위 층(회사) 같은 것 = `위층같음` 알림 ·
|
|
출처마다 못옮김 · 다른 출처가 쓰는 SK 내용은 안 바꿈(떼어 냄 · 넘겨줌).
|
|
"""
|
|
|
|
import io
|
|
import json
|
|
import zipfile
|
|
|
|
from M02_MasterTemplete import M02_Hopyo_Sangeun as sangeun
|
|
from M02_MasterTemplete import M02_Library_Same as same
|
|
from M02_MasterTemplete import M02_MasterTemplete_Store as store
|
|
from M02_MasterTemplete import M02_Template_Layers as layers
|
|
from resources.tester.test_m02_hopyo_excel import NORTH, URL, _post, client # noqa: F401
|
|
|
|
|
|
def _sks(folder) -> dict[str, dict]:
|
|
paths = sorted((folder / "sangeun").glob("SK-*.json"))
|
|
return {p.stem: json.loads(p.read_bytes()) for p in paths}
|
|
|
|
|
|
def _maker(hp: str) -> sangeun.Maker:
|
|
"""블록 하나짜리 만들기(파일 · 맞춤셈 없이) — 쓰기 규칙만 봄."""
|
|
m = object.__new__(sangeun.Maker)
|
|
m.first, m.blocks = {1: {"이름": "줄", "단위": "㎥"}}, {1: {"이름": "블록"}}
|
|
m.hp, m.sure = {"키": hp, "파일": f"{hp}.xls"}, {"원본": ["personal", "7/42"]}
|
|
m.same, m.reused, m.above = same.Same(), [], []
|
|
return m
|
|
|
|
|
|
def _plan(code: str, lost: list) -> dict:
|
|
keep = {"갈래": "기초", "엑셀품": {}, "못옮김": lost, "바탕": {"로직": code}, "입력값": {}}
|
|
return {**keep, "자재표시": {}, "덮개": {}, "더한줄": [], "뺀줄": []}
|
|
|
|
|
|
def test_같은내용_SK_출처마다_못옮김_떼어냄_넘겨줌(client):
|
|
folder, at = layers.personal_dir(7, 42), ("personal", "7/42")
|
|
one, two = _maker("HP-000001"), _maker("HP-000002")
|
|
with store.at(folder):
|
|
key = one.write(1, _plan("GF000113", []), None)
|
|
assert two.write(1, _plan("GF000113", [{"id": "x"}]), None) == key # 같은 것 씀
|
|
assert two.reused == [{"번": 1, "키": key}]
|
|
doc = _sks(folder)[key]
|
|
assert sangeun.origin_of(doc, "HP-000002 단산1", at)["못옮김"] == [{"id": "x"}]
|
|
assert sangeun.origin_of(doc, "HP-000001 단산1", at)["못옮김"] == []
|
|
assert sangeun.made(folder, "HP-000002", at) == {"HP-000002 단산1": key}
|
|
# 뒤 출처가 바탕을 바꿈 = 떼어 냄 · 남의 SK 내용 그대로
|
|
moved = _maker("HP-000002").write(1, _plan("GF000114", []), key)
|
|
assert moved != key and "또" not in _sks(folder)[key]["본뜬"]
|
|
assert _sks(folder)[key]["바탕"]["로직"] == "GF000113"
|
|
# 앞 출처가 바탕을 바꿈 = 뒤 출처에게 넘겨줌
|
|
assert _maker("HP-000003").write(1, _plan("GF000113", []), None) == key
|
|
back = _maker("HP-000001").write(1, _plan("GF000114", []), key)
|
|
assert back == moved # 바꾼 내용 = 이미 있는 같은 것
|
|
left = _sks(folder)[key]
|
|
assert left["바탕"]["로직"] == "GF000113" and left["본뜬"]["키"] == "HP-000003 단산1"
|
|
assert "또" not in left["본뜬"] and len(_sks(folder)) == 2
|