Sobes.tech
Назад к вопросам
Middle+
8

Системный дизайн: спроектируй систему автоматизации парковки

Компании, где спрашивали
МВидео/эльдорадо

Ответ от нейросети

sobes.tech AI

Для системы автоматизации парковки нужно учесть несколько ключевых компонентов:

  1. Вход и выход автомобилей:

    • Сенсоры или камеры для распознавания номеров.
    • Шлагбаумы, управляемые системой.
  2. Управление местами:

    • База данных с информацией о занятости парковочных мест.
    • Логика распределения свободных мест.
  3. Оплата:

    • Интеграция с платежными системами.
    • Возможность оплаты через мобильное приложение или терминалы.
  4. Мониторинг и администрирование:

    • Панель для операторов с информацией о текущем состоянии парковки.
    • Логи и отчёты.
  5. Интерфейсы:

    • Мобильное приложение или веб-интерфейс для пользователей.

Пример архитектуры:

  • Микросервис для распознавания номеров и контроля доступа.
  • Сервис управления парковочными местами с базой данных.
  • Платёжный сервис.
  • API шлюз для взаимодействия с клиентами.

Пример на Go: простой обработчик бронирования места

package main

import (
    "net/http"
    "sync"
    "encoding/json"
)

type ParkingLot struct {
    mu sync.Mutex
    spots map[int]bool // true если занято
}

func (p *ParkingLot) BookSpot(w http.ResponseWriter, r *http.Request) {
    p.mu.Lock()
    defer p.mu.Unlock()

    for id, occupied := range p.spots {
        if !occupied {
            p.spots[id] = true
            json.NewEncoder(w).Encode(map[string]int{"spot_id": id})
            return
        }
    }
    http.Error(w, "No spots available", http.StatusConflict)
}

func main() {
    lot := &ParkingLot{spots: make(map[int]bool)}
    for i := 1; i <= 100; i++ {
        lot.spots[i] = false
    }

    http.HandleFunc("/book", lot.BookSpot)
    http.ListenAndServe(":8080", nil)
}

Такой подход позволит постепенно расширять систему, добавляя новые функции и интеграции.