Consolidate documentation: archive 45+ historical docs
- Move completed migration docs to docs/archive/ - Move session summaries to docs/archive/sessions/ - Rename API_ASP_DOCUMENTATION.md to docs/API.md - Archive redundant Claude reference files - Update docs/README.md as simplified index - Reduce active docs from 45+ files to 8 essential files Remaining docs: - CLAUDE.md (AI context) - TODO.md (task tracking) - docs/README.md, API.md, QUICK_REFERENCE.md - docs/ASP_DEVELOPMENT_GUIDE.md, STANDARDS.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
337
docs/archive/MACHINE_QUICK_REFERENCE.md
Normal file
337
docs/archive/MACHINE_QUICK_REFERENCE.md
Normal file
@@ -0,0 +1,337 @@
|
||||
# Machine Management - Quick Reference Guide
|
||||
|
||||
**Last Updated:** 2025-11-07
|
||||
|
||||
---
|
||||
|
||||
## Quick Links
|
||||
|
||||
| Page | URL | Purpose |
|
||||
|------|-----|---------|
|
||||
| **View All Machines** | `displaymachines.asp` | List of all equipment (excludes PCs) |
|
||||
| **View Machine** | `displaymachine.asp?machineid=XXX` | Display single machine details |
|
||||
| **Add Machine** | `addmachine.asp` | Create new machine |
|
||||
| **Edit Machine** | `editmachine.asp?machineid=XXX` | Edit existing machine |
|
||||
|
||||
---
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
/home/camp/projects/windows/shopdb/
|
||||
├── displaymachines.asp # List all machines (equipment only, no PCs)
|
||||
├── displaymachine.asp # Display single machine (5 tabs)
|
||||
├── addmachine.asp # Add new machine form (5 tabs)
|
||||
├── editmachine.asp # Edit machine form (5 tabs)
|
||||
├── savemachine_direct.asp # Save new machine handler
|
||||
├── savemachineedit.asp # Save machine edits handler
|
||||
└── docs/
|
||||
├── MACHINE_MANAGEMENT_COMPLETE.md # Comprehensive overview
|
||||
├── MACHINE_EDIT_FORM_IMPLEMENTATION.md # Edit form details
|
||||
├── ADD_EDIT_MACHINE_UPDATES.md # Add form details
|
||||
└── DISPLAY_PAGES_UPDATE_SUMMARY.md # Display page details
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Database Tables
|
||||
|
||||
### machines
|
||||
Primary table for all equipment and PCs
|
||||
- `machineid` - Primary key
|
||||
- `machinenumber` - Equipment number (unique, required)
|
||||
- `modelnumberid` - Foreign key to models
|
||||
- `businessunitid` - Foreign key to businessunits
|
||||
- `pctypeid` - NULL for equipment, NOT NULL for PCs
|
||||
- `alias` - Friendly name
|
||||
- `machinenotes` - Notes
|
||||
- `mapleft`, `maptop` - Location coordinates
|
||||
|
||||
### communications
|
||||
Network interface data (up to 3 per machine)
|
||||
- `comid` - Primary key
|
||||
- `machineid` - Foreign key to machines
|
||||
- `address` - IP address
|
||||
- `macaddress` - MAC address
|
||||
- `interfacename` - "Interface 1", "Interface 2", "Interface 3"
|
||||
- `isprimary` - 1 for primary, 0 for secondary
|
||||
|
||||
### machinerelationships
|
||||
Relationships between machines
|
||||
- `relationshipid` - Primary key
|
||||
- `machineid` - Source machine
|
||||
- `related_machineid` - Target machine
|
||||
- `relationshiptypeid` - Foreign key to relationshiptypes
|
||||
|
||||
**Relationship Types:**
|
||||
- **Controls** (one-way): PC → Equipment
|
||||
- **Dualpath** (bidirectional): Machine ↔ Machine
|
||||
|
||||
### compliance
|
||||
Compliance and security data
|
||||
- `complianceid` - Primary key
|
||||
- `machineid` - Foreign key to machines
|
||||
- `is_third_party_managed` - ENUM('Yes', 'No', 'NA')
|
||||
- `third_party_vendorid` - Foreign key to vendors
|
||||
- `ot_asset_system` - OT classification
|
||||
- `ot_asset_device_type` - DoD classification
|
||||
|
||||
---
|
||||
|
||||
## Common Queries
|
||||
|
||||
### Get Machine with All Data
|
||||
```sql
|
||||
SELECT m.*, mo.modelnumber, v.vendor, bu.businessunit, mt.machinetype
|
||||
FROM machines m
|
||||
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
||||
LEFT JOIN vendors v ON mo.vendorid = v.vendorid
|
||||
LEFT JOIN businessunits bu ON m.businessunitid = bu.businessunitID
|
||||
LEFT JOIN machinetypes mt ON mo.machinetypeid = mt.machinetypeid
|
||||
WHERE m.machineid = ?
|
||||
```
|
||||
|
||||
### Get Network Interfaces
|
||||
```sql
|
||||
SELECT * FROM communications
|
||||
WHERE machineid = ? AND isactive = 1
|
||||
ORDER BY isprimary DESC, interfacename ASC
|
||||
```
|
||||
|
||||
### Get Controlling PC
|
||||
```sql
|
||||
SELECT m.machineid, m.hostname, c.address
|
||||
FROM machinerelationships mr
|
||||
JOIN relationshiptypes rt ON mr.relationshiptypeid = rt.relationshiptypeid
|
||||
JOIN machines m ON mr.machineid = m.machineid
|
||||
LEFT JOIN communications c ON m.machineid = c.machineid AND c.isprimary = 1
|
||||
WHERE mr.related_machineid = ? AND rt.relationshiptype = 'Controls'
|
||||
```
|
||||
|
||||
### Get Dualpath Machines
|
||||
```sql
|
||||
SELECT m.machineid, m.machinenumber, mt.machinetype, mo.modelnumber
|
||||
FROM machinerelationships mr
|
||||
JOIN relationshiptypes rt ON mr.relationshiptypeid = rt.relationshiptypeid
|
||||
JOIN machines m ON mr.related_machineid = m.machineid
|
||||
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
||||
LEFT JOIN machinetypes mt ON mo.machinetypeid = mt.machinetypeid
|
||||
WHERE mr.machineid = ? AND rt.relationshiptype = 'Dualpath'
|
||||
```
|
||||
|
||||
### Get Compliance Data
|
||||
```sql
|
||||
SELECT c.*, v.vendor AS third_party_vendor_name
|
||||
FROM compliance c
|
||||
LEFT JOIN vendors v ON c.third_party_vendorid = v.vendorid
|
||||
WHERE c.machineid = ?
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Form Field Reference
|
||||
|
||||
### Basic Info Tab
|
||||
- `machinenumber` - Equipment number (required, unique, readonly on edit)
|
||||
- `modelid` - Model dropdown (required)
|
||||
- `businessunitid` - Business unit dropdown (required)
|
||||
- `alias` - Friendly name (optional)
|
||||
- `machinenotes` - Notes (optional)
|
||||
|
||||
### Network Tab
|
||||
- `ip1`, `mac1` - Primary interface (Interface 1)
|
||||
- `ip2`, `mac2` - Optional interface (Interface 2)
|
||||
- `ip3`, `mac3` - Optional interface (Interface 3)
|
||||
|
||||
### Relationships Tab
|
||||
- `controllingpc` - PC dropdown (WHERE pctypeid IS NOT NULL)
|
||||
- `dualpathid` - Machine dropdown (WHERE pctypeid IS NULL)
|
||||
|
||||
### Compliance Tab
|
||||
- `thirdpartymanaged` - Dropdown (N/A, Yes, No)
|
||||
- `thirdpartyvendorid` - Vendor dropdown
|
||||
- `otassetsystem` - Text input (100 chars)
|
||||
- `dodassettype` - Text input (100 chars)
|
||||
|
||||
### Location Tab
|
||||
- `mapleft` - X coordinate (from map picker)
|
||||
- `maptop` - Y coordinate (from map picker)
|
||||
|
||||
---
|
||||
|
||||
## Code Patterns
|
||||
|
||||
### Parameterized Query Example
|
||||
```asp
|
||||
Dim strSQL, rsResult
|
||||
strSQL = "SELECT * FROM machines WHERE machineid = ?"
|
||||
Set rsResult = ExecuteParameterizedQuery(objConn, strSQL, Array(machineid))
|
||||
If Not rsResult.EOF Then
|
||||
' Process results
|
||||
End If
|
||||
rsResult.Close
|
||||
Set rsResult = Nothing
|
||||
```
|
||||
|
||||
### HTML Encoding Pattern
|
||||
```asp
|
||||
Response.Write("<td>" & Server.HTMLEncode(rsData("fieldname") & "") & "</td>")
|
||||
```
|
||||
|
||||
### NULL Handling Pattern
|
||||
```asp
|
||||
' Force to string to prevent NULL errors
|
||||
Dim displayValue
|
||||
displayValue = rsData("fieldname") & "" ' Converts NULL to empty string
|
||||
|
||||
' Use IIf for database inserts
|
||||
cmd.Parameters.Append cmd.CreateParameter("@param", 200, 1, 50, IIf(value <> "", value, Null))
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Common Tasks
|
||||
|
||||
### Adding a New Machine
|
||||
1. Navigate to `addmachine.asp`
|
||||
2. Fill Basic Info tab (machine number, model, business unit)
|
||||
3. Fill Network tab (at least one IP/MAC)
|
||||
4. Select relationships (optional)
|
||||
5. Fill compliance data (optional)
|
||||
6. Click map to set location (optional)
|
||||
7. Click "Add Equipment"
|
||||
|
||||
### Editing a Machine
|
||||
1. Navigate to `displaymachine.asp?machineid=XXX`
|
||||
2. Click "Edit Machine" button
|
||||
3. Update any tab
|
||||
4. Click "Update Equipment"
|
||||
|
||||
### Viewing Machine Relationships
|
||||
1. Navigate to `displaymachine.asp?machineid=XXX`
|
||||
2. Click "Relationships" tab
|
||||
3. See three sections:
|
||||
- Controls (PC that controls this)
|
||||
- Controlled By This PC (if it's a PC)
|
||||
- Dualpath (redundant machines)
|
||||
|
||||
### Viewing Network Interfaces
|
||||
1. Navigate to `displaymachine.asp?machineid=XXX`
|
||||
2. Click "Network" tab
|
||||
3. See all interfaces in table format
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Machine redirects to homepage
|
||||
**Cause:** NULL machinetypeid in model
|
||||
**Fix:** Use LEFT JOIN instead of INNER JOIN for machinetypes
|
||||
|
||||
### Edit button doesn't work
|
||||
**Cause:** Invalid machineid or file doesn't exist
|
||||
**Fix:** Check URL parameter, verify editmachine.asp exists
|
||||
|
||||
### Data doesn't save
|
||||
**Cause:** Validation error or database connection issue
|
||||
**Fix:** Check error message, review logs in `/home/camp/projects/windows/logs/`
|
||||
|
||||
### Map doesn't load
|
||||
**Cause:** Missing Leaflet.js or map images
|
||||
**Fix:** Verify leaflet.js, sitemap2025-dark.png, sitemap2025-light.png exist
|
||||
|
||||
### "New" button doesn't work
|
||||
**Cause:** JavaScript event handler issue
|
||||
**Fix:** Check browser console for errors, verify jQuery loaded
|
||||
|
||||
### Relationships not saving
|
||||
**Cause:** Relationship types don't exist or invalid machine IDs
|
||||
**Fix:** Verify relationshiptypes table has 'Controls' and 'Dualpath'
|
||||
|
||||
---
|
||||
|
||||
## Security Checklist
|
||||
|
||||
- All queries use parameterized commands
|
||||
- All output uses Server.HTMLEncode()
|
||||
- All numeric inputs validated with IsNumeric()
|
||||
- All string inputs have length limits
|
||||
- NULL values handled properly
|
||||
- No direct variable interpolation in SQL
|
||||
- Error messages don't expose sensitive data
|
||||
- Database connections always closed
|
||||
|
||||
---
|
||||
|
||||
## Testing Checklist
|
||||
|
||||
**Display Page:**
|
||||
- [ ] View machine with full data
|
||||
- [ ] View machine with no network interfaces
|
||||
- [ ] View machine with no relationships
|
||||
- [ ] Click "Edit Machine" button
|
||||
- [ ] Click related machine links
|
||||
|
||||
**Add Form:**
|
||||
- [ ] Add machine with all fields
|
||||
- [ ] Add machine with only required fields
|
||||
- [ ] Test IP/MAC validation
|
||||
- [ ] Create new model
|
||||
- [ ] Create new vendor
|
||||
- [ ] Use map picker
|
||||
|
||||
**Edit Form:**
|
||||
- [ ] Edit basic info
|
||||
- [ ] Add/remove network interfaces
|
||||
- [ ] Change controlling PC
|
||||
- [ ] Change dualpath machine
|
||||
- [ ] Update compliance data
|
||||
- [ ] Move location on map
|
||||
|
||||
---
|
||||
|
||||
## Quick Command Reference
|
||||
|
||||
### View Logs
|
||||
```bash
|
||||
tail -f /home/camp/projects/windows/logs/*.log
|
||||
```
|
||||
|
||||
### Check Database
|
||||
```bash
|
||||
mysql -u root -p shopdb -e "SELECT COUNT(*) FROM machines WHERE pctypeid IS NULL"
|
||||
mysql -u root -p shopdb -e "SELECT COUNT(*) FROM communications"
|
||||
mysql -u root -p shopdb -e "SELECT COUNT(*) FROM machinerelationships"
|
||||
```
|
||||
|
||||
### Find Machine by Number
|
||||
```sql
|
||||
SELECT machineid FROM machines WHERE machinenumber = '4500'
|
||||
```
|
||||
|
||||
### List All Relationships
|
||||
```sql
|
||||
SELECT m1.machinenumber AS source, m2.machinenumber AS target, rt.relationshiptype
|
||||
FROM machinerelationships mr
|
||||
JOIN machines m1 ON mr.machineid = m1.machineid
|
||||
JOIN machines m2 ON mr.related_machineid = m2.machineid
|
||||
JOIN relationshiptypes rt ON mr.relationshiptypeid = rt.relationshiptypeid
|
||||
WHERE mr.isactive = 1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Support Resources
|
||||
|
||||
- **Full Documentation:** `MACHINE_MANAGEMENT_COMPLETE.md`
|
||||
- **Edit Form Details:** `MACHINE_EDIT_FORM_IMPLEMENTATION.md`
|
||||
- **Add Form Details:** `ADD_EDIT_MACHINE_UPDATES.md`
|
||||
- **Display Page Details:** `DISPLAY_PAGES_UPDATE_SUMMARY.md`
|
||||
- **Migration Scripts:** `/home/camp/projects/windows/shopdb/sql/migration_phase2/`
|
||||
- **Import Logs:** `/tmp/inventory_import_final.log`
|
||||
|
||||
---
|
||||
|
||||
**Last Updated:** 2025-11-07
|
||||
**Version:** 1.0
|
||||
**Status:** Production Ready
|
||||
Reference in New Issue
Block a user