feat(529-1): 단계 틀 인자(아이콘 · [<][>] 묶음 · 도움말 이름) · D · E 단계 빈 길 일곱

- createWorkflowLayout icons 인자(없으면 B 일곱 아이콘 그대로)
- [?] [<] [>] 묶음 = B05~B09 · D02~D04 · E02~E05 · 묶음 안에서만 오감 · 설명서 이름 B0N/D0N/E0N
- 서버 설명서 주소 D01~D04 · E01~E05 허용 · 우클릭 막기 · 돋보기 d · e 주소
- ROUTES D01~E05 · PLAN_STEP_ROUTES · STAB_STEP_ROUTES · A00_Common/group_workflow(빈 단계 = 틀 · 좌측 [?] 줄 · 단계 막대)
- 페이지 폴더마다 draft/<폴더>_Route.ts · tsconfig 에 D0* · E0* · 문구 ui_template_locale_de
- 시험: 280-2 대역에 D · E 묶음 · 54-2 D · E 설명서 길

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 19:32:09 +09:00
co-authored by Claude Opus 5.5
parent c2876aef60
commit a1069f270a
20 changed files with 292 additions and 27 deletions
+13 -1
View File
@@ -115,7 +115,12 @@ const toasts = [];
let role = "SYSTEM_ADMIN";
let help;
const STUBS = {
"@config/config_frontend": { ROUTES, API_BASE_URL: "" },
"@config/config_frontend": {
ROUTES,
API_BASE_URL: "",
PLAN_STEP_ROUTES: ["d02-plan-base", "d03-plan-analysis", "d04-plan-confirm"],
STAB_STEP_ROUTES: ["e02-stab-ground", "e03-stab-section", "e04-stab-3d", "e05-stab-report"],
},
"./ui_template_locale": { t: (key) => key },
"./ui_template_modal": { openModal: () => undefined },
"./ui_template_elements": {
@@ -190,6 +195,13 @@ const ALL = [
"b09-print",
"m01-master-data",
"m02-master-template",
// 529-1 D · E 묶음 — 묶음 안에서만 [<] [>] · 등록(D01 · E01) = [?] 만
"d01-plan-register",
"d02-plan-base",
"d04-plan-confirm",
"e01-stab-register",
"e02-stab-ground",
"e05-stab-report",
];
const rows = {};
for (const route of ALL) rows[route] = { helpRow: rowOf(route, true), plain: rowOf(route, false) };
+13
View File
@@ -32,6 +32,19 @@ def results():
return json.loads(proc.stdout)
def test_529_1_D_E_묶음_안에서만_앞뒤(results):
rows = results["rows"]
for route in ("d01-plan-register", "e01-stab-register"):
assert rows[route]["plain"]["labels"] == ["?", "저장"], route
for route in ("d02-plan-base", "d04-plan-confirm", "e02-stab-ground", "e05-stab-report"):
assert rows[route]["plain"]["labels"] == ["?", "<", ">", "저장"], route
# 묶음 첫 단계 [<] · 끝 단계 [>] 흐림(B 묶음과 따로)
assert rows["d02-plan-base"]["plain"]["disabled"][:3] == [False, True, False]
assert rows["d04-plan-confirm"]["plain"]["disabled"][:3] == [False, False, True]
assert rows["e02-stab-ground"]["plain"]["disabled"][:3] == [False, True, False]
assert rows["e05-stab-report"]["plain"]["disabled"][:3] == [False, False, True]
@pytest.mark.parametrize("shape", ["helpRow", "plain"])
def test_다섯_주소만_물음_앞뒤_차례(results, shape):
for route in FIVE:
+5 -1
View File
@@ -28,11 +28,15 @@ def test_title_order_and_live_edit():
assert "고친 글" in read_help("B05", tmp_path)[1]["text"]
@pytest.mark.parametrize("page", ["B01", "B10", "../B05", "b05"])
@pytest.mark.parametrize("page", ["B01", "B10", "../B05", "b05", "D05", "E06", "C01"])
def test_bad_page_refused(page):
with pytest.raises(HTTPException):
read_help(page)
def test_529_1_D_E_pages_open_empty(tmp_path):
assert read_help("D02", tmp_path) == [] and read_help("E05", tmp_path) == []
def test_root_is_repo_resources():
assert HELP_ROOT.parts[-2:] == ("resources", "help")