- Strip emojis from 47 markdown files across docs/, sql/, and root - Add docs/DOCS_CONSOLIDATION_PLAN.md with plan to reduce 45 docs to 8 - Establish no-emoji rule for documentation going forward 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
560 lines
18 KiB
Markdown
560 lines
18 KiB
Markdown
# Views Migration Analysis - Phase 2 Schema
|
|
|
|
**Date:** 2025-11-20
|
|
**Critical Finding:** 24 out of 27 views require updates for Phase 2 schema
|
|
**Impact:** HIGH - Views will break after PC migration if not updated
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
Your production database has **27 views** that provide critical reporting and data aggregation. After analyzing these views:
|
|
|
|
- **24 views MUST be updated** - They reference deprecated tables (pc, pc_network_interfaces, etc.)
|
|
- **3 views OK** - Already compatible with Phase 2 schema
|
|
- **CRITICAL:** These views must be updated BEFORE or DURING migration, or pages using them will break
|
|
|
|
---
|
|
|
|
## Views Status Breakdown
|
|
|
|
### Views Compatible with Phase 2 (3 views)
|
|
|
|
These views don't reference deprecated tables and will continue working after migration:
|
|
|
|
1. **vw_machinetype_comparison** - Compares machine types between machines and models
|
|
2. **vw_unmapped_machines** - Finds machines without map coordinates
|
|
3. **vw_network_devices** - Already updated to query machines table (from our Nov 13 work!)
|
|
|
|
---
|
|
|
|
### Views Requiring Updates (24 views)
|
|
|
|
All of these reference tables that will be deprecated after Phase 2 migration:
|
|
|
|
#### Category 1: PC-Focused Views (12 views)
|
|
Views that query the `pc` and `pctype` tables directly:
|
|
|
|
1. **vw_active_pcs** - Active PCs updated in last 30 days
|
|
- References: `pc`, `pctype`
|
|
- Used by: displaypcs.asp (probably)
|
|
- **Fix:** Query `machines WHERE pctypeid IS NOT NULL`
|
|
|
|
2. **vw_engineer_pcs** - Engineer workstations
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines WHERE pctypeid IN (SELECT pctypeid FROM pctype WHERE typename='Engineer')`
|
|
|
|
3. **vw_shopfloor_pcs** - Shop floor PCs
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines WHERE pctypeid IS NOT NULL` and filter by type
|
|
|
|
4. **vw_standard_pcs** - Standard workstations
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines WHERE pctypeid IN (SELECT pctypeid FROM pctype WHERE typename='Standard')`
|
|
|
|
5. **vw_pc_summary** - PC inventory summary
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines WHERE pctypeid IS NOT NULL`
|
|
|
|
6. **vw_pcs_by_hardware** - PC counts by hardware configuration
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines WHERE pctypeid IS NOT NULL` group by vendor/model
|
|
|
|
7. **vw_vendor_summary** - PC counts by manufacturer
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines WHERE pctypeid IS NOT NULL` group by vendor
|
|
|
|
8. **vw_recent_updates** - Recently updated PCs
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines WHERE pctypeid IS NOT NULL ORDER BY lastupdated`
|
|
|
|
9. **vw_pc_resolved_machines** - PCs mapped to machines
|
|
- References: `pc`
|
|
- **Fix:** Query `machines WHERE pctypeid IS NOT NULL`
|
|
|
|
10. **vw_machine_type_stats** - Machine type statistics
|
|
- References: `pc`
|
|
- **Fix:** Include PCs from machines table
|
|
|
|
11. **vw_shopfloor_applications_summary** - Application deployment summary
|
|
- References: `pc`
|
|
- **Fix:** Join to `machines WHERE pctypeid IS NOT NULL`
|
|
|
|
12. **vw_ge_machines** - Machines with assigned PCs
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines WHERE pctypeid IS NOT NULL` and join to machines (equipment)
|
|
|
|
#### Category 2: Network Interface Views (2 views)
|
|
Views that query `pc_network_interfaces`:
|
|
|
|
13. **vw_pc_network_summary** - PC network configuration summary
|
|
- References: `pc`, `pc_network_interfaces`, `pctype`
|
|
- **Fix:** Query `machines` and `communications` tables
|
|
- **Example Change:**
|
|
```sql
|
|
-- OLD:
|
|
FROM pc p
|
|
JOIN pc_network_interfaces pni ON p.pcid = pni.pcid
|
|
|
|
-- NEW:
|
|
FROM machines m
|
|
JOIN communications c ON m.machineid = c.machineid
|
|
WHERE m.pctypeid IS NOT NULL
|
|
```
|
|
|
|
14. **vw_pctype_config** - PC type configuration summary
|
|
- References: `pctype`, references pc_network_interfaces in subquery
|
|
- **Fix:** Query machines grouped by pctypeid, join to communications
|
|
|
|
#### Category 3: DNC Configuration Views (2 views)
|
|
Views that query `pc_dnc_config`:
|
|
|
|
15. **vw_dnc_config** - DNC configuration for all PCs
|
|
- References: `pc`, `pc_dnc_config`
|
|
- **Fix:** This data may need to be migrated to a new table or embedded in machine relationships
|
|
- **Status:** NEEDS DESIGN DECISION - Where does DNC config go in Phase 2?
|
|
|
|
16. **vw_shopfloor_comm_config** - Shop floor communication configuration
|
|
- References: `pc`, `pc_comm_config`, `pctype`
|
|
- **Fix:** Query `communications` table with comstypeid for different comm types
|
|
|
|
#### Category 4: Dualpath Views (3 views)
|
|
Views that query `pc_dualpath_assignments`:
|
|
|
|
17. **vw_dualpath_management** - Dualpath configuration management
|
|
- References: `pc`, `pctype`, `pc_dnc_config`, `pc_dualpath_assignments`
|
|
- **Fix:** Query `machinerelationships WHERE relationshiptypeid = 2` (Dualpath)
|
|
- **Example Change:**
|
|
```sql
|
|
-- OLD:
|
|
FROM pc p
|
|
JOIN pc_dualpath_assignments dpa ON p.pcid = dpa.pcid
|
|
|
|
-- NEW:
|
|
FROM machines m
|
|
JOIN machinerelationships mr ON m.machineid = mr.machineid
|
|
JOIN relationshiptypes rt ON mr.relationshiptypeid = rt.relationshiptypeid
|
|
WHERE m.pctypeid IS NOT NULL AND rt.relationshiptype = 'Dualpath'
|
|
```
|
|
|
|
18. **vw_machine_assignments** - Machine to PC assignments
|
|
- References: `pc`, `pc_dualpath_assignments`
|
|
- **Fix:** Query `machinerelationships` for both primary and dualpath assignments
|
|
|
|
19. **vw_multi_pc_machines** - Machines with multiple PC assignments
|
|
- References: `pc`
|
|
- **Fix:** Query `machines` and `machinerelationships` where multiple PCs control same equipment
|
|
|
|
#### Category 5: Machine Assignment Views (1 view)
|
|
20. **vw_machine_assignment_status** - Machine assignment status
|
|
- References: `pc`, `pctype`, `pc_dnc_config`
|
|
- **Fix:** Complex view needing updates to join machines table with pctypeid filter
|
|
|
|
#### Category 6: Warranty Views (2 views)
|
|
Views that track PC warranties:
|
|
|
|
21. **vw_warranties_expiring** - Warranties expiring soon
|
|
- References: `pc`, `pctype`
|
|
- **Fix:** Query `machines` and `warranties` tables where pctypeid IS NOT NULL
|
|
|
|
22. **vw_warranty_status** - Overall warranty status
|
|
- References: `pc`, `pctype` (based on pattern)
|
|
- **Fix:** Query `machines` and `warranties` tables
|
|
|
|
#### Category 7: Infrastructure Views (2 views)
|
|
Views that query network device tables:
|
|
|
|
23. **vw_idf_inventory** - IDF inventory with camera counts
|
|
- References: `idfs`, `cameras`
|
|
- **Fix:** Query `machines WHERE machinetypeid IN (17, 18)` for IDFs and Cameras
|
|
- **Note:** IDFs = machinetypeid 17, Cameras = machinetypeid 18
|
|
|
|
24. **vw_infrastructure_summary** - Infrastructure device counts
|
|
- References: `switches`, `accesspoints`, `servers`, `cameras`, `idfs`
|
|
- **Fix:** Query `machines WHERE machinetypeid IN (16,17,18,19,20)`
|
|
- **Example Change:**
|
|
```sql
|
|
-- OLD:
|
|
SELECT 'Switches' AS device_type, COUNT(*) FROM switches
|
|
UNION ALL
|
|
SELECT 'Access Points', COUNT(*) FROM accesspoints
|
|
|
|
-- NEW:
|
|
SELECT mt.machinetype AS device_type, COUNT(*) AS total_count
|
|
FROM machines m
|
|
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
|
WHERE mt.machinetypeid IN (16,17,18,19,20)
|
|
GROUP BY mt.machinetype
|
|
```
|
|
|
|
---
|
|
|
|
## Migration Strategy for Views
|
|
|
|
### Option 1: Drop and Recreate All Views (RECOMMENDED)
|
|
|
|
**Approach:**
|
|
1. Extract all current view definitions from production
|
|
2. Update each view definition for Phase 2 schema
|
|
3. During migration:
|
|
- DROP all 24 views that need updates
|
|
- CREATE updated views with Phase 2 schema
|
|
- Keep 3 compatible views as-is
|
|
|
|
**Pros:**
|
|
- Clean migration
|
|
- All views updated at once
|
|
- Easy to test before migration
|
|
|
|
**Cons:**
|
|
- Brief moment where views don't exist (during migration window)
|
|
- Requires updating all 24 views
|
|
|
|
---
|
|
|
|
### Option 2: Create Views During Migration
|
|
|
|
**Approach:**
|
|
1. Keep old tables as legacy (pc, pc_network_interfaces, etc.)
|
|
2. Keep old views working during transition
|
|
3. Create NEW views with "_v2" suffix for Phase 2 schema
|
|
4. Update ASP pages to use new views
|
|
5. After 30 days, drop old tables and old views
|
|
|
|
**Pros:**
|
|
- Zero downtime for views
|
|
- Gradual transition
|
|
- Can compare old vs new view results
|
|
|
|
**Cons:**
|
|
- Duplicate views (_v2 versions)
|
|
- Old tables must be kept (taking up space)
|
|
- More complex migration
|
|
|
|
---
|
|
|
|
### Option 3: Hybrid Views (Query Both Old and New)
|
|
|
|
**Approach:**
|
|
Create views that UNION data from both old and new tables during transition period.
|
|
|
|
**Example:**
|
|
```sql
|
|
CREATE VIEW vw_active_pcs AS
|
|
-- Get PCs from machines table (new Phase 2)
|
|
SELECT
|
|
m.machineid AS pcid,
|
|
m.hostname,
|
|
m.serialnumber,
|
|
...
|
|
FROM machines m
|
|
WHERE m.pctypeid IS NOT NULL
|
|
AND m.lastupdated > DATE_SUB(NOW(), INTERVAL 30 DAY)
|
|
|
|
UNION ALL
|
|
|
|
-- Get PCs from legacy pc table (if any remain)
|
|
SELECT
|
|
p.pcid,
|
|
p.hostname,
|
|
p.serialnumber,
|
|
...
|
|
FROM pc p
|
|
WHERE p.lastupdated > DATE_SUB(NOW(), INTERVAL 30 DAY)
|
|
AND NOT EXISTS (
|
|
SELECT 1 FROM machines m
|
|
WHERE m.hostname = p.hostname AND m.pctypeid IS NOT NULL
|
|
);
|
|
```
|
|
|
|
**Pros:**
|
|
- Works during transition
|
|
- No duplicate view names
|
|
- Handles mixed data scenarios
|
|
|
|
**Cons:**
|
|
- More complex queries
|
|
- Slower performance (UNION)
|
|
- Must remove legacy portions after migration complete
|
|
|
|
---
|
|
|
|
## Recommended Approach
|
|
|
|
**Use Option 1: Drop and Recreate**
|
|
|
|
**Reasoning:**
|
|
1. You're doing a full Phase 2 migration - commit to it fully
|
|
2. Migration window is already scheduled for table changes
|
|
3. Cleaner long-term solution
|
|
4. Easier to test and validate
|
|
5. All pages will use consistent schema
|
|
|
|
**Migration Steps:**
|
|
1. Before migration: Test all updated views on dev database
|
|
2. During migration:
|
|
- After data migration completes
|
|
- DROP all 24 old views
|
|
- CREATE all 24 updated views
|
|
3. After migration: Test all pages that use views
|
|
|
|
---
|
|
|
|
## Views Migration Checklist
|
|
|
|
### Pre-Migration (Dev Testing)
|
|
- [ ] Extract all 27 view definitions from production
|
|
- [ ] Update 24 view definitions for Phase 2 schema
|
|
- [ ] Test updated views on dev database
|
|
- [ ] Identify which ASP pages use which views
|
|
- [ ] Test all pages that use views
|
|
|
|
### During Migration
|
|
- [ ] Backup all view definitions (already in backup file)
|
|
- [ ] After PC data migration completes
|
|
- [ ] DROP 24 views requiring updates
|
|
- [ ] CREATE 24 updated views
|
|
- [ ] Run verification queries
|
|
- [ ] Test critical pages
|
|
|
|
### Post-Migration
|
|
- [ ] Monitor view performance
|
|
- [ ] Check all pages using views
|
|
- [ ] Update documentation
|
|
- [ ] Remove old table references from any remaining code
|
|
|
|
---
|
|
|
|
## Impact on ASP Pages
|
|
|
|
Views are typically used in these types of pages:
|
|
|
|
1. **Display/List Pages** - displaypcs.asp, displaymachines.asp
|
|
2. **Dashboard Pages** - default.asp, reports.asp
|
|
3. **Search Pages** - search.asp
|
|
4. **API Endpoints** - api_*.asp pages
|
|
|
|
**Action Required:**
|
|
1. Identify all ASP pages that query views
|
|
2. Test each page after view migration
|
|
3. Update any pages that break
|
|
|
|
---
|
|
|
|
## DNC Configuration Migration (Special Case)
|
|
|
|
**Problem:** Views reference `pc_dnc_config` and `pc_comm_config` tables
|
|
|
|
**Question:** Where does this data go in Phase 2?
|
|
|
|
**Options:**
|
|
1. **Create new tables:** `machine_dnc_config` (similar structure)
|
|
2. **Use communications table:** Store DNC settings in `settings` JSON field
|
|
3. **Use compliance table:** If DNC is compliance-related
|
|
4. **Keep legacy tables:** Don't migrate DNC config yet (Phase 3?)
|
|
|
|
**Recommendation:** Keep `pc_dnc_config` and `pc_comm_config` tables for now (Phase 3 migration). Update views to join machines table instead of pc table.
|
|
|
|
---
|
|
|
|
## Sample View Conversions
|
|
|
|
### Example 1: vw_active_pcs
|
|
|
|
**OLD (Production):**
|
|
```sql
|
|
CREATE VIEW vw_active_pcs AS
|
|
SELECT
|
|
p.pcid,
|
|
p.hostname,
|
|
p.serialnumber,
|
|
COALESCE(v.vendor, 'Unknown') AS manufacturer,
|
|
m.modelnumber AS model,
|
|
p.loggedinuser,
|
|
p.machinenumber,
|
|
COALESCE(os.operatingsystem, 'Unknown') AS operatingsystem,
|
|
COALESCE(pt.typename, 'Unknown') AS pctype,
|
|
p.lastupdated
|
|
FROM pc p
|
|
LEFT JOIN models m ON p.modelnumberid = m.modelnumberid
|
|
LEFT JOIN vendors v ON m.vendorid = v.vendorid
|
|
LEFT JOIN pctype pt ON p.pctypeid = pt.pctypeid
|
|
LEFT JOIN operatingsystems os ON p.osid = os.osid
|
|
WHERE p.lastupdated > DATE_SUB(NOW(), INTERVAL 30 DAY);
|
|
```
|
|
|
|
**NEW (Phase 2):**
|
|
```sql
|
|
CREATE VIEW vw_active_pcs AS
|
|
SELECT
|
|
m.machineid AS pcid,
|
|
m.hostname,
|
|
m.serialnumber,
|
|
COALESCE(v.vendor, 'Unknown') AS manufacturer,
|
|
mo.modelnumber AS model,
|
|
m.loggedinuser,
|
|
m.machinenumber,
|
|
COALESCE(os.operatingsystem, 'Unknown') AS operatingsystem,
|
|
COALESCE(pt.typename, 'Unknown') AS pctype,
|
|
m.lastupdated
|
|
FROM machines m
|
|
LEFT JOIN models mo ON m.modelnumberid = mo.modelnumberid
|
|
LEFT JOIN vendors v ON mo.vendorid = v.vendorid
|
|
LEFT JOIN pctype pt ON m.pctypeid = pt.pctypeid
|
|
LEFT JOIN operatingsystems os ON m.osid = os.osid
|
|
WHERE m.pctypeid IS NOT NULL -- Only PCs
|
|
AND m.lastupdated > DATE_SUB(NOW(), INTERVAL 30 DAY);
|
|
```
|
|
|
|
**Changes:**
|
|
- `FROM pc p` → `FROM machines m`
|
|
- Added `WHERE m.pctypeid IS NOT NULL` to filter PCs only
|
|
- `m.modelnumberid` alias changed to `mo` to avoid conflict
|
|
|
|
---
|
|
|
|
### Example 2: vw_dualpath_management
|
|
|
|
**OLD (Production):**
|
|
```sql
|
|
CREATE VIEW vw_dualpath_management AS
|
|
SELECT
|
|
p.hostname AS pc_hostname,
|
|
p.pcid,
|
|
pt.typename AS pc_type,
|
|
p.machinenumber AS primary_machine,
|
|
dc.dualpath_enabled,
|
|
dpa.secondary_machine
|
|
FROM pc p
|
|
JOIN pctype pt ON p.pctypeid = pt.pctypeid
|
|
LEFT JOIN pc_dnc_config dc ON p.pcid = dc.pcid
|
|
LEFT JOIN pc_dualpath_assignments dpa ON p.pcid = dpa.pcid
|
|
WHERE p.isactive = 1;
|
|
```
|
|
|
|
**NEW (Phase 2):**
|
|
```sql
|
|
CREATE VIEW vw_dualpath_management AS
|
|
SELECT
|
|
m.hostname AS pc_hostname,
|
|
m.machineid AS pcid,
|
|
pt.typename AS pc_type,
|
|
m.machinenumber AS primary_machine,
|
|
dc.dualpath_enabled,
|
|
m2.machinenumber AS secondary_machine
|
|
FROM machines m
|
|
JOIN pctype pt ON m.pctypeid = pt.pctypeid
|
|
LEFT JOIN pc_dnc_config dc ON m.machineid = dc.pcid -- Note: keep legacy table for now
|
|
LEFT JOIN machinerelationships mr ON m.machineid = mr.machineid
|
|
AND mr.relationshiptypeid = 2 -- Dualpath relationship
|
|
LEFT JOIN machines m2 ON mr.related_machineid = m2.machineid
|
|
WHERE m.pctypeid IS NOT NULL
|
|
AND m.isactive = 1;
|
|
```
|
|
|
|
**Changes:**
|
|
- `FROM pc p` → `FROM machines m WHERE pctypeid IS NOT NULL`
|
|
- `pc_dualpath_assignments` → `machinerelationships` with relationshiptype filter
|
|
- Join to second machine using machinerelationships
|
|
|
|
---
|
|
|
|
### Example 3: vw_infrastructure_summary
|
|
|
|
**OLD (Production):**
|
|
```sql
|
|
CREATE VIEW vw_infrastructure_summary AS
|
|
SELECT 'Switches' AS device_type, COUNT(*) AS total_count FROM switches
|
|
UNION ALL
|
|
SELECT 'Access Points', COUNT(*) FROM accesspoints
|
|
UNION ALL
|
|
SELECT 'Servers', COUNT(*) FROM servers
|
|
UNION ALL
|
|
SELECT 'Cameras', COUNT(*) FROM cameras
|
|
UNION ALL
|
|
SELECT 'IDFs', COUNT(*) FROM idfs;
|
|
```
|
|
|
|
**NEW (Phase 2):**
|
|
```sql
|
|
CREATE VIEW vw_infrastructure_summary AS
|
|
-- Network devices from machines table (Phase 2)
|
|
SELECT
|
|
mt.machinetype AS device_type,
|
|
COUNT(*) AS total_count,
|
|
SUM(CASE WHEN m.isactive = 1 THEN 1 ELSE 0 END) AS active_count
|
|
FROM machines m
|
|
JOIN machinetypes mt ON m.machinetypeid = mt.machinetypeid
|
|
WHERE mt.machinetypeid IN (16, 17, 18, 19, 20) -- Network device types
|
|
GROUP BY mt.machinetype
|
|
|
|
UNION ALL
|
|
|
|
-- Legacy devices from separate tables (if any remain)
|
|
SELECT 'Switches' AS device_type, COUNT(*) AS total_count,
|
|
SUM(CASE WHEN isactive = 1 THEN 1 ELSE 0 END) AS active_count
|
|
FROM switches
|
|
UNION ALL
|
|
SELECT 'Access Points', COUNT(*), SUM(CASE WHEN isactive = 1 THEN 1 ELSE 0 END) FROM accesspoints
|
|
UNION ALL
|
|
SELECT 'Servers', COUNT(*), SUM(CASE WHEN isactive = 1 THEN 1 ELSE 0 END) FROM servers
|
|
UNION ALL
|
|
SELECT 'Cameras', COUNT(*), SUM(CASE WHEN isactive = 1 THEN 1 ELSE 0 END) FROM cameras
|
|
UNION ALL
|
|
SELECT 'IDFs', COUNT(*), SUM(CASE WHEN isactive = 1 THEN 1 ELSE 0 END) FROM idfs;
|
|
```
|
|
|
|
**Changes:**
|
|
- Query machines table where machinetypeid IN (16,17,18,19,20)
|
|
- Keep legacy table queries in UNION for transition period
|
|
- Group by machinetype from machinetypes table
|
|
|
|
---
|
|
|
|
## Critical Decision Points
|
|
|
|
### 1. DNC Configuration Tables
|
|
**Decision Needed:** Migrate pc_dnc_config now or later?
|
|
- **Option A:** Keep for Phase 3, update views to join machines instead of pc
|
|
- **Option B:** Migrate now to new table structure
|
|
|
|
### 2. View Migration Timing
|
|
**Decision Needed:** When to update views?
|
|
- **During migration:** As part of Phase 2 deployment
|
|
- **Before migration:** Create _v2 versions for testing
|
|
- **After migration:** Update after verifying data migrated correctly
|
|
|
|
### 3. Legacy Network Device Tables
|
|
**Decision Needed:** Keep empty legacy tables?
|
|
- **Keep:** For backward compatibility (until Phase 3)
|
|
- **Drop:** Clean up unused tables now
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
1. **Review this analysis** with team
|
|
2. **Make decisions** on DNC config and migration timing
|
|
3. **Create updated view definitions** for all 24 views
|
|
4. **Test views on dev** database with Phase 2 schema
|
|
5. **Add view migration** to production deployment plan
|
|
6. **Update PRODUCTION_MIGRATION_PLAN.md** to include views
|
|
|
|
---
|
|
|
|
## Files to Create
|
|
|
|
1. `/sql/production_migration/views/01_drop_old_views.sql` - DROP old views
|
|
2. `/sql/production_migration/views/02_create_pc_views.sql` - Create updated PC views
|
|
3. `/sql/production_migration/views/03_create_network_views.sql` - Create updated network views
|
|
4. `/sql/production_migration/views/04_create_relationship_views.sql` - Create updated relationship views
|
|
5. `/sql/production_migration/views/05_create_infrastructure_views.sql` - Create updated infrastructure views
|
|
6. `/sql/production_migration/views/06_verify_views.sql` - Verify all views work
|
|
|
|
---
|
|
|
|
**Status:** Analysis Complete - Awaiting Decisions
|
|
**Priority:** HIGH - Views must be updated for Phase 2 to work
|
|
**Risk:** MEDIUM - Views can be recreated if issues occur
|
|
**Estimated Time:** 4-6 hours to update all 24 views + testing
|