feat: extract floor/building/room/trailer from asset names

Adds scripts/extract_asset_location_data.py which:
- Extracts floor, building_number, room, trailer_number, building_name from names
- Detects and removes duplicated name segments
- Updates both assets (1848) and locations (364) tables
- Dry-run mode by default, --apply to write changes
This commit is contained in:
2026-05-23 19:41:55 -04:00
parent a305766d65
commit 13bf61d856
4 changed files with 447 additions and 6 deletions
+9 -6
View File
@@ -925,7 +925,7 @@
<div class="card-title">Create New Asset</div>
<input id="newMachineId" type="text" class="input-field" placeholder="Machine ID" readonly>
<input id="newName" type="text" class="input-field" placeholder="Asset name *" required>
<textarea id="newDesc" class="input-field" placeholder="Description (optional)" rows="2"></textarea>
<textarea id="newDesc" class="input-field" placeholder="Telemetry ID (optional)" rows="2"></textarea>
<div class="form-row" style="margin-bottom:8px;">
<select id="newCatSelect" class="input-field">
<option value="">Category</option>
@@ -1003,7 +1003,7 @@
<input id="manMachineId" type="text" class="input-field" placeholder="Machine ID *" required>
<input id="manSerialNumber" type="text" class="input-field" placeholder="Serial Number">
<input id="manName" type="text" class="input-field" placeholder="Asset Name *" required>
<textarea id="manDescription" class="input-field" placeholder="Description" rows="2"></textarea>
<textarea id="manDescription" class="input-field" placeholder="Telemetry ID" rows="2"></textarea>
<div class="form-row" style="margin-bottom:8px;">
<select id="manCatSelect" class="input-field">
@@ -1129,7 +1129,7 @@
<!-- ── List View ────────────────────────────────────────────────────── -->
<div id="assetsListView">
<div class="search-bar">
<input id="assetSearch" type="text" class="input-field" placeholder="Search name, machine ID, serial, description..." oninput="loadAssets()">
<input id="assetSearch" type="text" class="input-field" placeholder="Search name, machine ID, serial, telemetry ID..." oninput="loadAssets()">
<button class="clear-btn" id="clearSearch" onclick="clearAssetSearch()"></button>
</div>
<div style="display:flex;gap:6px;align-items:flex-start;margin-bottom:8px;">
@@ -1287,7 +1287,7 @@
<div class="card" id="editFormCard">
<input id="editBarcode" type="text" class="input-field" placeholder="Machine ID *">
<input id="editName" type="text" class="input-field" placeholder="Asset name *">
<textarea id="editDesc" class="input-field" placeholder="Description" rows="2"></textarea>
<textarea id="editDesc" class="input-field" placeholder="Telemetry ID" rows="2"></textarea>
<div class="form-row" style="margin-bottom:8px;">
<select id="editCategory" class="input-field">
<option value="">Category</option>
@@ -3172,6 +3172,9 @@
'Food': { icon: '🍔', color: '#d35400' },
'Equipment': { icon: '🔧', color: '#2c3e50' },
'Furniture': { icon: '🪑', color: '#8e44ad' },
'Appliances': { icon: '🔌', color: '#3b82f6' },
'Unknown': { icon: '❓', color: '#6b7280' },
'GF Bev': { icon: '🥤', color: '#0a7ab5' },
};
const PARK_ICONS = {'magic-kingdom':'🏰','epcot':'🌍','hollywood-studios':'🎬','animal-kingdom':'🌿','disney-springs':'🛍️','resort':'🏨','office':'🏢','other':'📍'};
@@ -3809,7 +3812,7 @@
df('Machine ID', a.machine_id, true),
df('Name', a.name),
df('Serial Number', a.serial_number, true),
df('Description', a.description),
df('Telemetry ID', a.description),
df('Category', catLabel(a.category)),
df('Make', a.make),
df('Model', a.model),
@@ -4194,7 +4197,7 @@
<input id="editMachineId" type="text" class="input-field" placeholder="Machine ID *" value="${esc(a.machine_id)}">
<input id="editName" type="text" class="input-field" placeholder="Asset name *" value="${esc(a.name)}">
<input id="editSerialNumber" type="text" class="input-field" placeholder="Serial number" value="${esc(a.serial_number || '')}">
<textarea id="editDesc" class="input-field" placeholder="Description" rows="2">${esc(a.description || '')}</textarea>
<textarea id="editDesc" class="input-field" placeholder="Telemetry ID" rows="2">${esc(a.description || '')}</textarea>
<div class="form-row">
<input id="editCategory" type="text" class="input-field" placeholder="Category" value="${esc(a.category || '')}" list="catList">
<input id="editMake" type="text" class="input-field" placeholder="Make" value="${esc(a.make || '')}">