Hyungi Ahn 64b8501afa Initial commit: 산업 전문 정보 수집 시스템 README
- 산업안전, 플랜트 패키지, 압력용기 3개 분야 특화
- 태그 기반 정보 구조 및 검색 시스템 설계
- 맥미니 최적화 설치 가이드 포함
- 법적 준수를 위한 공개 정보원만 활용
2025-09-14 12:09:40 +09:00

산업 전문 정보 수집 시스템

🏭 프로젝트 개요

산업안전, 플랜트 패키지, 압력용기 분야의 전문 정보를 수집하고 분석하는 태그 기반 정보 시스템입니다. 법적 문제 없이 공개된 정보원에서 메타데이터와 태그를 중심으로 한 스마트 검색 서비스를 제공합니다.

🎯 주요 특징

  • 전문 분야 특화: 산업안전, 플랜트 패키지, 압력용기 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 피드만 활용
  • 메타데이터 중심 수집 (제목, 요약, 태그)
  • 저작권 표시 및 원문 링크 제공
  • 전문 복사 금지
  • 페이월 우회 금지

🏷️ 태그 기반 정보 구조

다층 태그 시스템

{
  "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'

검색 결과 랭킹

관련도 점수 계산

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 스키마

{
  "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}
    }
  }
}

태그 추출 모듈

# 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. 요구사항

# macOS 12.0+ (Monterey 이상 권장)
# Homebrew 패키지 매니저
# Python 3.9+
# Node.js 16+
# Docker Desktop for Mac

2. 개발 환경 설정

# 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. 로컬 개발 설치 (권장)

# 환경 변수 설정
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 기반 설치 (프로덕션)

# 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. 맥미니 최적화 설정

# 메모리 사용량 최적화 (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. 성능 모니터링

# 시스템 리소스 모니터링
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: 기본 인프라 구축 (현재)

  • 다중 소스 RSS 수집 시스템
  • 전문 분야 NLP 태그 추출 파이프라인
  • 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


산업 전문 정보 수집 시스템으로 더 스마트한 기술 정보 검색을 경험해보세요! 🏭🚀

🎯 특화 분야

  • 산업안전: 사고 예방과 안전 규제 동향
  • 플랜트 패키지: 중공업 기술과 장비 트렌드
  • 압력용기: 설계 기준과 표준 업데이트

법적 문제 없이 공개된 정보만을 활용하여 전문가들에게 필요한 기술 정보를 제공합니다.

Description
No description provided
Readme 60 KiB
Languages
Markdown 100%