- API 감사 로거 추가 - APITesterAuditLogger 클래스 생성
- 회원가입 링크 수정 - href 속성 추가 - Testbed UI 스타일 추가 - CSS/SASS 코드 업데이트
This commit is contained in:
@@ -10815,6 +10815,124 @@ body.index-page-body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#testbed-tab {
|
||||||
|
gap: 0;
|
||||||
|
}
|
||||||
|
#testbed-tab #swagger-ui .info {
|
||||||
|
margin: 24px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.testbed-app-panel {
|
||||||
|
margin: 8px 0 0;
|
||||||
|
padding: 24px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border: 1px solid #E2E8F0;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-panel__head {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 4px 8px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-panel__title {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 16px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #1A1A2E;
|
||||||
|
letter-spacing: -0.01em;
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-panel__title::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
width: 4px;
|
||||||
|
height: 15px;
|
||||||
|
background: #0049b4;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-panel__desc {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #64748B;
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-field {
|
||||||
|
position: relative;
|
||||||
|
max-width: 380px;
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-field::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
right: 16px;
|
||||||
|
top: 50%;
|
||||||
|
width: 9px;
|
||||||
|
height: 9px;
|
||||||
|
margin-top: -6px;
|
||||||
|
border-right: 2px solid #64748B;
|
||||||
|
border-bottom: 2px solid #64748B;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.testbed-app-panel #apps {
|
||||||
|
width: 100%;
|
||||||
|
height: 46px;
|
||||||
|
padding: 0 42px 0 16px;
|
||||||
|
font-family: "Spoqa Han Sans Neo", "SpoqaHanSans", "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #1A1A2E;
|
||||||
|
background: #F8FAFC;
|
||||||
|
border: 1px solid #E2E8F0;
|
||||||
|
border-radius: 8px;
|
||||||
|
appearance: none;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.15s ease;
|
||||||
|
}
|
||||||
|
.testbed-app-panel #apps:hover:not(:disabled) {
|
||||||
|
border-color: #94A3B8;
|
||||||
|
background: #FFFFFF;
|
||||||
|
}
|
||||||
|
.testbed-app-panel #apps:focus {
|
||||||
|
outline: none;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-color: #0049b4;
|
||||||
|
box-shadow: 0 0 0 3px rgba(0, 73, 180, 0.14);
|
||||||
|
}
|
||||||
|
.testbed-app-panel #apps:disabled {
|
||||||
|
color: #94A3B8;
|
||||||
|
background: #F8FAFC;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-notice {
|
||||||
|
margin: 16px 0 0;
|
||||||
|
padding: 11px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #64748B;
|
||||||
|
background: #EFF6FF;
|
||||||
|
border: 1px solid rgba(0, 73, 180, 0.18);
|
||||||
|
border-left: 3px solid #0049b4;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-notice::before {
|
||||||
|
content: "ⓘ ";
|
||||||
|
color: #0049b4;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.testbed-app-panel {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
.testbed-app-panel .testbed-app-field {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.api-overview-card {
|
.api-overview-card {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -697,6 +697,139 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Testbed 탭: 앱 선택 패널과 Swagger UI 사이 여백 제거
|
||||||
|
#testbed-tab {
|
||||||
|
gap: 0;
|
||||||
|
|
||||||
|
#swagger-ui .info {
|
||||||
|
margin: $spacing-lg 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Testbed 앱 선택 패널 (DJPGPT0001)
|
||||||
|
.testbed-app-panel {
|
||||||
|
margin: $spacing-sm 0 0;
|
||||||
|
padding: $spacing-lg;
|
||||||
|
background: $white;
|
||||||
|
border: 1px solid $border-gray;
|
||||||
|
border-radius: $border-radius-lg;
|
||||||
|
box-shadow: $shadow-sm;
|
||||||
|
|
||||||
|
.testbed-app-panel__head {
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: $spacing-xs $spacing-sm;
|
||||||
|
margin-bottom: $spacing-md;
|
||||||
|
}
|
||||||
|
|
||||||
|
.testbed-app-panel__title {
|
||||||
|
position: relative;
|
||||||
|
padding-left: $spacing-md;
|
||||||
|
font-size: $font-size-base;
|
||||||
|
font-weight: $font-weight-bold;
|
||||||
|
color: $text-dark;
|
||||||
|
letter-spacing: -0.01em;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
width: 4px;
|
||||||
|
height: 15px;
|
||||||
|
background: $primary-blue;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.testbed-app-panel__desc {
|
||||||
|
font-size: $font-size-sm;
|
||||||
|
color: $text-gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.testbed-app-field {
|
||||||
|
position: relative;
|
||||||
|
max-width: 380px;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
right: $spacing-md;
|
||||||
|
top: 50%;
|
||||||
|
width: 9px;
|
||||||
|
height: 9px;
|
||||||
|
margin-top: -6px;
|
||||||
|
border-right: 2px solid $text-gray;
|
||||||
|
border-bottom: 2px solid $text-gray;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#apps {
|
||||||
|
width: 100%;
|
||||||
|
height: 46px;
|
||||||
|
padding: 0 42px 0 $input-padding-x;
|
||||||
|
font-family: $font-family-primary;
|
||||||
|
font-size: $font-size-sm;
|
||||||
|
color: $text-dark;
|
||||||
|
background: $gray-bg;
|
||||||
|
border: 1px solid $border-gray;
|
||||||
|
border-radius: $border-radius-md;
|
||||||
|
appearance: none;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: $transition-fast;
|
||||||
|
|
||||||
|
&:hover:not(:disabled) {
|
||||||
|
border-color: $text-light;
|
||||||
|
background: $white;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
outline: none;
|
||||||
|
background: $white;
|
||||||
|
border-color: $primary-blue;
|
||||||
|
box-shadow: 0 0 0 3px rgba($primary-blue, 0.14);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
color: $text-light;
|
||||||
|
background: $gray-bg;
|
||||||
|
cursor: not-allowed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.testbed-app-notice {
|
||||||
|
margin: $spacing-md 0 0;
|
||||||
|
padding: 11px $spacing-md;
|
||||||
|
font-size: $font-size-sm;
|
||||||
|
line-height: $line-height-normal;
|
||||||
|
color: $text-gray;
|
||||||
|
background: $light-bg;
|
||||||
|
border: 1px solid rgba($primary-blue, 0.18);
|
||||||
|
border-left: 3px solid $primary-blue;
|
||||||
|
border-radius: $border-radius-sm;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "ⓘ ";
|
||||||
|
color: $primary-blue;
|
||||||
|
font-weight: $font-weight-bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: $breakpoint-sm) {
|
||||||
|
padding: $spacing-md;
|
||||||
|
|
||||||
|
.testbed-app-field {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// API Overview Card (Flat Style)
|
// API Overview Card (Flat Style)
|
||||||
.api-overview-card {
|
.api-overview-card {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
<div class="auth-group" sec:authorize="isAnonymous()">
|
<div class="auth-group" sec:authorize="isAnonymous()">
|
||||||
<a th:href="@{/login}" class="login-btn login-btn-box">로그인</a>
|
<a th:href="@{/login}" class="login-btn login-btn-box">로그인</a>
|
||||||
<a href="#" class="btn-signup">회원가입</a>
|
<a th:href="@{/signup}" class="btn-signup">회원가입</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Logout State (Authenticated) -->
|
<!-- Logout State (Authenticated) -->
|
||||||
|
|||||||
Reference in New Issue
Block a user