개선관리 요구사항과 Google 로그인을 완료

This commit is contained in:
Yun Chan 2026-08-28 16:07:09 +09:00
parent cc0a15b7c6
commit 2a39636163
112 changed files with 10166 additions and 527 deletions

View file

@ -608,7 +608,7 @@
.vgops-tabs button {
flex: 0 0 auto;
height: 34px;
min-height: 44px;
border: 1px solid var(--hair);
border-radius: var(--radius);
background: var(--bg-surface);
@ -660,12 +660,13 @@
.vgops-user-create input,
.vgops-user-create select,
.vgops-user-create output,
.vgops-users-toolbar input,
.vgops-user-table input,
.vgops-user-table select {
width: 100%;
min-width: 0;
height: 36px;
min-height: 44px;
border: 1px solid var(--border-strong);
border-radius: var(--radius-sm);
background: var(--bg-surface-2);
@ -673,6 +674,12 @@
padding: 0 10px;
font: var(--fs-sm) / 1.3 var(--font-sans);
}
.vgops-user-create output {
display: flex;
align-items: center;
background: var(--bg-surface-2);
color: var(--text);
}
.vgops-user-create .vgops-checkline input {
width: 16px;
height: 16px;
@ -692,7 +699,7 @@
.vgops-user-create .vg-btn {
width: 100%;
height: 36px;
min-height: 44px;
justify-content: center;
white-space: nowrap;
padding-inline: 12px;
@ -756,7 +763,7 @@
.vgops-user-table {
width: 100%;
min-width: 1440px;
min-width: 1580px;
table-layout: fixed;
border-collapse: separate;
border-spacing: 0;
@ -804,11 +811,12 @@
.vgops-user-table th:nth-child(2) { width: 140px; }
.vgops-user-table th:nth-child(3) { width: 112px; }
.vgops-user-table th:nth-child(4) { width: 145px; }
.vgops-user-table th:nth-child(5) { width: 180px; }
.vgops-user-table th:nth-child(6) { width: 155px; }
.vgops-user-table th:nth-child(7) { width: 90px; }
.vgops-user-table th:nth-child(8) { width: 160px; }
.vgops-user-table th:nth-child(9) { width: 208px; }
.vgops-user-table th:nth-child(5) { width: 140px; }
.vgops-user-table th:nth-child(6) { width: 180px; }
.vgops-user-table th:nth-child(7) { width: 155px; }
.vgops-user-table th:nth-child(8) { width: 90px; }
.vgops-user-table th:nth-child(9) { width: 160px; }
.vgops-user-table th:nth-child(10) { width: 208px; }
.vgops-user-sort {
width: 100%;
@ -1267,6 +1275,196 @@
font-size: var(--fs-sm);
}
.vgops-protocols {
display: grid;
grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.25fr);
align-items: start;
gap: 12px;
min-width: 0;
}
.vgops-protocol-create,
.vgops-protocol-list,
.vgops-protocol-form,
.vgops-protocol-toolbar,
.vgops-protocol-cards,
.vgops-protocol-card,
.vgops-protocol-card__copy {
min-width: 0;
}
.vgops-protocol-intro,
.vgops-protocol-policy {
margin: 0;
color: var(--text-muted);
font-size: var(--fs-xs);
line-height: 1.5;
}
.vgops-protocol-field-error {
color: var(--crit-text);
font-size: var(--fs-xs);
line-height: 1.45;
}
.vgops-protocol-form {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(96px, 0.38fr);
gap: 12px;
}
.vgops-protocol-form label,
.vgops-protocol-toolbar label {
display: flex;
flex-direction: column;
gap: 6px;
min-width: 0;
}
.vgops-protocol-form label > span,
.vgops-protocol-toolbar label > span {
color: var(--text-muted);
font-size: var(--fs-xs);
font-weight: 650;
}
.vgops-protocol-form input,
.vgops-protocol-form select,
.vgops-protocol-form textarea,
.vgops-protocol-toolbar input,
.vgops-protocol-toolbar select {
width: 100%;
min-width: 0;
min-height: 44px;
border: 1px solid var(--border-strong);
border-radius: var(--radius-sm);
background: var(--bg-surface-2);
color: var(--text-strong);
padding: 0 11px;
font: var(--fs-sm) / 1.4 var(--font-sans);
}
.vgops-protocol-form textarea {
min-height: 168px;
resize: vertical;
padding-block: 10px;
}
.vgops-protocol-form input:focus,
.vgops-protocol-form select:focus,
.vgops-protocol-form textarea:focus,
.vgops-protocol-toolbar input:focus,
.vgops-protocol-toolbar select:focus {
outline: none;
border-color: var(--border-focus);
box-shadow: 0 0 0 3px var(--focus-ring);
}
.vgops-protocol-form__source,
.vgops-protocol-form__content,
.vgops-protocol-policy,
.vgops-protocol-submit {
grid-column: 1 / -1;
}
.vgops-protocol-check {
min-height: 44px;
flex-direction: row !important;
align-items: center;
align-self: end;
gap: 9px !important;
border: 1px solid var(--hair);
border-radius: var(--radius-sm);
background: var(--bg-surface-2);
padding: 8px 10px;
}
.vgops-protocol-check input {
width: 20px;
min-height: 20px;
height: 20px;
flex: none;
padding: 0;
}
.vgops-protocol-submit,
.vgops-protocol-list .vg-btn {
min-height: 44px;
}
.vgops-protocol-toolbar {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(112px, 0.38fr) max-content;
align-items: end;
gap: 8px;
}
.vgops-protocol-error {
display: grid;
grid-template-columns: minmax(0, 1fr) max-content;
align-items: center;
gap: 8px;
}
.vgops-protocol-cards {
display: grid;
gap: 8px;
}
.vgops-protocol-card {
display: grid;
grid-template-columns: minmax(0, 1fr) max-content;
align-items: center;
gap: 12px;
padding: 12px;
border: 1px solid var(--hair);
border-radius: var(--radius);
background: var(--bg-surface-2);
}
.vgops-protocol-card__copy {
display: grid;
gap: 8px;
}
.vgops-protocol-card__title {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
}
.vgops-protocol-card h3,
.vgops-protocol-card p {
margin: 0;
overflow-wrap: anywhere;
}
.vgops-protocol-card h3 {
color: var(--text-strong);
font-size: var(--fs-body);
line-height: 1.35;
}
.vgops-protocol-card p {
color: var(--text-muted);
font-size: var(--fs-xs);
line-height: 1.45;
}
.vgops-protocol-card__actions {
display: flex;
align-items: center;
justify-content: flex-end;
min-width: 88px;
}
.vgops-protocol-card__terminal {
color: var(--text-muted);
font-size: var(--fs-xs);
font-weight: 650;
}
.vgops-ticket-list {
display: flex;
flex-direction: column;
@ -1546,6 +1744,10 @@
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.vgops-protocols {
grid-template-columns: 1fr;
}
.vgops-ticket {
grid-template-columns: minmax(0, 1fr) 84px;
}
@ -1626,6 +1828,30 @@
grid-template-columns: 1fr;
}
.vgops-protocol-form,
.vgops-protocol-toolbar,
.vgops-protocol-card,
.vgops-protocol-error {
grid-template-columns: 1fr;
}
.vgops-protocol-form__source,
.vgops-protocol-form__content,
.vgops-protocol-policy,
.vgops-protocol-submit {
grid-column: auto;
}
.vgops-protocol-card {
align-items: stretch;
}
.vgops-protocol-card__actions,
.vgops-protocol-card__actions .vg-btn,
.vgops-protocol-error .vg-btn {
width: 100%;
}
.vgops-users-toolbar {
align-items: stretch;
flex-direction: column;

View file

@ -288,6 +288,10 @@ export function normalizeAdminUsersResponse(rawResponse: AdminUsersResponse): {
warnings,
label,
),
learner_feedback_enabled:
typeof sourceRecord.learner_feedback_enabled === "boolean"
? sourceRecord.learner_feedback_enabled
: true,
super_admin: booleanField(
sourceRecord,
"super_admin",