giip

프로젝트 메모 목록 가이드

프로젝트(CSN)와 서버(lssn) 단위로 자유 형식 메모(키·값·메모)를 조회·추가·수정·삭제하는 방법을 안내합니다. 로그인이 필요한 페이지입니다.

🚀 프로젝트 메모 페이지로 이동 →


📋 개요

프로젝트 메모는 특정 프로젝트(CSN)와 논리 서버(lssn)에 연결된 메모를 한 화면에서 관리하는 페이지입니다. 서버별 접속 정보·체크리스트·참고 URL 등 운영에 필요한 메모를 자유 형식(키 / 값 / 상세 메모)으로 저장할 수 있습니다.

각 메모는 다음 필드로 구성됩니다.

필드의미
lcSn메모 일련번호(PK). 수정·삭제 시 사용
csn프로젝트 코드
lssn연결된 논리 서버 번호(선택)
lcKey메모 키(예: ssh-port, admin-url)
lcVal메모 값(예: 2222, https://...)
lcMemo자유 서술 메모

🔍 주요 기능 설명

1. 서버(lssn) 지정 · LSVR 선택

상단 lssn 입력란에 서버 번호를 직접 넣거나, [LSVR 선택] 버튼으로 현재 프로젝트의 서버 목록에서 골라 채울 수 있습니다. 선택한 서버 번호는 이후 메모 추가 시 자동으로 함께 전달됩니다.

2. 프로젝트(CSN) 연동

CSN은 URL의 ?csn= 파라미터 또는 현재 로그인 세션의 프로젝트에서 자동으로 채워집니다. 상단 공통 영역에서 프로젝트를 바꾸면 목록도 새 프로젝트 기준으로 다시 조회됩니다.

3. 조회 (Fetch)

[Fetch] 버튼을 누르면 지정한 프로젝트의 메모가 조회됩니다. 결과는 데스크톱에서는 표(테이블), 모바일에서는 카드 형태로 표시됩니다.

  • URL 자동 링크: 값(lcVal)이 http(s)://로 시작하면 새 탭에서 열리는 링크로 표시됩니다.
  • 서버 링크: 서버(lssn) 컬럼은 해당 서버 상세(lsvrdetail)로 이동하는 링크로 표시됩니다.

4. 메모 추가 / 수정 / 삭제

  • 추가: [메모 추가] 버튼을 누르면 현재 CSN·lssn을 가지고 메모 추가 페이지(prjMemoPut)로 이동합니다. 표 안의 편집 모달에서 바로 추가할 수도 있습니다.
  • 수정: 각 행의 [Edit] 버튼을 누르면 해당 메모(lcKey / lcVal / lcMemo)를 불러온 편집 모달이 열립니다. 저장 시 lcSn이 함께 전달되어 기존 메모가 갱신됩니다.
  • 삭제: 각 행의 [Delete] 버튼을 누르면 확인창이 뜨고, 확인 시 메모가 삭제된 뒤 목록이 다시 조회됩니다. 삭제는 되돌릴 수 없습니다.

5. 머신 상세로 이동

[머신상세] 버튼을 누르면 입력한 lssn의 서버 상세 페이지(lsvrdetail)로 이동합니다.


🛠️ 사용 순서 (요약)

  1. 상단에서 lssn을 입력하거나 **[LSVR 선택]**으로 서버를 고른다.
  2. **[Fetch]**로 현재 프로젝트의 메모를 조회한다.
  3. [메모 추가] 또는 행의 **[Edit]**로 메모를 작성/수정하고 저장한다.
  4. 불필요한 메모는 행의 **[Delete]**로 삭제한다(확인 후 즉시 반영).

🔌 API 사용 가이드

이 화면은 GIIP 공용 API 엔드포인트(/api/giipApi)에 세 가지 커맨드를 호출해 동작합니다. 브라우저에서는 로그인 세션 토큰이 자동으로 전달되며, 외부에서 직접 호출할 때는 AK(액세스 토큰) 를 사용합니다.

아래 예시는 실제 라이브 환경(CSN 47)에서 조회→추가→삭제 라운드트립으로 동작을 검증한 것과 동일한 호출입니다.

공통 규격

  • 엔드포인트: POST https://giipfaw.azurewebsites.net/api/giipApi
  • Content-Type: application/x-www-form-urlencoded
  • 인증: 폼 필드 token / usertoken 에 AK(로그인 사용자 액세스 토큰)를 넣습니다.
  • 호출 형식: 폼 필드 text커맨드 파라미터명…(값이 아니라 파라미터 이름)을, 폼 필드 jsondata 에 실제 값을 JSON으로 넣습니다.
    • 이 방식은 corpMemo 등 다른 메모 화면과 동일한 규약입니다.
커맨드역할textjsondata 필드
prjMemoList프로젝트 메모 목록 조회prjMemoList csncsn
prjMemoPut메모 추가/수정(upsert)prjMemoPut csn lssn lcKey lcVal lcMemo (수정 시 끝에 lcSn)csn, lssn, lcKey, lcVal, lcMemo, lcSn?
prjMemoDel메모 삭제prjMemoDel csn lcSncsn, lcSn

권한: AK 사용자가 해당 csn(프로젝트)의 멤버(tCorpUserRel)여야 합니다. 아니면 403 Forbidden이 반환됩니다. AK가 유효하지 않으면 401 Unauthorized.

1) 목록 조회 — prjMemoList

curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_AK" \
  --data-urlencode "usertoken=YOUR_AK" \
  --data-urlencode "text=prjMemoList csn" \
  --data-urlencode 'jsondata={"csn":47}'

응답(예) — 각 행에 메모 필드와 tags(태그 JSON 배열, 없으면 null)가 포함됩니다.

[
  { "lcSn": 12, "csn": 47, "lssn": 71198, "lcKey": "ssh-port", "lcVal": "2222", "lcMemo": "점검용 포트", "tags": null }
]

메모가 없으면 결과 없음(빈 응답)이 반환됩니다.

2) 추가 / 수정 — prjMemoPut

lcSn생략하면 새 메모 추가, lcSn함께 보내면 해당 메모 수정입니다(upsert). 수정 시에는 text 끝에 lcSn을 덧붙입니다.

# 추가(insert)
curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_AK" \
  --data-urlencode "usertoken=YOUR_AK" \
  --data-urlencode "text=prjMemoPut csn lssn lcKey lcVal lcMemo" \
  --data-urlencode 'jsondata={"csn":47,"lssn":71198,"lcKey":"admin-url","lcVal":"https://portal.example.com","lcMemo":"관리자 콘솔"}'
# 수정(update) — lcSn 포함
$body = @{
  token     = "YOUR_AK"
  usertoken = "YOUR_AK"
  text      = "prjMemoPut csn lssn lcKey lcVal lcMemo lcSn"
  jsondata  = '{"csn":47,"lssn":71198,"lcKey":"admin-url","lcVal":"https://portal2.example.com","lcMemo":"URL 변경","lcSn":12}'
}
Invoke-RestMethod -Method Post -Uri "https://giipfaw.azurewebsites.net/api/giipApi" `
  -ContentType "application/x-www-form-urlencoded" -Body $body

응답(예) — 저장 후 갱신된 목록과 생성/수정된 lcSn을 돌려줍니다.

[ [ { "lcSn": 12, "csn": 47, "lcKey": "admin-url", "lcVal": "https://portal.example.com", "tags": null } ], [ { "lcSn": 12 } ] ]

3) 삭제 — prjMemoDel

curl -X POST "https://giipfaw.azurewebsites.net/api/giipApi" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "token=YOUR_AK" \
  --data-urlencode "usertoken=YOUR_AK" \
  --data-urlencode "text=prjMemoDel csn lcSn" \
  --data-urlencode 'jsondata={"csn":47,"lcSn":12}'

응답(예)

{ "status": "Success", "lcSn": 12 }

결과 코드(RstVal)

RstVal의미조치
(정상)성공. 데이터 행 또는 status:"Success" 반환
401Unauthorized — AK 없음/무효token/usertoken에 올바른 AK를 넣습니다
403Forbidden — 해당 CSN 권한 없음AK 사용자가 그 프로젝트 멤버인지 확인합니다

전체 결과 코드 정의는 API 결과 코드 가이드(RstVal)를 참조하세요.


💡 유의 사항

  • CSN이 비어 있으면 조회 결과가 표시되지 않을 수 있습니다. 프로젝트를 먼저 지정하세요.
  • 삭제는 확인 후 즉시 반영되며 복구할 수 없습니다.
  • lcVal에 URL을 넣으면 목록에서 바로 클릭할 수 있어 링크 저장소처럼 활용할 수 있습니다.

🔧 문제 해결

증상원인해결
메모가 조회되지 않음CSN이 비었거나 잘못됨상단에서 올바른 프로젝트를 지정하고 [Fetch]
API가 401 반환AK 누락/무효token/usertoken에 유효한 AK 전달
API가 403 반환AK 사용자가 해당 CSN 멤버 아님프로젝트 멤버십(tCorpUserRel) 확인
수정이 새 메모로 저장됨요청에 lcSn 누락수정 시 text 끝에 lcSn을 넣고 jsondata에 lcSn 포함
삭제가 실패함결과에 lcSn이 없거나 세션 만료목록을 다시 조회하거나 재로그인 후 재시도

버전: 1.0 최종 업데이트: 2026-07-24 소스 파일: giipv3/public/help/prjmemolist.ko.md