From 64b8501afa3ff364c6e528513949786d39f23904 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Sun, 14 Sep 2025 12:09:40 +0900 Subject: [PATCH] =?UTF-8?q?Initial=20commit:=20=EC=82=B0=EC=97=85=20?= =?UTF-8?q?=EC=A0=84=EB=AC=B8=20=EC=A0=95=EB=B3=B4=20=EC=88=98=EC=A7=91=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 산업안전, 플랜트 패키지, 압력용기 3개 분야 특화 - 태그 기반 정보 구조 및 검색 시스템 설계 - 맥미니 최적화 설치 가이드 포함 - 법적 준수를 위한 공개 정보원만 활용 --- README.md | 677 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 677 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..414917a --- /dev/null +++ b/README.md @@ -0,0 +1,677 @@ +# 산업 전문 정보 수집 시스템 + +## 🏭 프로젝트 개요 + +산업안전, 플랜트 패키지, 압력용기 분야의 전문 정보를 수집하고 분석하는 태그 기반 정보 시스템입니다. 법적 문제 없이 공개된 정보원에서 메타데이터와 태그를 중심으로 한 스마트 검색 서비스를 제공합니다. + +## 🎯 주요 특징 + +- **전문 분야 특화**: 산업안전, 플랜트 패키지, 압력용기 3개 분야 집중 +- **다층 태그 시스템**: 기술 분류, 지역, 기업, 표준/규격 기반 태그 +- **스마트 검색**: 전문 용어와 자연어 쿼리를 구조화된 검색으로 변환 +- **시각화**: 기술 트렌드 차트, 연관 기술 네트워크, 타임라인 +- **합법적 수집**: 공개 RSS, API, 논문 데이터베이스 활용 + +## 📊 정보 수집 분야 & 소스 + +### 1. 산업안전 (Industrial Safety) +``` +📚 학술 논문 +- PubMed (의학/보건 관련) +- IEEE Xplore (전기/전자 안전) +- ScienceDirect (화학/공정 안전) +- JSTOR (사회과학 관점 안전) + +📰 산업 동향 +- OSHA RSS feeds +- HSE (영국 보건안전청) +- KOSHA (한국산업안전보건공단) +- NIOSH (미국 국립직업안전보건연구원) + +🏢 업계 뉴스 +- Safety+Health Magazine +- Industrial Safety & Hygiene News +- Process Safety Progress +``` + +### 2. 플랜트 패키지 (Plant Packages) +``` +🏭 산업 냉동기 +- Carrier, Trane, Johnson Controls RSS +- ASHRAE 기술 동향 +- Refrigeration & Air Conditioning + +⚡ BOG (Boil-Off Gas) 시스템 +- LNG Industry Magazine +- Offshore Technology +- Gas Processing & LNG + +🚢 선박 플랜트 +- Maritime Reporter +- Ship & Offshore +- Marine Engineering Review + +🌍 각국 중공업 동향 +- 한국: 현대중공업, 대우조선해양, 삼성중공업 +- 일본: 미쓰비시중공업, 가와사키중공업 +- 중국: CSSC, CSIC +- 유럽: Wärtsilä, MAN Energy Solutions +``` + +### 3. 압력용기 관련 (Pressure Vessels) +``` +📋 표준 및 규격 +- ASME (미국기계학회) 공지사항 +- KGS (한국가스안전공사) 기술기준 +- API (미국석유협회) 표준 업데이트 +- PED (유럽 압력기기 지침) + +🔬 기술 논문 +- Journal of Pressure Vessel Technology +- International Journal of Pressure Vessels and Piping +- Pressure Vessels and Piping Conference + +🏭 업계 동향 +- Pressure Vessel Manufacturer Association +- 한국압력용기공업협동조합 +- 일본압력기술협회 +``` + +### 법적 준수 원칙 +- ✅ 공개 RSS 피드만 활용 +- ✅ 메타데이터 중심 수집 (제목, 요약, 태그) +- ✅ 저작권 표시 및 원문 링크 제공 +- ❌ 전문 복사 금지 +- ❌ 페이월 우회 금지 + +## 🏷️ 태그 기반 정보 구조 + +### 다층 태그 시스템 + +```json +{ + "article_id": "asme_2024_11_17_001", + "source": "ASME", + "source_type": "standard_update", + "metadata": { + "title": "ASME BPVC Section VIII Division 1 개정사항", + "description": "압력용기 설계 기준 주요 변경사항 (첫 200자)", + "url": "원문 링크", + "published": "2024-11-17T10:30:00Z", + "document_type": "standard" + }, + "tags": { + "field": { + "primary": "pressure_vessels", + "secondary": ["industrial_safety", "plant_packages"] + }, + "location": { + "primary": ["USA"], + "mentioned": ["Korea", "Japan", "Europe"], + "coordinates": [[40.7589, -73.9851]] + }, + "technical_category": { + "main": "Pressure Vessels", + "sub": ["Design Standards", "Safety Codes", "Material Specifications"] + }, + "entities": { + "companies": ["현대중공업", "두산에너빌리티", "Babcock & Wilcox"], + "organizations": ["ASME", "KGS", "API", "PED"], + "standards": ["BPVC Section VIII", "KGS FS111", "API 510"] + }, + "keywords": { + "extracted": ["pressure vessel", "design code", "safety factor"], + "weighted": [ + {"term": "ASME BPVC", "score": 0.95}, + {"term": "압력용기", "score": 0.88}, + {"term": "안전계수", "score": 0.75} + ] + }, + "technical_specs": { + "pressure_range": "150-600 psi", + "temperature_range": "-20°C to 400°C", + "materials": ["SA-516 Grade 70", "SA-240 Type 316L"] + } + } +} +``` + +### 태그 자동 생성 파이프라인 + +``` +다중 소스 수집 (RSS/API/논문DB) + ↓ +메타데이터 추출 (제목/요약/저자/날짜) + ↓ +전문 분야 NLP 처리 +├─ 기술 용어 인식 (Technical NER) +├─ 표준/규격 추출 (ASME, KGS, API 등) +├─ 기업/조직 인식 +├─ 지역/국가 추출 +└─ 기술 사양 파싱 (압력, 온도, 재료 등) + ↓ +전문 분야별 태그 정규화 +├─ 산업안전: 위험도, 사고유형, 예방조치 +├─ 플랜트: 장비유형, 공정, 용량 +└─ 압력용기: 규격, 재료, 설계조건 + ↓ +신뢰도 점수 부여 (소스별 가중치) + ↓ +전문 DB 저장 (PostgreSQL + Elasticsearch) +``` + +## 🔍 검색 시스템 설계 + +### 다차원 검색 인터페이스 + +``` +┌─────────────────────────────────────────────────┐ +│ 🔍 검색어: "ASME BPVC 압력용기 설계" │ +├─────────────────────────────────────────────────┤ +│ 📅 기간: [2024.10.01] ~ [2024.11.17] │ +│ 🏭 분야: [✓산업안전 ✓플랜트 ✓압력용기] │ +│ 🌍 지역: [✓한국 ✓미국 □일본 □유럽] │ +│ 📋 소스: [✓ASME ✓KGS ✓논문 □업계뉴스] │ +│ 🏷️ 기술분류: [✓설계기준 ✓안전규격 □재료] │ +│ 🎯 개체: [표준명] [기업명] [장비유형] │ +│ ⚙️ 기술사양: [압력범위] [온도범위] [재료등급] │ +└─────────────────────────────────────────────────┘ +``` + +### 스마트 쿼리 빌더 + +**자연어 → 구조화 쿼리** +``` +입력: "지난달 현대중공업 압력용기 ASME 기준" + ↓ +파싱: { + time: "last_month", + company: "현대중공업", + field: "pressure_vessels", + standard: "ASME" +} + ↓ +쿼리: +SELECT * FROM technical_documents +WHERE '현대중공업' = ANY(entities.companies) +AND 'pressure_vessels' = ANY(tags.field.primary) +AND 'ASME' = ANY(entities.standards) +AND published >= '2024-10-01' +``` + +### 검색 결과 랭킹 + +**관련도 점수 계산** +```python +relevance_score = ( + technical_term_match * 0.3 + # 전문 용어 일치도 + standard_match * 0.25 + # 표준/규격 일치도 + company_match * 0.15 + # 기업/조직 일치도 + recency * 0.15 + # 최신성 + source_credibility * 0.1 + # 소스 신뢰도 (논문>표준>뉴스) + field_relevance * 0.05 # 분야 관련성 +) + +# 소스별 신뢰도 가중치 +source_weights = { + "academic_paper": 1.0, # 학술 논문 + "standard_update": 0.95, # 표준 업데이트 + "industry_report": 0.8, # 산업 보고서 + "news_article": 0.6, # 뉴스 기사 + "blog_post": 0.3 # 블로그 포스트 +} +``` + +## 💡 태그 활용 기능 + +### 1. 기술 트렌드 대시보드 +``` +분야별 트렌드 차트: +- 기술별 언급 빈도 (막대 그래프) +- 시간별 트렌드 변화 (라인 차트) +- 색상 = 분야별 구분 (안전=빨강, 플랜트=파랑, 압력용기=초록) +- 클릭 시 해당 기술 상세 검색 + +예시: "ASME BPVC" 급상승, "BOG 처리" 지속 증가 +``` + +### 2. 연관 기술 네트워크 +``` +"압력용기" 검색 시: + ASME BPVC + ↑ + 압력용기 ─── KGS FS111 + ↓ ↘ ↘ + 현대중공업 API 510 ─── 검사기준 + ↓ + 해상플랜트 +``` + +### 3. 기술 발전 타임라인 +``` +특정 기술의 시간별 발전 추이: + +"BOG 처리기술" 발전 추이: +│ +│ ╱╲ +│ ╱ ╲ ← 새로운 규제 발표 +│ ╱ ╲ +│__╱______╲___ + 2023 2024 2025 + +주요 이벤트: +- 2024.03: IMO 새 배출 규제 +- 2024.07: 삼성중공업 신기술 발표 +- 2024.11: ASME 기준 개정 +``` + +## 🔧 기술 구현 + +### Elasticsearch 스키마 +```json +{ + "mappings": { + "properties": { + "title": {"type": "text", "analyzer": "nori"}, + "description": {"type": "text", "analyzer": "nori"}, + "source_type": {"type": "keyword"}, + "tags": { + "properties": { + "field": { + "properties": { + "primary": {"type": "keyword"}, + "secondary": {"type": "keyword"} + } + }, + "location": { + "properties": { + "primary": {"type": "keyword"}, + "coordinates": {"type": "geo_point"} + } + }, + "technical_category": { + "properties": { + "main": {"type": "keyword"}, + "sub": {"type": "keyword"} + } + }, + "entities": { + "properties": { + "companies": {"type": "keyword"}, + "organizations": {"type": "keyword"}, + "standards": {"type": "keyword"} + } + }, + "technical_specs": { + "properties": { + "pressure_range": {"type": "keyword"}, + "temperature_range": {"type": "keyword"}, + "materials": {"type": "keyword"} + } + } + } + }, + "published": {"type": "date"}, + "vector": {"type": "dense_vector", "dims": 768} + } + } +} +``` + +### 태그 추출 모듈 +```python +# spaCy + 전문 분야 커스텀 모델 +def extract_technical_tags(text, title, description, source_type): + tags = { + "field": classify_technical_field(text, title), + "location": extract_locations(text), + "technical_category": classify_technical_category(text), + "entities": extract_technical_entities(text), + "technical_specs": extract_technical_specs(text) + } + return normalize_technical_tags(tags, source_type) + +# 전문 용어 추출 +def extract_technical_entities(text): + entities = { + "companies": extract_companies(text), + "organizations": extract_organizations(text), + "standards": extract_standards(text) # ASME, KGS, API 등 + } + return entities + +# 기술 사양 추출 (압력용기 특화) +def extract_technical_specs(text): + specs = {} + + # 압력 범위 추출 (psi, bar, MPa) + pressure_pattern = r'(\d+(?:\.\d+)?)\s*(psi|bar|MPa|kPa)' + pressure_matches = re.findall(pressure_pattern, text, re.IGNORECASE) + if pressure_matches: + specs["pressure_range"] = [f"{val} {unit}" for val, unit in pressure_matches] + + # 온도 범위 추출 + temp_pattern = r'(-?\d+(?:\.\d+)?)\s*°?([CF])' + temp_matches = re.findall(temp_pattern, text) + if temp_matches: + specs["temperature_range"] = [f"{val}°{unit}" for val, unit in temp_matches] + + # 재료 규격 추출 (SA-, ASTM, KS 등) + material_pattern = r'(SA-\d+|ASTM\s+\w+|KS\s+\w+|STS\s*\d+)' + material_matches = re.findall(material_pattern, text, re.IGNORECASE) + if material_matches: + specs["materials"] = material_matches + + return specs + +# 표준/규격 추출 +def extract_standards(text): + standards = [] + + # ASME 관련 + asme_pattern = r'ASME\s+(BPVC|B31\.\d+|PTC|QRO)' + asme_matches = re.findall(asme_pattern, text, re.IGNORECASE) + standards.extend([f"ASME {match}" for match in asme_matches]) + + # KGS 관련 + kgs_pattern = r'KGS\s+(FS\d+|GC\d+|AC\d+)' + kgs_matches = re.findall(kgs_pattern, text, re.IGNORECASE) + standards.extend([f"KGS {match}" for match in kgs_matches]) + + # API 관련 + api_pattern = r'API\s+(\d+[A-Z]*)' + api_matches = re.findall(api_pattern, text, re.IGNORECASE) + standards.extend([f"API {match}" for match in api_matches]) + + return standards +``` + +## 📊 검색 분석 대시보드 + +### 검색 트렌드 분석 +``` +최근 검색어 TOP 10: +1. ASME BPVC (428회) +2. 압력용기 설계 (356회) +3. 현대중공업 (289회) +4. BOG 처리 (234회) +5. KGS FS111 (198회) +6. 산업안전 (187회) +7. LNG 플랜트 (165회) +8. API 510 (142회) +9. 해상플랜트 (128회) +10. 냉동기 효율 (115회) + +검색 조합 패턴: +- 표준 + 기업 (42%) - "ASME + 현대중공업" +- 기술 + 지역 (28%) - "BOG + 한국" +- 분야 + 기간 (30%) - "산업안전 + 최근 1개월" + +분야별 검색 비율: +- 압력용기: 45% +- 플랜트 패키지: 35% +- 산업안전: 20% +``` + +### 개인화 추천 +``` +"관심 분야 기반 추천" +- 최근 검색 기반: "ASME 검색 → KGS 관련 문서 추천" +- 연관 기술 제안: "압력용기 → 재료 시험, 용접 기준" +- 트렌딩 알림: "새로운 안전 규제 발표" +- 업데이트 알림: "구독한 표준의 개정 사항" + +맞춤형 대시보드: +- 관심 기업 동향 (현대중공업, 두산에너빌리티 등) +- 구독 표준 업데이트 (ASME, KGS, API) +- 분야별 최신 논문 (압력용기, 플랜트 안전) +``` + +## 🚀 최적화 전략 + +### 캐싱 계층 +``` +L1: Redis (실시간 검색 결과, 트렌딩 태그) +L2: PostgreSQL (구조화된 메타데이터, 사용자 프로필) +L3: Elasticsearch (전문 검색, 태그 인덱스) +L4: S3/NAS (원본 문서, 논문 PDF) +``` + +### 증분 업데이트 +- **실시간 모니터링**: RSS 피드 5분마다 체크 +- **논문 DB 동기화**: 일일 1회 학술 데이터베이스 스캔 +- **표준 업데이트**: ASME, KGS 등 공식 사이트 주간 모니터링 +- **스마트 처리**: 새 문서만 NLP 태그 처리 +- **통계 재계산**: 일일 태그 빈도 및 트렌드 업데이트 + +### 검색 성능 최적화 +- **사전 계산**: 자주 검색되는 조합 (기업+표준) 캐싱 +- **인덱스 최적화**: 전문 용어 기반 역색인 구축 +- **벡터 검색**: 의미 기반 유사 문서 검색 (BERT 기반) +- **지역별 샤딩**: 한국/미국/일본 등 지역별 데이터 분산 +- **압축 저장**: 메타데이터 압축으로 저장 공간 최적화 + +## 🛠️ 기술 스택 + +### Backend +- **언어**: Python 3.9+ +- **프레임워크**: FastAPI +- **데이터베이스**: PostgreSQL, Elasticsearch +- **캐시**: Redis +- **NLP**: spaCy, Transformers, scikit-learn +- **태스크 큐**: Celery + Redis +- **PDF 처리**: PyPDF2, pdfplumber +- **웹 스크래핑**: BeautifulSoup, Scrapy + +### Frontend +- **프레임워크**: React/Next.js +- **차트**: D3.js/Chart.js (트렌드 차트, 네트워크 그래프, 타임라인) +- **UI**: Material-UI/Tailwind CSS +- **검색**: Algolia InstantSearch (자동완성) + +### 전문 분야 도구 +- **논문 수집**: arXiv API, PubMed API, IEEE Xplore API +- **표준 모니터링**: ASME, KGS, API 웹사이트 크롤러 +- **기술 용어 사전**: 압력용기, 플랜트, 안전 전문 용어 DB +- **데이터 분석**: 기술 동향 분석, 키워드 트렌드 추적 + +### Infrastructure +- **컨테이너**: Docker, Docker Compose +- **모니터링**: Prometheus, Grafana +- **로그**: ELK Stack +- **배포**: GitHub Actions +- **스토리지**: MinIO (S3 호환) - 논문 PDF 저장 + +## 📋 설치 및 실행 + +### 맥미니 설치 가이드 + +#### 1. 요구사항 +```bash +# macOS 12.0+ (Monterey 이상 권장) +# Homebrew 패키지 매니저 +# Python 3.9+ +# Node.js 16+ +# Docker Desktop for Mac +``` + +#### 2. 개발 환경 설정 +```bash +# Homebrew 설치 (없는 경우) +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + +# 필수 도구 설치 +brew install python@3.11 node@18 postgresql redis +brew install --cask docker + +# Python 가상환경 설정 +python3 -m venv venv +source venv/bin/activate + +# 프로젝트 클론 +git clone https://github.com/your-repo/industrial-info-system.git +cd industrial-info-system +``` + +#### 3. 로컬 개발 설치 (권장) +```bash +# 환경 변수 설정 +cp .env.example .env +# .env 파일 편집 (DB 연결 정보 등) + +# Python 의존성 설치 +pip install -r requirements.txt + +# Node.js 의존성 설치 (프론트엔드) +cd frontend +npm install +cd .. + +# 로컬 데이터베이스 설정 +brew services start postgresql +brew services start redis +createdb industrial_info + +# 데이터베이스 마이그레이션 +python manage.py migrate + +# Elasticsearch 설치 및 실행 (선택사항) +brew install elasticsearch +brew services start elasticsearch + +# 개발 서버 실행 +python manage.py runserver # 백엔드 (8000 포트) +cd frontend && npm run dev # 프론트엔드 (3000 포트) +``` + +#### 4. Docker 기반 설치 (프로덕션) +```bash +# Docker Desktop 실행 확인 +docker --version +docker-compose --version + +# 환경 설정 +cp .env.example .env +# .env 파일에서 Docker 환경에 맞게 수정 + +# Docker 컨테이너 빌드 및 실행 +docker-compose up --build -d + +# 데이터베이스 초기화 +docker-compose exec web python manage.py migrate +docker-compose exec web python manage.py createsuperuser + +# 로그 확인 +docker-compose logs -f +``` + +#### 5. 맥미니 최적화 설정 +```bash +# 메모리 사용량 최적화 (8GB 모델용) +export ELASTICSEARCH_JAVA_OPTS="-Xms512m -Xmx1g" +export REDIS_MAXMEMORY="256mb" + +# SSD 수명 보호를 위한 로그 설정 +# docker-compose.yml에서 로그 로테이션 설정 +logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +# 백그라운드 서비스 자동 시작 설정 +brew services start postgresql +brew services start redis +``` + +#### 6. 성능 모니터링 +```bash +# 시스템 리소스 모니터링 +htop # brew install htop +docker stats # Docker 컨테이너 리소스 사용량 + +# 애플리케이션 로그 모니터링 +tail -f logs/app.log +docker-compose logs -f web +``` + +### API 엔드포인트 +``` +# 검색 관련 +GET /api/search/documents # 통합 문서 검색 +GET /api/search/standards # 표준/규격 검색 +GET /api/search/companies # 기업별 기술 동향 +GET /api/search/suggest # 검색어 자동완성 + +# 태그 및 분석 +GET /api/tags/trending # 트렌딩 기술 태그 +GET /api/tags/network # 연관 기술 네트워크 +GET /api/analytics/dashboard # 기술 트렌드 대시보드 +GET /api/analytics/timeline # 기술 발전 타임라인 + +# 데이터 수집 +POST /api/collect/rss # RSS 피드 수집 +POST /api/collect/papers # 논문 데이터베이스 동기화 +POST /api/collect/standards # 표준 업데이트 확인 + +# 전문 분야별 +GET /api/safety/incidents # 산업안전 사고 동향 +GET /api/plant/equipment # 플랜트 장비 기술 동향 +GET /api/pressure/vessels # 압력용기 기술 동향 +``` + +## 📈 로드맵 + +### Phase 1: 기본 인프라 구축 (현재) +- [x] 다중 소스 RSS 수집 시스템 +- [x] 전문 분야 NLP 태그 추출 파이프라인 +- [x] Elasticsearch 기반 검색 API +- [ ] 논문 데이터베이스 연동 (PubMed, IEEE) +- [ ] 표준 기관 웹사이트 모니터링 + +### Phase 2: 전문 기능 개발 (진행 중) +- [ ] 웹 인터페이스 (React 기반) +- [ ] 기술 트렌드 대시보드 시각화 +- [ ] 연관 기술 네트워크 그래프 +- [ ] 실시간 표준 업데이트 알림 +- [ ] 압력용기 기술 사양 파서 + +### Phase 3: 고도화 (계획) +- [ ] 개인화 추천 시스템 +- [ ] 모바일 앱 (React Native) +- [ ] 다국어 지원 (한/영/일) +- [ ] AI 기반 기술 동향 예측 +- [ ] 기업별 기술 경쟁력 분석 + +### Phase 4: 확장 (미래) +- [ ] 특허 정보 연동 +- [ ] 기술 이전 매칭 플랫폼 +- [ ] 산업 안전 예측 모델 +- [ ] 글로벌 플랜트 프로젝트 추적 + +## 🤝 기여하기 + +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + +## 📄 라이선스 + +이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 `LICENSE` 파일을 참조하세요. + +## 📞 연락처 + +프로젝트 링크: [https://github.com/your-repo/industrial-info-system](https://github.com/your-repo/industrial-info-system) + +--- + +**산업 전문 정보 수집 시스템**으로 더 스마트한 기술 정보 검색을 경험해보세요! 🏭🚀 + +### 🎯 특화 분야 +- **산업안전**: 사고 예방과 안전 규제 동향 +- **플랜트 패키지**: 중공업 기술과 장비 트렌드 +- **압력용기**: 설계 기준과 표준 업데이트 + +법적 문제 없이 공개된 정보만을 활용하여 전문가들에게 필요한 기술 정보를 제공합니다.