Files
memgraph-poc/docs/todo.md
2025-11-04 16:45:03 +09:00

3.7 KiB
Raw Permalink Blame History

PoC 개발 할 일 목록 (To-Do List)

이 문서는 Memgraph 기반 터널 시공 관리 PoC를 위해 수행해야 할 작업들을 순서대로 나열합니다.

단계 1: 환경 설정 및 데이터 모델링 (하이브리드 아키텍처)

  • [x] docker-compose.yml에 데이터 영속성을 위한 볼륨 설정 추가
  • [ ] 데이터 모델 재설계:
    • [ ] Job 노드에 base_duration, base_cost 속성 추가
    • [ ] Scenario 노드 정의 (id, description)
    • [ ] MODIFIES 관계 정의 (Scenario -> Job, 변경될 속성 포함. 예: new_duration)
    • [ ] PRECEDES 관계는 scenario 속성 대신 기본 공정 흐름으로 단일화
  • [ ] Memgraph 서비스 재시작하여 안정적인 환경 확보

단계 2: 샘플 데이터 준비

  • [ ] import_embedded_clean.cypher 스크립트 수정
    • [ ] Job 노드 생성 시 duration, costbase_duration, base_cost로 변경
    • [ ] 기본 분석 시나리오를 위한 Scenario 노드 생성 (예: id: 'what-if-1', description: 'TBM 지연 가정')
    • [ ] MODIFIES 관계 생성: what-if-1 시나리오가 특정 Jobduration을 변경하도록 설정

단계 3: 데이터 가져오기 및 확인

  • [ ] 수정된 import_embedded_clean.cypher 스크립트 실행
  • [ ] 데이터 확인: MATCH (s:Scenario)-[r:MODIFIES]->(j:Job) RETURN s, r, j 쿼리로 변경점 데이터 확인

단계 4: 동적 분석 기능 개발 (쿼리 작성)

  • [ ] (쿼리 1) 동적 Critical Path 분석 쿼리 작성 (dynamic_cp_analysis.cypher)
    • [ ] 시나리오 ID를 파라미터로 받도록 작성 ($scenario_id)
    • [ ] 핵심 로직:
      1. 모든 Job 노드를 가져옴
      2. $scenario_id에 해당하는 Scenario와 연결된 MODIFIES 관계를 찾음
      3. MODIFIES 관계가 있는 Job은 변경된 속성(예: new_duration)을 effective_duration으로 사용
      4. MODIFIES 관계가 없는 Jobbase_durationeffective_duration으로 사용
      5. 계산된 effective_duration의 합계를 기준으로 Critical Path 분석
  • [ ] (쿼리 2) 신규 시나리오(변경점) 생성 쿼리 작성 (create_scenario_delta.cypher)
    • [ ] 신규 시나리오 ID, 설명, 변경할 Job ID, 변경할 속성값을 파라미터로 받음
    • [ ] Scenario 노드를 생성하고 MODIFIES 관계를 설정하는 기능

단계 5: PoC 시나리오 검증

  • [ ] (검증 1) 베이스라인 분석
    • dynamic_cp_analysis.cypher 쿼리에 존재하지 않는 시나리오 ID (예: base)를 넣어 실행 -> 모든 Job이 base_duration을 사용하여 Critical Path 계산 결과 확인
  • [ ] (검증 2) 변경점 시나리오 분석
    • dynamic_cp_analysis.cypher 쿼리에 scenario_id: 'what-if-1'을 넣어 실행
    • 변경된 duration이 적용되어 Critical Path가 다르게 계산되는지 확인
  • [ ] (검증 3) 신규 시나리오 동적 생성 및 분석
    • create_scenario_delta.cypher 쿼리를 이용해 what-if-2 시나리오와 새로운 변경점을 즉석에서 생성
    • dynamic_cp_analysis.cypherwhat-if-2를 분석하여 결과가 예상대로 나오는지 확인

단계 6: 데이터 무결성 및 검증 (연구)

  • [ ] 데이터 임포트 시 순환 관계(Cycle) 발생을 방지하기 위한 검증 로직 연구
    • [ ] 방법 1: 애플리케이션 레이어에서 데이터 입력/수정 시 검증
    • [ ] 방법 2: Memgraph의 제약(Constraint) 또는 트리거(Trigger) 기능 활용 가능성 조사
    • [ ] 방법 3: 주기적으로 순환을 탐지하는 Cypher 쿼리 스크립트 작성 및 실행