임도 구조물 전체(구조물군 B~G)를 수동 배치할 수 있도록 백엔드 기반을 만든다. 타입 정의를 코드가 아닌 데이터(JSON 레지스트리)로 두어, 구조물 목록이 바뀌어도 코드를 고치지 않고 화면 폼까지 따라오게 했다. - B05_Profile_Structure_Types.json: 타입 레지스트리 정본 (B~G 32종 + 호환 4종). 배치형태(point/interval/site)·옵션 스키마·마크 스타일·drawing_views 메타 포함. - B05_Profile_Structures_Schema.py: 타입·인스턴스 Pydantic 모델. 배치형태별 위치 필드 배타 검증, side·offset_m·placement_source·status·revision. - B05_Profile_Structures_Repository.py: structures.json 단일 정본 읽기·쓰기. atomic_write_json 재사용, base_revision 불일치 시 충돌 예외, 설계 영향 변경만 후속 단계를 무효화하도록 판정하는 지문 비교. - B05_Profile_Structures_Migration.py: 기존 비정규 측점 이관. 배관은 pipe_points.json 정본이라 제외, 기성막이→기슭막이, 대피로→대피소 통합, 나머지는 이름을 살려 기타. 같은 입력이면 같은 결과. - B05_Profile_Structures_Router.py: GET /structure-types, 구조물 목록 조회·저장. 판번호 충돌 409, 미등록·타 정본 관리 타입 400, 저장 후 B06 이후 STALE 전파. 테스트 45건(tmp/tests) 통과. 기존 배관·배수유역·종단 편집 코드는 건드리지 않았다. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
60 lines
977 B
Plaintext
60 lines
977 B
Plaintext
affine==2.4.0
|
|
aiomysql==0.2.0
|
|
annotated-types==0.7.0
|
|
anyio==3.7.1
|
|
attrs==26.1.0
|
|
certifi==2026.6.17
|
|
click==8.4.2
|
|
click-plugins==1.1.1.2
|
|
cligj==0.7.2
|
|
colorama==0.4.6
|
|
et_xmlfile==2.0.0
|
|
fastapi==0.104.1
|
|
bcrypt>=4.1,<5
|
|
email-validator>=2.1,<3
|
|
fiona==1.10.1
|
|
geopandas==1.1.4
|
|
h11==0.16.0
|
|
idna==3.18
|
|
ImageIO==2.37.3
|
|
Jinja2==3.1.2
|
|
laspy==2.7.0
|
|
mapbox-vector-tile>=2.0.1
|
|
lazy-loader==0.5
|
|
MarkupSafe==3.0.3
|
|
networkx==3.6.1
|
|
numpy==2.5.0
|
|
openpyxl==3.1.2
|
|
packaging==26.2
|
|
pandas==3.0.3
|
|
pillow==12.3.0
|
|
psutil>=6.1,<7
|
|
pydantic==2.5.0
|
|
pydantic_core==2.14.1
|
|
PyMySQL==1.2.0
|
|
pyparsing==3.3.2
|
|
pyproj==3.7.2
|
|
pyogrio==0.13.0
|
|
python-dateutil==2.9.0.post0
|
|
python-dotenv==1.0.0
|
|
python-multipart==0.0.6
|
|
rasterio==1.5.0
|
|
ruff>=0.12,<1
|
|
scikit-image==0.26.0
|
|
scipy==1.18.0
|
|
setuptools==83.0.0
|
|
shapely==2.1.2
|
|
six==1.17.0
|
|
sniffio==1.3.1
|
|
snuggs==1.4.7
|
|
starlette==0.27.0
|
|
tifffile==2024.8.28
|
|
trimesh==4.12.2
|
|
typing_extensions==4.16.0
|
|
tzdata==2026.2
|
|
uvicorn==0.24.0
|
|
wheel==0.47.0
|
|
whitebox==2.3.6
|
|
pytest>=8
|
|
httpx<0.28
|