Назад к вопросам
Middle+
8
Системный дизайн: спроектируй систему автоматизации парковки
Компании, где спрашивали
МВидео/эльдорадо
Ответ от нейросети
sobes.tech AI
Для системы автоматизации парковки нужно учесть несколько ключевых компонентов:
-
Вход и выход автомобилей:
- Сенсоры или камеры для распознавания номеров.
- Шлагбаумы, управляемые системой.
-
Управление местами:
- База данных с информацией о занятости парковочных мест.
- Логика распределения свободных мест.
-
Оплата:
- Интеграция с платежными системами.
- Возможность оплаты через мобильное приложение или терминалы.
-
Мониторинг и администрирование:
- Панель для операторов с информацией о текущем состоянии парковки.
- Логи и отчёты.
-
Интерфейсы:
- Мобильное приложение или веб-интерфейс для пользователей.
Пример архитектуры:
- Микросервис для распознавания номеров и контроля доступа.
- Сервис управления парковочными местами с базой данных.
- Платёжный сервис.
- 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)
}
Такой подход позволит постепенно расширять систему, добавляя новые функции и интеграции.