Phase 2 Migration: Complete PC consolidation and fixes

## Phase 2 Migration Complete
Successfully migrated all 286 active PCs from pc table to machines table.

### Migration Scripts Added/Updated:
- **Phase 1.0**: Added ensure_all_machinetypes.sql (machinetypes 15-20)
- **Phase 1.5**: Added migrate_equipment_ips_to_communications.sql
- **Phase 2**: Updated 01_migrate_pcs_to_machines.sql for duplicate handling
- **Phase 2**: Updated 08_update_schema_for_api.sql (rename pcid→machineid)
- **Phase 2 Fixes**: Added FIX_migrate_remaining_pcs.sql (60 unmigrated PCs)
- **Phase 2 Fixes**: Added FIX_pc_machine_types.sql

### Network Devices View Updated:
- **CREATE_vw_network_devices_with_fqdn.sql**: Complete rewrite for Phase 2
  - Infrastructure devices (IDF, Server, Switch, Camera, Access Point) query machines table
  - Printers remain in separate printers table (has fqdn column)
  - UNION approach: machines (machinetypeid 15-19) + printers table

### Documentation Added:
- DATA_MIGRATION_EXPLAINED.md - Full migration architecture
- PRODUCTION_MIGRATION_PLAN.md - Production deployment plan
- VIEWS_MIGRATION_ANALYSIS.md - Views requiring updates
- PRINTER_INSTALLER_FIX_2025-11-20.md - Printer installer fixes
- SCHEMA_COMPARISON_REPORT_2025-11-20.md - Phase 2 schema comparison

### ASP Files Updated:
- api_printers.asp - Printer API fixes
- displaynotifications.asp - UI improvements
- install_printer.asp - Installer fixes
- v2/api_printers.asp - V2 API updates
- v2/install_printer.asp - V2 installer updates

### Migration Results (DEV):
- Total machines: 523 (237 equipment + 286 PCs)
- Communications: 1,309
- Warranties: 212
- Machine relationships: 201
- PC migration: 286/286 ✓
- Duplicate PCs removed: 166 duplicates cleaned

### Key Achievements:
✓ All 286 active PCs migrated to machines table
✓ Network devices view updated for Phase 2 architecture
✓ pc_to_machine_id_mapping table populated (286 entries)
✓ Duplicate PC records cleaned (452→286)
✓ Schema updates for API compatibility (pcid→machineid)

### Next Steps:
- Update PHP Dashboard API for Phase 2 schema (CRITICAL - see POWERSHELL_API_PHASE2_ISSUES.md)
- Update PowerShell scripts for Phase 2 schema
- Test Update-PC-CompleteAsset-Silent.bat
- Production deployment planning

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
cproudlock
2025-11-21 09:15:47 -05:00
parent 4cabc823ef
commit 08d95f579a
18 changed files with 3860 additions and 187 deletions

View File

@@ -0,0 +1,291 @@
# Database Schema Comparison Report
**Date:** 2025-11-20
**Comparison:** database-backup-11-20-25-eod-with-drop.sql vs Current Dev Database
**Dev Backup Created:** /home/camp/projects/windows/shopdb/sql/dev-backup-20251120-105614.sql
---
## Executive Summary
The backup file contains **Phase 1 schema** (pre-migration) with 63 tables, while the current dev database contains **Phase 2 schema** (post-migration) with 30 tables.
**Key Findings:**
-**4 tables have schema changes** (businessunits, controllertypes, machine_overrides, machines)
-**8 new Phase 2 tables** exist in dev but not in backup
-**41 legacy tables** exist in backup but not in dev (deprecated/views)
---
## Tables Requiring DROP and Recreate
### 1. Tables with Schema Changes (4 tables)
These tables exist in both files but have different column structures. They should be **dropped and recreated** from the backup file if you want to revert to the backup schema.
#### ⚠️ `machines` (CRITICAL - Most Changes)
**Columns Removed in Dev (exist in backup):**
- `ipaddress1` - Removed (now in communications table)
- `ipaddress2` - Removed (now in communications table)
**Columns Added in Dev (not in backup):**
- `hostname` - For PC hostnames
- `serialnumber` - Equipment serial numbers
- `loggedinuser` - Current logged-in user (PCs)
- `pctypeid` - Identifies PCs (NULL = equipment, NOT NULL = PC)
- `osid` - Foreign key to operatingsystems (PC OS)
- `controllertypeid` - Foreign key to controllertypes
- `controllerosid` - Controller OS (for CNCs)
- `controllermodelid` - Controller model reference
- `machinestatusid` - Replaces pcstatusid
- `lastupdated` - Auto-updated timestamp
- `requires_manual_machine_config` - Configuration flag
**Impact:** This is the core table for Phase 2 migration. Reverting will break all PC and network device functionality.
---
#### ⚠️ `businessunits`
**Columns Added in Dev (not in backup):**
- `liaisonname` - Liaison contact name
- `liaisonsso` - Liaison SSO
- `facility_id` - Facility identifier
- `dt_lead` - DT Lead name
- `dt_lead_sso` - DT Lead SSO
**Impact:** Minor. These are additional metadata fields that don't affect core functionality.
---
#### ⚠️ `controllertypes`
**Columns Added in Dev (not in backup):**
- `vendorid` - Foreign key to vendors
- `controllermodel` - Controller model name
- `controller_os` - Controller OS name
- `controllernotes` - Additional notes
**Impact:** Minor. Enhanced metadata for CNC controllers.
---
#### ⚠️ `machine_overrides`
**Issue:** Same columns but definition differences (likely data types or constraints changed)
**Impact:** Unknown without detailed field-by-field comparison.
---
## New Tables in Dev (Phase 2 Migration)
These 8 tables exist in the current dev database but NOT in the backup file. They are **Phase 2 migration tables** and should be **preserved**.
### Phase 2 Tables (DO NOT DROP)
1. **`communications`** - Unified network interface storage (replaces pc_network_interfaces, printer IPs)
2. **`comstypes`** - Communication types (IP, Serial, USB, etc.)
3. **`compliance`** - Compliance tracking data
4. **`compliancescans`** - Compliance scan history
5. **`machinerelationships`** - Machine-to-machine relationships (dualpath, controls)
6. **`relationshiptypes`** - Relationship type definitions
7. **`machinestatus`** - Replaces pcstatus with broader scope
8. **`warranties`** - Warranty tracking
**These tables are critical for Phase 2 functionality and should NOT be dropped.**
---
## Legacy Tables in Backup (Not in Dev)
These 41 tables exist in the backup file but NOT in the current dev database. Most are **deprecated** or **views**.
### Deprecated PC Tables (Replaced by machines + communications)
- `pc` - **DEPRECATED** → Replaced by machines WHERE pctypeid IS NOT NULL
- `pc_network_interfaces` - **DEPRECATED** → Replaced by communications
- `pc_comm_config` - **DEPRECATED** → Replaced by communications
- `pc_dnc_config` - **DEPRECATED** → Integrated into machine relationships
- `pc_dualpath_assignments` - **DEPRECATED** → Replaced by machinerelationships
- `pctype` - **DEPRECATED** → Now stored in machines.pctypeid
- `pcstatus` - **DEPRECATED** → Replaced by machinestatus
### Deprecated Network Device Tables (Replaced by machines)
- `accesspoints` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 16
- `cameras` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 18
- `switches` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 19
- `servers` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 20
- `idfs` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 17
### Legacy Relationship Table
- `machine_pc_relationships` - **DEPRECATED** → Replaced by machinerelationships
### Backup Table
- `pc_model_backup` - Backup table (can be dropped)
### Views (33 views)
All views with `vw_` prefix are query views, not base tables:
- `vw_active_pcs`
- `vw_dnc_config`
- `vw_dualpath_management`
- `vw_engineer_pcs`
- `vw_ge_machines`
- `vw_idf_inventory`
- `vw_infrastructure_summary`
- `vw_machine_assignments`
- `vw_machine_assignment_status`
- `vw_machinetype_comparison`
- `vw_machine_type_stats`
- `vw_multi_pc_machines`
- `vw_network_devices`
- `vw_pc_network_summary`
- `vw_pc_resolved_machines`
- `vw_pcs_by_hardware`
- `vw_pc_summary`
- `vw_pctype_config`
- `vw_recent_updates`
- `vw_shopfloor_applications_summary`
- `vw_shopfloor_comm_config`
- `vw_shopfloor_pcs`
- `vw_standard_pcs`
- `vw_unmapped_machines`
- `vw_vendor_summary`
- `vw_warranties_expiring`
- `vw_warranty_status`
**Note:** Views need to be recreated to match Phase 2 schema.
---
## Recommendation: What to Drop and Recreate
### ⚠️ CRITICAL WARNING
**DO NOT apply the backup file schema if you want to keep Phase 2 functionality!**
The backup file represents the **OLD Phase 1 schema** before the major PC migration work completed on Nov 17, 2025. Applying it would:
1. ❌ Lose all Phase 2 migration work (20+ days of development)
2. ❌ Break all PC pages (displaypcs.asp, displaypc.asp, editpc.asp, etc.)
3. ❌ Break network device display (network_map.asp, network_devices.asp)
4. ❌ Lose unified communications table
5. ❌ Lose machine relationships functionality
6. ❌ Lose compliance tracking
7. ❌ Lose warranty management
### If You Must Revert to Backup Schema
**Tables to DROP and recreate from backup:**
1.`machines` - DROP and recreate (loses Phase 2 columns)
2.`businessunits` - DROP and recreate (loses liaison/facility fields)
3.`controllertypes` - DROP and recreate (loses enhanced metadata)
4.`machine_overrides` - DROP and recreate (definition changes)
**Tables to DROP from dev (Phase 2 tables):**
5.`communications` - DROP (then recreate from backup if needed)
6.`comstypes` - DROP
7.`compliance` - DROP
8.`compliancescans` - DROP
9.`machinerelationships` - DROP
10.`relationshiptypes` - DROP
11.`machinestatus` - DROP (will recreate `pcstatus` from backup)
12.`warranties` - DROP
**Tables to ADD from backup (legacy tables):**
13. `pc` - CREATE from backup
14. `pc_network_interfaces` - CREATE from backup
15. `pc_comm_config` - CREATE from backup
16. `pc_dnc_config` - CREATE from backup
17. `pc_dualpath_assignments` - CREATE from backup
18. `pctype` - CREATE from backup
19. `pcstatus` - CREATE from backup
20. `accesspoints` - CREATE from backup (if needed)
21. `cameras` - CREATE from backup (if needed)
22. `switches` - CREATE from backup (if needed)
23. `servers` - CREATE from backup (if needed)
24. `idfs` - CREATE from backup (if needed)
25. `machine_pc_relationships` - CREATE from backup
**Views to recreate (33 views):** All `vw_*` views need to be dropped and recreated from backup.
---
## Recommended Action Plan
### Option 1: Keep Phase 2 Schema (RECOMMENDED)
**DO NOTHING.** Your current dev database is the latest Phase 2 schema with all improvements.
The backup file is outdated and should not be applied unless you need to revert Phase 2 changes.
### Option 2: Sync Backup File to Match Dev
If the backup file is supposed to be the "source of truth", then UPDATE the backup file to include Phase 2 schema:
1. Export current dev schema: `mysqldump shopdb > new-phase2-backup.sql`
2. Replace old backup file with Phase 2 schema
3. Use Phase 2 schema for future deployments
### Option 3: Revert to Backup Schema (NOT RECOMMENDED)
If you absolutely must revert to Phase 1 schema:
1. Backup current dev database (already done: dev-backup-20251120-105614.sql)
2. Drop Phase 2 tables: communications, compliance, machinerelationships, etc.
3. Restore machines, businessunits, controllertypes to backup versions
4. Restore all legacy tables (pc, pc_network_interfaces, etc.)
5. Recreate all views
6. **Accept that all Phase 2 functionality will be lost**
---
## Table Count Summary
| Category | Backup File | Dev Database | Difference |
|----------|-------------|--------------|------------|
| **Total Tables** | 63 | 30 | -33 |
| **Base Tables** | 36 | 30 | -6 |
| **Views** | 27 | 0 | -27 |
| **Schema Changes** | - | 4 | - |
| **New in Dev** | - | 8 | +8 |
| **Missing in Dev** | 41 | - | - |
---
## Files Generated
1. **Current Dev Backup:** `/home/camp/projects/windows/shopdb/sql/dev-backup-20251120-105614.sql` (464 KB)
2. **This Report:** `/home/camp/projects/windows/shopdb/SCHEMA_COMPARISON_REPORT_2025-11-20.md`
---
## Conclusion
**The backup file (database-backup-11-20-25-eod-with-drop.sql) is from BEFORE Phase 2 migration.**
Your current dev database has the **Phase 2 schema** with significant improvements:
- ✅ Unified machines table for all infrastructure
- ✅ Consolidated communications table
- ✅ Machine relationships tracking
- ✅ Compliance management
- ✅ Warranty tracking
**Recommendation:** Do NOT apply the backup file schema. Keep your current Phase 2 dev schema.
If production needs updating, use your current dev schema as the source, not the backup file.
---
**Generated:** 2025-11-20 10:56
**Analyst:** Claude Code
**Status:** Analysis Complete ✅