Files
Aislo/resources/tester/test_739_1_alias_central.py
eomsangdonandClaude Opus 5.5 cf4e2a0339 refactor(785-7): 옛 맞춤 화면 TS 지움 · 옛 [저장] · [모두 고정] 단추 걷음 · 390 줄 판 높이
- 지움(git rm) 15 파일 3,318 줄: Hopyo_Check · CheckRows · Choose · WizardSk · SkApi · SkLines · logic/SkPick · logic/Draft ·
  Left · Lost · Pick · SheetMake · Kids · ToItem · Compare(모두 옛 확인 창 · 마법사 단가산출 · 안 이은 줄 길 몫 · 부르는 곳 0)
- 단추 판단: 엑셀 보기 [저장](체크 호표) · [모두 고정으로 들여오기] 화면 단추 걷음 → 만들기 = [옮기기] 하나 ·
  모두 고정 서버 길(Builder · build_all)은 B09 · 붙여넣기가 써서 남김 · 목록 체크 칸 · 모달 껍데기(openHopyoSheet · raise · lower) 걷음
- Import: 「안 이은 줄」 띠 · [안 이은 줄 고르기] · 남은 줄 셈 걷음 · [끝내기] = 물음(확인하고 안 옮긴 수 = 판정 고름 캐시 moveBody)
- Api: 옛 맞춤 타입 · 길(readHopyoOne · guessHopyo · buildHopyo · buildHopyoAll · leftHopyo · listHopyoPicks · hopyoSiblings ·
  buildHopyoItem …) 걷음 · POLL_MS · HOPYO_BUILT 옮겨 옴 · 목록 꼴 = 1차 판정 줄상태(Judge.view)
- Labor_Pick: withHopyo(실무 호표 덧줄) → withSangeun(찾아 넣기 창 표시만) · Detail · Table 부름 바꿈
- Ledger: unitField 옮겨 옴 · SheetNav: 옛 확인 캐시 칠 걷음 · UI_Page: [구조물 조합으로] 듣기 걷음
- CSS: 옛 확인 창 · 고르기 창 규칙 34 걷음(481 → 287 줄) · 390 폭 = 줄 판 열리면 위 칸 넓힘 · 줄 판 높이 바닥 16rem

시험 정리(까닭 = 지운 화면 파일만 읽음):
- 지움: test_729_3_hopyo_left_screen · test_746_2_hopyo_compare_screen · test_778_5_sk_pick_screen · helper_729_3 · helper_m02_hopyo_check · pick · seam
- test_m02_hopyo_screen = 좌측 판 · 끝내기 둘만 · 627 · helper_778_5 = SheetSk 판 바꿈만 · 785_4 · 721 · 717_4 · 720 · 739_1 = 지금 꼴로

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 01:32:17 +09:00

86 lines
4.0 KiB
Python

"""별칭 장부 중앙 관리(PLAN 739-1 · `M02_Hopyo_Ledger` ·
`M01_MasterData_Alias`) — 자동 짝 = 마스터(승인) · 이 불러오기에서 이은 짝만 · 회사 · 개인 층 짝 =
「내 제안」(자동 0 · 꼬리표 · 고르기 맨 위 `제안`) · 이은 짝 → 층 장부(불러오기 표시) → M01 후보 ·
승인 뒤 다음 불러오기 자동 · 장부 화면 승인 상태(대기 · 승인 · 반려) · master_data 원본 그대로.
층 · storage 는 임시 폴더.
"""
from M01_MasterData import M01_MasterData_Alias as alias
from M02_MasterTemplete import M02_Hopyo_Ledger as ledger
from M02_MasterTemplete import M02_Template_Layers as layers
# 올리기 길 시험의 `client` 마당(임시 storage · 마스터 층)을 같이 씀
# ruff: noqa: F811
from resources.tester.test_m02_hopyo_excel import URL, _post, client, master_hash # noqa: F401
DIG = {"이름": "구조물터파기(인력100%)", "규격": "토사", "단위": "㎥"}
DIG_KEY = "구조물터파기(인력100%)|토사|m3"
WHO = {"id": 42, "이름": "갑"}
ADMIN = {"id": 1, "이름": "관리자"}
LEDGER = "/api/m02/layers/{}/hopyo-ledger"
FROM_LEDGER = ("별칭", "뺌") # 장부가 자동으로 정한 줄 상태
def _pair(code):
return ledger.check(DIG_KEY, {"갈래": "짝", "짝": [{"로직": code, "배": 1}]})
def _candidate(key, code):
got = [
x
for x in alias.gather()["후보"]
if x["열쇠"] == key and x["종류"] == alias.ALIAS and x["짝"][0]["로직"] == code
]
assert len(got) == 1, got
return got[0]
def test_장부_층_짝은_제안_이_불러오기_짝은_자동_승인_뒤_모두_자동(client):
before = master_hash()
mine = layers.personal_dir(7, 42)
here = ledger.doc_id(mine, "HP-000001")
assert here == "personal/7/42/HP-000001"
ledger.write(mine, {DIG_KEY: _pair("GF000101")}, WHO, "가.xls", here)
got = ledger.recall(DIG, mine, doc=here)
assert (got["층"], got["제안"]) == ("personal", False) # 이 불러오기에서 이은 짝 = 바로 씀
later = ledger.doc_id(mine, "HP-000002") # 다음 불러오기
for doc in (later, None):
got = ledger.recall(DIG, mine, doc=doc)
assert (got["층"], got["짝"][0]["로직"], got["제안"]) == ("personal", "GF000101", True)
ledger.put(mine, {DIG_KEY: {**_pair("GF000101"), "엑셀조항": []}}, WHO) # 장부 화면 고침
assert ledger.read(mine)[DIG_KEY]["불러오기"] == here # 이은 불러오기 표시는 남음
assert [r["상태"] for r in ledger.rows(mine, True)] == ["대기"]
# M01 후보에 보임 → 승인 → 마스터 → 다음 불러오기 · 다른 회사 새 사용자도 자동
sig = _candidate(DIG_KEY, "GF000101")["서명"]
alias.approve(alias.ALIAS, DIG_KEY, sig, ADMIN)
for folder, doc in ((mine, later), (layers.personal_dir(9, 99), None)):
got = ledger.recall(DIG, folder, doc=doc)
assert (got["층"], got["짝"][0]["로직"], got["제안"]) == ("system", "GF000101", False)
assert [(r["층"], r["상태"]) for r in ledger.rows(mine, True)] == [
("personal", "승인"),
("system", "승인"),
]
# 다른 짝 제안 → 반려 = 상태 반려 · 여전히 내 제안(자동 아님)
other = layers.personal_dir(7, 43)
ledger.write(other, {DIG_KEY: _pair("GF000103")}, {"id": 43}, "나.xls")
alias.reject(alias.ALIAS, DIG_KEY, _candidate(DIG_KEY, "GF000103")["서명"], ADMIN)
assert ledger.rows(other, True)[0]["상태"] == "반려"
got = ledger.recall(DIG, other)
assert (got["층"], got["짝"][0]["로직"]) == ("system", "GF000101") # 자동 = 마스터
assert master_hash() == before
def _hopyo(client, no):
res = client.get(f"{URL.format('personal')}/HP-000001/{no}")
assert res.status_code == 200, res.text
return res.json()["호표"]
def _lines(client, no):
return {one["이름"]: one["맞춤"] for one in _hopyo(client, no)["줄"]}
def _auto(client, no):
"""장부가 자동으로 정한 줄 수."""
return sum(1 for m in _lines(client, no).values() if m["상태"] in FROM_LEDGER)