Adds an optional read-only Micron asset catalog lookup for the WP creator, with searchable asset IDs, CSV import, and graceful fallback to manual asset entry when the catalog is absent or unreachable. This includes the backend /api/assets endpoint, SQL Server connector configuration, Docker network changes for outbound access, and UI updates/documentation to make the catalog read-only and clearly distinguish Micron-vetted assets from manual entries.
<li><strong>Subject / Title</strong> (required) and <strong>WP Type</strong> (required, from the SOP).</li>
<li><strong>Assets</strong> — link each controls.dev asset the package covers.</li>
<li><strong>Assets</strong> — search the Micron DB by asset ID and add each asset the package covers. Anything not in the Micron DB can still be typed in by hand.</li>
<li><strong>Disciplines</strong> — which trades the package covers (see <a data-help-jump="disciplines">Disciplines & Split</a>).</li>
<li><strong>Scope & Work</strong> — the sequenced steps the crew performs (per-discipline in multi-discipline mode).</li>
<li><strong>Labor – Est. Hrs.</strong> — drives the sizing check (see <a data-help-jump="sizing">Sizing</a>).</li>
@@ -281,7 +281,7 @@
<tr><td><strong>Sequence</strong></td><td>SOP-defined construction phases; a WP can name a predecessor step.</td></tr>
<tr><td><strong>Bagged & tagged</strong></td><td>Materials on site, kitted, and labelled — part of the Materials constraint.</td></tr>
<tr><td><strong>MIMO</strong></td><td>Material In / Material Out — kitting and staging logistics.</td></tr>
<tr><td><strong>Asset</strong></td><td>A controls.dev record (equipment/system) a package is built around.</td></tr>
<tr><td><strong>Asset</strong></td><td>An asset ID from the Micron DB that a package is built around. The Micron DB is read-only here — picking an asset never changes it.</td></tr>
<tr><td><strong>Hold / Witness point</strong></td><td>Hold = work stops until inspection sign-off; Witness = inspection offered but work may proceed.</td></tr>
<tr><td><strong>Active project</strong></td><td>The currently selected project; all data is scoped to it.</td></tr>
show('bim-card',ewp);// model area / clash + IFF # / scan
show('asset-card',!ewp);// controls.dev assets
show('asset-card',!ewp);// Micron DB assets
show('material-card',!ewp);// bill of materials
show('mimo-card',!ewp);// kitting / MIMO
show('bimlink-wrap',bimProj&&!ewp);// an IWP references the BIM package that enabled it
@@ -807,20 +807,344 @@ function splitByDiscipline(){
alert('Created '+children.length+' instances:\n\n• '+children.map(c=>c.number+' ('+c.disciplines[0]+', '+(c.materials?c.materials.length:0)+' material line'+((c.materials&&c.materials.length===1)?'':'s')+')').join('\n• ')+'\n\nThe master '+baseNumber+' is kept as a roll-up.'+matNote);
tr.innerHTML=`<td><input type="text" value="${(a.tag||'').replace(/"/g,'"')}" placeholder="controls.dev asset tag / ID" oninput="pkgAssets[${i}].tag=this.value"></td>
<td><input type="text" value="${(a.desc||'').replace(/"/g,'"')}" placeholder="what it is (optional)" oninput="pkgAssets[${i}].desc=this.value"></td>
<divclass="notice">Every work package is based on one or more assets managed in<strong>controls.dev</strong>. Paste the controls.dev link for each asset this package covers. <spanstyle="color:var(--text-dim)">A direct integration to pick assets from a list is planned — for now, link them manually.</span></div>
<divclass="table-wrap"><table><thead><tr><thstyle="width:200px">Asset Tag / ID</th><th>Description</th><th>controls.dev Link <spanclass="req">*</span></th><thstyle="width:44px"></th></tr></thead><tbodyid="asset-body"></tbody></table></div>
<divclass="sub-heading">Assets<spanclass="help-tip"data-tip="Every work package is built around one or more assets. Search the Micron DB by asset ID, paste a column of IDs straight from Excel, or load a CSV. IDs found in the Micron DB are tagged as such; the rest are added as manual rows. The Micron DB is read-only here — picking an asset never changes it.">i</span></div>
<divclass="notice">Every work package is based on one or more assets from the<strong>Micron DB</strong>. Search by asset ID, or paste a column of IDs straight from Excel, to add each asset this package covers. <spanstyle="color:var(--text-dim)">The Micron DB is read-only — nothing you do here changes it.</span></div>
<divclass="table-wrap"><table><thead><tr><thstyle="width:260px">Asset ID</th><th>Note <spanstyle="font-weight:400;color:var(--text-dim)">(what this asset is / why it's in scope)</span></th><thstyle="width:44px"></th></tr></thead><tbodyid="asset-body"></tbody></table></div>
<divclass="material-actions">
<buttonclass="add-btn"onclick="addManualAsset()"title="Add an asset that is not in the Micron DB yet">+ Add asset not in the Micron DB</button>
<buttonclass="add-btn"onclick="document.getElementById('asset-import').click()"title="Load a list of asset IDs from a CSV. IDs found in the Micron DB are tagged as such; the rest are added as manual rows.">⤒ Load from CSV</button>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.