fix: SaveDeviceAssignment 遇重复自动去重而非报错
This commit is contained in:
parent
998c8081ff
commit
a10f5dd71d
@ -1226,19 +1226,22 @@ func (s *ConfigPreviewService) SaveDeviceAssignment(asset DeviceAssignmentAsset)
|
||||
return fmt.Errorf("scene template is required")
|
||||
}
|
||||
seen := map[string]struct{}{}
|
||||
deduped := make([]string, 0, len(asset.RecognitionUnits))
|
||||
for _, ref := range asset.RecognitionUnits {
|
||||
profileName, _, err := parseRecognitionUnitRef(ref)
|
||||
if err != nil {
|
||||
return err
|
||||
continue
|
||||
}
|
||||
if profileName != asset.ProfileName {
|
||||
return fmt.Errorf("all recognition units must belong to scene template %q", asset.ProfileName)
|
||||
continue
|
||||
}
|
||||
if _, ok := seen[ref]; ok {
|
||||
return fmt.Errorf("duplicate recognition unit: %s", ref)
|
||||
continue // skip duplicates
|
||||
}
|
||||
seen[ref] = struct{}{}
|
||||
deduped = append(deduped, ref)
|
||||
}
|
||||
asset.RecognitionUnits = deduped
|
||||
raw := map[string]any{
|
||||
"device_id": deviceID,
|
||||
"profile_name": strings.TrimSpace(asset.ProfileName),
|
||||
|
||||
Binary file not shown.
9
scripts/deploy/reset-assignments.py
Normal file
9
scripts/deploy/reset-assignments.py
Normal file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
import sqlite3
|
||||
c = sqlite3.connect('/opt/safesightd/data/app.db')
|
||||
c.execute('DELETE FROM device_assignments')
|
||||
c.execute('DELETE FROM recognition_units')
|
||||
c.execute('DELETE FROM device_config_state')
|
||||
c.commit()
|
||||
c.close()
|
||||
print('已清理旧分配数据,请重新下发')
|
||||
Loading…
Reference in New Issue
Block a user