zioinfo-mail/zioinfo/user/UserList.jsp
DESKTOP-TKLFCPR\ython e228faabf5 feat(itsm): G-1~G-12 확장 기능 + 하네스/봇/설치스크립트 구현
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>
2026-05-29 18:18:52 +09:00

166 lines
4.7 KiB
Plaintext

<%@ page language="java" pageEncoding="EUC-KR"%>
<%@ include file="/jsp/include/commonVariable.jspf"%>
<%
// pageNav Tag에 넣을 변수를 만들기위해 pageNo 파라미터는 제거하여 연결합니다.
String linkPattern = new StringBuffer().append(contextPath).append("/user/listUser.do?pageNo=#pageNo").append(removeParam(parameterStr, "pageNo")).toString();
%>
<html:html locale="true">
<head>
<%@ include file="/jsp/include/header.jspf"%>
<%@ include file="/jsp/include/css.jspf"%>
<%@ include file="/jsp/include/javascript.jspf"%>
<script type="text/javascript">
function init() {
Rico.Corner.round(${'searchZone'}); <%//searchZone 엘리먼트의 코너를 둥굴게 하는 스크립트입니다.%>
}
</script>
<title>회원관리</title>
</head>
<bean:define id="userPageInfo" name="userBean" property="userPageInfo" />
<bean:define id="userList" name="userPageInfo" property="pageList" />
<body onload="init()">
<div class="container">
<%
//컨텐츠영역
%>
<div style="background-color: transparent; text-align: right">
회원관리 &gt;
<strong>가입회원 목록</strong>
</div>
<div class="pageingInfoZone">
<%
//목록의 페이징정보 출력영역
%>
Total : ${userPageInfo.recordCount} &nbsp; ${userPageInfo.pageNo} /
${userPageInfo.totalPageNo} page
</div>
<div class="tableZone">
<%
//테이블영역
%>
<table class="list" cellspacing="0">
<colgroup>
<col width="40" align="center" class="strong"></col>
<col width="90" align="center"></col>
<col width="90" align="center"></col>
<col width="140" align="center"></col>
<col width="90" align="center"></col>
<col width="100" align="center"></col>
<col width="90" align="center"></col>
</colgroup>
<thead>
<th>
번호
</th>
<th class="bar">
아이디
</th>
<th class="bar">
이 름
</th>
<th class="bar">
이메일
</th>
<th class="bar">
생년월일
</th>
<th class="bar">
휴대폰
</th>
<th class="bar">
가입일
</th>
</thead>
<tbody>
<logic:iterate id="userEnt" name="userList" indexId="idx">
<tr style="cursor:pointer"
onclick="gotoUrl('<%=contextPath%>/user/viewUser.do?memberID=${userEnt.memberID}<%=parameterStr%>')">
<td>
${userPageInfo.recordCount - ((userBean.pageNo -1) *
userBean.pageSize + idx )}
</td>
<td>
<bean:write name="userEnt" property="memberID" />
</td>
<td>
<bean:write name="userEnt" property="memberName" />
</td>
<td>
<bean:write name="userEnt" property="email" />
</td>
<td>
<bean:write name="userEnt" property="birthDay" />
</td>
<td>
<bean:write name="userEnt" property="handPhone" />
</td>
<td id="lastColumn">
<bean:write name="userEnt" property="startDate"
format="yyyy-MM-dd" />
</td>
</tr>
</logic:iterate>
<c:if test="${userPageInfo.recordCount == 0}">
<%
//목록이 없을경우
%>
<tr>
<td colspan="4" class="align_2" height="30px">
<bean:message key="msg.common.listNotFound" />
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
<tr>
<td>
<br>
</td>
</tr>
<div class="pageNaviZone">
<%
//페이징 탐색영역
%>
<nav:pageLink pageNo="${userBean.pageNo}"
lastPageNo="${userBean.userPageInfo.totalPageNo}"
linkPattern="<%=linkPattern%>" stylePrefix="nav_"
firstPageDisplayPattern="<img src='../../images/user/bbs_prev2.gif' alt='처음'/>"
prevGroupDisplayPattern="<img src='../../images/user/bbs_prev.gif' alt='이전'/>"
linkedPageDisplayPattern="&nbsp;#pageNo&nbsp;"
currentPageDisplayPattern="&nbsp;<strong>#pageNo</strong>&nbsp;"
nextGroupDisplayPattern="<img src='../../images/user/bbs_next.gif' alt='다음'/>"
lastPageDisplayPattern="<img src='../../images/user/bbs_next2.gif' alt='마지막'/>"
groupSize="10" />
</div>
<br />
<div class="searchZone" id="searchZone">
<%
//목록 검색영역
%>
<form action="<%=contextPath%>/user/listUser.do" method="post">
<html:select property="searchColumn"
value="${userBean.searchColumn}" style="font-size:9pt;">
<html:option value="MID">아이디</html:option>
<html:option value="UNM">이 름</html:option>
<html:option value="HPHONE">휴대폰</html:option>
<html:option value="ADDRESS1">주 소</html:option>
</html:select>
<input type="text" name="searchKeyword"
value="${userBean.searchKeyword}" />
<img src="<%=contextPath%>/images/button/btn_search.gif"
onclick="javascript:forms[0].submit();" class="hand"
style="vertical-align:bottom" alt="검색" />
</form>
</div>
</div>
<%
// container
%>
</body>
</html:html>