fix(B05): 경유점 번호가 비면 경로 탐색이 터지던 문제

화면에서 막 찍은 경유점은 order가 아직 없어 None으로 온다. 정렬 키가
x.get("order", 0)이라 키가 있고 값만 None인 경우를 걸러내지 못해
TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'로
경로 탐색 전체가 실패했다(서버 로그 확인, project_id=fc86f247).

None을 0으로 눕힌다 — 파이썬 정렬이 안정적이라 번호가 없는 점들은 받은 순서를
유지한다. 같은 패턴을 쓰던 능선/계곡 탐색기(RidgeValley)도 함께 고쳤다.

ruff format·check 통과.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-08 16:51:30 +09:00
co-authored by Claude Opus 5
parent 960dca8360
commit 4b1f922ce3
2 changed files with 5 additions and 2 deletions
@@ -529,7 +529,8 @@ def solve_ridge_valley_route(
bp = points_data.get("bp")
ep = points_data.get("ep")
cp_list = sorted(points_data.get("cp", []), key=lambda x: x.get("order", 0))
# 번호가 비어 오는 경유점 처리는 `solve_optimal_route`와 같다 — None 정렬로 터지지 않게.
cp_list = sorted(points_data.get("cp", []), key=lambda item: item.get("order") or 0)
ap_list = points_data.get("ap", [])
fp_list = points_data.get("fp", [])
if not bp or not ep:
+3 -1
View File
@@ -300,7 +300,9 @@ def solve_optimal_route(
bp = points_data.get("bp")
ep = points_data.get("ep")
cp_list = sorted(points_data.get("cp", []), key=lambda x: x.get("order", 0))
# 경유점 번호는 비어 올 수 있다(화면에서 막 찍은 점은 아직 번호가 없다). `None`끼리는
# 비교가 안 돼 정렬이 터지므로 0으로 눕힌다 — 정렬이 안정적이라 받은 순서가 유지된다.
cp_list = sorted(points_data.get("cp", []), key=lambda item: item.get("order") or 0)
ap_list = points_data.get("ap", [])
fp_list = points_data.get("fp", [])