Подсказка external_id из уже увиденных устройств при добавлении
Поле External ID при создании/изменении устройства теперь input+datalist: можно вписать значение вручную (как раньше) или выбрать из подсказок — идентификаторы устройств, от которых device-control-service уже получал MQTT-телеметрию/ack (Redis-множество devices:known), но которые ещё не зарегистрированы в Postgres. Уже зарегистрированные id из списка подсказок исключаются. DeviceShadow::knownExternalIds() — новый read-метод (SMEMBERS devices:known), зеркалит то же множество, что Go-сервисы уже читают/ пишут для health-check/online-детекции.
This commit is contained in:
@@ -54,4 +54,18 @@ class DeviceShadow
|
||||
|
||||
return array_combine($externalIds, array_map(fn ($v) => $v ?: 'unknown', $values));
|
||||
}
|
||||
|
||||
/**
|
||||
* external_id of every device device-control-service has ever heard
|
||||
* from over MQTT (`devices:known`, a Redis Set it maintains) — includes
|
||||
* devices that sent telemetry/ack before anyone registered them in
|
||||
* Postgres. Used to suggest an external_id when adding a device instead
|
||||
* of requiring it to be typed exactly from memory.
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
public function knownExternalIds(): array
|
||||
{
|
||||
return Redis::smembers('devices:known');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user