etc 폴더와 shutter 생성

This commit is contained in:
2026-01-01 20:31:49 +09:00
parent 4ce1e3f813
commit 517259c9b5
8 changed files with 2379 additions and 324 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
# SAM Project Guidelines
## Core Principles
1. **Anti-Hallucination**: Never guess column names. Check `app/Models/` or migrations.
2. **Hybrid EAV**: Follow `sales/codepolicy/index.php` for table design.
3. **Clean Code**: Maintain Laravel 12 best practices and Next.js 15 standards.
## Project Structure
- `api/`: Laravel 12 REST API + Swagger
- `mng/`: Filament PHP Admin (Blade/Tailwind)
- `react/`: Next.js 15 Frontend
- `docs/`: Master plans and progress logs
## Tech Stack Rules
- **Admin**: Use Filament v3. No Alpine.js in standard blade files unless necessary.
- **Styling**: Vanilla CSS + Tailwind. Glassmorphism is the standard UI theme.
- **Testing**: Use TestSprite for visual and E2E QA.
## Workflow Integration
- Use Antigravity for UI and complex logic planning.
- Use Claude Code for infrastructure, linting, and git operations.
- Always update `PROGRESS.md` before ending a session.

View File

@@ -0,0 +1,34 @@
# [기능명] Master Plan - v1.0
## 1. 개요 (Overview)
- **목적**: [기능의 핵심 목적 작성]
- **대상**: [수혜자 및 관련 모듈]
- **배경**: [기존 5130 시스템 대비 개선 사항]
## 2. 아키텍처 설계 (Architecture)
### 2.1 DB 설계 (Hybrid EAV)
- **필수 컬럼 (Stored)**: `id`, `tenant_id`, [주요 필드]
- **가변 컬럼 (JSON options)**: `settings`, `metadata`, [확장 필드]
### 2.2 기술 스택
- **Backend**: Laravel 12 API (api 프로젝트)
- **Admin**: Filament PHP (mng 프로젝트)
- **Frontend**: Next.js 15 (react 프로젝트)
## 3. 구현 단계 (Phases)
### Phase 1: DB & 모델링
- [ ] 마이그레이션 생성 (api)
- [ ] Eloquent 모델 및 관계 설정
### Phase 2: 비즈니스 로직 (API)
- [ ] 컨트롤러 구현
- [ ] API 명세서 업데이트 (Swagger)
### Phase 3: UI/UX 구현 (mng/react)
- [ ] 관리자 페이지 구성
- [ ] 사용자 프론트엔드 연동
## 4. 검증 포인트 (Verification)
- [Antigravity] 디자인 시스템 준수 여부
- [Claude Code] 보안 취약점 및 정책 준수 체크
- [TestSprite] 주요 시나리오 E2E 테스트

View File

@@ -0,0 +1,20 @@
# Progress Log - [프로젝트명]
## 🚀 실시간 진행 현황
- **현재 단계**: Phase [N] 구현 중
- **진행률**: [NN]%
- **최근 완료**: [최근 완료된 항목]
## 📝 작업 기록 (Context History)
| 날짜 | 단계 | 내용 | 담당 | 비고 |
| :--- | :--- | :--- | :--- | :--- |
| 202X-XX-XX | Phase 1 | DB 마이그레이션 및 기본 모델 생성 | Claude Code | 완료 |
| 202X-XX-XX | Phase 2 | 리스트 조회 API 및 필터 기능 추가 | Antigravity | 진행 중 |
## 🧠 컨텍스트 요약 (Amnesia Recovery)
- **핵심 결정 사항**: [중요 아키텍처 결정 내용]
- **다음 세션 시작 지점**: [AI가 다음 세션에서 바로 이어서 해야 할 일]
- **주의 사항**: [구현 중 발견된 특이 사항]
## 🚩 이슈 및 차단 사항 (Blockers)
- [ ] [현재 해결되지 않은 기술적 이슈]

View File

@@ -0,0 +1,24 @@
# Product Specification (PSD) for TestSprite QA
## 1. Feature Description
- **Target URL**: `http://localhost:8000/[path]`
- **Goal**: [테스트를 통해 검증하고자 하는 핵심 사용자 가치]
## 2. User Scenarios
### Scenario 1: [시나리오 명]
1. **Given**: [사용자의 초기 상태]
2. **When**: [사용자가 수행하는 액션]
3. **Then**: [기대하는 결과 및 화면 변화]
### Scenario 2: [에지 케이스 시나리오]
...
## 3. UI Checkpoints
- [ ] 버튼 클릭 시 로딩 애니메이션 표시 여부
- [ ] 입력 폼 유효성 검사 (Validation) 메시지 확인
- [ ] 반응형 레이아웃 (모바일/데스크탑) 정렬 상태
## 4. Visual Standards
- **Font**: Inter, Outfit 체 사용 여부
- **Color**: Dark mode (#030712) 배경 및 Glassmorphism 투명도 확인
- **Icon**: Lucide 아이콘 일관성

990
etc/shutter.php Normal file
View File

@@ -0,0 +1,990 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>자동방화셔터 품질인정제도 가이드</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Noto Sans KR', sans-serif;
background-color: #0f172a;
color: #e2e8f0;
}
.gradient-bg {
background: linear-gradient(135deg, #1e293b 0%, #0f172a 50%, #1e1b4b 100%);
}
.fire-gradient {
background: linear-gradient(135deg, #ea580c 0%, #dc2626 50%, #991b1b 100%);
}
.card-glass {
background: rgba(30, 41, 59, 0.7);
backdrop-filter: blur(10px);
border: 1px solid rgba(148, 163, 184, 0.1);
}
.card-hover:hover {
transform: translateY(-4px);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
}
.chart-container {
position: relative;
width: 100%;
max-width: 600px;
margin: auto;
height: 320px;
}
@media (min-width: 768px) {
.chart-container { height: 360px; }
}
.glow-orange {
box-shadow: 0 0 30px rgba(234, 88, 12, 0.3);
}
.glow-blue {
box-shadow: 0 0 30px rgba(59, 130, 246, 0.2);
}
.animate-pulse-slow {
animation: pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes slideUp {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-slide-up {
animation: slideUp 0.5s ease-out forwards;
}
.step-connector {
position: absolute;
left: 24px;
top: 48px;
bottom: 0;
width: 2px;
background: linear-gradient(to bottom, #ea580c, #3b82f6);
}
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #1e293b; }
::-webkit-scrollbar-thumb { background: #475569; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #64748b; }
.tab-active {
background: linear-gradient(135deg, #ea580c, #dc2626);
color: white;
}
.spec-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1rem;
}
</style>
</head>
<body class="gradient-bg min-h-screen">
<!-- Navigation -->
<nav class="bg-slate-900/90 backdrop-blur-md sticky top-0 z-50 border-b border-slate-700/50">
<div class="max-w-6xl mx-auto px-4 py-4 flex justify-between items-center">
<div class="font-bold text-xl text-white flex items-center gap-3">
<div class="w-10 h-10 fire-gradient rounded-lg flex items-center justify-center">
<span class="text-xl">🔥</span>
</div>
<span>자동방화셔터 가이드</span>
</div>
<div class="hidden md:flex space-x-6 text-sm font-medium text-slate-400">
<button onclick="scrollToSection('section-overview')" class="hover:text-orange-400 transition">개요</button>
<button onclick="scrollToSection('section-types')" class="hover:text-orange-400 transition">셔터 종류</button>
<button onclick="scrollToSection('section-specs')" class="hover:text-orange-400 transition">성능기준</button>
<button onclick="scrollToSection('section-process')" class="hover:text-orange-400 transition">인정절차</button>
<button onclick="scrollToSection('section-install')" class="hover:text-orange-400 transition">설치기준</button>
<button onclick="scrollToSection('section-check')" class="hover:text-orange-400 transition">체크리스트</button>
</div>
<button class="md:hidden text-slate-400 hover:text-white" onclick="toggleMobileMenu()">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/>
</svg>
</button>
</div>
<!-- Mobile Menu -->
<div id="mobile-menu" class="hidden md:hidden bg-slate-800 border-t border-slate-700">
<div class="px-4 py-3 space-y-2">
<button onclick="scrollToSection('section-overview')" class="block w-full text-left py-2 text-slate-300 hover:text-orange-400">개요</button>
<button onclick="scrollToSection('section-types')" class="block w-full text-left py-2 text-slate-300 hover:text-orange-400">셔터 종류</button>
<button onclick="scrollToSection('section-specs')" class="block w-full text-left py-2 text-slate-300 hover:text-orange-400">성능기준</button>
<button onclick="scrollToSection('section-process')" class="block w-full text-left py-2 text-slate-300 hover:text-orange-400">인정절차</button>
<button onclick="scrollToSection('section-install')" class="block w-full text-left py-2 text-slate-300 hover:text-orange-400">설치기준</button>
<button onclick="scrollToSection('section-check')" class="block w-full text-left py-2 text-slate-300 hover:text-orange-400">체크리스트</button>
</div>
</div>
</nav>
<!-- Main Content -->
<main class="max-w-5xl mx-auto px-4 py-8 space-y-16">
<!-- Hero Section -->
<header class="text-center py-16 relative">
<div class="absolute inset-0 overflow-hidden">
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-96 h-96 bg-orange-500/10 rounded-full blur-3xl"></div>
<div class="absolute top-1/4 right-1/4 w-64 h-64 bg-blue-500/10 rounded-full blur-3xl"></div>
</div>
<div class="relative z-10">
<div class="inline-flex items-center gap-2 bg-orange-500/20 text-orange-400 px-4 py-2 rounded-full text-sm font-semibold mb-6 border border-orange-500/30">
<span class="w-2 h-2 bg-orange-400 rounded-full animate-pulse"></span>
국토교통부고시 제2021-1009 적용
</div>
<h1 class="text-4xl md:text-5xl font-black mb-6 leading-tight">
<span class="text-white">자동방화셔터</span><br>
<span class="bg-gradient-to-r from-orange-400 to-red-500 bg-clip-text text-transparent">품질인정제도 완벽 가이드</span>
</h1>
<p class="text-slate-400 text-lg max-w-2xl mx-auto mb-10 leading-relaxed">
화재 연기와 열을 감지하여 자동 폐쇄되는 방화셔터.<br>
<strong class="text-slate-200">2021 강화된 품질인정제도</strong> 모든 것을 알아보세요.
</p>
<div class="flex flex-col sm:flex-row justify-center gap-4">
<button onclick="scrollToSection('section-process')" class="fire-gradient hover:opacity-90 text-white font-bold py-3 px-8 rounded-xl transition shadow-lg glow-orange">
인정 절차 확인하기
</button>
<button onclick="scrollToSection('section-check')" class="bg-slate-700 hover:bg-slate-600 text-white font-bold py-3 px-8 rounded-xl transition border border-slate-600">
현장 체크리스트
</button>
</div>
</div>
</header>
<!-- Section 1: Overview -->
<section id="section-overview" class="scroll-mt-24">
<div class="flex items-center gap-3 mb-8">
<div class="w-12 h-12 fire-gradient rounded-xl flex items-center justify-center text-white font-bold text-lg">1</div>
<div>
<h2 class="text-2xl font-bold text-white">자동방화셔터란?</h2>
<p class="text-slate-400 text-sm">Fire Shutter Overview</p>
</div>
</div>
<div class="card-glass rounded-2xl p-8 glow-blue">
<div class="grid md:grid-cols-2 gap-8">
<div>
<h3 class="text-xl font-bold text-white mb-4 flex items-center gap-2">
<span class="text-2xl">🏢</span> 정의 역할
</h3>
<p class="text-slate-300 leading-relaxed mb-4">
자동방화셔터는 <strong class="text-orange-400">방화구획</strong> 용도로 화재 연기 열을 감지하여 자동 폐쇄되는 설비입니다.
</p>
<p class="text-slate-400 leading-relaxed">
공항, 체육관, 대형마트 넓은 공간에서 내화구조 벽을 설치하기 어려운 경우에 방화구획을 형성하는 핵심 장치입니다.
</p>
</div>
<div>
<h3 class="text-xl font-bold text-white mb-4 flex items-center gap-2">
<span class="text-2xl">⚖️</span> 법적 근거
</h3>
<ul class="space-y-3 text-slate-300">
<li class="flex items-start gap-3">
<span class="text-orange-400 mt-1"></span>
<span><strong class="text-white">건축법 시행령 제46조</strong> - 방화구획 설치 의무</span>
</li>
<li class="flex items-start gap-3">
<span class="text-orange-400 mt-1"></span>
<span><strong class="text-white">국토부고시 제2021-1009</strong> - 방화문 자동방화셔터의 인정 관리기준</span>
</li>
<li class="flex items-start gap-3">
<span class="text-orange-400 mt-1"></span>
<span><strong class="text-white">KS F 4510</strong> - 중량셔터 성능 기준</span>
</li>
</ul>
</div>
</div>
<!-- Key Change Alert -->
<div class="mt-8 bg-red-500/10 border border-red-500/30 rounded-xl p-6">
<div class="flex items-start gap-4">
<div class="w-12 h-12 bg-red-500/20 rounded-full flex items-center justify-center flex-shrink-0">
<span class="text-2xl">⚠️</span>
</div>
<div>
<h4 class="font-bold text-red-400 text-lg mb-2">2021 핵심 변화: 일체형 방화셔터 사용 금지</h4>
<p class="text-slate-300 leading-relaxed">
셔터 일부에 피난 출입구가 설치된 <strong class="text-white">일체형 방화셔터</strong> 피난로 인지 지연 처짐으로 인한 비상문 개폐 불량 문제로 <strong class="text-red-400">설치가 금지</strong>되었습니다.
반드시 <strong class="text-white">분리형(60 방화문 3m 이내 별도 설치)</strong>으로 설계해야 합니다.
</p>
</div>
</div>
</div>
</div>
</section>
<!-- Section 2: Types of Fire Shutters -->
<section id="section-types" class="scroll-mt-24">
<div class="flex items-center gap-3 mb-8">
<div class="w-12 h-12 fire-gradient rounded-xl flex items-center justify-center text-white font-bold text-lg">2</div>
<div>
<h2 class="text-2xl font-bold text-white">방화셔터의 종류</h2>
<p class="text-slate-400 text-sm">Types of Fire Shutters</p>
</div>
</div>
<!-- Type Tabs -->
<div class="flex gap-2 mb-6 overflow-x-auto pb-2">
<button id="tab-steel" onclick="showShutterType('steel')" class="tab-active px-6 py-3 rounded-xl font-semibold whitespace-nowrap transition">
철재 방화셔터
</button>
<button id="tab-screen" onclick="showShutterType('screen')" class="bg-slate-700 text-slate-300 px-6 py-3 rounded-xl font-semibold whitespace-nowrap hover:bg-slate-600 transition">
스크린 방화셔터
</button>
<button id="tab-compare" onclick="showShutterType('compare')" class="bg-slate-700 text-slate-300 px-6 py-3 rounded-xl font-semibold whitespace-nowrap hover:bg-slate-600 transition">
비교분석
</button>
</div>
<!-- Steel Shutter Content -->
<div id="content-steel" class="card-glass rounded-2xl p-8 animate-slide-up">
<div class="flex items-start gap-4 mb-6">
<div class="w-16 h-16 bg-slate-600 rounded-xl flex items-center justify-center text-3xl">🔩</div>
<div>
<h3 class="text-2xl font-bold text-white mb-1">철재 방화셔터 (Steel Fire Shutter)</h3>
<p class="text-slate-400">강판 슬랫으로 제작된 전통적인 방화셔터</p>
</div>
</div>
<div class="grid md:grid-cols-2 gap-6">
<div class="bg-slate-800/50 rounded-xl p-6">
<h4 class="font-bold text-orange-400 mb-4">구조 재질</h4>
<ul class="space-y-2 text-slate-300">
<li class="flex items-center gap-2"><span class="text-green-400"></span> 1.55T 전기도금 아연강판</li>
<li class="flex items-center gap-2"><span class="text-green-400"></span> 72mm 슬랫 포밍 구조</li>
<li class="flex items-center gap-2"><span class="text-green-400"></span> 스틸 가이드레일</li>
<li class="flex items-center gap-2"><span class="text-green-400"></span> 전동/수동 개폐 장치</li>
</ul>
</div>
<div class="bg-slate-800/50 rounded-xl p-6">
<h4 class="font-bold text-blue-400 mb-4">적용 환경</h4>
<ul class="space-y-2 text-slate-300">
<li class="flex items-center gap-2"><span class="text-blue-400"></span> 외부와 접촉된 방화구획</li>
<li class="flex items-center gap-2"><span class="text-blue-400"></span> 지하주차장 램프</li>
<li class="flex items-center gap-2"><span class="text-blue-400"></span> 가연성 물질 근접 구역</li>
<li class="flex items-center gap-2"><span class="text-blue-400"></span> 바람 영향을 받는 구역</li>
</ul>
</div>
</div>
</div>
<!-- Screen Shutter Content -->
<div id="content-screen" class="card-glass rounded-2xl p-8 hidden animate-slide-up">
<div class="flex items-start gap-4 mb-6">
<div class="w-16 h-16 bg-slate-600 rounded-xl flex items-center justify-center text-3xl">🧵</div>
<div>
<h3 class="text-2xl font-bold text-white mb-1">스크린 방화셔터 (Screen Fire Shutter)</h3>
<p class="text-slate-400">고순도 실리카 원단을 사용한 경량 방화셔터</p>
</div>
</div>
<div class="grid md:grid-cols-2 gap-6">
<div class="bg-slate-800/50 rounded-xl p-6">
<h4 class="font-bold text-orange-400 mb-4">구조 재질</h4>
<ul class="space-y-2 text-slate-300">
<li class="flex items-center gap-2"><span class="text-green-400"></span> 98% 이상 고순도 실리카 원단</li>
<li class="flex items-center gap-2"><span class="text-green-400"></span> 유리섬유 + 스테인레스 와이어</li>
<li class="flex items-center gap-2"><span class="text-green-400"></span> 경량 구조 (철재 대비 1/3)</li>
<li class="flex items-center gap-2"><span class="text-green-400"></span> 투명/반투명 선택 가능</li>
</ul>
</div>
<div class="bg-slate-800/50 rounded-xl p-6">
<h4 class="font-bold text-blue-400 mb-4">장점</h4>
<ul class="space-y-2 text-slate-300">
<li class="flex items-center gap-2"><span class="text-blue-400"></span> 화재 상황 육안 확인 가능</li>
<li class="flex items-center gap-2"><span class="text-blue-400"></span> 폐쇄감 감소로 패닉 방지</li>
<li class="flex items-center gap-2"><span class="text-blue-400"></span> 낙하 부상 위험 감소</li>
<li class="flex items-center gap-2"><span class="text-blue-400"></span> 긴급 찢고 탈출 가능</li>
</ul>
</div>
</div>
<div class="mt-6 bg-yellow-500/10 border border-yellow-500/30 rounded-xl p-4">
<p class="text-yellow-300 text-sm">
<strong>💡 설치 제한:</strong> 바람의 영향을 받지 않는 <strong>실내 방화구획</strong>에만 설치 가능합니다.
</p>
</div>
</div>
<!-- Comparison Content -->
<div id="content-compare" class="card-glass rounded-2xl p-8 hidden animate-slide-up">
<h3 class="text-xl font-bold text-white mb-6 text-center">철재 vs 스크린 방화셔터 비교</h3>
<div class="overflow-x-auto">
<table class="w-full text-left">
<thead>
<tr class="border-b border-slate-600">
<th class="py-4 px-4 text-slate-400 font-medium">비교 항목</th>
<th class="py-4 px-4 text-orange-400 font-bold">철재 방화셔터</th>
<th class="py-4 px-4 text-blue-400 font-bold">스크린 방화셔터</th>
</tr>
</thead>
<tbody class="text-slate-300">
<tr class="border-b border-slate-700/50">
<td class="py-4 px-4 text-slate-400">내화성능</td>
<td class="py-4 px-4">비차열 1시간 이상</td>
<td class="py-4 px-4">비차열 1시간 이상</td>
</tr>
<tr class="border-b border-slate-700/50">
<td class="py-4 px-4 text-slate-400">차연성능</td>
<td class="py-4 px-4">우수</td>
<td class="py-4 px-4">우수</td>
</tr>
<tr class="border-b border-slate-700/50">
<td class="py-4 px-4 text-slate-400">중량</td>
<td class="py-4 px-4 text-yellow-400">무거움</td>
<td class="py-4 px-4 text-green-400">경량 (1/3 수준)</td>
</tr>
<tr class="border-b border-slate-700/50">
<td class="py-4 px-4 text-slate-400">시야 확보</td>
<td class="py-4 px-4 text-red-400">불가능</td>
<td class="py-4 px-4 text-green-400">가능 (반투명)</td>
</tr>
<tr class="border-b border-slate-700/50">
<td class="py-4 px-4 text-slate-400">외부 설치</td>
<td class="py-4 px-4 text-green-400">가능</td>
<td class="py-4 px-4 text-red-400">불가 (실내만)</td>
</tr>
<tr class="border-b border-slate-700/50">
<td class="py-4 px-4 text-slate-400">비용</td>
<td class="py-4 px-4">상대적 고가</td>
<td class="py-4 px-4">상대적 저렴</td>
</tr>
<tr>
<td class="py-4 px-4 text-slate-400">긴급 탈출</td>
<td class="py-4 px-4">별도 방화문 필요</td>
<td class="py-4 px-4">찢고 탈출 가능</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<!-- Section 3: Performance Specifications -->
<section id="section-specs" class="scroll-mt-24">
<div class="flex items-center gap-3 mb-8">
<div class="w-12 h-12 fire-gradient rounded-xl flex items-center justify-center text-white font-bold text-lg">3</div>
<div>
<h2 class="text-2xl font-bold text-white">성능 기준</h2>
<p class="text-slate-400 text-sm">Performance Standards</p>
</div>
</div>
<div class="spec-grid">
<!-- 내화성능 -->
<div class="card-glass rounded-2xl p-6 card-hover transition-all duration-300">
<div class="w-14 h-14 bg-red-500/20 rounded-xl flex items-center justify-center mb-4">
<span class="text-3xl">🔥</span>
</div>
<h3 class="text-lg font-bold text-white mb-2">내화성능</h3>
<p class="text-slate-400 text-sm mb-4">Fire Resistance</p>
<div class="bg-slate-800/50 rounded-lg p-4">
<p class="text-2xl font-black text-orange-400 mb-2">비차열 1시간 이상</p>
<p class="text-slate-300 text-sm">KS F 2268-1 따른 내화시험 기준</p>
</div>
<p class="text-slate-400 text-sm mt-4 leading-relaxed">
화재 가열면의 반대쪽으로 화염이 관통하지 않는 성능
</p>
</div>
<!-- 차연성능 -->
<div class="card-glass rounded-2xl p-6 card-hover transition-all duration-300">
<div class="w-14 h-14 bg-gray-500/20 rounded-xl flex items-center justify-center mb-4">
<span class="text-3xl">💨</span>
</div>
<h3 class="text-lg font-bold text-white mb-2">차연성능</h3>
<p class="text-slate-400 text-sm mb-4">Smoke Leakage</p>
<div class="bg-slate-800/50 rounded-lg p-4">
<p class="text-2xl font-black text-blue-400 mb-2">KS F 4510 기준</p>
<p class="text-slate-300 text-sm">중량셔터 차연성능 규정 충족</p>
</div>
<p class="text-slate-400 text-sm mt-4 leading-relaxed">
연기의 누설을 차단하여 피난 시간 확보
</p>
</div>
<!-- 개폐성능 -->
<div class="card-glass rounded-2xl p-6 card-hover transition-all duration-300">
<div class="w-14 h-14 bg-green-500/20 rounded-xl flex items-center justify-center mb-4">
<span class="text-3xl">⚙️</span>
</div>
<h3 class="text-lg font-bold text-white mb-2">개폐성능</h3>
<p class="text-slate-400 text-sm mb-4">Operation</p>
<div class="bg-slate-800/50 rounded-lg p-4">
<p class="text-2xl font-black text-green-400 mb-2">전동 + 수동</p>
<p class="text-slate-300 text-sm">KS F 4510 개폐성능 규정 충족</p>
</div>
<p class="text-slate-400 text-sm mt-4 leading-relaxed">
정전 시에도 수동으로 개폐 가능해야
</p>
</div>
<!-- 감지 연동 -->
<div class="card-glass rounded-2xl p-6 card-hover transition-all duration-300">
<div class="w-14 h-14 bg-purple-500/20 rounded-xl flex items-center justify-center mb-4">
<span class="text-3xl">📡</span>
</div>
<h3 class="text-lg font-bold text-white mb-2">감지기 연동</h3>
<p class="text-slate-400 text-sm mb-4">Detector Integration</p>
<div class="bg-slate-800/50 rounded-lg p-4 space-y-2">
<div class="flex justify-between items-center">
<span class="text-slate-300">연기/불꽃 감지</span>
<span class="text-yellow-400 font-bold">일부 폐쇄</span>
</div>
<div class="flex justify-between items-center">
<span class="text-slate-300"> 감지</span>
<span class="text-red-400 font-bold">완전 폐쇄</span>
</div>
</div>
<p class="text-slate-400 text-sm mt-4 leading-relaxed">
2단계 폐쇄 시스템으로 피난 시간 확보
</p>
</div>
</div>
<!-- Validity Period Chart -->
<div class="card-glass rounded-2xl p-8 mt-8">
<h3 class="text-xl font-bold text-white mb-6 text-center">품질인정서 유효기간</h3>
<div class="chart-container">
<canvas id="validityChart"></canvas>
</div>
<p class="text-slate-400 text-sm text-center mt-4">
자동방화셔터는 <strong class="text-orange-400">5</strong> 유효기간이 적용되며, 만료 갱신 심사 필요
</p>
</div>
</section>
<!-- Section 4: Recognition Process -->
<section id="section-process" class="scroll-mt-24">
<div class="flex items-center gap-3 mb-8">
<div class="w-12 h-12 fire-gradient rounded-xl flex items-center justify-center text-white font-bold text-lg">4</div>
<div>
<h2 class="text-2xl font-bold text-white">품질인정 절차</h2>
<p class="text-slate-400 text-sm">Recognition Process</p>
</div>
</div>
<div class="card-glass rounded-2xl p-8">
<div class="flex items-center gap-2 mb-8">
<div class="w-8 h-8 bg-blue-500/20 rounded-lg flex items-center justify-center">
<span>🏛️</span>
</div>
<span class="text-slate-300">운영 기관: <strong class="text-white">한국건설기술연구원(KICT)</strong></span>
</div>
<div class="relative">
<!-- Process Steps -->
<div class="space-y-6">
<!-- Step 1 -->
<div id="process-step-1" class="relative pl-16 cursor-pointer group" onclick="showProcessDetail(1)">
<div class="absolute left-0 top-0 w-12 h-12 bg-orange-500 rounded-xl flex items-center justify-center text-white font-bold text-lg shadow-lg group-hover:scale-110 transition">1</div>
<div class="absolute left-6 top-14 bottom-0 w-0.5 bg-gradient-to-b from-orange-500 to-blue-500"></div>
<div class="bg-slate-800/50 rounded-xl p-6 border-2 border-orange-500/50 group-hover:border-orange-500 transition">
<h4 class="text-lg font-bold text-white mb-2">성능 시험 신청</h4>
<p class="text-slate-400 text-sm hidden md:block">KOLAS 공인시험기관에서 내화·차연·개폐성능 시험</p>
</div>
</div>
<!-- Step 2 -->
<div id="process-step-2" class="relative pl-16 cursor-pointer group" onclick="showProcessDetail(2)">
<div class="absolute left-0 top-0 w-12 h-12 bg-blue-500 rounded-xl flex items-center justify-center text-white font-bold text-lg shadow-lg group-hover:scale-110 transition">2</div>
<div class="absolute left-6 top-14 bottom-0 w-0.5 bg-gradient-to-b from-blue-500 to-green-500"></div>
<div class="bg-slate-800/50 rounded-xl p-6 border-2 border-slate-600 group-hover:border-blue-500 transition">
<h4 class="text-lg font-bold text-white mb-2">공장 심사</h4>
<p class="text-slate-400 text-sm hidden md:block">KICT 전문가의 제조 공장 품질관리 시스템 현장 심사</p>
</div>
</div>
<!-- Step 3 -->
<div id="process-step-3" class="relative pl-16 cursor-pointer group" onclick="showProcessDetail(3)">
<div class="absolute left-0 top-0 w-12 h-12 bg-green-500 rounded-xl flex items-center justify-center text-white font-bold text-lg shadow-lg group-hover:scale-110 transition">3</div>
<div class="absolute left-6 top-14 bottom-0 w-0.5 bg-gradient-to-b from-green-500 to-purple-500"></div>
<div class="bg-slate-800/50 rounded-xl p-6 border-2 border-slate-600 group-hover:border-green-500 transition">
<h4 class="text-lg font-bold text-white mb-2">품질인정서 발급</h4>
<p class="text-slate-400 text-sm hidden md:block">성능시험 + 공장심사 합격 KICT 원장 명의 인정서 발급</p>
</div>
</div>
<!-- Step 4 -->
<div id="process-step-4" class="relative pl-16 cursor-pointer group" onclick="showProcessDetail(4)">
<div class="absolute left-0 top-0 w-12 h-12 bg-purple-500 rounded-xl flex items-center justify-center text-white font-bold text-lg shadow-lg group-hover:scale-110 transition">4</div>
<div class="bg-slate-800/50 rounded-xl p-6 border-2 border-slate-600 group-hover:border-purple-500 transition">
<h4 class="text-lg font-bold text-white mb-2">사후 관리</h4>
<p class="text-slate-400 text-sm hidden md:block">매년 정기/불시 점검, 품질 유지 여부 감시 (위반 인정 취소)</p>
</div>
</div>
</div>
</div>
<!-- Process Detail Modal -->
<div id="process-detail" class="mt-8 bg-slate-700/50 rounded-xl p-6 hidden animate-slide-up">
<div id="detail-content"></div>
</div>
<!-- Timeline Note -->
<div class="mt-8 flex items-center gap-3 bg-blue-500/10 border border-blue-500/30 rounded-xl p-4">
<span class="text-2xl">⏱️</span>
<p class="text-slate-300 text-sm">
<strong class="text-blue-400">예상 소요기간:</strong> 성능시험부터 인정서 발급까지 통상 <strong class="text-white">3개월 이상</strong> 소요
</p>
</div>
</div>
</section>
<!-- Section 5: Installation Standards -->
<section id="section-install" class="scroll-mt-24">
<div class="flex items-center gap-3 mb-8">
<div class="w-12 h-12 fire-gradient rounded-xl flex items-center justify-center text-white font-bold text-lg">5</div>
<div>
<h2 class="text-2xl font-bold text-white">설치 기준</h2>
<p class="text-slate-400 text-sm">Installation Standards</p>
</div>
</div>
<div class="grid md:grid-cols-2 gap-6">
<!-- 필수 요건 -->
<div class="card-glass rounded-2xl p-6">
<h3 class="text-lg font-bold text-white mb-4 flex items-center gap-2">
<span class="text-green-400"></span> 필수 설치 요건
</h3>
<ul class="space-y-4">
<li class="flex items-start gap-3 bg-slate-800/50 rounded-lg p-4">
<span class="text-orange-400 font-bold">01</span>
<div>
<p class="text-white font-medium">방화문 인접 설치</p>
<p class="text-slate-400 text-sm">60+ 또는 60 방화문으로부터 <strong class="text-orange-400">3m 이내</strong> 별도 설치</p>
</div>
</li>
<li class="flex items-start gap-3 bg-slate-800/50 rounded-lg p-4">
<span class="text-orange-400 font-bold">02</span>
<div>
<p class="text-white font-medium">감지기 설치</p>
<p class="text-slate-400 text-sm">불꽃감지기 또는 연기감지기 + 열감지기 <strong class="text-orange-400">동시 설치</strong></p>
</div>
</li>
<li class="flex items-start gap-3 bg-slate-800/50 rounded-lg p-4">
<span class="text-orange-400 font-bold">03</span>
<div>
<p class="text-white font-medium">2단계 폐쇄 구조</p>
<p class="text-slate-400 text-sm">연기감지 일부폐쇄 / 열감지 <strong class="text-orange-400">완전폐쇄</strong></p>
</div>
</li>
<li class="flex items-start gap-3 bg-slate-800/50 rounded-lg p-4">
<span class="text-orange-400 font-bold">04</span>
<div>
<p class="text-white font-medium">상부 밀착</p>
<p class="text-slate-400 text-sm">셔터 상부는 <strong class="text-orange-400">상층 바닥에 직접 닿도록</strong> 설치</p>
</div>
</li>
</ul>
</div>
<!-- 금지 사항 -->
<div class="card-glass rounded-2xl p-6">
<h3 class="text-lg font-bold text-white mb-4 flex items-center gap-2">
<span class="text-red-400"></span> 금지 사항
</h3>
<ul class="space-y-4">
<li class="flex items-start gap-3 bg-red-500/10 border border-red-500/30 rounded-lg p-4">
<span class="text-red-400 font-bold text-xl"></span>
<div>
<p class="text-white font-medium">일체형 방화셔터 설치 금지</p>
<p class="text-slate-400 text-sm">셔터 일부에 피난 출입구가 설치된 구조는 <strong class="text-red-400">2020년부터 금지</strong></p>
</div>
</li>
<li class="flex items-start gap-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg p-4">
<span class="text-yellow-400 font-bold text-xl">⚠️</span>
<div>
<p class="text-white font-medium">틈새 방치 금지</p>
<p class="text-slate-400 text-sm">바닥과의 틈새는 연기/ 이동통로가 되지 않도록 <strong class="text-yellow-400">방화구획 수준</strong>으로 처리</p>
</div>
</li>
<li class="flex items-start gap-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg p-4">
<span class="text-yellow-400 font-bold text-xl">⚠️</span>
<div>
<p class="text-white font-medium">스크린 셔터 외부 설치 금지</p>
<p class="text-slate-400 text-sm">바람의 영향을 받는 <strong class="text-yellow-400">외부 구역</strong>에는 스크린 방화셔터 설치 불가</p>
</div>
</li>
</ul>
</div>
</div>
<!-- 구성요소 다이어그램 -->
<div class="card-glass rounded-2xl p-8 mt-6">
<h3 class="text-lg font-bold text-white mb-6 text-center">자동방화셔터 구성요소</h3>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div class="text-center p-4 bg-slate-800/50 rounded-xl">
<div class="text-3xl mb-2">📦</div>
<p class="text-white font-medium text-sm">셔터박스</p>
<p class="text-slate-500 text-xs">Shutter Box</p>
</div>
<div class="text-center p-4 bg-slate-800/50 rounded-xl">
<div class="text-3xl mb-2">🎚️</div>
<p class="text-white font-medium text-sm">가이드레일</p>
<p class="text-slate-500 text-xs">Guide Rail</p>
</div>
<div class="text-center p-4 bg-slate-800/50 rounded-xl">
<div class="text-3xl mb-2">📏</div>
<p class="text-white font-medium text-sm">슬랫/커튼</p>
<p class="text-slate-500 text-xs">Slat/Curtain</p>
</div>
<div class="text-center p-4 bg-slate-800/50 rounded-xl">
<div class="text-3xl mb-2"></div>
<p class="text-white font-medium text-sm">개폐기</p>
<p class="text-slate-500 text-xs">Operator</p>
</div>
<div class="text-center p-4 bg-slate-800/50 rounded-xl">
<div class="text-3xl mb-2">🔘</div>
<p class="text-white font-medium text-sm">제어반</p>
<p class="text-slate-500 text-xs">Control Panel</p>
</div>
<div class="text-center p-4 bg-slate-800/50 rounded-xl">
<div class="text-3xl mb-2">📡</div>
<p class="text-white font-medium text-sm">연기감지기</p>
<p class="text-slate-500 text-xs">Smoke Detector</p>
</div>
<div class="text-center p-4 bg-slate-800/50 rounded-xl">
<div class="text-3xl mb-2">🌡️</div>
<p class="text-white font-medium text-sm">열감지기</p>
<p class="text-slate-500 text-xs">Heat Detector</p>
</div>
<div class="text-center p-4 bg-slate-800/50 rounded-xl">
<div class="text-3xl mb-2">🚪</div>
<p class="text-white font-medium text-sm">연동 방화문</p>
<p class="text-slate-500 text-xs">Fire Door</p>
</div>
</div>
</div>
</section>
<!-- Section 6: Field Checklist -->
<section id="section-check" class="scroll-mt-24 mb-16">
<div class="flex items-center gap-3 mb-8">
<div class="w-12 h-12 fire-gradient rounded-xl flex items-center justify-center text-white font-bold text-lg">6</div>
<div>
<h2 class="text-2xl font-bold text-white">현장 실무 체크리스트</h2>
<p class="text-slate-400 text-sm">Field Checklist</p>
</div>
</div>
<div class="grid md:grid-cols-2 gap-6">
<!-- 서류 확인 -->
<div class="card-glass rounded-2xl p-6">
<div class="flex justify-between items-start mb-4">
<div class="bg-orange-500/20 text-orange-400 px-3 py-1 rounded-lg text-xs font-bold">필수 서류</div>
<input type="checkbox" id="check1" class="w-6 h-6 accent-orange-500 rounded cursor-pointer" onchange="updateChecklistStatus()">
</div>
<h3 class="text-lg font-bold text-white mb-2">품질인정서</h3>
<p class="text-slate-400 text-sm mb-4">KICT 원장 명의 발급 인정서 원본/사본</p>
<div class="bg-slate-800/50 rounded-lg p-4 text-sm text-slate-300 space-y-2">
<p> 유효기간 확인 (5)</p>
<p> 제조 공장 주소 일치 여부</p>
<p> 인정 규격과 납품 제품 일치 여부</p>
</div>
</div>
<div class="card-glass rounded-2xl p-6">
<div class="flex justify-between items-start mb-4">
<div class="bg-orange-500/20 text-orange-400 px-3 py-1 rounded-lg text-xs font-bold">필수 서류</div>
<input type="checkbox" id="check2" class="w-6 h-6 accent-orange-500 rounded cursor-pointer" onchange="updateChecklistStatus()">
</div>
<h3 class="text-lg font-bold text-white mb-2">품질관리서</h3>
<p class="text-slate-400 text-sm mb-4">제조사 감리자 제출 자체 보증서</p>
<div class="bg-slate-800/50 rounded-lg p-4 text-sm text-slate-300 space-y-2">
<p> "인정 내용과 동일 생산" 문구</p>
<p> 제조일자 LOT 번호</p>
<p> 제조사 직인/서명</p>
</div>
</div>
<div class="card-glass rounded-2xl p-6">
<div class="flex justify-between items-start mb-4">
<div class="bg-blue-500/20 text-blue-400 px-3 py-1 rounded-lg text-xs font-bold">현장 확인</div>
<input type="checkbox" id="check3" class="w-6 h-6 accent-blue-500 rounded cursor-pointer" onchange="updateChecklistStatus()">
</div>
<h3 class="text-lg font-bold text-white mb-2">설치 상태 점검</h3>
<p class="text-slate-400 text-sm mb-4">현장 설치 적합성 육안 확인</p>
<div class="bg-slate-800/50 rounded-lg p-4 text-sm text-slate-300 space-y-2">
<p> 방화문 3m 이내 설치 여부</p>
<p> 상부 바닥 밀착 여부</p>
<p> 가이드레일 내화벽체 접촉 여부</p>
</div>
</div>
<div class="card-glass rounded-2xl p-6">
<div class="flex justify-between items-start mb-4">
<div class="bg-blue-500/20 text-blue-400 px-3 py-1 rounded-lg text-xs font-bold">현장 확인</div>
<input type="checkbox" id="check4" class="w-6 h-6 accent-blue-500 rounded cursor-pointer" onchange="updateChecklistStatus()">
</div>
<h3 class="text-lg font-bold text-white mb-2">작동 시험</h3>
<p class="text-slate-400 text-sm mb-4">감지기 연동 폐쇄 동작 확인</p>
<div class="bg-slate-800/50 rounded-lg p-4 text-sm text-slate-300 space-y-2">
<p> 연기감지 일부폐쇄 동작</p>
<p> 열감지 완전폐쇄 동작</p>
<p> 수동 개폐 정상 작동</p>
</div>
</div>
</div>
<!-- Status Box -->
<div id="status-box" class="mt-6 p-6 card-glass rounded-xl text-center transition-all duration-500">
<span id="status-text" class="font-bold text-slate-400 text-lg"> 항목들을 모두 확인해주세요.</span>
<div id="status-progress" class="mt-4 h-2 bg-slate-700 rounded-full overflow-hidden">
<div id="progress-bar" class="h-full bg-gradient-to-r from-orange-500 to-red-500 transition-all duration-500" style="width: 0%"></div>
</div>
</div>
<!-- Online Verification -->
<div class="mt-8 card-glass rounded-2xl p-6 flex flex-col md:flex-row items-center justify-between gap-4">
<div class="flex items-center gap-4">
<div class="w-14 h-14 bg-blue-500/20 rounded-xl flex items-center justify-center text-2xl">🖥️</div>
<div>
<h4 class="font-bold text-white text-lg">온라인 진위 확인</h4>
<p class="text-slate-400 text-sm">KICT 홈페이지에서 인정 취소/정지 여부 실시간 조회</p>
</div>
</div>
<a href="https://www.kict.re.kr" target="_blank" class="bg-blue-600 hover:bg-blue-500 text-white font-bold py-3 px-6 rounded-xl transition shadow-lg">
KICT 현황 조회
</a>
</div>
</section>
</main>
<!-- Footer -->
<footer class="bg-slate-900 border-t border-slate-800 py-10">
<div class="max-w-5xl mx-auto px-4 text-center">
<div class="flex items-center justify-center gap-3 mb-4">
<div class="w-10 h-10 fire-gradient rounded-lg flex items-center justify-center">
<span class="text-xl">🔥</span>
</div>
<span class="font-bold text-lg text-white">자동방화셔터 품질인정제도 가이드</span>
</div>
<p class="text-slate-500 text-sm mb-2">참고 법령: 방화문 자동방화셔터의 인정 관리기준 (국토교통부고시 제2021-1009)</p>
<p class="text-slate-600 text-xs"> 페이지는 교육 참고 목적으로 제작되었습니다. 정확한 법적 해석은 관련 기관에 문의하세요.</p>
<p class="text-slate-700 text-xs mt-4">© 2025 Fire Shutter Quality Recognition Guide</p>
</div>
</footer>
<!-- JavaScript -->
<script>
// Mobile Menu Toggle
function toggleMobileMenu() {
const menu = document.getElementById('mobile-menu');
menu.classList.toggle('hidden');
}
// Smooth Scroll
function scrollToSection(id) {
document.getElementById(id).scrollIntoView({ behavior: 'smooth' });
document.getElementById('mobile-menu').classList.add('hidden');
}
// Shutter Type Tabs
function showShutterType(type) {
const types = ['steel', 'screen', 'compare'];
types.forEach(t => {
document.getElementById(`tab-${t}`).classList.remove('tab-active');
document.getElementById(`tab-${t}`).classList.add('bg-slate-700', 'text-slate-300');
document.getElementById(`content-${t}`).classList.add('hidden');
});
document.getElementById(`tab-${type}`).classList.add('tab-active');
document.getElementById(`tab-${type}`).classList.remove('bg-slate-700', 'text-slate-300');
document.getElementById(`content-${type}`).classList.remove('hidden');
}
// Process Detail
const processDetails = {
1: {
title: '1단계: 성능 시험 신청',
icon: '🔬',
content: `
<ul class="space-y-3 text-slate-300">
<li><strong class="text-orange-400">시험기관:</strong> KOLAS 인정 공인시험기관 또는 ISO/IEC 17025 인정기관</li>
<li><strong class="text-orange-400">시험항목:</strong>
<ul class="ml-4 mt-2 space-y-1 text-slate-400">
<li>• 내화성능 (KS F 2268-1) - 비차열 1시간 이상</li>
<li>• 차연성능 (KS F 4510)</li>
<li>• 개폐성능 (KS F 4510)</li>
</ul>
</li>
<li><strong class="text-orange-400">주의:</strong> 시험체 양면 각 1회씩 시험 실시</li>
</ul>
`
},
2: {
title: '2단계: 공장 심사',
icon: '🏭',
content: `
<ul class="space-y-3 text-slate-300">
<li><strong class="text-blue-400">심사기관:</strong> 한국건설기술연구원(KICT) 전문가</li>
<li><strong class="text-blue-400">심사내용:</strong>
<ul class="ml-4 mt-2 space-y-1 text-slate-400">
<li>• 원자재 입고 및 관리 체계</li>
<li>• 제조 공정 표준화 준수</li>
<li>• 품질검사 설비 및 인력</li>
<li>• 출하 전 검사 시스템</li>
</ul>
</li>
<li><strong class="text-blue-400">핵심:</strong> 품질인정제도의 가장 중요한 차별점!</li>
</ul>
`
},
3: {
title: '3단계: 품질인정서 발급',
icon: '📜',
content: `
<ul class="space-y-3 text-slate-300">
<li><strong class="text-green-400">발급조건:</strong> 성능시험 + 공장심사 모두 합격</li>
<li><strong class="text-green-400">발급기관:</strong> 한국건설기술연구원장 명의</li>
<li><strong class="text-green-400">유효기간:</strong> 5년 (갱신 심사 필요)</li>
<li><strong class="text-green-400">기재사항:</strong>
<ul class="ml-4 mt-2 space-y-1 text-slate-400">
<li>• 인정 규격 (크기, 성능등급)</li>
<li>• 제조 공장 정보</li>
<li>• 인정 조건 및 제한사항</li>
</ul>
</li>
</ul>
`
},
4: {
title: '4단계: 사후 관리',
icon: '🔍',
content: `
<ul class="space-y-3 text-slate-300">
<li><strong class="text-purple-400">정기점검:</strong> 매년 실시</li>
<li><strong class="text-purple-400">불시점검:</strong> 공장 또는 건설현장 무작위 점검</li>
<li><strong class="text-purple-400">점검내용:</strong>
<ul class="ml-4 mt-2 space-y-1 text-slate-400">
<li>• 인정 내용대로 생산 여부</li>
<li>• 품질관리 시스템 유지 상태</li>
<li>• 시공 현장 적합성</li>
</ul>
</li>
<li><strong class="text-red-400">제재:</strong> 위반 시 인정 취소 또는 정지 가능</li>
</ul>
`
}
};
function showProcessDetail(step) {
const detail = processDetails[step];
const container = document.getElementById('process-detail');
const content = document.getElementById('detail-content');
content.innerHTML = `
<div class="flex items-center gap-3 mb-4">
<span class="text-3xl">${detail.icon}</span>
<h4 class="text-lg font-bold text-white">${detail.title}</h4>
</div>
${detail.content}
`;
container.classList.remove('hidden');
}
// Checklist Status
function updateChecklistStatus() {
const checks = [
document.getElementById('check1').checked,
document.getElementById('check2').checked,
document.getElementById('check3').checked,
document.getElementById('check4').checked
];
const count = checks.filter(c => c).length;
const percent = (count / 4) * 100;
const box = document.getElementById('status-box');
const text = document.getElementById('status-text');
const bar = document.getElementById('progress-bar');
bar.style.width = percent + '%';
if (count === 4) {
box.classList.remove('card-glass');
box.classList.add('bg-green-500/20', 'border', 'border-green-500/50');
text.className = 'font-bold text-green-400 text-lg';
text.innerHTML = '✅ 모든 항목 확인 완료! 현장 반입 승인 가능';
} else if (count > 0) {
box.classList.remove('bg-green-500/20', 'border-green-500/50');
box.classList.add('card-glass');
text.className = 'font-bold text-orange-400 text-lg';
text.innerHTML = `⚠️ ${count}/4 항목 확인됨. 나머지 항목을 확인해주세요.`;
} else {
box.classList.remove('bg-green-500/20', 'border-green-500/50');
box.classList.add('card-glass');
text.className = 'font-bold text-slate-400 text-lg';
text.innerHTML = '위 항목들을 모두 확인해주세요.';
}
}
// Chart.js - Validity Period
document.addEventListener('DOMContentLoaded', function() {
const ctx = document.getElementById('validityChart').getContext('2d');
new Chart(ctx, {
type: 'bar',
data: {
labels: ['방화문', '자동방화셔터', '내화구조', '내화채움구조', '복합자재(패널)'],
datasets: [{
label: '유효기간 (년)',
data: [5, 5, 5, 5, 3],
backgroundColor: [
'rgba(234, 88, 12, 0.8)',
'rgba(234, 88, 12, 1)',
'rgba(234, 88, 12, 0.8)',
'rgba(234, 88, 12, 0.8)',
'rgba(245, 158, 11, 0.8)'
],
borderColor: [
'rgb(234, 88, 12)',
'rgb(234, 88, 12)',
'rgb(234, 88, 12)',
'rgb(234, 88, 12)',
'rgb(245, 158, 11)'
],
borderWidth: 2,
borderRadius: 8
}]
},
options: {
indexAxis: 'y',
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: { display: false },
tooltip: {
backgroundColor: 'rgba(15, 23, 42, 0.9)',
titleColor: '#fff',
bodyColor: '#94a3b8',
borderColor: 'rgba(234, 88, 12, 0.5)',
borderWidth: 1,
padding: 12,
callbacks: {
label: function(context) {
return `유효기간: ${context.raw}년`;
}
}
}
},
scales: {
x: {
beginAtZero: true,
max: 6,
grid: { color: 'rgba(71, 85, 105, 0.3)' },
ticks: { color: '#94a3b8' },
title: {
display: true,
text: '년 (Year)',
color: '#94a3b8'
}
},
y: {
grid: { display: false },
ticks: {
color: '#e2e8f0',
font: { weight: '500' }
}
}
}
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,425 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SAM Project - 영업 수당 지급 정책</title>
<style>
@page {
margin: 2cm;
size: A4;
}
body {
font-family: 'Malgun Gothic', '맑은 고딕', Arial, sans-serif;
font-size: 12pt;
line-height: 1.6;
color: #333;
max-width: 800px;
margin: 0 auto;
padding: 20px;
background: white;
}
h1 {
text-align: center;
color: #2c3e50;
font-size: 24pt;
margin-bottom: 30px;
border-bottom: 3px solid #3498db;
padding-bottom: 15px;
}
h2 {
color: #2c3e50;
font-size: 16pt;
margin-top: 30px;
margin-bottom: 15px;
border-left: 4px solid #3498db;
padding-left: 15px;
}
h3 {
color: #34495e;
font-size: 14pt;
margin-top: 20px;
margin-bottom: 10px;
}
h4 {
color: #34495e;
font-size: 13pt;
margin-top: 15px;
margin-bottom: 8px;
}
.document-header {
text-align: center;
margin-bottom: 40px;
padding: 20px;
background: #f8f9fa;
border: 1px solid #dee2e6;
}
.version-info {
font-size: 11pt;
color: #666;
margin-bottom: 10px;
}
.toc {
background: #f1f3f4;
padding: 20px;
margin: 30px 0;
border-left: 4px solid #3498db;
}
.toc h2 {
margin-top: 0;
border: none;
padding: 0;
}
.toc ul {
list-style-type: decimal;
margin-left: 20px;
}
.toc li {
margin-bottom: 5px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
font-size: 11pt;
}
th, td {
border: 1px solid #ddd;
padding: 12px;
text-align: left;
}
th {
background-color: #3498db;
color: white;
font-weight: bold;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
.highlight {
background-color: #e3f2fd;
padding: 15px;
border: 1px solid #2196f3;
border-radius: 5px;
margin: 15px 0;
}
.warning {
background-color: #fff3e0;
padding: 15px;
border: 1px solid #ff9800;
border-radius: 5px;
margin: 15px 0;
}
.success {
background-color: #e8f5e8;
padding: 15px;
border: 1px solid #4caf50;
border-radius: 5px;
margin: 15px 0;
}
.workflow-step {
margin: 15px 0;
padding: 15px;
background: #f8f9fa;
border-left: 4px solid #28a745;
border-radius: 0 5px 5px 0;
}
.workflow-step h4 {
margin-top: 0;
color: #28a745;
}
.calculation-box {
background: #f0f8ff;
border: 2px solid #4169e1;
border-radius: 10px;
padding: 20px;
margin: 20px 0;
text-align: center;
}
.calculation-box strong {
color: #4169e1;
font-size: 14pt;
}
.emoji {
font-size: 16pt;
margin-right: 5px;
}
.footer {
margin-top: 50px;
padding: 20px;
border-top: 2px solid #dee2e6;
text-align: center;
color: #666;
font-size: 10pt;
}
@media print {
.no-print {
display: none;
}
body {
font-size: 11pt;
}
h1 {
font-size: 20pt;
}
h2 {
font-size: 14pt;
}
}
</style>
</head>
<body>
<div class="document-header">
<h1>SAM Project<br>영업 수당 지급 정책</h1>
<div class="version-info">
<strong>버전:</strong> 1.0 &nbsp;|&nbsp;
<strong>최종 업데이트:</strong> 2025년 1월 1일 &nbsp;|&nbsp;
<strong>기반 자료:</strong> 수당지급체계.md
</div>
</div>
<div class="toc">
<h2><span class="emoji">📋</span>목차</h2>
<ul>
<li>기본 원칙 및 대상</li>
<li>주요 상품 및 가격 안내</li>
<li>수당 지급 비율</li>
<li>계층 구조 및 수당 시뮬레이션</li>
<li>6단계 성공 프로세스</li>
<li>지급 일정 및 운영 정책</li>
<li>주요 Q&A</li>
</ul>
</div>
<h2>1. 기본 원칙 및 대상</h2>
<div class="highlight">
<h3><span class="emoji">🎯</span>가입비 중심 보상</h3>
<p>수당은 1회성 <strong>가입비</strong>에 대해서만 지급됩니다. 이는 고품질의 초기 인프라 구축 및 파트너의 적극적인 유치를 지원하기 위함입니다.</p>
</div>
<div class="highlight">
<h3><span class="emoji">📊</span>협업 중심 구조</h3>
<p>판매자와 관리자뿐만 아니라 기술 지원을 담당하는 메뉴제작 협업자에게도 적절한 보상을 제공하여 유기적인 서비스 제공이 가능하도록 돕습니다.</p>
</div>
<h2>2. 주요 상품 및 가격 안내</h2>
<h3><span class="emoji">📦</span>개별 모듈 (Modules)</h3>
<table>
<thead>
<tr>
<th>상품명</th>
<th>주요 기능 설명</th>
<th>가입비 (VAT 별도)</th>
<th>구독료 (월)</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>QR코드 관리</strong></td>
<td>설비/장비에 QR 부착하여 실시간 점검 및 이력 관리</td>
<td>1,020만원</td>
<td>5만원</td>
</tr>
<tr>
<td><strong>사진/출하 관리</strong></td>
<td>현장 상황 사진 기록 및 출하 시점 품질 증빙 자동화</td>
<td>1,920만원</td>
<td>10만원</td>
</tr>
<tr>
<td><strong>검사/토큰 적용</strong></td>
<td>공정별 검사 데이터 기록 및 전자 세금계산서 연동</td>
<td>1,020만원</td>
<td>5만원</td>
</tr>
<tr>
<td><strong>이카운트 연동</strong></td>
<td>ERP(이카운트) 데이터 동기화 및 거래처 원장 관리</td>
<td>1,920만원</td>
<td>10만원</td>
</tr>
</tbody>
</table>
<h3><span class="emoji">🎁</span>통합 패키지 (Packages)</h3>
<div class="highlight">
<h4>공사관리 패키지</h4>
<p><strong>설명:</strong> 건설 및 공사 현장 관리에 최적화된 올인원 솔루션</p>
<p><strong>가입비:</strong> 4,000만원 | <strong>구독료:</strong> 20만원/월</p>
</div>
<div class="highlight">
<h4>공정/정부지원사업</h4>
<p><strong>설명:</strong> 정부 사업 규격에 맞춘 공정 관리 및 투명한 이력 추적</p>
<p><strong>가입비:</strong> 8,000만원 | <strong>구독료:</strong> 40만원/월</p>
</div>
<h2>3. 수당 지급 비율</h2>
<table>
<thead>
<tr>
<th>구분</th>
<th>지급 비율</th>
<th>대상 및 정의</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>판매자 (Seller)</strong></td>
<td><strong style="color: #e74c3c; font-size: 14pt;">20%</strong></td>
<td>직접 영업 및 계약 성사 담당자</td>
</tr>
<tr>
<td><strong>관리자 (Manager)</strong></td>
<td><strong style="color: #9b59b6; font-size: 14pt;">5%</strong></td>
<td>하위 영업 파트너 관리 및 지원</td>
</tr>
<tr style="background-color: #fff3cd;">
<td><strong>메뉴제작 협업수당</strong></td>
<td><strong style="color: #f39c12;">별도</strong></td>
<td>운영팀에서 난이도별 별도 산정 (실비 보조)</td>
</tr>
</tbody>
<tfoot>
<tr style="background-color: #d4edda;">
<td colspan="2"><strong>수당 정산 기준</strong></td>
<td><strong>가입비 입금 확인 후 익월 지급</strong></td>
</tr>
</tfoot>
</table>
<h2>4. 계층 구조 및 수당 시뮬레이션</h2>
<div class="success">
<h3><span class="emoji">🏗️</span>계층 구조</h3>
<p style="text-align: center; font-family: monospace; font-size: 14pt;">
[판매자 20%] → [관리자 5%] → [메뉴제작 +α]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;영업권&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;관리권&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;기술지원
</p>
</div>
<h3><span class="emoji">💰</span>계산 예시 (총 가입비 1억원 기준)</h3>
<div class="calculation-box">
<h4>판매자 수당</h4>
<p>계산: ₩100,000,000 × 20% = <strong>₩20,000,000</strong></p>
</div>
<div class="calculation-box">
<h4>관리자 수당</h4>
<p>계산: ₩100,000,000 × 5% = <strong>₩5,000,000</strong></p>
</div>
<div class="warning">
<h4>메뉴제작 협업수당</h4>
<p><strong>운영팀 별도 산정 및 지급</strong></p>
</div>
<div class="success" style="text-align: center;">
<h3>총 가입비 수당: 25% + 메뉴제작비</h3>
</div>
<h2>5. 6단계 성공 프로세스</h2>
<p>단순한 판매를 넘어, 고객의 성공을 설계하는 표준 영업 프로세스입니다.</p>
<div class="workflow-step">
<h4><span class="emoji">1</span>사전 준비 (Prep)</h4>
<p>고객사 심층 분석 및 경쟁사 동향 파악. '비용 절감'과 '관리 효율' 중 핵심 공략 포인트 설정.</p>
</div>
<div class="workflow-step">
<h4><span class="emoji">2</span>접근 및 탐색 (Approach)</h4>
<p>Key-man 식별 및 컨택. 단순 소개가 아닌 '인사이트 공유'를 목적으로 미팅 기회 확보.</p>
</div>
<div class="workflow-step">
<h4><span class="emoji">3</span>제안 및 솔루션</h4>
<p>AI 교차 검증 전략(Antigravity/Claude Code)을 통한 압도적인 품질 및 비용 효율 제안.</p>
</div>
<div class="workflow-step">
<h4><span class="emoji">4</span>계약 체결 (Closing)</h4>
<p>가입비 확정 및 서비스 범위(SOW) 명시. 수당 산정의 기준이 되는 가입비 완료 유도.</p>
</div>
<div class="workflow-step">
<h4><span class="emoji">5</span>영업 이관 (Handover)</h4>
<p>영업팀에서 매니저 시나리오로의 완벽한 정보 전달. 리스크 요인 및 고객 특이사항 공유.</p>
</div>
<div class="workflow-step">
<h4><span class="emoji">6</span>테스트 및 안정화</h4>
<p>TestSprite MCP를 통한 자동화 검증으로 '버그 없는 배포'를 실현하여 고객 신뢰 확보.</p>
</div>
<h2>6. 지급 일정 및 운영 정책</h2>
<div class="highlight">
<h3><span class="emoji">📅</span>수당 지급 시점</h3>
<p>고객사의 가입비 입금이 완료된 날을 기준으로 수당이 확정되며, 익월 정해진 지급일에 일괄 지급됩니다.</p>
</div>
<div class="highlight">
<h3><span class="emoji">🏦</span>회사 운영 마진</h3>
<p>회사는 가입비의 약 <strong>70% ~ 75%</strong> 내외를 플랫폼 운영, 서버 유지보수, 마케팅 지원 등을 위한 인프라 비용으로 확보하여 지속 가능한 경영 토대를 구축합니다.</p>
</div>
<h2>7. 주요 Q&A</h2>
<div class="warning">
<h4>Q. 하위 파트너가 없는 경우는 어떻게 되나요?</h4>
<p>본인의 직접 판매에 대한 20% 수당만 지급됩니다. 관리자 및 교육자 수당은 하위 계층이 형성되었을 때만 발생합니다.</p>
</div>
<div class="warning">
<h4>Q. 계약이 취소되면 수당을 반환해야 하나요?</h4>
<p>이미 지급된 가입비 수당은 회수하지 않는 것을 원칙으로 하나, 부정 계약 등의 특수 상황 발생 시 별도 심의가 있을 수 있습니다.</p>
</div>
<div class="warning">
<h4>Q. 월 구독료에 대한 수당은 없나요?</h4>
<p>현재 SAM 수당 정책은 신규 파트너십 구축 및 인프라 기여도에 대한 가치를 높게 평가하여 <strong>가입비</strong>에만 수당을 집중하고 있습니다. 구독료는 서비스의 안정적 유지 및 고도화 비용으로 활용됩니다.</p>
</div>
<div class="footer">
<h3><span class="emoji">📞</span>문의사항</h3>
<p>본 문서는 SAM 프로젝트의 공식 영업 정책을 담고 있으며, 정책 변경 시 업데이트될 수 있습니다.</p>
<p><strong>© 2025 SAM Project Admin. All Rights Reserved.</strong></p>
<hr>
<p><em>본 문서는 투명하고 합리적인 3단계 보상 체계를 통해 파트너의 성장을 지원하기 위해 작성되었습니다.</em></p>
</div>
</body>
</html>

View File

@@ -0,0 +1,147 @@
# SAM Project - 영업 수당 지급 정책
**버전**: 1.0
**최종 업데이트**: 2025년 1월 1일
**기반 자료**: `C:\Users\light\sam\sales\salesmanagement\수당지급체계.md`
---
## 📋 목차
1. [기본 원칙 및 대상](#1-기본-원칙-및-대상)
2. [주요 상품 및 가격 안내](#2-주요-상품-및-가격-안내)
3. [수당 지급 비율](#3-수당-지급-비율)
4. [계층 구조 및 수당 시뮬레이션](#4-계층-구조-및-수당-시뮬레이션)
5. [6단계 성공 프로세스](#5-6단계-성공-프로세스)
6. [지급 일정 및 운영 정책](#6-지급-일정-및-운영-정책)
7. [주요 Q&A](#7-주요-qa)
---
## 1. 기본 원칙 및 대상
### 🎯 가입비 중심 보상
수당은 1회성 **가입비**에 대해서만 지급됩니다. 이는 고품질의 초기 인프라 구축 및 파트너의 적극적인 유치를 지원하기 위함입니다.
### 📊 협업 중심 구조
판매자와 관리자뿐만 아니라 기술 지원을 담당하는 메뉴제작 협업자에게도 적절한 보상을 제공하여 유기적인 서비스 제공이 가능하도록 돕습니다.
---
## 2. 주요 상품 및 가격 안내
### 📦 개별 모듈 (Modules)
| 상품명 | 주요 기능 설명 | 가입비 (VAT 별도) | 구독료 (월) |
|--------|----------------|-------------------|-------------|
| **QR코드 관리** | 설비/장비에 QR 부착하여 실시간 점검 및 이력 관리 | 1,020만원 | 5만원 |
| **사진/출하 관리** | 현장 상황 사진 기록 및 출하 시점 품질 증빙 자동화 | 1,920만원 | 10만원 |
| **검사/토큰 적용** | 공정별 검사 데이터 기록 및 전자 세금계산서 연동 | 1,020만원 | 5만원 |
| **이카운트 연동** | ERP(이카운트) 데이터 동기화 및 거래처 원장 관리 | 1,920만원 | 10만원 |
### 🎁 통합 패키지 (Packages)
#### 공사관리 패키지
- **설명**: 건설 및 공사 현장 관리에 최적화된 올인원 솔루션
- **가입비**: 4,000만원
- **구독료**: 20만원/월
#### 공정/정부지원사업
- **설명**: 정부 사업 규격에 맞춘 공정 관리 및 투명한 이력 추적
- **가입비**: 8,000만원
- **구독료**: 40만원/월
---
## 3. 수당 지급 비율
| 구분 | 지급 비율 | 대상 및 정의 |
|------|-----------|--------------|
| **판매자 (Seller)** | **20%** | 직접 영업 및 계약 성사 담당자 |
| **관리자 (Manager)** | **5%** | 하위 영업 파트너 관리 및 지원 |
| **메뉴제작 협업수당** | **별도** | 운영팀에서 난이도별 별도 산정 (실비 보조) |
**수당 정산 기준**: 가입비 입금 확인 후 익월 지급
---
## 4. 계층 구조 및 수당 시뮬레이션
### 🏗️ 계층 구조
```
[판매자 20%] → [관리자 5%] → [메뉴제작 +α]
↓ ↓ ↓
영업권 관리권 기술지원
```
### 💰 계산 예시 (총 가입비 1억원 기준)
#### 판매자 수당 (2,000만원)
- 계산: ₩100,000,000 × 20% = **₩20,000,000**
#### 관리자 수당 (2,000만원)
- 계산: ₩100,000,000 × 5% = **₩5,000,000**
#### 메뉴제작 협업수당
- **운영팀 별도 산정 및 지급**
**총 가입비 수당**: 25% + 메뉴제작비
---
## 5. 6단계 성공 프로세스
단순한 판매를 넘어, 고객의 성공을 설계하는 표준 영업 프로세스입니다.
### 1⃣ 사전 준비 (Prep)
고객사 심층 분석 및 경쟁사 동향 파악. '비용 절감'과 '관리 효율' 중 핵심 공략 포인트 설정.
### 2⃣ 접근 및 탐색 (Approach)
Key-man 식별 및 컨택. 단순 소개가 아닌 '인사이트 공유'를 목적으로 미팅 기회 확보.
### 3⃣ 제안 및 솔루션
AI 교차 검증 전략(Antigravity/Claude Code)을 통한 압도적인 품질 및 비용 효율 제안.
### 4⃣ 계약 체결 (Closing)
가입비 확정 및 서비스 범위(SOW) 명시. 수당 산정의 기준이 되는 가입비 완료 유도.
### 5⃣ 영업 이관 (Handover)
영업팀에서 매니저 시나리오로의 완벽한 정보 전달. 리스크 요인 및 고객 특이사항 공유.
### 6⃣ 테스트 및 안정화
TestSprite MCP를 통한 자동화 검증으로 '버그 없는 배포'를 실현하여 고객 신뢰 확보.
---
## 6. 지급 일정 및 운영 정책
### 📅 수당 지급 시점
고객사의 가입비 입금이 완료된 날을 기준으로 수당이 확정되며, 익월 정해진 지급일에 일괄 지급됩니다.
### 🏦 회사 운영 마진
회사는 가입비의 약 **70% ~ 75%** 내외를 플랫폼 운영, 서버 유지보수, 마케팅 지원 등을 위한 인프라 비용으로 확보하여 지속 가능한 경영 토대를 구축합니다.
---
## 7. 주요 Q&A
### Q. 하위 파트너가 없는 경우는 어떻게 되나요?
본인의 직접 판매에 대한 20% 수당만 지급됩니다. 관리자 및 교육자 수당은 하위 계층이 형성되었을 때만 발생합니다.
### Q. 계약이 취소되면 수당을 반환해야 하나요?
이미 지급된 가입비 수당은 회수하지 않는 것을 원칙으로 하나, 부정 계약 등의 특수 상황 발생 시 별도 심의가 있을 수 있습니다.
### Q. 월 구독료에 대한 수당은 없나요?
현재 SAM 수당 정책은 신규 파트너십 구축 및 인프라 기여도에 대한 가치를 높게 평가하여 **가입비**에만 수당을 집중하고 있습니다. 구독료는 서비스의 안정적 유지 및 고도화 비용으로 활용됩니다.
---
## 📞 문의사항
본 문서는 SAM 프로젝트의 공식 영업 정책을 담고 있으며, 정책 변경 시 업데이트될 수 있습니다.
**© 2025 SAM Project Admin. All Rights Reserved.**
---
*본 문서는 투명하고 합리적인 3단계 보상 체계를 통해 파트너의 성장을 지원하기 위해 작성되었습니다.*