diff --git a/app/static/app.css b/app/static/app.css index cb77524..b55177e 100644 --- a/app/static/app.css +++ b/app/static/app.css @@ -170,8 +170,9 @@ section { line-height: 0; } .theme-toggle:hover { - --pico-background-color: var(--bg-alt); + --pico-background-color: var(--surface); --pico-border-color: var(--text-dim); + --pico-color: var(--text); } .theme-toggle .icon { width: 18px; @@ -230,6 +231,7 @@ button, transition: background-color 0.12s ease, border-color 0.12s ease, + opacity 0.15s ease, transform 0.096s ease; } button:active, @@ -259,8 +261,9 @@ button.ghost, } button.ghost:hover, [role="button"].ghost:hover { - --pico-background-color: var(--bg-alt); + --pico-background-color: var(--surface); --pico-border-color: var(--text-dim); + --pico-color: var(--text); /* 호버 시 글자 하얘짐 방지 */ } /* 아이콘 + 글자 버튼 */ .btn-icon { @@ -378,11 +381,14 @@ th.num { text-align: right; } -/* 액션 셀: swap(버튼→진행률) 시 행 높이 안 흔들리게 고정 */ +/* 액션 셀: 버튼↔진행률↔완료배지로 내용이 바뀌어도 행 높이·열 너비가 안 변하게 + 너비·높이를 고정한 박스로 만든다. 넘치는 내용은 클립. */ .row-action { display: flex; align-items: center; - min-height: 34px; + width: 172px; + height: 36px; + overflow: hidden; } /* 검증 배지 칩 (dot + 라벨, 이모지 없음) */ @@ -420,6 +426,12 @@ th.num { background: var(--accent-soft); } +/* 뒤로가기(대시보드) 버튼 — ghost, 제목과 간격 확보 */ +.back-btn { + margin-bottom: 20px; + text-decoration: none; +} + /* 버전 검증 상세 */ .verify-detail { display: flex; @@ -441,15 +453,105 @@ th.num { color: var(--danger); } +/* 배포 완료 배너 (#flash) */ +.flash-banner { + display: flex; + align-items: center; + gap: 10px; + margin: 4px 0 22px; + padding: 12px 16px; + border-radius: 10px; + background: rgba(0, 200, 150, 0.1); + color: var(--success-text); + font-size: 15px; + font-weight: 600; +} +.flash-banner .flash-dot { + flex: none; + width: 8px; + height: 8px; + border-radius: 50%; + background: currentColor; +} +.flash-banner .flash-sub { + color: var(--text-muted); + font-weight: 500; + font-size: 13px; +} +.flash-banner .flash-warn { + margin-left: auto; + color: var(--warning-text); + font-weight: 500; + font-size: 13px; +} + +/* 배포 확인 모달 — 본문/표/라벨 15px 로 통일 */ +.deploy-modal h3 { + font-size: 20px; +} +.deploy-note { + font-size: 17px; + color: var(--text-secondary); + margin-bottom: 14px; +} +.deploy-preview { + margin: 0 0 18px; + font-size: 17px; +} +.deploy-preview, +.deploy-preview tr, +.deploy-preview th, +.deploy-preview td { + border: none; + background: none; +} +.deploy-preview th { + width: 30%; + padding: 8px 0; + text-align: left; + font-weight: 500; + color: var(--text-muted); +} +.deploy-preview td { + padding: 8px 0; + text-align: right; +} +.confirm-label { + display: block; + font-size: 17px; +} +/* 입력란만 작게 (본문보다 4px 작은 14px + 컴팩트 높이) */ +.confirm-label input { + margin-top: 8px; + font-size: 14px; + --pico-form-element-spacing-vertical: 0.5rem; + height: auto; +} +.modal-actions { + display: flex; + justify-content: flex-end; + align-items: center; + gap: 10px; + margin-top: 20px; +} +/* 모달 버튼: 편안한 표준 크기, 한 줄, 너비 auto */ +.modal-actions button { + width: auto; + margin: 0; + padding: 11px 20px; + font-size: 16px; +} + /* 동기화 진행률 바 */ .sync-progress { display: flex; flex-direction: column; gap: 5px; - min-width: 150px; + width: 150px; } .sync-progress progress { margin: 0; + width: 100%; height: 6px; } .sync-progress small { diff --git a/app/templates/partials/deploy_modal.html b/app/templates/partials/deploy_modal.html index eddbfd7..158d97c 100644 --- a/app/templates/partials/deploy_modal.html +++ b/app/templates/partials/deploy_modal.html @@ -1,5 +1,5 @@ -
+

이 버전을 운영망에 배포

@@ -8,34 +8,43 @@

{{ error }}

{% endif %} -

운영 서버(yum/dnf)가 실제로 내려받는 버전이 바뀝니다. 신중히 확인하세요.

+

운영 서버(yum/dnf)가 실제로 내려받는 버전이 바뀝니다. 신중히 확인하세요.

{% if preview %} - +
- - - - - - + + + + + + + + + + + +
현재 운영{% if preview.current_version is not none %}v{{ preview.current_version }} ({{ preview.current_count }}개){% else %}없음{% endif %}
배포 대상v{{ preview.target_version }} ({{ preview.target_count }}개)
순 변화{{ preview.net_sign }}{{ preview.net }}개
현재 운영{% if preview.current_version is not none %}v{{ preview.current_version }} · {{ preview.current_count }}개{% else %}없음{% endif %}
배포 대상v{{ preview.target_version }} · {{ preview.target_count }}개
순 변화 + {{ preview.net_sign }}{{ preview.net }}개 +
{% endif %}
-
diff --git a/app/templates/partials/deploy_success.html b/app/templates/partials/deploy_success.html index e2e85aa..6663111 100644 --- a/app/templates/partials/deploy_success.html +++ b/app/templates/partials/deploy_success.html @@ -1,20 +1,12 @@ -{# 배포 성공: 버전 목록을 OOB 로 갱신 + flash 배너 + 모달 자리에 완료 알림 #} +{# 배포 성공: (1) 버전 목록 OOB 갱신 → 배지 이동, (2) 완료 배너 OOB, + (3) 본문은 비움 → #modal 닫힘. 별도 성공 다이얼로그/닫기 버튼 없음. #} {% set oob = true %} {% include "partials/version_list.html" %}
-

- 배포 완료 · v{{ to_version }}{% if from_version is not none %} (이전 v{{ from_version }}){% endif %} - {% if not audit_ok %} — ⚠ 감사 로그 기록 실패{% endif %} -

+
+ + 배포 완료 · v{{ to_version }}{% if from_version is not none %} (이전 v{{ from_version }}){% endif %} + {% if not audit_ok %}감사 로그 기록 실패{% endif %} +
- - -
-

배포 완료

-

운영 배포 버전이 v{{ to_version }} 로 교체되었습니다.

- -
-
diff --git a/app/templates/partials/progress.html b/app/templates/partials/progress.html index 981fc7d..da60b82 100644 --- a/app/templates/partials/progress.html +++ b/app/templates/partials/progress.html @@ -1,20 +1,21 @@ -{# 진행률 바 조각. running 일 때만 hx-trigger 를 달아 3초 폴링; 완료/실패 시 폴링 중단. #} +{# 진행률 바 조각. running 일 때만 hx-trigger 를 달아 3초 폴링; 완료/실패 시 폴링 중단. + 내용은 .row-action 고정 박스(172x36) 안에 들어오도록 짧게 유지. #}
{% if progress.failed %} - 동기화 실패: {{ progress.error }} + 동기화 실패 {% elif progress.completed %} - 동기화 완료{% if progress.new_version %} · v{{ progress.new_version }} 생성됨{% endif %} + 완료{% if progress.new_version %} · v{{ progress.new_version }}{% endif %} {% elif progress.idle %} {# 추적 중인 작업 없음 — 빈 조각 #} {% else %}
{% if progress.total %} - {{ progress.done }}/{{ progress.total }} 패키지 · {{ progress.percent }}% + {{ progress.done }}/{{ progress.total }} · {{ progress.percent }}% {% else %} - 동기화 준비 중… + 준비 중… {% endif %}
{% endif %} diff --git a/app/templates/versions.html b/app/templates/versions.html index 3911627..5e4a47e 100644 --- a/app/templates/versions.html +++ b/app/templates/versions.html @@ -1,7 +1,12 @@ {% extends "base.html" %} {% block content %} -

← 대시보드

+ + + 대시보드 +

{{ repo_name }} · 버전

diff --git a/tests/test_sync.py b/tests/test_sync.py index aeeb512..0a8a070 100644 --- a/tests/test_sync.py +++ b/tests/test_sync.py @@ -92,7 +92,7 @@ def test_progress_completed_stops_polling_and_clears(): ) ) resp = client.get("/repos/abc/progress") - assert "동기화 완료" in resp.text + assert "완료" in resp.text assert "v7" in resp.text assert "hx-trigger" not in resp.text # 폴링 중단 assert task_store.get_task("abc") is None # 정리됨