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