fix(M02): [재적용] 가져온이 새로 적음 · M02 미리보기 이름표 [삭제] 작은 단추 틀(142-2 · 136-3 뒤처리)
- reapply(who) · 라우터가 세션 가져온이를 넘김 - M02_SO_Style.css 미리보기 상자 이름표 단추 = B05 작은 단추 틀과 같은 꼴 - 시험: test_item_copy_complete 재적용 가져온이 · test_136_3 M02 규칙 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015sDZSjFvoiDjdGpgj3muc3
This commit is contained in:
@@ -231,8 +231,11 @@ def _kept_picks(picks: Any, labor: dict[str, Any]) -> dict[str, Any]:
|
||||
return out
|
||||
|
||||
|
||||
def reapply(project_root: str | Path, folder: str) -> dict[str, Any]:
|
||||
"""재적용 — 원본(층 · 마스터)을 다시 가져옴 · 입력값 · 고른자재는 같은 키면 살림.
|
||||
def reapply(
|
||||
project_root: str | Path, folder: str, who: dict[str, Any] | None = None
|
||||
) -> dict[str, Any]:
|
||||
"""재적용 — 원본(층 · 마스터)을 다시 가져옴 · 입력값 · 고른자재는 같은 키면 살림 ·
|
||||
`who` = 가져온이 새로(142-2).
|
||||
|
||||
원본과 달라 덮인 파일(도면 · 면적)은 `덮임` 에 알림."""
|
||||
target = folder_of(project_root, folder)
|
||||
@@ -262,6 +265,8 @@ def reapply(project_root: str | Path, folder: str) -> dict[str, Any]:
|
||||
# 원본을 다시 가져왔으니 시트 고침은 없음 — 살린 입력값 · 고른 자재는 `값있음` 으로 따로 알림
|
||||
kept = bool(kept_values or files[PICKS_FILE])
|
||||
fresh = {**manifest, "판": source, "원본판": source, "가져온날": stamp, "고침": False}
|
||||
if who:
|
||||
fresh["가져온이"] = who
|
||||
fresh["값있음"] = kept
|
||||
fresh.pop("고친날", None)
|
||||
atomic_write_json(target / MANIFEST_NAME, fresh)
|
||||
|
||||
@@ -29,6 +29,7 @@ from common_util.common_util_summary_item import parse_summary_item
|
||||
from M02_MasterTemplete import M02_Item_Copy as copies
|
||||
from M02_MasterTemplete import M02_MasterTemplete_Router_Layers as layer_routes
|
||||
from M02_MasterTemplete import M02_MasterTemplete_Store as store
|
||||
from M02_MasterTemplete.M02_Item_Snapshot import importer
|
||||
from M02_MasterTemplete.M02_Item_Source import item_name
|
||||
|
||||
router = APIRouter(prefix="/api/projects", tags=["M02 Project Items"])
|
||||
@@ -162,7 +163,8 @@ async def write_item_file(
|
||||
async def reapply_item(
|
||||
project_id: str, folder: str, session: dict[str, Any] = Depends(verify_session)
|
||||
) -> dict[str, Any]:
|
||||
return await _run(copies.reapply, await _root(session, project_id), folder)
|
||||
root = await _root(session, project_id)
|
||||
return await _run(copies.reapply, root, folder, importer(session)) # 가져온이(142-2)
|
||||
|
||||
|
||||
@router.post("/{project_id}/items/{folder}/save-as")
|
||||
|
||||
@@ -357,3 +357,14 @@
|
||||
.m02-sod__specpreview {
|
||||
max-width: 28rem;
|
||||
}
|
||||
|
||||
/* 미리보기 상자 이름표 [삭제] — B05 상자 안 작은 단추 틀과 같은 꼴(136-3 · M02 는 B05 CSS 를 안 읽음) */
|
||||
.m02-sod__block .b05-structure__group > legend > button {
|
||||
box-sizing: border-box;
|
||||
height: 26px;
|
||||
min-height: 0;
|
||||
padding-block: 0;
|
||||
padding-inline: var(--spacing-8);
|
||||
font-size: var(--text-caption);
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
@@ -42,3 +42,10 @@ def test_이름표_단추는_작은_단추_틀_흐림은_글에만():
|
||||
assert "height: var(--b05-control-h)" in small and "padding-block: 0" in small
|
||||
legend = _rule(".b05-structure__group > legend {")
|
||||
assert "opacity" not in legend and "currentColor 80%" in legend
|
||||
|
||||
|
||||
def test_M02_미리보기_이름표_단추도_작은_단추_틀():
|
||||
css = (ROOT / "M02_MasterTemplete" / "StructOptions" / "M02_SO_Style.css").read_text("utf-8")
|
||||
at = css.index(".m02-sod__block .b05-structure__group > legend > button")
|
||||
rule = css[at : css.index("}", at)]
|
||||
assert "height: 26px" in rule and "padding-block: 0" in rule
|
||||
|
||||
@@ -421,6 +421,9 @@ def test_재적용은_시트_고침을_덮고_알림_입력값은_살림(world):
|
||||
assert "메모" not in copies.read_file(root, FOLDER, "면적")["내용"]
|
||||
assert copies.read_file(root, FOLDER, "입력값")["내용"] == values
|
||||
assert copies.reapply(root, FOLDER)["덮임"] == []
|
||||
who = {"id": 42, "이름": "재적용"} # 142-2 — [재적용]이 가져온이를 새로 적음
|
||||
copies.reapply(root, FOLDER, who)
|
||||
assert copies.list_items(root)[0]["가져온이"] == who
|
||||
|
||||
|
||||
def test_개인에_저장하면_개인_층에_항목(world):
|
||||
|
||||
Reference in New Issue
Block a user