Подсказка 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:
2026-08-18 03:10:28 +05:00
parent be1f238f89
commit dd551a0de3
6 changed files with 61 additions and 7 deletions
+14
View File
@@ -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');
}
}