feat: geo-device-service, Weather по геопозиции, Discover вкладка GooSeek
Geo Device Service: - Новый сервис определения геопозиции, устройства, браузера - geoip-lite, ua-parser-js, CORS - GET/POST /api/context Frontend: - /api/geo-context — прокси к geo-device, fallback при недоступности - geoDevice.ts — fetchContextWithClient, fetchContextWithGeolocation - Weather: геопозиция через geo-device + GeoJS + ipwhois fallback - Weather API: поддержка city (геокодинг Open-Meteo) - Discover: вкладка GooSeek по умолчанию Документация: - MICROSERVICES.md — секция 3.9 Geo Device Service Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
57
apps/geo-device-service/README.md
Normal file
57
apps/geo-device-service/README.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# Geo Device Service
|
||||
|
||||
Сервис определения геопозиции, устройства и браузера пользователя.
|
||||
|
||||
## Возможности
|
||||
|
||||
- **Геолокация по IP** — offline lookup через geoip-lite (MaxMind GeoLite)
|
||||
- **Device** — тип (desktop/mobile/tablet), vendor, model
|
||||
- **Browser** — имя, версия
|
||||
- **OS** — операционная система и версия
|
||||
- **Client context** — при POST с body: screen size, timezone, language, hardwareConcurrency, deviceMemory, doNotTrack
|
||||
|
||||
## API
|
||||
|
||||
### GET /api/context
|
||||
|
||||
Возвращает контекст на основе IP и заголовков запроса.
|
||||
|
||||
### POST /api/context
|
||||
|
||||
Принимает дополнительные данные от клиента (geo из Geolocation API, размер экрана, timezone и т.д.) и объединяет с серверными данными.
|
||||
|
||||
**Body:**
|
||||
```json
|
||||
{
|
||||
"geo": {
|
||||
"latitude": 55.7558,
|
||||
"longitude": 37.6173,
|
||||
"city": "Moscow",
|
||||
"country": "Russia",
|
||||
"timezone": "Europe/Moscow"
|
||||
},
|
||||
"client": {
|
||||
"screenWidth": 1920,
|
||||
"screenHeight": 1080,
|
||||
"viewportWidth": 1920,
|
||||
"viewportHeight": 969,
|
||||
"devicePixelRatio": 2,
|
||||
"timezone": "Europe/Moscow",
|
||||
"language": "en",
|
||||
"languages": ["en", "ru"],
|
||||
"platform": "MacIntel",
|
||||
"hardwareConcurrency": 8,
|
||||
"deviceMemory": 8,
|
||||
"cookieEnabled": true,
|
||||
"doNotTrack": null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
# или
|
||||
PORT=4002 npm start
|
||||
```
|
||||
Reference in New Issue
Block a user