zioinfo-mail/zioinfo/js/biz.js
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

96 lines
2.3 KiB
JavaScript

/*------------------------------------------------------------------------------
* 1. 파일명: biz.js
* 2. 설 명: 일자를 포함한 기본자료형 외의 업무 자료형 및 업무로직을 처리하는
* 함수를 정의한다.
* 3. 의존성: string.js
* 4. 작성자:
* 5. 작성일: 2006.10.16.
-----------------------------------------------------------------------------*/
/**
* 전화번호 값을 형식화한다.
*/
function formatTelNo(phoneNo) {
if ( isEmpty(phoneNo) ) return "";
var hasLocalNo = ( phoneNo.length >= 9 && phoneNo.length <= 11 );
var formattedNo = ""; // 형식화된 번호.
/* 지역번호가 유무에 따라 처리. */
if ( hasLocalNo ) {
/* 지역번호가 있을 때. */
/* 지역번호가 02인가? */
if ( phoneNo.indexOf("02") == 0 ) {
formattedNo = "02-"
+ ( phoneNo.length == 9
? phoneNo.substr(2, 3) : phoneNo.substr(2, 4) ) + "-"
+ phoneNo.substr(phoneNo.length - 4);
}
else {
formattedNo = phoneNo.substr(0, 3) + "-"
+ ( phoneNo.length == 10
? phoneNo.substr(3, 3) : phoneNo.substr(3, 4) ) + "-"
+ phoneNo.substr(phoneNo.length - 4);
}
}
else {
/* 지역번호가 없을 때. */
formattedNo = ( phoneNo.length == 7
? phoneNo.substr(0, 3) : phoneNo.substr(0, 4) ) + "-"
+ phoneNo.substr(phoneNo.length - 4);
}
return formattedNo;
}
/**
* 주어진 Object의 값을 전화번호로 가정하고 형식화한다.
*/
function formatTelNoObj(obj) {
obj.value = formatTelNo(obj.value);
}
/**
* 핸드폰 번호 값을 형식화한다.
* 넘어온 번호 값은 유효한 해드폰 번호임을 가정한다.
*/
function formatHpNo(phoneNo) {
/* 값이 없는 경우도 유효한 값이다. */
if ( isEmpty(phoneNo) ) return "";
/* 그래도 혹시 모르니 길이를 확인해 보자. */
var hpNo = removeChar(phoneNo, "-");
if ( hpNo.length != 10 && hpNo.length != 11 ) {
showSysMessage("hpNo의 값 [" + phoneNo + "]는 - 를 뺀 길이가 10이나 11이어야 합니다.");
return phoneNo;
}
/* 앞에서 3자리 지역번호. */
var formattedNo = hpNo.substr(0, 3) + "-";
/* 전체 길이가 10이면 3자리가 국번, 11이면 4자리가 국번. */
formattedNo += ( hpNo.length == 10 ? hpNo.substr(3, 3) : hpNo.substr(3, 4) ) + "-";
/* 나머지 4자리 번호. */
formattedNo += hpNo.substring(hpNo.length - 4);
return formattedNo;
}
/**
* 주어진 Object의 값을 핸드폰 번호로 가정하고 형식화한다.
*/
function formatHpNoObj(obj) {
obj.value = formatHpNo(obj.value);
}