G-1: 메신저 Webhook Relay + _send_to_room 실제 httpx 호출 구현 G-2: POST /api/tasks/bulk SR 대량작업 엔드포인트 (최대 100건) G-3: 라이선스 만료 알림 스케줄러 (매일 09:00 KST) G-4: 체험판 upgrade_banner 필드 + license.py 배너 로직 G-5: core/auto_rca.py + incidents/problem auto-rca 엔드포인트 G-6: core/deploy_impact.py + vibe impact-analysis 엔드포인트 G-7: core/ticket_classifier.py + SR 생성 시 AI 분류 + ai-suggestion API G-8: VulnPatchRecord 모델 + vuln_scan 패치추적 4개 엔드포인트 G-9: core/jira_sync.py + gateway Jira/Confluence 연동 엔드포인트 G-10: core/push_notify.py + routers/push.py + PushSubscription 모델 G-11: approvals 다중승인 (위임/서명/기한초과/마감연장) G-12: alembic.ini + migrations/ + cicd/migrate_to_postgres.sh 하네스: guardia-orchestrator 확장기능 Phase 반영 봇명령어: /sr /status /license /bulk 슬래시 명령어 추가 설치스크립트: setup/ (Ubuntu, CentOS, RHEL, Windows) --test 옵션 포함 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
296 lines
5.1 KiB
CSS
296 lines
5.1 KiB
CSS
@CHARSET "EUC-KR";
|
|
/* CSS Document */
|
|
body, table {
|
|
font-family: Gulim, "굴림", sans-serif;*/
|
|
margin: 0;
|
|
padding: 0;
|
|
font-size: 9pt;
|
|
color: #666666;
|
|
}
|
|
|
|
img {
|
|
border: 0;
|
|
vertical-align: center;
|
|
margin: 0px;
|
|
padding: 0px;
|
|
}
|
|
img.hand {cursor:pointer;}
|
|
|
|
#hand {
|
|
cursor:pointer;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 17px;
|
|
color: #666666;
|
|
font-weight : bold;
|
|
width: 100%;
|
|
margin: 0 0 5px 0;
|
|
padding-left: 25px;
|
|
text-align: left;
|
|
background: transparent url(../images/common/subtitle_bu02.gif) no-repeat 0 1px;
|
|
}
|
|
|
|
h2 {
|
|
font-size: 10pt;
|
|
font-weight:bold;
|
|
color: #666666;
|
|
width: 100%;
|
|
margin: 0px 0 0 0px;
|
|
text-align: left;
|
|
padding-left: 19px;
|
|
padding-top: 0px;
|
|
background: transparent url(../images/common//menu_bu01.gif) no-repeat 0 1px;
|
|
}
|
|
|
|
h3 {
|
|
font-size: 10pt;
|
|
font-weight:normal;
|
|
width: 100%;
|
|
margin: 0 0 2px;
|
|
text-align: left;
|
|
color: #666666;
|
|
padding-left: 20px;
|
|
background: transparent url(../images/common/menu_bu01.gif) no-repeat 0 1px;
|
|
}
|
|
|
|
h4 {
|
|
font-size: 10pt;
|
|
font-weight:normal;
|
|
width: 100%;
|
|
margin: 0 0 2px;
|
|
text-align: left;
|
|
color: #666666;
|
|
padding-left: 20px;
|
|
background: transparent url(../images/common/menu_bu02.gif) no-repeat 0 1px;
|
|
}
|
|
|
|
a {
|
|
color: #666666;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
a:hover {
|
|
color: #86B553;
|
|
text-decoration: underline;
|
|
}
|
|
|
|
form {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
|
|
input, select, textarea {
|
|
font-size: 9pt;
|
|
color: #666;
|
|
padding: 1px 2px 2px 2px;
|
|
margin: 0px;
|
|
border: 1px solid #EEEEEE;
|
|
background: white;
|
|
}
|
|
|
|
input, select {
|
|
height: 18px;
|
|
}
|
|
|
|
textarea {
|
|
width: 100%;
|
|
line-height: 1.5em;
|
|
}
|
|
|
|
input.radio {
|
|
border: 0;
|
|
}
|
|
|
|
input.checkbox {
|
|
border: 0;
|
|
}
|
|
|
|
/* 읽기 전용. */
|
|
input.readonly {
|
|
color: #444;
|
|
border: 1px solid #CDCDCD;
|
|
background-color: transparent;
|
|
}
|
|
|
|
|
|
table.outline { margin: 0; padding: 0; border: 0; background-color: transparent; }
|
|
table.outline td { margin: 0; padding: 0; border: 0; background-color: transparent; font-size: 10pt;}
|
|
|
|
|
|
/* 페이지 영역 정의 */
|
|
div.container {
|
|
padding-top: 5px;
|
|
/* padding-left: 15px;*/
|
|
width: 675px;
|
|
}
|
|
|
|
/* 페이지 영역의 하위 div */
|
|
div.container div {
|
|
width: 100%;
|
|
}
|
|
|
|
/* 페이징 TAG 영역 */
|
|
div.pageNaviZone {
|
|
text-align:center;
|
|
/* padding-top: px;*/
|
|
padding-bottom: 3px;
|
|
/*border-bottom: 1px solid #4BB32D;*/
|
|
}
|
|
|
|
/* 페이징정보표시영역 */
|
|
div.pageingInfoZone {
|
|
/* text-align:right;*/
|
|
margin-left: 10px;
|
|
margin-right: 10px;
|
|
padding-top: 5px;
|
|
padding-bottom: 3px;
|
|
font-size: 8pt;
|
|
color: #707070;
|
|
}
|
|
|
|
/* 페이지 버튼영역 */
|
|
div.buttonZone {
|
|
text-align:right;
|
|
padding-top: 10px;
|
|
padding-right:5px;
|
|
/* padding-bottom: 10px;*/
|
|
}
|
|
|
|
/* 검색영역 */
|
|
div.searchZone {
|
|
margin: 0 0 0 0px;
|
|
text-align:center;
|
|
background: #EFEFEF;
|
|
vertical-align:top;
|
|
}
|
|
|
|
|
|
/* 숨겨지는 영역 */
|
|
div.blockZone {
|
|
top: 10;
|
|
left: 10;
|
|
width: 10;
|
|
height:10;
|
|
position: absolute;
|
|
visibility: hidden;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
background:red;
|
|
}
|
|
|
|
|
|
div#menuItems {
|
|
line-height: 150%;
|
|
cursor:pointer;
|
|
padding-top: 3px;
|
|
padding-bottom: 3px;
|
|
border-bottom: 1px dashed #EDEDED;
|
|
}
|
|
|
|
|
|
/*****************************************통계검색 /stat/searchStatTable.do */
|
|
div.searchcontainer {
|
|
width: 900px;
|
|
font-size: 9pt;
|
|
}
|
|
|
|
/* 통계검색영역 */
|
|
div.statSearchZone {
|
|
margin: 0 0 0 0px;
|
|
text-align:center;
|
|
background: #EFEFEF;
|
|
vertical-align:top;
|
|
}
|
|
/*[정렬]*/
|
|
div.statSearchInfoZone {
|
|
background: #F6F6F6;
|
|
padding: 0 0 0 30;
|
|
border-top: 1px solid #DCDCDC;
|
|
|
|
}
|
|
/*****************************************통계검색END*/
|
|
|
|
|
|
/* scrollbar */
|
|
.scrollbar {
|
|
scrollbar-arrow-color: #808080;
|
|
scrollbar-face-color: #E5E5E5;
|
|
scrollbar-highlight-color: #FFFFFF;
|
|
scrollbar-3dlight-color: #E5E5E5;
|
|
scrollbar-shadow-color: #E5E5E5;
|
|
scrollbar-darkshadow-color: #E5E5E5;
|
|
scrollbar-track-color: #FFFFFF;
|
|
}
|
|
|
|
/* 페이징 관련 스타일 */
|
|
.nav_linkPageNo {
|
|
color: black;
|
|
}
|
|
.nav_nextGroup {
|
|
color: black;
|
|
}
|
|
.nav_prevGroup {
|
|
color: black;
|
|
}
|
|
.nav_lastPage {
|
|
color: black;
|
|
}
|
|
.nav_firstPage {
|
|
color: black;
|
|
}
|
|
|
|
#blankspace {
|
|
margin-left: 10px;
|
|
}
|
|
|
|
|
|
/* 라인 */
|
|
|
|
.h_line01{ width:605px; border-top: 1px solid #E5E5E5; padding: 0px; margin: 0px; font-size:1px; }
|
|
.h_line02{ width:605px; border-top: 1px solid #4BB32D; padding: 0px; margin: 0px; font-size:1px; }
|
|
.dotline01{ background: url(/images/dot01.gif) repeat-x; height:1px; font-size:1px; padding: 0px; margin: 0px;} /* 리스트 점선이미지 */
|
|
|
|
/* 정렬 */
|
|
.align_l { text-align: left; padding-left: 10px;}
|
|
.align_2 { text-align: center;}
|
|
|
|
|
|
/* 영문,숫자 */
|
|
.e { font-family: verdana; font-size:11px; } /* 영문,숫자 */
|
|
.e a:link { font-size: 11px; color: #666666; text-decoration: none; }
|
|
.e a:visited { font-size: 11px; color: #666666; text-decoration: none; }
|
|
.e a:active { font-size: 11px; color: #4BB32D; text-decoration: underline; }
|
|
.e a:hover { font-size: 11px; color: #4BB32D; text-decoration: underline; }
|
|
|
|
/* 강조 */
|
|
#strong {
|
|
font-weight:bold;
|
|
}
|
|
|
|
/*검색페이지의 인기도 막대그래프*/
|
|
span.popular-bar {
|
|
width:8;height:4;font-size:6pt;margin-left: 2px;
|
|
}
|
|
|
|
span#popular01 {background:#A9D2EF;}
|
|
span#popular02 {background:#92C6EB;}
|
|
span#popular03 {background:#6AB0E2;}
|
|
span#popular04 {background:#3A96D8;}
|
|
span#popular05 {background:#1180CF;}
|
|
|
|
/*검색키워드 강조*/
|
|
span#searchKeyword {
|
|
background: #FEF7E9;
|
|
color: #F97C0D;
|
|
}
|
|
|
|
/*차트영역*/
|
|
div.chartZone {
|
|
padding-top:5px;
|
|
text-align:center;
|
|
}
|
|
|