해당 서비스 도커화 성공, 룰 추가, 로그인 오류 수정, 소문자 룰 어느정도 해결

This commit is contained in:
Hyungi Ahn
2025-08-01 15:55:27 +09:00
parent ef06cec8d6
commit 809b2af53e
6418 changed files with 1922672 additions and 69 deletions

View File

@@ -0,0 +1,394 @@
/* 테크니컬코리아 문서 시스템 CSS */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
color: #333;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
min-height: 100vh;
display: flex;
flex-direction: column;
}
/* 헤더 스타일 */
.header {
text-align: center;
background: rgba(255, 255, 255, 0.95);
padding: 40px 30px;
border-radius: 20px;
margin-bottom: 30px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(10px);
}
.header h1 {
font-size: 2.5rem;
margin-bottom: 10px;
background: linear-gradient(45deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.header p {
font-size: 1.2rem;
color: #666;
opacity: 0.8;
}
/* 메인 콘텐츠 */
.main-content {
flex: 1;
margin-bottom: 30px;
}
/* 카드 그리드 */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 25px;
margin-bottom: 30px;
}
/* 카드 스타일 */
.card {
background: rgba(255, 255, 255, 0.95);
border-radius: 20px;
padding: 30px;
text-align: center;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.2);
}
.card:hover {
transform: translateY(-10px);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
}
.card-icon {
font-size: 3rem;
margin-bottom: 20px;
display: block;
}
.card h3 {
font-size: 1.4rem;
margin-bottom: 15px;
color: #333;
}
.card p {
color: #666;
margin-bottom: 20px;
line-height: 1.6;
}
.card-link {
display: inline-block;
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
text-decoration: none;
padding: 12px 30px;
border-radius: 25px;
font-weight: 500;
transition: all 0.3s ease;
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3);
}
.card-link:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
}
/* 검색 카드 특별 스타일 */
.search-card {
grid-column: 1 / -1;
max-width: 600px;
margin: 0 auto;
width: 100%;
}
.search-box {
display: flex;
gap: 10px;
margin-top: 20px;
}
.search-box input {
flex: 1;
padding: 15px 20px;
border: 2px solid #e1e5e9;
border-radius: 25px;
font-size: 1rem;
outline: none;
transition: all 0.3s ease;
}
.search-box input:focus {
border-color: #667eea;
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
}
.search-box button {
background: linear-gradient(45deg, #667eea, #764ba2);
color: white;
border: none;
padding: 15px 30px;
border-radius: 25px;
font-size: 1rem;
font-weight: 500;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3);
}
.search-box button:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
}
/* 문서 목록 스타일 */
.document-list {
display: grid;
gap: 20px;
}
.document-item {
background: rgba(255, 255, 255, 0.95);
border-radius: 15px;
padding: 25px;
display: flex;
align-items: center;
gap: 20px;
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
backdrop-filter: blur(10px);
}
.document-item:hover {
transform: translateX(10px);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
}
.document-icon {
font-size: 2rem;
width: 60px;
text-align: center;
}
.document-content {
flex: 1;
}
.document-content h3 {
font-size: 1.2rem;
margin-bottom: 5px;
color: #333;
}
.document-content p {
color: #666;
font-size: 0.9rem;
}
.document-meta {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 5px;
}
.document-date {
font-size: 0.8rem;
color: #999;
}
.download-btn {
background: #28a745;
color: white;
text-decoration: none;
padding: 8px 16px;
border-radius: 20px;
font-size: 0.9rem;
transition: all 0.3s ease;
}
.download-btn:hover {
background: #218838;
transform: translateY(-2px);
}
/* 네비게이션 브레드크럼 */
.breadcrumb {
background: rgba(255, 255, 255, 0.9);
padding: 15px 25px;
border-radius: 15px;
margin-bottom: 20px;
backdrop-filter: blur(10px);
}
.breadcrumb a {
color: #667eea;
text-decoration: none;
font-weight: 500;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.breadcrumb span {
color: #999;
margin: 0 10px;
}
/* 페이지 헤더 */
.page-header {
background: rgba(255, 255, 255, 0.95);
padding: 30px;
border-radius: 20px;
margin-bottom: 30px;
text-align: center;
backdrop-filter: blur(10px);
}
.page-header h2 {
font-size: 2rem;
margin-bottom: 10px;
background: linear-gradient(45deg, #667eea, #764ba2);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* 푸터 */
.footer {
background: rgba(255, 255, 255, 0.9);
padding: 25px;
border-radius: 15px;
text-align: center;
backdrop-filter: blur(10px);
margin-top: auto;
}
.footer p {
color: #666;
font-size: 0.9rem;
margin-bottom: 5px;
}
.footer p:last-child {
margin-bottom: 0;
font-family: 'Courier New', monospace;
color: #999;
}
/* 반응형 디자인 */
@media (max-width: 768px) {
.container {
padding: 15px;
}
.header {
padding: 25px 20px;
}
.header h1 {
font-size: 2rem;
}
.card-grid {
grid-template-columns: 1fr;
gap: 20px;
}
.card {
padding: 25px 20px;
}
.search-box {
flex-direction: column;
}
.search-box button {
width: 100%;
}
.document-item {
flex-direction: column;
text-align: center;
}
.document-meta {
align-items: center;
}
}
@media (max-width: 480px) {
.header h1 {
font-size: 1.8rem;
}
.header p {
font-size: 1rem;
}
.card {
padding: 20px 15px;
}
.card h3 {
font-size: 1.2rem;
}
}
/* 로딩 애니메이션 */
.loading {
display: inline-block;
width: 20px;
height: 20px;
border: 3px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: #fff;
animation: spin 1s ease-in-out infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
/* 알림 메시지 */
.alert {
padding: 15px 20px;
border-radius: 10px;
margin-bottom: 20px;
background: rgba(255, 255, 255, 0.9);
border-left: 5px solid #667eea;
backdrop-filter: blur(10px);
}
.alert-success {
border-left-color: #28a745;
}
.alert-warning {
border-left-color: #ffc107;
}
.alert-error {
border-left-color: #dc3545;
}

View File

@@ -0,0 +1,60 @@
// 문서 검색 기능
function searchDocuments() {
const searchTerm = document.getElementById('searchInput').value.toLowerCase();
if (searchTerm.trim() === '') {
alert('검색어를 입력해주세요.');
return;
}
// 간단한 검색 구현 (실제로는 서버 검색 또는 더 복잡한 로직 필요)
window.location.href = `search.html?q=${encodeURIComponent(searchTerm)}`;
}
// 문서 필터링 기능 (문서 목록 페이지용)
function filterDocuments(searchTerm) {
const documents = document.querySelectorAll('.document-item');
const term = searchTerm.toLowerCase();
documents.forEach(doc => {
const keywords = doc.getAttribute('data-keywords').toLowerCase();
const title = doc.querySelector('h3').textContent.toLowerCase();
const description = doc.querySelector('p').textContent.toLowerCase();
if (keywords.includes(term) || title.includes(term) || description.includes(term)) {
doc.style.display = 'flex';
} else {
doc.style.display = 'none';
}
});
}
// QR 코드 생성 (선택사항)
function generateQR() {
const url = 'http://192.168.0.3:10080';
const qrAPI = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(url)}`;
const qrModal = document.createElement('div');
qrModal.innerHTML = `
<div style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.8); display: flex; justify-content: center; align-items: center; z-index: 1000;">
<div style="background: white; padding: 30px; border-radius: 15px; text-align: center;">
<h3>QR 코드로 접속</h3>
<img src="${qrAPI}" alt="QR Code" style="margin: 20px 0;">
<p>${url}</p>
<button onclick="this.parentElement.parentElement.remove()">닫기</button>
</div>
</div>
`;
document.body.appendChild(qrModal);
}
// Enter 키 검색
document.addEventListener('DOMContentLoaded', function() {
const searchInput = document.getElementById('searchInput');
if (searchInput) {
searchInput.addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
searchDocuments();
}
});
}
});

View File

@@ -0,0 +1,357 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>인사규정 - 테크니컬코리아</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: #f8f9fa;
min-height: 100vh;
color: #333;
padding: 20px;
}
.container {
max-width: 1000px;
margin: 0 auto;
background: white;
border: 2px solid #dc2626;
box-shadow: 0 10px 30px rgba(220, 38, 38, 0.1);
min-height: calc(100vh - 40px);
}
/* 브레드크럼 */
.breadcrumb {
background: #f8f9fa;
padding: 15px 30px;
border-bottom: 1px solid #dc2626;
font-size: 0.9rem;
}
.breadcrumb a {
color: #dc2626;
text-decoration: none;
font-weight: 500;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.breadcrumb span {
color: #6b7280;
margin: 0 10px;
}
/* 헤더 */
.page-header {
text-align: center;
padding: 40px 30px;
border-bottom: 1px solid #dc2626;
}
.page-header h2 {
color: #dc2626;
font-size: 2rem;
margin-bottom: 10px;
font-weight: 600;
}
.page-header p {
color: #6b7280;
font-size: 1rem;
}
/* 메인 컨텐츠 */
.main-content {
padding: 30px;
}
/* 문서 목록 */
.document-list {
display: grid;
gap: 15px;
margin-bottom: 40px;
}
.document-item {
background: white;
border: 1px solid #dc2626;
padding: 25px;
transition: all 0.3s ease;
box-shadow: 0 1px 3px rgba(220, 38, 38, 0.1);
cursor: pointer;
}
.document-item:hover {
border-color: #991b1b;
box-shadow: 0 4px 12px rgba(220, 38, 38, 0.15);
transform: translateY(-2px);
}
.document-content h3 {
color: #111827;
font-size: 1.1rem;
font-weight: 600;
margin: 0 0 8px 0;
line-height: 1.4;
}
.document-content p {
color: #6b7280;
font-size: 0.9rem;
margin: 0;
line-height: 1.5;
}
.document-content {
flex: 1;
}
/* 검색 섹션 */
.search-section {
background: #f8f9fa;
border: 1px solid #dc2626;
padding: 25px;
text-align: center;
margin-top: 30px;
}
.search-section h3 {
color: #111827;
font-size: 1.2rem;
margin-bottom: 15px;
font-weight: 600;
}
.search-box {
display: flex;
gap: 10px;
max-width: 400px;
margin: 0 auto;
}
.search-box input {
flex: 1;
padding: 12px 15px;
background: white;
border: 1px solid #dc2626;
color: #111827;
font-size: 0.9rem;
outline: none;
transition: all 0.3s ease;
}
.search-box input::placeholder {
color: #9ca3af;
}
.search-box input:focus {
border-color: #991b1b;
box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}
.search-box button {
background: white;
color: #dc2626;
border: 1px solid #dc2626;
padding: 12px 20px;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.9rem;
font-weight: 500;
}
.search-box button:hover {
background: #dc2626;
color: white;
}
/* 푸터 */
.footer {
text-align: center;
padding: 30px;
border-top: 1px solid #dc2626;
background: #f8f9fa;
}
.footer p {
color: #6b7280;
font-size: 0.8rem;
margin-bottom: 5px;
}
/* 반응형 */
@media (max-width: 768px) {
.container {
margin: 10px;
}
.page-header {
padding: 25px 20px;
}
.page-header h2 {
font-size: 1.6rem;
}
.main-content {
padding: 20px;
}
.search-box {
flex-direction: column;
}
}
</style>
</head>
<body>
<div class="container">
<!-- 브레드크럼 네비게이션 -->
<nav class="breadcrumb">
<a href="index.html"></a>
<span>></span>
<strong>인사규정</strong>
</nav>
<!-- 페이지 헤더 -->
<header class="page-header">
<h2>인사규정</h2>
<p>Human Resources - 인사관리 규정 및 지침</p>
</header>
<!-- 메인 컨텐츠 -->
<main class="main-content">
<div class="document-list">
<!-- 인사규정 -->
<div class="document-item" onclick="location.href='hr/HR-001.html'">
<div class="document-content">
<h3>HR-001 인사관리 규정</h3>
<p>채용, 승진, 전보, 퇴직 등 인사관리 전반</p>
</div>
</div>
<!-- 급여규정 -->
<div class="document-item" onclick="location.href='hr/HR-002.html'">
<div class="document-content">
<h3>HR-002 급여관리 규정</h3>
<p>급여체계, 수당, 상여금 지급 기준</p>
</div>
</div>
<!-- 근무규정 -->
<div class="document-item" onclick="location.href='hr/HR-003.html'">
<div class="document-content">
<h3>HR-003 근무시간 관리규정</h3>
<p>근무시간, 휴게시간, 연장근무 규정</p>
</div>
</div>
<!-- 휴가규정 -->
<div class="document-item" onclick="location.href='hr/HR-004.html'">
<div class="document-content">
<h3>HR-004 휴가 및 휴직규정</h3>
<p>연차, 병가, 특별휴가, 휴직 관련 규정</p>
</div>
</div>
<!-- 복리후생 -->
<div class="document-item" onclick="location.href='hr/HR-005.html'">
<div class="document-content">
<h3>HR-005 복리후생 규정</h3>
<p>건강보험, 퇴직금, 각종 지원금 규정</p>
</div>
</div>
<!-- 성과평가 -->
<div class="document-item" onclick="location.href='hr/HR-006.html'">
<div class="document-content">
<h3>HR-006 성과평가 관리규정</h3>
<p>성과평가 기준, 절차, 결과 활용 방안</p>
</div>
</div>
<!-- 교육훈련 -->
<div class="document-item" onclick="location.href='hr/HR-007.html'">
<div class="document-content">
<h3>HR-007 교육훈련 관리규정</h3>
<p>신입사원 교육, 직무교육, 외부교육 지원</p>
</div>
</div>
<!-- 징계규정 -->
<div class="document-item" onclick="location.href='hr/HR-008.html'">
<div class="document-content">
<h3>HR-008 징계 관리규정</h3>
<p>징계사유, 절차, 징계양정 기준</p>
</div>
</div>
<!-- 보안규정 -->
<div class="document-item" onclick="location.href='hr/HR-009.html'">
<div class="document-content">
<h3>HR-009 정보보안 및 기밀유지</h3>
<p>회사 정보보안 및 기밀유지 의무</p>
</div>
</div>
<!-- 복무규정 -->
<div class="document-item" onclick="location.href='hr/HR-010.html'">
<div class="document-content">
<h3>HR-010 복무 및 행동강령</h3>
<p>직원 복무 기준 및 윤리 행동강령</p>
</div>
</div>
</div>
<!-- 검색 섹션 -->
<div class="search-section">
<h3>인사규정 검색</h3>
<div class="search-box">
<input type="text" id="hrSearchInput" placeholder="인사규정 검색 (예: 급여, 휴가, 교육)">
<button onclick="filterDocuments(document.getElementById('hrSearchInput').value)">검색</button>
</div>
</div>
</main>
<footer class="footer">
<p>테크니컬코리아 내부 전용 문서시스템</p>
<p>인사 문의: hr@technicalkorea.co.kr | 내선: 3456</p>
</footer>
</div>
<script>
// 문서 필터링 기능
function filterDocuments(searchTerm) {
const documents = document.querySelectorAll('.document-item');
const term = searchTerm.toLowerCase();
documents.forEach(doc => {
const title = doc.querySelector('h3').textContent.toLowerCase();
const description = doc.querySelector('p').textContent.toLowerCase();
if (title.includes(term) || description.includes(term)) {
doc.style.display = 'block';
} else {
doc.style.display = 'none';
}
});
}
// Enter 키로 검색
document.getElementById('hrSearchInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
filterDocuments(this.value);
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,447 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HSE 관리시스템 - 테크니컬코리아</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: #f8f9fa;
min-height: 100vh;
color: #333;
padding: 20px;
}
.container {
max-width: 1000px;
margin: 0 auto;
background: white;
border: 2px solid #dc2626;
box-shadow: 0 10px 30px rgba(220, 38, 38, 0.1);
min-height: calc(100vh - 40px);
}
/* 브레드크럼 */
.breadcrumb {
background: #f8f9fa;
padding: 15px 30px;
border-bottom: 1px solid #dc2626;
font-size: 0.9rem;
}
.breadcrumb a {
color: #dc2626;
text-decoration: none;
font-weight: 500;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.breadcrumb span {
color: #6b7280;
margin: 0 10px;
}
/* 헤더 */
.page-header {
text-align: center;
padding: 40px 30px;
border-bottom: 1px solid #dc2626;
}
.page-header h2 {
color: #dc2626;
font-size: 2rem;
margin-bottom: 10px;
font-weight: 600;
}
.page-header p {
color: #6b7280;
font-size: 1rem;
}
/* 메인 컨텐츠 */
.main-content {
padding: 30px;
}
/* 문서 목록 */
.document-list {
display: grid;
gap: 15px;
margin-bottom: 40px;
}
.document-item {
background: white;
border: 1px solid #dc2626;
padding: 25px;
transition: all 0.3s ease;
box-shadow: 0 1px 3px rgba(220, 38, 38, 0.1);
cursor: pointer;
}
.document-item:hover {
border-color: #991b1b;
box-shadow: 0 4px 12px rgba(220, 38, 38, 0.15);
transform: translateY(-2px);
}
.document-content h3 {
color: #111827;
font-size: 1.1rem;
font-weight: 600;
margin: 0 0 8px 0;
line-height: 1.4;
}
.document-content p {
color: #6b7280;
font-size: 0.9rem;
margin: 0;
line-height: 1.5;
}
.document-content {
flex: 1;
}
/* 검색 섹션 */
.search-section {
background: #f8f9fa;
border: 1px solid #dc2626;
padding: 25px;
text-align: center;
margin-top: 30px;
}
.search-section h3 {
color: #111827;
font-size: 1.2rem;
margin-bottom: 15px;
font-weight: 600;
}
.search-box {
display: flex;
gap: 10px;
max-width: 400px;
margin: 0 auto;
}
.search-box input {
flex: 1;
padding: 12px 15px;
background: white;
border: 1px solid #dc2626;
color: #111827;
font-size: 0.9rem;
outline: none;
transition: all 0.3s ease;
}
.search-box input::placeholder {
color: #9ca3af;
}
.search-box input:focus {
border-color: #991b1b;
box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}
.search-box button {
background: white;
color: #dc2626;
border: 1px solid #dc2626;
padding: 12px 20px;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.9rem;
font-weight: 500;
}
.search-box button:hover {
background: #dc2626;
color: white;
}
/* 푸터 */
.footer {
text-align: center;
padding: 30px;
border-top: 1px solid #dc2626;
background: #f8f9fa;
}
.footer p {
color: #6b7280;
font-size: 0.8rem;
margin-bottom: 5px;
}
/* 반응형 */
@media (max-width: 768px) {
.container {
margin: 10px;
}
.page-header {
padding: 25px 20px;
}
.page-header h2 {
font-size: 1.6rem;
}
.main-content {
padding: 20px;
}
.search-box {
flex-direction: column;
}
}
</style>
</head>
<body>
<div class="container">
<!-- 브레드크럼 네비게이션 -->
<nav class="breadcrumb">
<a href="index.html"></a>
<span>></span>
<strong>HSE 관리시스템</strong>
</nav>
<!-- 페이지 헤더 -->
<header class="page-header">
<h2>HSE 관리시스템</h2>
<p>Health, Safety & Environment - 안전보건환경 관련 절차서</p>
</header>
<!-- 메인 컨텐츠 -->
<main class="main-content">
<div class="document-list">
<!-- HSE 관리시스템 매뉴얼 (최상위 문서) -->
<div class="document-item" onclick="location.href='iso45001_bilingual_manual.html'">
<div class="document-content">
<h3>TK-HSE-001 ISO 45001:2018 HSE 관리시스템 매뉴얼</h3>
<p>ISO 45001:2018 기반 보건, 안전 및 환경 관리시스템 최상위 문서 (한/영 이중언어)</p>
</div>
</div>
<!-- 4. 조직의 상황 관련 문서 -->
<div class="document-item" onclick="location.href='hse/TK-HSE-P-410.html'">
<div class="document-content">
<h3>TK-HSE-P-410 조직 상황 이해 및 HSE 관리시스템 운영 절차</h3>
<p>조직의 내외부 상황 파악 및 HSE 관리시스템 전반 운영</p>
</div>
</div>
<!-- 5. 리더십과 근로자 참여 관련 문서 -->
<div class="document-item" onclick="location.href='hse/TK-HSE-P-510.html'">
<div class="document-content">
<h3>TK-HSE-P-510 리더십 및 정책 수립 절차</h3>
<p>최고경영자 리더십 및 HSE 정책 수립·운영 절차</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-520.html'">
<div class="document-content">
<h3>TK-HSE-P-520 조직 편성 및 직무 배정 절차</h3>
<p>HSE 관련 조직 구성 및 역할·책임·권한 배정</p>
</div>
</div>
<!-- 6. 기획 관련 문서 -->
<div class="document-item" onclick="location.href='hse/TK-HSE-P-610.html'">
<div class="document-content">
<h3>TK-HSE-P-610 기획 및 위험 관리 절차</h3>
<p>HSE 관리시스템 기획 및 위험과 기회 관리</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-620.html'">
<div class="document-content">
<h3>TK-HSE-P-620 위험 평가 절차</h3>
<p>유해요인 식별 및 위험성 평가 실시 절차</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-630.html'">
<div class="document-content">
<h3>TK-HSE-P-630 HSE 법적 요구사항 관리 절차</h3>
<p>HSE 관련 법령 및 기타 요구사항 관리</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-640.html'">
<div class="document-content">
<h3>TK-HSE-P-640 HSE 목표 관리 절차</h3>
<p>HSE 목표 설정, 달성 계획 수립 및 관리</p>
</div>
</div>
<!-- 7. 지원 관련 문서 -->
<div class="document-item" onclick="location.href='hse/TK-HSE-P-710.html'">
<div class="document-content">
<h3>TK-HSE-P-710 자원 관리 절차</h3>
<p>HSE 관리시스템 운영에 필요한 자원 관리</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-720.html'">
<div class="document-content">
<h3>TK-HSE-P-720 교육 및 훈련 관리 절차</h3>
<p>HSE 관련 교육·훈련 계획 수립 및 실시</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-730.html'">
<div class="document-content">
<h3>TK-HSE-P-730 인식 및 의사소통 절차</h3>
<p>HSE 인식 제고 및 내외부 의사소통 관리</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-740.html'">
<div class="document-content">
<h3>TK-HSE-P-740 문서화된 정보 관리 절차</h3>
<p>HSE 문서 및 기록의 작성, 관리, 보관</p>
</div>
</div>
<!-- 8. 운영 관련 문서 -->
<div class="document-item" onclick="location.href='hse/TK-HSE-P-810.html'">
<div class="document-content">
<h3>TK-HSE-P-810 운영 기획 및 관리 절차</h3>
<p>HSE 운영 기획, 작업허가, 변경관리, 조달관리</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-820.html'">
<div class="document-content">
<h3>TK-HSE-P-820 비상 대비 및 대응 절차</h3>
<p>비상상황 대비, 대응 계획 및 훈련</p>
</div>
</div>
<!-- 9. 성과 평가 관련 문서 -->
<div class="document-item" onclick="location.href='hse/TK-HSE-P-910.html'">
<div class="document-content">
<h3>TK-HSE-P-910 프로세스 성과 관리 절차</h3>
<p>HSE 관리시스템 프로세스 성과 관리</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-920.html'">
<div class="document-content">
<h3>TK-HSE-P-920 HSE 모니터링 및 측정 관리 절차</h3>
<p>HSE 성과 모니터링, 측정 및 분석</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-930.html'">
<div class="document-content">
<h3>TK-HSE-P-930 내부 심사 절차</h3>
<p>HSE 관리시스템 내부 심사 계획 및 실시</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-940.html'">
<div class="document-content">
<h3>TK-HSE-P-940 경영 검토 절차</h3>
<p>HSE 관리시스템 경영진 검토</p>
</div>
</div>
<!-- 10. 개선 관련 문서 -->
<div class="document-item" onclick="location.href='hse/TK-HSE-P-1010.html'">
<div class="document-content">
<h3>TK-HSE-P-1010 사건, 부적합 및 시정조치 절차</h3>
<p>사건·사고 조사, 부적합 처리 및 시정조치</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-P-1020.html'">
<div class="document-content">
<h3>TK-HSE-P-1020 지속적 개선 절차</h3>
<p>HSE 관리시스템 지속적 개선 활동</p>
</div>
</div>
<!-- 실무 지침 문서들 -->
<div class="document-item" onclick="location.href='hse/TK-HSE-W-001.html'">
<div class="document-content">
<h3>TK-HSE-W-001 개인보호구 관리 지침</h3>
<p>개인보호구 지급, 관리, 점검 실무 지침</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-W-002.html'">
<div class="document-content">
<h3>TK-HSE-W-002 화학물질 관리 지침</h3>
<p>화학물질 보관, 사용, 폐기 실무 지침</p>
</div>
</div>
<div class="document-item" onclick="location.href='hse/TK-HSE-W-003.html'">
<div class="document-content">
<h3>TK-HSE-W-003 응급처치 및 의료관리 지침</h3>
<p>응급상황 대응 및 응급처치 실무 지침</p>
</div>
</div>
</div>
<!-- 검색 섹션 -->
<div class="search-section">
<h3>HSE 문서 검색</h3>
<div class="search-box">
<input type="text" id="hseSearchInput" placeholder="HSE 문서 검색 (예: 안전, 화재, 교육)">
<button onclick="filterDocuments(document.getElementById('hseSearchInput').value)">검색</button>
</div>
</div>
</main>
<footer class="footer">
<p>테크니컬코리아 내부 전용 문서시스템</p>
<p>HSE 문의: safety@technicalkorea.co.kr | 내선: 1234</p>
</footer>
</div>
<script>
// 문서 필터링 기능
function filterDocuments(searchTerm) {
const documents = document.querySelectorAll('.document-item');
const term = searchTerm.toLowerCase();
documents.forEach(doc => {
const title = doc.querySelector('h3').textContent.toLowerCase();
const description = doc.querySelector('p').textContent.toLowerCase();
if (title.includes(term) || description.includes(term)) {
doc.style.display = 'flex';
} else {
doc.style.display = 'none';
}
});
}
// Enter 키로 검색
document.getElementById('hseSearchInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
filterDocuments(this.value);
}
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,295 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>테크니컬코리아 문서 시스템</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: #f8f9fa;
min-height: 100vh;
color: #333;
padding: 20px;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 40px;
background: white;
border: 2px solid #dc2626;
box-shadow: 0 10px 30px rgba(220, 38, 38, 0.1);
min-height: calc(100vh - 40px);
}
.header {
text-align: center;
margin-bottom: 40px;
padding-bottom: 30px;
border-bottom: 1px solid #dc2626;
}
.header h1 {
color: #dc2626;
font-size: 2rem;
margin-bottom: 10px;
font-weight: 500;
}
.header p {
color: #6b7280;
font-size: 1rem;
font-weight: 400;
}
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 20px;
margin-bottom: 40px;
}
.card {
background: white;
border: 1px solid #dc2626;
padding: 25px;
transition: all 0.3s ease;
box-shadow: 0 2px 10px rgba(220, 38, 38, 0.1);
}
.card:hover {
border-color: #991b1b;
box-shadow: 0 5px 20px rgba(220, 38, 38, 0.15);
transform: translateY(-2px);
}
.card-icon {
font-size: 2rem;
margin-bottom: 15px;
opacity: 0.8;
display: none;
}
.card h3 {
color: #111827;
font-size: 1.2rem;
margin-bottom: 10px;
font-weight: 600;
}
.card p {
color: #6b7280;
font-size: 0.9rem;
margin-bottom: 20px;
line-height: 1.5;
}
.card-link {
display: inline-block;
background: white;
color: #dc2626;
text-decoration: none;
padding: 10px 20px;
border: 1px solid #dc2626;
font-size: 0.9rem;
transition: all 0.3s ease;
font-weight: 500;
}
.card-link:hover {
background: #dc2626;
color: white;
}
.search-card {
grid-column: 1 / -1;
text-align: center;
}
.search-box {
display: flex;
gap: 10px;
margin-top: 15px;
max-width: 400px;
margin-left: auto;
margin-right: auto;
}
.search-box input {
flex: 1;
padding: 12px 15px;
background: white;
border: 1px solid #dc2626;
color: #111827;
font-size: 0.9rem;
outline: none;
transition: all 0.3s ease;
}
.search-box input::placeholder {
color: #9ca3af;
}
.search-box input:focus {
border-color: #991b1b;
box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}
.search-box button {
background: white;
color: #dc2626;
border: 1px solid #dc2626;
padding: 12px 20px;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.9rem;
font-weight: 500;
}
.search-box button:hover {
background: #dc2626;
color: white;
}
.footer {
text-align: center;
padding-top: 30px;
border-top: 1px solid #dc2626;
margin-top: auto;
}
.footer p {
color: #6b7280;
font-size: 0.8rem;
margin-bottom: 5px;
font-weight: 400;
}
/* 반응형 */
@media (max-width: 768px) {
.container {
padding: 20px;
margin: 10px;
}
.header h1 {
font-size: 1.6rem;
}
.card-grid {
grid-template-columns: 1fr;
gap: 15px;
}
.search-box {
flex-direction: column;
}
.search-box button {
width: 100%;
}
}
</style>
</head>
<body>
<div class="container">
<header class="header">
<h1>테크니컬코리아 문서 시스템</h1>
<p>회사 규정 및 절차서 열람 시스템</p>
</header>
<main class="main-content">
<div class="card-grid">
<!-- HSE 문서 -->
<div class="card">
<h3>HSE 관리시스템</h3>
<p>ISO 45001:2018 기반 안전보건환경 관련 절차서</p>
<a href="hse.html" class="card-link">바로가기</a>
</div>
<!-- 품질 문서 -->
<div class="card">
<h3>품질 관리시스템</h3>
<p>ISO 9001 기반 품질관리 절차 및 매뉴얼</p>
<a href="quality.html" class="card-link">바로가기</a>
</div>
<!-- 인사 규정 -->
<div class="card">
<h3>인사 규정</h3>
<p>인사관리 규정 및 지침서</p>
<a href="hr.html" class="card-link">바로가기</a>
</div>
<!-- 기술 문서 -->
<div class="card">
<h3>기술 문서</h3>
<p>설계 표준, 용접절차, BOM 시스템 가이드라인</p>
<a href="technical.html" class="card-link">바로가기</a>
</div>
<!-- 경영 방침 -->
<div class="card">
<h3>경영 방침</h3>
<p>회사 방침, 윤리강령 및 정책 문서</p>
<a href="policy.html" class="card-link">바로가기</a>
</div>
<!-- 검색 -->
<div class="card search-card">
<h3>문서 검색</h3>
<div class="search-box">
<input type="text" id="searchInput" placeholder="문서명 또는 키워드 입력">
<button onclick="searchDocuments()">검색</button>
</div>
</div>
</div>
</main>
<footer class="footer">
<p>테크니컬코리아 내부 전용 문서시스템</p>
<p>http://192.168.0.3:10080/docs</p>
</footer>
</div>
<script>
// 문서 검색 기능
function searchDocuments() {
const searchTerm = document.getElementById('searchInput').value.toLowerCase().trim();
if (searchTerm === '') {
alert('검색어를 입력해주세요.');
return;
}
// 키워드에 따른 페이지 추천
if (searchTerm.includes('iso') || searchTerm.includes('45001') || searchTerm.includes('hse') || searchTerm.includes('안전')) {
window.location.href = 'hse.html';
} else if (searchTerm.includes('품질') || searchTerm.includes('quality') || searchTerm.includes('9001')) {
window.location.href = 'quality.html';
} else if (searchTerm.includes('인사') || searchTerm.includes('hr') || searchTerm.includes('급여')) {
window.location.href = 'hr.html';
} else if (searchTerm.includes('기술') || searchTerm.includes('설계') || searchTerm.includes('용접') || searchTerm.includes('bom')) {
window.location.href = 'technical.html';
} else if (searchTerm.includes('경영') || searchTerm.includes('정책') || searchTerm.includes('윤리')) {
window.location.href = 'policy.html';
} else {
alert('관련 문서를 찾을 수 없습니다. 다른 키워드로 시도해보세요.');
}
}
// Enter 키 검색
document.getElementById('searchInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
searchDocuments();
}
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,317 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>경영방침 - 테크니컬코리아</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: #f8f9fa;
min-height: 100vh;
color: #333;
padding: 20px;
}
.container {
max-width: 1000px;
margin: 0 auto;
background: white;
border: 2px solid #dc2626;
box-shadow: 0 10px 30px rgba(220, 38, 38, 0.1);
min-height: calc(100vh - 40px);
}
/* 브레드크럼 */
.breadcrumb {
background: #f8f9fa;
padding: 15px 30px;
border-bottom: 1px solid #dc2626;
font-size: 0.9rem;
}
.breadcrumb a {
color: #dc2626;
text-decoration: none;
font-weight: 500;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.breadcrumb span {
color: #6b7280;
margin: 0 10px;
}
/* 헤더 */
.page-header {
text-align: center;
padding: 40px 30px;
border-bottom: 1px solid #dc2626;
}
.page-header h2 {
color: #dc2626;
font-size: 2rem;
margin-bottom: 10px;
font-weight: 600;
}
.page-header p {
color: #6b7280;
font-size: 1rem;
}
/* 메인 컨텐츠 */
.main-content {
padding: 30px;
}
/* 문서 목록 */
.document-list {
display: grid;
gap: 15px;
margin-bottom: 40px;
}
.document-item {
background: white;
border: 1px solid #dc2626;
padding: 25px;
transition: all 0.3s ease;
box-shadow: 0 1px 3px rgba(220, 38, 38, 0.1);
cursor: pointer;
}
.document-item:hover {
border-color: #991b1b;
box-shadow: 0 4px 12px rgba(220, 38, 38, 0.15);
transform: translateY(-2px);
}
.document-content h3 {
color: #111827;
font-size: 1.1rem;
font-weight: 600;
margin: 0 0 8px 0;
line-height: 1.4;
}
.document-content p {
color: #6b7280;
font-size: 0.9rem;
margin: 0;
line-height: 1.5;
}
.document-content {
flex: 1;
}
/* 검색 섹션 */
.search-section {
background: #f8f9fa;
border: 1px solid #dc2626;
padding: 25px;
text-align: center;
margin-top: 30px;
}
.search-section h3 {
color: #111827;
font-size: 1.2rem;
margin-bottom: 15px;
font-weight: 600;
}
.search-box {
display: flex;
gap: 10px;
max-width: 400px;
margin: 0 auto;
}
.search-box input {
flex: 1;
padding: 12px 15px;
background: white;
border: 1px solid #dc2626;
color: #111827;
font-size: 0.9rem;
outline: none;
transition: all 0.3s ease;
}
.search-box input::placeholder {
color: #9ca3af;
}
.search-box input:focus {
border-color: #991b1b;
box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}
.search-box button {
background: white;
color: #dc2626;
border: 1px solid #dc2626;
padding: 12px 20px;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.9rem;
font-weight: 500;
}
.search-box button:hover {
background: #dc2626;
color: white;
}
/* 푸터 */
.footer {
text-align: center;
padding: 30px;
border-top: 1px solid #dc2626;
background: #f8f9fa;
}
.footer p {
color: #6b7280;
font-size: 0.8rem;
margin-bottom: 5px;
}
/* 반응형 */
@media (max-width: 768px) {
.container {
margin: 10px;
}
.page-header {
padding: 25px 20px;
}
.page-header h2 {
font-size: 1.6rem;
}
.main-content {
padding: 20px;
}
.search-box {
flex-direction: column;
}
}
</style>
</head>
<body>
<div class="container">
<!-- 브레드크럼 네비게이션 -->
<nav class="breadcrumb">
<a href="index.html"></a>
<span>></span>
<strong>경영방침</strong>
</nav>
<!-- 페이지 헤더 -->
<header class="page-header">
<h2>경영방침</h2>
<p>Management Policy - 회사 방침 및 정책 문서</p>
</header>
<!-- 메인 컨텐츠 -->
<main class="main-content">
<div class="document-list">
<!-- 경영방침서 -->
<div class="document-item" onclick="location.href='policy/MP-001.html'">
<div class="document-content">
<h3>MP-001 경영방침서</h3>
<p>테크니컬코리아 경영이념 및 기본방침</p>
</div>
</div>
<!-- 윤리강령 -->
<div class="document-item" onclick="location.href='policy/MP-002.html'">
<div class="document-content">
<h3>MP-002 윤리강령</h3>
<p>임직원 윤리행동 기준 및 가이드라인</p>
</div>
</div>
<!-- 정보보안정책 -->
<div class="document-item" onclick="location.href='policy/MP-003.html'">
<div class="document-content">
<h3>MP-003 정보보안 정책</h3>
<p>회사 정보자산 보호 및 보안 정책</p>
</div>
</div>
<!-- 조직도 -->
<div class="document-item" onclick="location.href='policy/MP-004.html'">
<div class="document-content">
<h3>MP-004 조직도</h3>
<p>회사 조직도 및 부서별 역할</p>
</div>
</div>
<!-- 권한위임규정 -->
<div class="document-item" onclick="location.href='policy/MP-005.html'">
<div class="document-content">
<h3>MP-005 권한위임 규정</h3>
<p>의사결정 권한 및 위임 규정</p>
</div>
</div>
</div>
<!-- 검색 섹션 -->
<div class="search-section">
<h3>경영방침 검색</h3>
<div class="search-box">
<input type="text" id="policySearchInput" placeholder="경영방침 검색 (예: 윤리, 보안, 조직)">
<button onclick="filterDocuments(document.getElementById('policySearchInput').value)">검색</button>
</div>
</div>
</main>
<footer class="footer">
<p>테크니컬코리아 내부 전용 문서시스템</p>
<p>경영방침 문의: policy@technicalkorea.co.kr | 내선: 5678</p>
</footer>
</div>
<script>
// 문서 필터링 기능
function filterDocuments(searchTerm) {
const documents = document.querySelectorAll('.document-item');
const term = searchTerm.toLowerCase();
documents.forEach(doc => {
const title = doc.querySelector('h3').textContent.toLowerCase();
const description = doc.querySelector('p').textContent.toLowerCase();
if (title.includes(term) || description.includes(term)) {
doc.style.display = 'block';
} else {
doc.style.display = 'none';
}
});
}
// Enter 키로 검색
document.getElementById('policySearchInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
filterDocuments(this.value);
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,373 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>품질 관리시스템 - 테크니컬코리아</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: #f8f9fa;
min-height: 100vh;
color: #333;
padding: 20px;
}
.container {
max-width: 1000px;
margin: 0 auto;
background: white;
border: 2px solid #dc2626;
box-shadow: 0 10px 30px rgba(220, 38, 38, 0.1);
min-height: calc(100vh - 40px);
}
/* 브레드크럼 */
.breadcrumb {
background: #f8f9fa;
padding: 15px 30px;
border-bottom: 1px solid #dc2626;
font-size: 0.9rem;
}
.breadcrumb a {
color: #dc2626;
text-decoration: none;
font-weight: 500;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.breadcrumb span {
color: #6b7280;
margin: 0 10px;
}
/* 헤더 */
.page-header {
text-align: center;
padding: 40px 30px;
border-bottom: 1px solid #dc2626;
}
.page-header h2 {
color: #dc2626;
font-size: 2rem;
margin-bottom: 10px;
font-weight: 600;
}
.page-header p {
color: #6b7280;
font-size: 1rem;
}
/* 메인 컨텐츠 */
.main-content {
padding: 30px;
}
/* 문서 목록 */
.document-list {
display: grid;
gap: 15px;
margin-bottom: 40px;
}
.document-item {
background: white;
border: 1px solid #dc2626;
padding: 25px;
transition: all 0.3s ease;
box-shadow: 0 1px 3px rgba(220, 38, 38, 0.1);
cursor: pointer;
}
.document-item:hover {
border-color: #991b1b;
box-shadow: 0 4px 12px rgba(220, 38, 38, 0.15);
transform: translateY(-2px);
}
.document-content h3 {
color: #111827;
font-size: 1.1rem;
font-weight: 600;
margin: 0 0 8px 0;
line-height: 1.4;
}
.document-content p {
color: #6b7280;
font-size: 0.9rem;
margin: 0;
line-height: 1.5;
}
.document-content {
flex: 1;
}
/* 검색 섹션 */
.search-section {
background: #f8f9fa;
border: 1px solid #dc2626;
padding: 25px;
text-align: center;
margin-top: 30px;
}
.search-section h3 {
color: #111827;
font-size: 1.2rem;
margin-bottom: 15px;
font-weight: 600;
}
.search-box {
display: flex;
gap: 10px;
max-width: 400px;
margin: 0 auto;
}
.search-box input {
flex: 1;
padding: 12px 15px;
background: white;
border: 1px solid #dc2626;
color: #111827;
font-size: 0.9rem;
outline: none;
transition: all 0.3s ease;
}
.search-box input::placeholder {
color: #9ca3af;
}
.search-box input:focus {
border-color: #991b1b;
box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}
.search-box button {
background: white;
color: #dc2626;
border: 1px solid #dc2626;
padding: 12px 20px;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.9rem;
font-weight: 500;
}
.search-box button:hover {
background: #dc2626;
color: white;
}
/* 푸터 */
.footer {
text-align: center;
padding: 30px;
border-top: 1px solid #dc2626;
background: #f8f9fa;
}
.footer p {
color: #6b7280;
font-size: 0.8rem;
margin-bottom: 5px;
}
/* 반응형 */
@media (max-width: 768px) {
.container {
margin: 10px;
}
.page-header {
padding: 25px 20px;
}
.page-header h2 {
font-size: 1.6rem;
}
.main-content {
padding: 20px;
}
.search-box {
flex-direction: column;
}
}
</style>
</head>
<body>
<div class="container">
<!-- 브레드크럼 네비게이션 -->
<nav class="breadcrumb">
<a href="index.html"></a>
<span>></span>
<strong>품질 관리시스템</strong>
</nav>
<!-- 페이지 헤더 -->
<header class="page-header">
<h2>품질 관리시스템</h2>
<p>Quality Management System - ISO 9001 기반 품질관리 절차 및 매뉴얼</p>
</header>
<!-- 메인 컨텐츠 -->
<main class="main-content">
<div class="document-list">
<!-- 품질매뉴얼 -->
<div class="document-item" onclick="location.href='quality/QM-001.html'">
<div class="document-content">
<h3>QM-001 품질매뉴얼</h3>
<p>ISO 9001 기반 품질경영시스템 매뉴얼</p>
</div>
</div>
<!-- 문서관리 -->
<div class="document-item" onclick="location.href='quality/QP-001.html'">
<div class="document-content">
<h3>QP-001 문서 및 기록관리 절차</h3>
<p>품질문서 작성, 승인, 배포, 보관 절차</p>
</div>
</div>
<!-- 고객만족 -->
<div class="document-item" onclick="location.href='quality/QP-002.html'">
<div class="document-content">
<h3>QP-002 고객만족 관리절차</h3>
<p>고객 요구사항 파악 및 만족도 관리</p>
</div>
</div>
<!-- 설계관리 -->
<div class="document-item" onclick="location.href='quality/QP-003.html'">
<div class="document-content">
<h3>QP-003 설계 및 개발관리</h3>
<p>설계입력, 검토, 검증, 타당성확인 절차</p>
</div>
</div>
<!-- 구매관리 -->
<div class="document-item" onclick="location.href='quality/QP-004.html'">
<div class="document-content">
<h3>QP-004 구매 및 외주관리</h3>
<p>협력업체 평가, 구매품 검증 절차</p>
</div>
</div>
<!-- 생산관리 -->
<div class="document-item" onclick="location.href='quality/QP-005.html'">
<div class="document-content">
<h3>QP-005 생산 및 서비스 제공</h3>
<p>생산공정 관리 및 제품 식별추적성</p>
</div>
</div>
<!-- 검사시험 -->
<div class="document-item" onclick="location.href='quality/QP-006.html'">
<div class="document-content">
<h3>QP-006 검사 및 시험관리</h3>
<p>원자재, 중간품, 최종제품 검사 절차</p>
</div>
</div>
<!-- 부적합관리 -->
<div class="document-item" onclick="location.href='quality/QP-007.html'">
<div class="document-content">
<h3>QP-007 부적합 및 시정조치</h3>
<p>부적합품 관리 및 시정예방조치 절차</p>
</div>
</div>
<!-- 내부심사 -->
<div class="document-item" onclick="location.href='quality/QP-008.html'">
<div class="document-content">
<h3>QP-008 내부심사 절차</h3>
<p>품질경영시스템 내부심사 실시 절차</p>
</div>
</div>
<!-- 경영검토 -->
<div class="document-item" onclick="location.href='quality/QP-009.html'">
<div class="document-content">
<h3>QP-009 경영검토 절차</h3>
<p>품질경영시스템 경영검토 실시 절차</p>
</div>
</div>
<!-- 측정장비관리 -->
<div class="document-item" onclick="location.href='quality/QP-010.html'">
<div class="document-content">
<h3>QP-010 측정장비 관리절차</h3>
<p>측정장비 교정, 점검, 관리 절차</p>
</div>
</div>
<!-- 교육훈련 -->
<div class="document-item" onclick="location.href='quality/QP-011.html'">
<div class="document-content">
<h3>QP-011 교육훈련 관리절차</h3>
<p>품질 관련 교육훈련 계획 및 실시</p>
</div>
</div>
</div>
<!-- 검색 섹션 -->
<div class="search-section">
<h3>품질문서 검색</h3>
<div class="search-box">
<input type="text" id="qualitySearchInput" placeholder="품질문서 검색 (예: ISO, 설계, 검사)">
<button onclick="filterDocuments(document.getElementById('qualitySearchInput').value)">검색</button>
</div>
</div>
</main>
<footer class="footer">
<p>테크니컬코리아 내부 전용 문서시스템</p>
<p>품질 문의: quality@technicalkorea.co.kr | 내선: 2345</p>
</footer>
</div>
<script>
// 문서 필터링 기능
function filterDocuments(searchTerm) {
const documents = document.querySelectorAll('.document-item');
const term = searchTerm.toLowerCase();
documents.forEach(doc => {
const title = doc.querySelector('h3').textContent.toLowerCase();
const description = doc.querySelector('p').textContent.toLowerCase();
if (title.includes(term) || description.includes(term)) {
doc.style.display = 'block';
} else {
doc.style.display = 'none';
}
});
}
// Enter 키로 검색
document.getElementById('qualitySearchInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
filterDocuments(this.value);
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,333 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>기술문서 - 테크니컬코리아</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: #f8f9fa;
min-height: 100vh;
color: #333;
padding: 20px;
}
.container {
max-width: 1000px;
margin: 0 auto;
background: white;
border: 2px solid #dc2626;
box-shadow: 0 10px 30px rgba(220, 38, 38, 0.1);
min-height: calc(100vh - 40px);
}
/* 브레드크럼 */
.breadcrumb {
background: #f8f9fa;
padding: 15px 30px;
border-bottom: 1px solid #dc2626;
font-size: 0.9rem;
}
.breadcrumb a {
color: #dc2626;
text-decoration: none;
font-weight: 500;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.breadcrumb span {
color: #6b7280;
margin: 0 10px;
}
/* 헤더 */
.page-header {
text-align: center;
padding: 40px 30px;
border-bottom: 1px solid #dc2626;
}
.page-header h2 {
color: #dc2626;
font-size: 2rem;
margin-bottom: 10px;
font-weight: 600;
}
.page-header p {
color: #6b7280;
font-size: 1rem;
}
/* 메인 컨텐츠 */
.main-content {
padding: 30px;
}
/* 문서 목록 */
.document-list {
display: grid;
gap: 15px;
margin-bottom: 40px;
}
.document-item {
background: white;
border: 1px solid #dc2626;
padding: 25px;
transition: all 0.3s ease;
box-shadow: 0 1px 3px rgba(220, 38, 38, 0.1);
cursor: pointer;
}
.document-item:hover {
border-color: #991b1b;
box-shadow: 0 4px 12px rgba(220, 38, 38, 0.15);
transform: translateY(-2px);
}
.document-content h3 {
color: #111827;
font-size: 1.1rem;
font-weight: 600;
margin: 0 0 8px 0;
line-height: 1.4;
}
.document-content p {
color: #6b7280;
font-size: 0.9rem;
margin: 0;
line-height: 1.5;
}
.document-content {
flex: 1;
}
/* 검색 섹션 */
.search-section {
background: #f8f9fa;
border: 1px solid #dc2626;
padding: 25px;
text-align: center;
margin-top: 30px;
}
.search-section h3 {
color: #111827;
font-size: 1.2rem;
margin-bottom: 15px;
font-weight: 600;
}
.search-box {
display: flex;
gap: 10px;
max-width: 400px;
margin: 0 auto;
}
.search-box input {
flex: 1;
padding: 12px 15px;
background: white;
border: 1px solid #dc2626;
color: #111827;
font-size: 0.9rem;
outline: none;
transition: all 0.3s ease;
}
.search-box input::placeholder {
color: #9ca3af;
}
.search-box input:focus {
border-color: #991b1b;
box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}
.search-box button {
background: white;
color: #dc2626;
border: 1px solid #dc2626;
padding: 12px 20px;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.9rem;
font-weight: 500;
}
.search-box button:hover {
background: #dc2626;
color: white;
}
/* 푸터 */
.footer {
text-align: center;
padding: 30px;
border-top: 1px solid #dc2626;
background: #f8f9fa;
}
.footer p {
color: #6b7280;
font-size: 0.8rem;
margin-bottom: 5px;
}
/* 반응형 */
@media (max-width: 768px) {
.container {
margin: 10px;
}
.page-header {
padding: 25px 20px;
}
.page-header h2 {
font-size: 1.6rem;
}
.main-content {
padding: 20px;
}
.search-box {
flex-direction: column;
}
}
</style>
</head>
<body>
<div class="container">
<!-- 브레드크럼 네비게이션 -->
<nav class="breadcrumb">
<a href="index.html"></a>
<span>></span>
<strong>기술문서</strong>
</nav>
<!-- 페이지 헤더 -->
<header class="page-header">
<h2>기술문서</h2>
<p>Technical Documents - 기술 표준 및 가이드라인</p>
</header>
<!-- 메인 컨텐츠 -->
<main class="main-content">
<div class="document-list">
<!-- 설계표준 -->
<div class="document-item" onclick="location.href='technical/TD-001.html'">
<div class="document-content">
<h3>TD-001 배관설계 표준</h3>
<p>배관 설계 기준 및 표준 사양서</p>
</div>
</div>
<!-- 용접절차서 -->
<div class="document-item" onclick="location.href='technical/TD-002.html'">
<div class="document-content">
<h3>TD-002 용접절차서 (WPS)</h3>
<p>배관 용접 절차 및 품질 기준</p>
</div>
</div>
<!-- 재료사양서 -->
<div class="document-item" onclick="location.href='technical/TD-003.html'">
<div class="document-content">
<h3>TD-003 재료사양서</h3>
<p>배관재료 규격 및 선정 기준</p>
</div>
</div>
<!-- CAD 표준 -->
<div class="document-item" onclick="location.href='technical/TD-004.html'">
<div class="document-content">
<h3>TD-004 CAD 도면 표준</h3>
<p>도면 작성 기준 및 CAD 표준</p>
</div>
</div>
<!-- 검사기준서 -->
<div class="document-item" onclick="location.href='technical/TD-005.html'">
<div class="document-content">
<h3>TD-005 배관 검사기준서</h3>
<p>배관 제작 및 설치 검사 기준</p>
</div>
</div>
<!-- 압력시험절차 -->
<div class="document-item" onclick="location.href='technical/TD-006.html'">
<div class="document-content">
<h3>TD-006 압력시험 절차서</h3>
<p>배관계통 압력시험 절차 및 기준</p>
</div>
</div>
<!-- BOM 시스템 매뉴얼 -->
<div class="document-item" onclick="location.href='technical/TD-007.html'">
<div class="document-content">
<h3>TD-007 BOM 시스템 사용자 매뉴얼</h3>
<p>자재관리 시스템 사용 가이드</p>
</div>
</div>
</div>
<!-- 검색 섹션 -->
<div class="search-section">
<h3>기술문서 검색</h3>
<div class="search-box">
<input type="text" id="techSearchInput" placeholder="기술문서 검색 (예: 설계, 용접, CAD)">
<button onclick="filterDocuments(document.getElementById('techSearchInput').value)">검색</button>
</div>
</div>
</main>
<footer class="footer">
<p>테크니컬코리아 내부 전용 문서시스템</p>
<p>기술 문의: tech@technicalkorea.co.kr | 내선: 4567</p>
</footer>
</div>
<script>
// 문서 필터링 기능
function filterDocuments(searchTerm) {
const documents = document.querySelectorAll('.document-item');
const term = searchTerm.toLowerCase();
documents.forEach(doc => {
const title = doc.querySelector('h3').textContent.toLowerCase();
const description = doc.querySelector('p').textContent.toLowerCase();
if (title.includes(term) || description.includes(term)) {
doc.style.display = 'block';
} else {
doc.style.display = 'none';
}
});
}
// Enter 키로 검색
document.getElementById('techSearchInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
filterDocuments(this.value);
}
});
</script>
</body>
</html>