분석 기반 5개 확장 영역 선정: 1. cmdb-autodiscovery-dev: SSH/SNMP 에이전트리스 자동 발견 2. nlquery-dev: Text-to-SQL + 대화형 운영 어시스턴트 3. config-drift-dev: 골든 구성 vs 실제 비교·자동 교정 4. multicloud-dev: AWS/GCP/NCloud 단일 관제·비용 최적화 5. public-sector-dev: 나라장터·공공API·ISP·K-Cloud 목표: 104개→124개 라우터, 667→764개 엔드포인트 로드맵: advanced-roadmap.md (P0~P3 우선순위 포함) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
103 lines
4.1 KiB
Markdown
103 lines
4.1 KiB
Markdown
# public-sector-dev
|
|
|
|
## 핵심 역할
|
|
GUARDiA ITSM의 **공공기관 특화 기능**을 구현한다.
|
|
국내 공공기관 IT 운영에 필수적인 나라장터 연동·공공 API 허브·클라우드 전환 자동화·
|
|
정보화전략계획(ISP) 지원·행정망/인터넷망 분리 운영을 구현한다.
|
|
|
|
## 구현 범위
|
|
|
|
### 신규 라우터
|
|
| 파일 | 기능 |
|
|
|------|------|
|
|
| `narasajang.py` | 나라장터 조달 시스템 연동 (입찰 공고·계약 현황) |
|
|
| `public_api_hub.py` | 공공데이터포털(data.go.kr) API 연동 허브 |
|
|
| `isp_support.py` | 정보화전략계획(ISP) 수립 지원 (템플릿·진단) |
|
|
| `network_zone.py` | 행정망/인터넷망 분리 운영 관리 |
|
|
| `k_cloud.py` | 정부·공공기관 클라우드(K-Cloud) 전환 자동화 |
|
|
| `e_procurement.py` | 전자조달 계약·검수·납품 이력 관리 |
|
|
|
|
### 나라장터 연동
|
|
```python
|
|
# 조달청 OpenAPI 활용
|
|
NARASAJANG_API = "https://www.g2b.go.kr:8101/openapi"
|
|
|
|
async def get_bid_notices(institution_code: str) -> list[dict]:
|
|
"""기관별 입찰 공고 조회."""
|
|
# 조달청 API Key (공공데이터포털 연동)
|
|
pass
|
|
|
|
async def get_contract_status(contract_id: str) -> dict:
|
|
"""계약 현황 및 이행 상태 조회."""
|
|
pass
|
|
|
|
class ProcurementRecord(Base):
|
|
"""조달 이력 — ITSM SR과 연계."""
|
|
__tablename__ = "tb_procurement"
|
|
id = Column(Integer, primary_key=True)
|
|
tenant_id = Column(Integer)
|
|
contract_no = Column(String(50)) # 나라장터 계약번호
|
|
contract_name = Column(String(300))
|
|
supplier = Column(String(200))
|
|
amount = Column(BigInteger) # 계약금액
|
|
start_date = Column(Date)
|
|
end_date = Column(Date)
|
|
linked_sr_ids = Column(JSON) # 관련 SR 목록
|
|
status = Column(String(30)) # ACTIVE|COMPLETED|TERMINATED
|
|
```
|
|
|
|
### 공공 API 허브
|
|
```python
|
|
# data.go.kr API 연동 (기상청·행안부·국민연금 등)
|
|
PUBLIC_APIS = {
|
|
"kma_weather": "https://apis.data.go.kr/1360000/VilageFcstInfoService2.0",
|
|
"mois_address": "https://business.juso.go.kr/addrlink/addrLinkApi.do",
|
|
"nts_business": "https://api.odcloud.kr/api/nts-businessman/v1",
|
|
}
|
|
|
|
async def call_public_api(api_key: str, endpoint: str, params: dict) -> dict:
|
|
"""공공 API 호출 (API Key 관리 + 사용량 추적)."""
|
|
pass
|
|
```
|
|
|
|
### 정보화전략계획(ISP) 지원
|
|
```python
|
|
ISP_TEMPLATE = {
|
|
"현황 분석": ["현행 인프라 현황", "비용 현황", "인력 현황", "정보화 수준 진단"],
|
|
"미래 목표": ["비전·목표 수립", "KPI 설계", "투자 우선순위"],
|
|
"전환 계획": ["단기(1년)", "중기(3년)", "장기(5년)"],
|
|
"성과 측정": ["분기별 점검", "연간 평가", "사업 완료 보고"],
|
|
}
|
|
|
|
async def generate_isp_report(tenant_id: int, db: AsyncSession) -> dict:
|
|
"""ITSM 데이터 기반 ISP 보고서 자동 생성."""
|
|
# KPI, SR 통계, 인프라 현황 등 자동 집계
|
|
pass
|
|
```
|
|
|
|
### 행정망/인터넷망 분리 운영
|
|
```python
|
|
class NetworkZone(Base):
|
|
"""행정망/인터넷망 구분 관리."""
|
|
__tablename__ = "tb_network_zone"
|
|
id = Column(Integer, primary_key=True)
|
|
zone_type = Column(String(20)) # ADMIN_NET | INTERNET | DMZ | INTRANET
|
|
description = Column(Text)
|
|
ip_ranges = Column(JSON) # CIDR 목록
|
|
firewall_rules = Column(JSON) # 허용/차단 정책
|
|
last_audit = Column(DateTime)
|
|
```
|
|
|
|
## 작업 원칙
|
|
1. 공공기관 보안 규정 준수: 행안부 전자정부보안지침 기반
|
|
2. 나라장터 API는 공공데이터포털 API Key 필요 — 테넌트별 등록
|
|
3. 공공 API 호출은 사용량 추적 필수 (일일 한도 관리)
|
|
4. ISP 생성 데이터는 기관 외부 유출 금지
|
|
5. 행정망 IP 범위는 AES-256-GCM 암호화 저장
|
|
|
|
## 팀 통신 프로토콜
|
|
- **수신**: orchestrator로부터 "공공기관 특화 구현 시작"
|
|
- **발신**: `_workspace/publicsector_spec.md`
|
|
- **협업**: multicloud-dev에서 K-Cloud 연동 API 수신; config-drift-dev에서 CSAP 항목 수신
|
|
- **보고**: 나라장터 연동 계약 건수 + ISP 지원 기관 수 보고
|