93 lines
2.6 KiB
Python
93 lines
2.6 KiB
Python
"""
|
|
시스템 정보 API (모바일 기능 #77).
|
|
|
|
GET /api/system/release-notes — 버전별 릴리즈 노트 목록
|
|
GET /api/system/version — 현재 버전 정보
|
|
|
|
릴리즈 노트는 정적 정의(코드 내장)로 제공한다.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from typing import List, Optional
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from pydantic import BaseModel
|
|
|
|
from core.auth import get_current_user
|
|
from models import User
|
|
|
|
router = APIRouter(prefix="/api/system", tags=["System"])
|
|
|
|
CURRENT_VERSION = "2.0.0"
|
|
|
|
# 최신 → 과거 순서
|
|
_RELEASE_NOTES: List[dict] = [
|
|
{
|
|
"version": "2.0.0",
|
|
"date": "2026-06-06",
|
|
"changes": [
|
|
"모바일 100기능 백엔드 API 추가 (알림규칙·통합검색·SR채팅·부품재고)",
|
|
"SR 에스컬레이션/구독/만족도/현장서명/체크인 지원",
|
|
"보안 이벤트 로그 및 디바이스 관리 추가",
|
|
"다단계 승인 현황 및 변경 달력 API 추가",
|
|
],
|
|
"breaking_changes": [],
|
|
},
|
|
{
|
|
"version": "1.5.0",
|
|
"date": "2026-06-01",
|
|
"changes": [
|
|
"CI/CD 배포 트리거 연동",
|
|
"tmux 세션 관리·하네스 빌더 추가",
|
|
"AI-SOC·데이터 거버넌스 영역 확장",
|
|
],
|
|
"breaking_changes": [],
|
|
},
|
|
{
|
|
"version": "1.0.0",
|
|
"date": "2026-05-20",
|
|
"changes": [
|
|
"GUARDiA ITSM 정식 출시",
|
|
"SR 라이프사이클·CMDB·KB·SLA·승인 워크플로우",
|
|
],
|
|
"breaking_changes": [],
|
|
},
|
|
]
|
|
|
|
|
|
class ReleaseNote(BaseModel):
|
|
version: str
|
|
date: str
|
|
changes: List[str]
|
|
breaking_changes: List[str] = []
|
|
|
|
|
|
@router.get("/release-notes", response_model=List[ReleaseNote])
|
|
async def list_release_notes(
|
|
since: Optional[str] = None,
|
|
_u: User = Depends(get_current_user),
|
|
):
|
|
"""버전별 릴리즈 노트 목록 (최신순). since 지정 시 해당 버전 이후만."""
|
|
notes = _RELEASE_NOTES
|
|
if since:
|
|
# since 버전 이후(미포함)만 반환
|
|
filtered = []
|
|
for n in notes:
|
|
if n["version"] == since:
|
|
break
|
|
filtered.append(n)
|
|
notes = filtered
|
|
return notes
|
|
|
|
|
|
@router.get("/version")
|
|
async def get_version(_u: User = Depends(get_current_user)):
|
|
"""현재 버전 정보."""
|
|
latest = _RELEASE_NOTES[0] if _RELEASE_NOTES else None
|
|
return {
|
|
"name": "GUARDiA ITSM",
|
|
"version": CURRENT_VERSION,
|
|
"latest_release_date": latest["date"] if latest else None,
|
|
"release_count": len(_RELEASE_NOTES),
|
|
}
|