76 lines
2.7 KiB
Python
76 lines
2.7 KiB
Python
"""MDX 03을 기존 파이프라인 (Phase Q) 또는 Phase Z-2 MVP-1 로 실행.
|
|
|
|
기본 (no flag) : 기존 Phase Q 파이프라인 — async, Kei API 사용
|
|
- Stage 0: mdx_normalizer
|
|
- Stage 1A/1B: kei_client (분류 + 정제)
|
|
- Stage 1.5a: space_allocator
|
|
- Stage 1.7: block_reference
|
|
- 출력 : data/runs/{run_id}/final.html
|
|
|
|
`--phase-z2` flag : Phase Z-2 MVP-1 — sync, AI 미사용, 결정론적
|
|
- matched_zone only (V4 use_as_is) — 그 외 abort + error.json
|
|
- 출력 : data/runs/{run_id}/phase_z2/final.html
|
|
- 상세 : src/phase_z2_pipeline.py + docs/architecture/PHASE-Z-CATALOG-RUNTIME-DESIGN.md § 16
|
|
"""
|
|
import argparse
|
|
import asyncio
|
|
import sys
|
|
import time
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
|
|
|
|
DEFAULT_MDX = Path("samples/mdx/03. DX 시행을 위한 필수 요건 및 혁신 방안.mdx")
|
|
|
|
|
|
async def run_phase_q(mdx_path: Path):
|
|
"""기존 Phase Q 파이프라인 실행."""
|
|
from src.pipeline import generate_slide
|
|
|
|
content = mdx_path.read_text(encoding="utf-8")
|
|
print(f"[Phase Q] MDX: {mdx_path.name}")
|
|
print(f" 내용 길이: {len(content)}자\n")
|
|
|
|
start = time.time()
|
|
async for event in generate_slide(content, base_path=str(mdx_path.parent)):
|
|
ev_type = event.get("event", "")
|
|
data = event.get("data", "")
|
|
if ev_type == "progress":
|
|
print(f" {data}")
|
|
elif ev_type == "result":
|
|
elapsed = time.time() - start
|
|
print(f"\n완료! ({elapsed:.1f}초)")
|
|
if isinstance(data, dict):
|
|
run_id = data.get("run_id", "")
|
|
print(f" run_id: {run_id}")
|
|
print(f" 결과: data/runs/{run_id}/")
|
|
elif ev_type == "error":
|
|
print(f" 에러: {data}", file=sys.stderr)
|
|
|
|
|
|
def run_phase_z2(mdx_path: Path, run_id: str = None):
|
|
"""Phase Z-2 MVP-1 파이프라인 실행 (sync, AI 미사용)."""
|
|
from src.phase_z2_pipeline import run_phase_z2_mvp1
|
|
run_phase_z2_mvp1(mdx_path, run_id)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="MDX 03 pipeline runner.")
|
|
parser.add_argument("--phase-z2", action="store_true",
|
|
help="Phase Z-2 MVP-1 (sync, AI 미사용, matched_zone only).")
|
|
parser.add_argument("--mdx", type=Path, default=DEFAULT_MDX,
|
|
help=f"MDX 파일 경로 (default: {DEFAULT_MDX}).")
|
|
parser.add_argument("--run-id", type=str, default=None,
|
|
help="run_id 오버라이드 (default: timestamp).")
|
|
args = parser.parse_args()
|
|
|
|
if args.phase_z2:
|
|
run_phase_z2(args.mdx, args.run_id)
|
|
else:
|
|
asyncio.run(run_phase_q(args.mdx))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|