diff --git a/README.md b/README.md index fdcbdbf..bae012c 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # GNSS Backend (FastAPI + WebSocket) ## Установка -- Убедитесь, что установлен Python 3.11+ и Poetry. +- Убедитесь, что установлен Python 3.13+ и Poetry. - Выполните `poetry install` (ставит зависимости и проект как пакет `gnss`). ## Запуск - `poetry run uvicorn gnss.main:app --host 0.0.0.0 --port 8000` - Тайлы ожидаются по пути `gnss/tiles/{zoom}/{x}/{y}.png` (можно положить заглушку `placeholder.png` в эту же директорию). -- API для нарезки: `POST /tiles/slice` с JSON `{ "source": "/path/input.tif", "destination": "/path/to/tiles", "min_zoom": 10, "max_zoom": 16 }`. +- Полноценное API всего проекта можно изучить при переходе по адресу `localhost:8000/docs` или `localhost:8000/redoc` ## Нарезка тайлов (GDAL) - Требуется установленный `gdal2tiles` (например, пакет `gdal-bin` в apt). diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index c015027..f307732 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -33,6 +33,12 @@ importers: '@tauri-apps/cli': specifier: ^2 version: 2.9.6 + '@types/leaflet': + specifier: ^1.9.12 + version: 1.9.21 + '@types/leaflet.markercluster': + specifier: ^1.5.2 + version: 1.5.6 '@types/react': specifier: ^19.1.8 version: 19.2.7 @@ -521,6 +527,15 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/leaflet.markercluster@1.5.6': + resolution: {integrity: sha512-I7hZjO2+isVXGYWzKxBp8PsCzAYCJBc29qBdFpquOCkS7zFDqUsUvkEOyQHedsk/Cy5tocQzf+Ndorm5W9YKTQ==} + + '@types/leaflet@1.9.21': + resolution: {integrity: sha512-TbAd9DaPGSnzp6QvtYngntMZgcRk+igFELwR2N99XZn7RXUdKgsXMR+28bUO0rPsWp8MIu/f47luLIQuSLYv/w==} + '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: @@ -1092,6 +1107,16 @@ snapshots: '@types/estree@1.0.8': {} + '@types/geojson@7946.0.16': {} + + '@types/leaflet.markercluster@1.5.6': + dependencies: + '@types/leaflet': 1.9.21 + + '@types/leaflet@1.9.21': + dependencies: + '@types/geojson': 7946.0.16 + '@types/react-dom@19.2.3(@types/react@19.2.7)': dependencies: '@types/react': 19.2.7 diff --git a/gnss/__pycache__/config.cpython-313.pyc b/gnss/__pycache__/config.cpython-313.pyc index 8d8c895..2d3cc44 100644 Binary files a/gnss/__pycache__/config.cpython-313.pyc and b/gnss/__pycache__/config.cpython-313.pyc differ diff --git a/poetry.lock b/poetry.lock index 02409d0..f4df004 100644 --- a/poetry.lock +++ b/poetry.lock @@ -34,14 +34,14 @@ trio = ["trio (>=0.31.0) ; python_version < \"3.10\"", "trio (>=0.32.0) ; python [[package]] name = "click" -version = "8.1.8" +version = "8.3.1" description = "Composable command line interface toolkit" optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, + {file = "click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6"}, + {file = "click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"}, ] [package.dependencies] @@ -67,7 +67,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["main"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"}, {file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"}, @@ -407,6 +407,18 @@ files = [ [package.extras] cli = ["click (>=5.0)"] +[[package]] +name = "python-multipart" +version = "0.0.21" +description = "A streaming multipart parser for Python" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "python_multipart-0.0.21-py3-none-any.whl", hash = "sha256:cf7a6713e01c87aa35387f4774e812c4361150938d20d232800f75ffcf266090"}, + {file = "python_multipart-0.0.21.tar.gz", hash = "sha256:7137ebd4d3bbf70ea1622998f902b97a29434a9e8dc40eb203bbcf7c2a2cba92"}, +] + [[package]] name = "pyyaml" version = "6.0.3" @@ -516,7 +528,6 @@ files = [ [package.dependencies] anyio = ">=3.6.2,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] full = ["httpx (>=0.27.0,<0.29.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.18)", "pyyaml"] @@ -843,5 +854,5 @@ files = [ [metadata] lock-version = "2.1" -python-versions = ">=3.9,<4.0" -content-hash = "c4ff58d446b5029eec92e43ce423659f61acd50c886dc19184cadf9bafa20b8d" +python-versions = ">=3.10,<4.0" +content-hash = "e53bf274edebed269e1fb4c0256e72a39b706ffe052789242dea5573e9a6d21b" diff --git a/pyproject.toml b/pyproject.toml index 79e34b8..8853679 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,12 +7,13 @@ readme = "README.md" packages = [{include = "gnss"}] [tool.poetry.dependencies] -python = ">=3.9,<4.0" +python = ">=3.10,<4.0" fastapi = ">=0.115.0,<0.116.0" pyserial = ">=3.5,<4.0" pynmea2 = ">=1.19.0,<2.0.0" python-dateutil = ">=2.9.0.post0,<3.0.0" uvicorn = {extras = ["standard"], version = ">=0.30.0,<0.31.0"} +python-multipart = ">=0.0.21,<0.0.22" gdal2tiles = "^0.1.9" [build-system]