agi-schedule-pipeline-check
파이프라인 위치
- 통합 파이프라인(에이전트) 에서 항상 3번째로 적용되는 스킬이다.
- 순서: 1) agi-schedule-shift → 2) agi-schedule-daily-update → 3) agi-schedule-pipeline-check → 4) weather-go-nogo.
- 모든 요청에 대해 1→2→3→4 가 누락 없이 수행되므로, 본 스킬은 항상 호출된다.
언제 사용
- 모든 파이프라인 작업이 완료된 후 전체 파이프라인을 한 번 점검할 때 (통합 파이프라인 3단계).
- "파이프라인 점검", "전체 점검", "post-check", "마무리 점검" 요청 시.
- 공지·날씨·KPI·일정 시프트·히트맵 갱신 후 최종 검증 시.
작업 범위
- 대상:
AGI TR 1-6 Transportation Master Gantt Chart/files/내 모든 파이프라인 산출물 - 소스 HTML: 파일명 날짜(YYYYMMDD)가 가장 최근인
files/AGI TR SCHEDULE_*.html
대시보드 일관성 (일정 변경 시 필수)
사용자가 일정 변경을 요청하면, 대시보드의 모든 항목에 동일한 날짜가 적용되어야 한다:
| 대시보드 영역 | 포함 항목 | 점검 단계 |
|---|---|---|
| 7 Voyages Overview | voyage-card data-start/end, Load-out/Sail/Load-in/Jack-down, tide-table | G, N |
| Detailed Voyage Schedule | Schedule 테이블 V1~V7 행 날짜, ganttData activities | H |
| Gantt Chart (예: Jan 26 - Mar 25, 2026) | projectStart/projectEnd, ganttData start/end, 차트 제목 | C |
- 물때(N):
tide_to_voyage_overview.py는 항상 실행하여 voyage별 data-start~data-end 구간에 맞는 tide-table을 반영한다.
전체 파이프라인 작업 목록 (점검 시 모두 확인)
다음 단계가 모두 점검 대상임. 누락 없이 순서대로 확인한다.
| 단계 | 구분 | 작업 | 점검 항목 |
|---|---|---|---|
| A | 데이터 | files/agi tr final schedule.json | 일정 시프트 적용 여부, planned_start/finish 일관성, summary.date_range |
| B | 일정 시프트 | files/schedule_shift.py 적용 | JSON·HTML 동기화, pivot 이후만 시프트 |
| C | HTML 소스 | files/AGI TR SCHEDULE_*.html | 최신 날짜 파일 사용, projectStart/projectEnd, ganttData |
| D | 공지란 | Operational Notice 블록 | 날짜가 갱신일(YYYY-MM-DD)과 일치 |
| E | Weather & Marine Risk | Weather Alert 블록 | Last Updated 갱신, 4일치 예보(D~D+3), Mina Zayed·해상 문단 |
| F | KPI Grid | 6개 카드 | KPI 갱신 수행 주체(유일): 본 스킬(3단계)에서 Total Days 재계산 반영, SPMT Set = 1 확인·수정. 2단계(agi-schedule-daily-update)는 KPI를 수정하지 않음. |
| G | Voyage Cards | data-start/end, 표시 텍스트 | TR1~V7 일정과 JSON·ganttData 일치, Load-out/Sail/Load-in/Jack-down 표기 |
| H | ganttData·테이블 | JS activities, Schedule table | start/end YYYY-MM-DD, V1~V7 행 날짜가 JSON과 일치 |
| I | 날씨 파싱 | files/weather/ 최신 날짜 폴더 → files/out/weather_parsed/YYYYMMDD/ | 항상 최신 YYYYMMDD 폴더 파싱 후 JSON 생성 여부 |
| J | WEATHER_DASHBOARD | files/WEATHER_DASHBOARD.py | TARGET_DATE·VOYAGES, 하단 날짜 가로(rotation=0), 레이아웃(height_ratios·bottom) |
| K | 히트맵 PNG | files/out/weather_4day_heatmap.png | 파일 존재, 필요 시 dashboard 복사 |
| L | 이미지 참조 | embed_heatmap_base64.py / replace_img_ref.py | HTML 내 히트맵 img src(파일 또는 Base64) 정상 반영 |
| M | weather-go-nogo 연계 | 스킬 weather-go-nogo | 파싱 JSON(files/out/weather_parsed/...) 존재 시 Go/No-Go 평가 가능 안내; 입력(파고·풍속·한도) 있으면 4단계에서 평가. |
| N | 물때 테이블 | 스킬 water-tide-voyage / tide_to_voyage_overview.py | WATER TIDE.csv 기반 6:00~17:00 상위 3시간대가 각 Voyage Overview table.tide-table에 반영. 항상 실행 (일정 시프트 후 대시보드 일관성 유지). |
점검·수정 체크리스트 (상세)
1) 공지 사항(Operational Notice) 날짜 — D
- 문제: 공지란의 날짜가 갱신일로 변경되지 않음.
- 위치: HTML 내
<!-- Operational Notice -->다음div.weather-alert블록.<strong ...>YYYY-MM-DD</strong>또는 동일 형식. - 점검: 갱신 수행일(또는 사용자 지정 공지일)과 일치하는지 확인.
- 수정: 불일치 시 해당 블록의 날짜를 갱신일(YYYY-MM-DD) 로 교체. 공지 본문은 사용자 제공 시에만 교체, 미제공 시 날짜만 갱신하고 본문은 비움(규칙 유지).
2) SPMT Set — F
- 규칙: 항상 1 (1 set). 고정값.
- 위치: HTML 내 KPI Grid 블록. 6개 카드 중 "SPMT Set" 또는 "🛠️" 라벨 카드.
- 점검: 표시값이
1인지 확인. - 수정:
1이 아니면1로 변경.
3) Total Days — F
- 규칙: 프로젝트 종료일 − (파일 수정 요청일 또는 오늘) 의 일수. 갱신 시마다 요청일/오늘 기준 잔여 일수로 재계산.
- 위치: HTML 내 KPI Grid 블록. "Total Days" 또는 "📅" 라벨 카드. 또한 JS 변수로
totalDays등이 있으면 동일 값으로 맞춤. - 점검: 프로젝트 종료일(예: End Date Mar 23 → 2026-03-23)에서 요청일(또는 오늘)을 뺀 일수와 일치하는지 확인.
- 예: 종료일 2026-03-23, 요청일 2026-01-28 → Total Days = 55 (또는 54, 0-based/1-based 규칙에 따라 일관 유지).
- 수정: 불일치 시 KPI 카드 표시값과 필요 시 JS 내
totalDays(또는 동일 역할 변수)를 위 규칙으로 재계산해 반영.
4) 히트맵(WEATHER_DASHBOARD.py) 하단 날짜·레이아웃 — J
-
문제 1: 히트맵 하단(Daily Operation Status)의 날짜가 가로(rotation=0) 로 표시되어야 함.
-
위치:
files/WEATHER_DASHBOARD.py내ax3.set_xticklabels(..., rotation=..., ha=...)및 관련 서브플롯 설정. -
점검:
rotation=0,ha="center"로 설정되어 있는지 확인. -
수정:
rotation=0,ha="center"로 되어 있지 않으면 수정. -
문제 2: 날짜를 가로로 하면 아래 공간이 남으므로 히트맵 레이아웃 조정이 필요함.
-
위치:
files/WEATHER_DASHBOARD.py내height_ratios,plt.subplots_adjust(left=..., right=..., top=..., bottom=...), 및gs = fig.add_gridspec(...). -
점검:
height_ratios(예:[2.0, 1.0, 0.6])로 하단 Daily Operation 구간 비율이 적절한지,bottom값으로 하단 여백이 과하지 않은지 확인. 가로 날짜 시 여백을 줄이면 히트맵 영역이 더 넓어짐. -
수정: 하단 날짜가 가로일 때 여백이 과하면
bottom값을 줄이거나(예: 0.10 → 0.08),height_ratios의 세 번째 값(0.6)을 조정해 Daily Operation 영역을 줄이고 히트맵 비중을 키움. (레이아웃이 깨지지 않도록 저장 후 PNG 확인 권장.)
5) AC·GH — JSON·HTML 일정 일관성
- 점검:
files/agi tr final schedule.json의 TR1 Load-out 등 핵심 일정과, HTML 내projectStart/projectEnd,ganttData각 row의start/end, voyage-carddata-start/data-end, Schedule 테이블 V1~V7 행 날짜가 동일한 일정을 가리키는지 확인. - 수정: 불일치 시 시프트 규칙(pivot 이후만 +delta)에 맞춰 JSON 또는 HTML 중 한쪽을 기준으로 맞춘 뒤,
files/schedule_shift.py또는 수동으로 나머지 동기화.
6) E — Weather & Marine Risk 블록
- 점검: "Last Updated: DD Mon YYYY" 가 갱신일과 맞는지, 갱신일 기준 4일치(D, D+1, D+2, D+3) 예보 문단이 있는지, Mina Zayed 인근·해상(Marine) 요약이 있는지 확인.
- 수정: 누락/오류 시 스킬
agi-schedule-daily-update절차에 따라 갱신.
7) I~L — 날씨 파싱·히트맵·이미지
- I:
files/weather/YYYYMMDD/에 자료가 있으면files/out/weather_parsed/YYYYMMDD/weather_for_weather_py.json생성 여부 확인. - K:
files/out/weather_4day_heatmap.png존재 여부, 필요 시files/weather_4day_heatmap_dashboard.png복사 여부 확인. - L: Schedule HTML 내 날씨 히트맵 이미지가
src="weather_4day_heatmap_dashboard.png"또는src="data:image/png;base64,..."로 정상 표시되는지 확인. 필요 시embed_heatmap_base64.py또는replace_img_ref.py실행.
8) N — 물때 테이블 (Voyage Overview)
- 규칙:
files/WATER TIDE.csv에서 6:00~17:00 구간만 사용해 voyage별 기간 내 최고 물때 상위 3시간대를 계산하고, 각 Voyage Overview의table.tide-tabletbody에 TIME/HEIGHT 3행으로 반영. - 위치: HTML 내 각
.voyage-card내table.tide-tabletbody. - 실행: 항상
files/폴더에서python tide_to_voyage_overview.py실행. 일정 시프트 후 대시보드(7 Voyages Overview) 일관성 유지를 위해 조건 없이 수행. - 스킬:
water-tide-voyage참조.
실행 순서 (권장) — 모든 파이프라인 확인
- 소스 결정:
files/내AGI TR SCHEDULE_*.html중 파일명 날짜가 가장 최근인 파일 선택. - A·B·C: JSON 일정·시프트 적용·HTML projectStart/End·ganttData 일관성 점검.
- D: 공지란 날짜 → 갱신일로 수정.
- E: Weather & Marine Risk 블록(Last Updated, 4일치, Mina Zayed·해상) 점검·수정.
- F: KPI Grid — Total Days 재계산 반영, SPMT Set = 1 확인·수정.
- G·H: Voyage Cards·Schedule 테이블·ganttData가 JSON과 일치하는지 점검·수정.
- I: (해당일 자료 있으면) weather 파싱 결과 JSON 존재 여부 확인.
- J: WEATHER_DASHBOARD.py — 하단 날짜
rotation=0,ha="center"및height_ratios/subplots_adjust(bottom)확인·수정 후 필요 시python WEATHER_DASHBOARD.py재실행. - K:
files/out/weather_4day_heatmap.png존재, 필요 시 dashboard 복사. - L: HTML 내 히트맵 img 반영 여부 확인, 필요 시
embed_heatmap_base64.py또는replace_img_ref.py실행. - M:
files/out/weather_parsed/YYYYMMDD/weather_for_weather_py.json존재 시, 4단계 스킬weather-go-nogo로 해상 Go/No-Go 평가 가능함을 안내. (파고·풍속·한도값 입력 시 평가.) - N: WATER TIDE.csv 기반 Voyage Overview 물때 테이블 — 항상
python tide_to_voyage_overview.py실행하여 각 voyage의 tide-table에 6~17시 상위 3시간대 반영.
안전 규칙
files/폴더 밖 파일은 수정하지 않는다.- 공지·날씨·KPI 블록 밖의 HTML(간트 데이터, 스크립트, Voyage Cards 등)은 점검 시 참고만 하고, 변경은 규칙에 맞는 범위에서만 한다.
- 히트맵 레이아웃 변경 후에는 생성 PNG를 한 번 확인하는 것이 좋다.
통합
- 통합 파이프라인: 에이전트는 항상 1) agi-schedule-shift → 2) agi-schedule-daily-update → 3) agi-schedule-pipeline-check → 4) weather-go-nogo 순으로 4개 스킬을 적용한다. 본 스킬은 3단계로 항상 호출된다.
- Subagent
/agi-schedule-updater: 모든 요청에 대해 위 파이프라인을 수행한 뒤, 본 스킬로 전체 파이프라인 작업(A~N) 점검·수정 및 4단계(weather-go-nogo) 연계 안내를 한다.
대시보드 출력 형식 (필수)
점검·수정 결과는 agentskillguide/DASHBOARD_OUTPUT_SCHEMA.md와 동일하게 대시보드에 출력되어야 함.
- KPI Grid: Total Days 재계산, SPMT Set = 1 (F)
- Voyage Cards: data-start/end, Load-out/Sail/Load-in/Jack-down (G)
- ganttData·Schedule 테이블: start/end JSON과 일치 (H)
- Tide-table(N): water-tide-voyage 형식 3행
- 검증 체크리스트: DASHBOARD_OUTPUT_SCHEMA §8 참조
