caainp-backend / tests /navigation_test.py
windopper
update dependencies in requirements.txt and uv.lock for caainp-cvm and torch, modify .vercelignore to exclude uv-related files, and refactor server.py by removing unused uuid import
a78c144
from pathlib import Path
import sys
# ํ˜„์žฌ ํŒŒ์ผ ์œ„์น˜: .../nav/caanip-backend/nav_bridge.py
THIS_DIR = Path(__file__).resolve().parent.parent
BACKEND_ROOT = THIS_DIR # .../caanip-backend
from caainp_csm.graph_4f import Graph4F
from caainp_csm.plan_csm import (Constraints, Step, PlanState, create_simple_plan, update_state_with_node)
from caainp_cvm.nav_engine import init_plan, compute_nav_output, _get_csv_path
CSV_PATH = _get_csv_path()
def quick_test():
"""
backend ๋ ˆํฌ์—์„œ CSM + CVM + nav_engine์ด ์ œ๋Œ€๋กœ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ํ™•์ธ์šฉ.
์‹ค์ œ FastAPI ์ฝ”๋“œ์—์„œ๋Š” init_plan / compute_nav_output๋งŒ ๊ฐ€์ ธ๋‹ค ์“ฐ๋ฉด ๋จ.
"""
plan, _ = init_plan(
user_text="401์—์„œ 410ํ˜ธ๊นŒ์ง€ ์ด๋™",
start_room=401,
)
node_images_dir = BACKEND_ROOT / "images"
img_seq = ["401(1).jpg", "403(3).jpg", "410(1).jpg"]
prev_node = None
for img_name in img_seq:
image_path = node_images_dir / img_name
out = compute_nav_output(
image_path=str(image_path),
plan=plan, # PlanState ๊ฐ์ฒด (์šฐ๋ฆฌ๊ฐ€ nav_engine์—์„œ ์“ฐ๋Š” ๋ฒ„์ „ ๊ธฐ์ค€)
prev_node=prev_node,
csv_path=str(CSV_PATH),
)
nav_output = out["nav_output"]
plan = out["plan"] # ์—…๋ฐ์ดํŠธ๋œ PlanState ๊ณ„์† ์œ ์ง€
prev_node = nav_output["current_node"]
from pprint import pprint
print(f"\n[IMAGE] {img_name}")
pprint(nav_output)
if __name__ == "__main__":
quick_test()