feat(821-2): M01 기계 화면 — 목록 열 줄이기 · 상세 페이지 · 새 기계(비슷한 기계에서 시작) · 저장 때 계수 서버 재계산

- 목록 = 이름 · 규격 · 구분 · 가격 · 손료계수 · 주연료 · 조종원 · 시간당 경비(서버 값) · 별칭 · 비고 (단위 · 출처 열 없음 · 가로 넘침 없음) · 다른 요소 표 그대로
- 상세 = 기계 양식 + 원문번호 · 원문 · 구분 · 상세구분 · 별칭 · 비고 · 쓰는 곳 · 지우기(쓰는 곳 보이고 확인) · 주소 ?machine= 로 바로 열림 · 뒤로 가기 = 목록 · 저장 안 한 고침 나가기 경고
- 고침 = 초안 → 페이지 [저장](자동저장 없음) · 서버 M01_MasterData_Machine.fix = 품셈 입력이 바뀌면 계수 짝으로 다시 셈 · 단위 · 출처 칸 채움(새 칸 = 마스터 단위 · 「자체」)
- API /api/m01/machine/lists · hourly · uses · find · row (시스템 관리자만) · 시험 test_821_2_machine_save.py

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-12 14:02:04 +09:00
co-authored by Claude Opus 5.5
parent 6e0d86c961
commit 086f6d214a
10 changed files with 1078 additions and 4 deletions
@@ -0,0 +1,68 @@
/* M01 기계 목록 · 상세(821-2) */
.m01-machine__row {
cursor: pointer;
}
.m01-machine__row:hover td {
background: var(--color-hover);
}
.m01-master__grid tr.is-new td {
background: color-mix(in srgb, var(--color-success) 12%, var(--color-canvas));
}
.m01-machine__grid td.m01-machine__money {
text-align: end;
font-variant-numeric: tabular-nums;
}
/* 목록 열은 화면 폭 안에 — 가로 넘침 없음 · 긴 글은 말줄임(마우스 글 = 전체) */
table.m01-master__grid.m01-machine__grid {
width: 100%;
table-layout: fixed;
}
.m01-machine__grid th:nth-child(1) {
width: 16%;
}
.m01-machine__grid th:nth-child(3),
.m01-machine__grid th:nth-child(10) {
width: 14%;
}
.m01-machine__grid th:nth-child(2),
.m01-machine__grid th:nth-child(9) {
width: 10%;
}
.m01-machine-detail {
display: flex;
flex-direction: column;
gap: var(--spacing-16);
padding-bottom: var(--spacing-16);
}
.m01-machine-detail__meta {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: var(--spacing-8) var(--spacing-12);
}
.m01-machine-detail__uses {
display: flex;
flex-direction: column;
gap: var(--spacing-4);
}
.m01-machine-detail__uses ul {
margin: 0;
padding-left: var(--spacing-16);
font-size: var(--text-body-sm);
color: var(--color-text-secondary);
}
.m01-machine-detail__uses ul {
max-height: 240px;
overflow: auto;
}