v8.0 | 2026-04-10

KOIST 평가현황 시스템 개발지침서

10개 사업 평가현황 관리 시스템 - 개발 및 운영 가이드

목차

  1. 기술 스택 및 환경 설정
  2. 프로젝트 디렉터리 구조
  3. 10개 사업 카테고리 정의
  4. 데이터베이스 마이그레이션
  5. 백엔드 API 개발 가이드
  6. 프론트엔드 개발 가이드
  7. 관리자 페이지 개발 가이드
  8. 배포 절차
  9. 테스트 체크리스트
  10. 운영 및 유지보수

1. 기술 스택 및 환경 설정

구분기술용도
런타임Cloudflare Workers엣지 서버리스 실행 환경
프레임워크Hono v4+경량 웹 프레임워크
빌드Vite + @hono/vite-cloudflare-pagesSSR 빌드
데이터베이스Cloudflare D1 (SQLite)분산 관계형 DB
파일 저장Cloudflare R2이미지/파일 스토리지
CSSTailwind CSS (CDN)유틸리티 CSS
아이콘FontAwesome 6.5아이콘 라이브러리
배포Wrangler CLICloudflare 배포 도구

환경 설정

# 의존성 설치
npm install

# 로컬 개발 서버
npm run build && npm run dev:sandbox

# 프로덕션 배포
npm run deploy

2. 프로젝트 디렉터리 구조

webapp/
├── src/
│   ├── index.tsx          # 메인 라우터 (Hono 앱)
│   ├── types.ts           # TypeScript 타입 정의
│   ├── routes/
│   │   ├── api.ts         # 공개 API 라우트
│   │   └── admin.ts       # 관리자 API (CRUD)
│   ├── templates/
│   │   ├── home.tsx       # 홈 페이지 (카테고리 요약)
│   │   ├── pages.tsx      # 평가현황/공지/FAQ/문의 페이지
│   │   ├── layout.tsx     # 공통 레이아웃 (GNB, 푸터)
│   │   └── admin/
│   │       └── index.tsx  # 관리자 대시보드 레이아웃
│   ├── middleware/
│   │   └── auth.ts        # JWT 인증 미들웨어
│   └── utils/
│       ├── db.ts          # DB 유틸리티 (getSettings)
│       └── crypto.ts      # 암호화 유틸리티
├── public/
│   └── static/
│       ├── js/
│       │   └── admin-progress.js  # 관리자 평가현황 CRUD JS
│       └── docs/
│           ├── architecture-diagram.html
│           └── development-guide.html
├── migrations/
│   ├── 0001_initial_schema.sql
│   ├── 0002_about_pages.sql
│   ├── 0003_progress_schema_upgrade.sql
│   └── 0004_images_and_bg_settings.sql
├── seed.sql               # 기본 시드 데이터
├── seed-progress-v2.sql   # 10개 사업 평가현황 시드
├── wrangler.jsonc         # Cloudflare 설정
├── vite.config.ts         # Vite 빌드 설정
└── package.json

3. 10개 사업 카테고리 정의

중요: 카테고리 이름은 DB, 프론트엔드, 관리자 JS 모두에서 동일하게 사용되어야 합니다. 카테고리를 추가/변경할 경우, 세 곳 모두 수정해야 합니다: pages.tsx (CATEGORY_META), home.tsx (catMeta), admin-progress.js (CATEGORIES)
번호카테고리명아이콘색상동적 필드
1CC평가fa-shield-halved#3B82F6보증등급, 인증구분, 신청구분
2보안기능확인서fa-file-shield#8B5CF6확인서등급, 발급구분, 시험유형
3KCMVPfa-lock#EC4899검증등급, 모듈유형, 알고리즘
4성능평가fa-gauge-high#F59E0B성능등급, 평가구분, 평가항목
5보안적합성검증fa-clipboard-check#10B981적합등급, 검증구분, 검증기준
6취약점분석평가fa-bug#EF4444위험등급, 분석유형, 평가범위
7정보보호제품평가fa-box-archive#06B6D4평가등급, 제품유형, 평가기준
8클라우드보안인증fa-cloud-arrow-up#6366F1인증등급, 서비스유형, 인증기준
9IoT보안인증fa-microchip#14B8A6인증등급, 기기유형, 인증기준
10기타시험평가fa-flask#78716C등급, 유형, 기준

4. 데이터베이스 마이그레이션

마이그레이션 적용 순서

# 로컬 개발
npx wrangler d1 migrations apply koist-website-db --local
npx wrangler d1 execute koist-website-db --local --file=./seed-progress-v2.sql

# 프로덕션
npx wrangler d1 migrations apply koist-website-db --remote
npx wrangler d1 execute koist-website-db --remote --file=./seed-progress-v2.sql
주의: seed-progress-v2.sql은 기존 progress_items를 모두 삭제(DELETE)하고 재삽입합니다. 프로덕션에서 실행 전 반드시 데이터 백업을 확인하세요.

5. 백엔드 API 개발 가이드

새 카테고리 추가 시

  1. pages.tsxCATEGORY_META에 카테고리 추가
  2. home.tsxcatMeta에 동일 항목 추가
  3. admin-progress.jsCATEGORIES에 동적 폼 필드 추가
  4. 시드 데이터 SQL에 해당 카테고리 데이터 추가

API 응답 형식

// 성공
{ "success": true, "data": [...] }

// 에러
{ "error": "에러 메시지" }

6. 프론트엔드 개발 가이드

평가현황 페이지 구조

  1. 카테고리 탭 바: 전체 + 10개 사업, 각 사업별 건수 표시
  2. 검색/필터 바: 제품명 검색 + 상태(접수/진행/완료) 필터
  3. 데이터 테이블: 카테고리별 동적 컬럼 헤더 변경
  4. 페이지네이션: 15건 단위, 첫/이전/숫자/다음/끝 내비게이션

홈페이지 평가현황 위젯

카테고리별 요약 카드 (건수) + 최근 5건 테이블로 구성. 각 카드 클릭 시 해당 카테고리 상세로 이동.

7. 관리자 페이지 개발 가이드

admin-progress.js 구조

  1. 카테고리 요약 카드: 전체 + 10개 사업별 건수 (클릭으로 필터링)
  2. 동적 폼: 사업 분류 선택 시 등급/구분/유형 옵션이 자동 변경
  3. CRUD 테이블: 인라인 수정/삭제, 카테고리별 필터링
동적 폼 동작: onCatChange() 함수에서 선택된 카테고리의 col2Opts, col3Opts, col4Opts를 읽어 셀렉트박스를 동적으로 교체합니다.

8. 배포 절차

# 1. 빌드
npm run build

# 2. (최초 또는 스키마 변경 시) 마이그레이션
npx wrangler d1 migrations apply koist-website-db --remote

# 3. (최초 또는 데이터 변경 시) 시드 데이터
npx wrangler d1 execute koist-website-db --remote --file=./seed-progress-v2.sql

# 4. 배포
npx wrangler pages deploy dist --project-name koist-website

# 5. 확인
curl https://koist-website.pages.dev/support/progress

9. 테스트 체크리스트

구분항목확인
카테고리 요약 카드 표시 (최대 6개)
최근 평가현황 테이블 (5건)
평가현황10개 카테고리 탭 전환
평가현황카테고리별 독립 데이터 표시
평가현황카테고리별 동적 컬럼 헤더
평가현황검색/상태 필터 동작
평가현황페이지네이션 동작
관리자카테고리별 건수 카드 표시
관리자카테고리 필터링
관리자신규 추가 (동적 폼)
관리자수정 (기존 데이터 로드)
관리자삭제 (확인 다이얼로그)
관리자카테고리 변경 시 폼 필드 동적 갱신
문서설계서 다운로드/인쇄
문서개발지침서 다운로드/인쇄
모바일팝업 반응형 동작
모바일평가현황 테이블 가로 스크롤

10. 운영 및 유지보수

일상 운영

문제 해결

KOIST 평가현황 시스템 개발지침서 v8.0 | 한국정보보안기술원