3.7 KiB
3.7 KiB
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,cost를base_duration,base_cost로 변경 - [ ] 기본 분석 시나리오를 위한
Scenario노드 생성 (예:id: 'what-if-1', description: 'TBM 지연 가정') - [ ]
MODIFIES관계 생성: ‘what-if-1’ 시나리오가 특정Job의duration을 변경하도록 설정
- [ ]
단계 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) - [ ] 핵심 로직:
- 모든
Job노드를 가져옴 $scenario_id에 해당하는Scenario와 연결된MODIFIES관계를 찾음MODIFIES관계가 있는Job은 변경된 속성(예:new_duration)을effective_duration으로 사용MODIFIES관계가 없는Job은base_duration을effective_duration으로 사용- 계산된
effective_duration의 합계를 기준으로 Critical Path 분석
- 모든
- [ ] 시나리오 ID를 파라미터로 받도록 작성
(
- [ ] (쿼리 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.cypher로 ’what-if-2’를 분석하여 결과가 예상대로 나오는지 확인
단계 6: 데이터 무결성 및 검증 (연구)
- [ ] 데이터 임포트 시 순환 관계(Cycle) 발생을 방지하기 위한 검증 로직
연구
- [ ] 방법 1: 애플리케이션 레이어에서 데이터 입력/수정 시 검증
- [ ] 방법 2: Memgraph의 제약(Constraint) 또는 트리거(Trigger) 기능 활용 가능성 조사
- [ ] 방법 3: 주기적으로 순환을 탐지하는 Cypher 쿼리 스크립트 작성 및 실행