Commit Graph

22 Commits

Author SHA1 Message Date
cproudlock
b0b300babd Update displaysubnet.asp to match displaypc.asp style, add email API helper
- Rewrite displaysubnet.asp with two-column layout and profile card
- Add Details, Devices, and Edit tabs matching other display pages
- Use parameterized queries and HTML encoding for security
- Fix device queries to use machines/communications tables
- Add includes/email.asp helper for Python Email API integration
- Update api.asp GetShopfloorPCs to include all PC types with 10.134.* IPs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 17:44:44 -05:00
cproudlock
91fe5a6c66 Add UDC Performance Dashboard and Tool Health features
- Add displayudc.asp with Dashboard tab containing:
  - Production Trend chart (daily parts)
  - OOT Rate Trend chart (daily OOT %)
  - Machine Utilization chart (top 10 by runtime hours)
  - Top Operators chart (top 10 by parts produced)
- Add tabs for drill-down: Live Activity, Operators, Machines, Parts,
  Quality/OOT, Timing, Activity Log, Tool Health, Uptime, IT Diagnostics

- Add Tool Health section to displaymachine.asp UDC tab:
  - Summary cards (tools monitored, measurements, OOT count)
  - Tool status table with health indicators
  - Recent OOT events display

- Add UDC API endpoints in api.asp:
  - getUDCPartRuns, getUDCOperatorStats, getUDCMachineStats, getUDCManualTiming

- Add sql/udctables.sql schema for UDC data storage

- Update docs/API.md with UDC endpoint documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-16 07:54:13 -05:00
cproudlock
a1a10a51d2 eDNC: Use machineid instead of hostname for proper FK relationship
- ednclogs table now uses machineid to link to machines table
- Removed redundant hostname storage (derive from machines table)
- Updated LogDNCEvent to look up and insert machineid
- Updated GetDNCStats to join machines table for hostname
- Updated displaypc.asp queries to use machineid directly
- sql/ednc_tables.sql is now a migration script for existing production

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 09:33:27 -05:00
cproudlock
4e37378923 Add eDNC-Fix API endpoints and displaypc.asp integration
API endpoints:
- logDNCEvent: Log events from eDNC-Fix PowerShell script
- getDNCStats: Get all eDNC installations and stats

Database tables (sql/ednc_tables.sql):
- ednc_logs: Event log entries
- ednc_installations: Per-hostname tracking

displaypc.asp:
- Shows eDNC-Fix stats in Applications tab if installed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 08:55:27 -05:00
cproudlock
c96f1c4c0a Fix column name in getRecordedIP API
- Change communicationid to comid (correct column name)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 08:21:29 -05:00
cproudlock
131aaaddbf Centralize credentials and make migration idempotent
- Move all DB credentials to config.asp with DSN/ODBC toggle
- Add Zabbix API URL and token to centralized config
- Update sql.asp, api.asp, apiusb.asp, zabbix.asp to use config
- Add GetConnectionString() and GetEmployeeConnectionString() functions
- Make migration SQL idempotent (safe to run multiple times)
- Add duplicate index cleanup (appname_2) to migration
- Document employee DB access limitation in CLAUDE.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 08:11:28 -05:00
cproudlock
f8083be467 Add automatic controller propagation for dualpath machines
When a PC is assigned to control equipment that has a dualpath relationship,
the controller is now automatically propagated to the dualpath partner machine.

Changes:
- includes/db_helpers.asp: Add PropagateControllerToDualpathMachines() and
  PropagateControllerFromDualpathMachine() helper functions
- savemachine_direct.asp: Call propagation on new equipment creation
- savemachineedit.asp: Call propagation when editing equipment relationships
- api.asp: Add PropagateControllerToDualpathMachinesAPI() for PowerShell API

Also includes one-time fix script (sql/fix_dualpath_controller_relationships.sql)
that fixes 140 backwards relationships (Equipment->PC to PC->Equipment) and
propagates controllers to 30 dualpath machines that were missing them.

Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:04:01 -05:00
cproudlock
30ea1bb42f Execute naming convention fix on dev - tables renamed, ASP updated
Database changes applied:
- machine_overrides -> machineoverrides
- pc_comm_config -> commconfig
- pc_dnc_config -> dncconfig
- pc_dualpath_assignments -> dualpathassignments
- pc_network_interfaces -> networkinterfaces
- usb_checkouts -> usbcheckouts

ASP files updated (10 files):
- api.asp, api_usb.asp
- displaypc.asp, displaysubnet.asp, displaymachine.asp
- displayusb.asp, displayprofile.asp
- usb_history.asp, savecheckin_usb.asp, savecheckout_usb.asp

9 views recreated with new table references.

Tested and verified working on dev environment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 14:59:47 -05:00
cproudlock
f54d4bd5cb Add machine map editor and fix machine map display
- Create machine_map_editor.asp for bulk position editing
  - Draggable Leaflet markers for repositioning machines
  - Sidebar with filterable machine list
  - Pending changes tracking with save/reset functionality
  - Proper Y-axis coordinate conversion (2550 - top)

- Update machine_map.asp
  - Reduce marker size from 20px to 12px to reduce overlap
  - Filter out network devices (16-20) and PCs (33+) from display
  - Show equipment only (machinetypeid 2-15)

- Add updateMachinePositions API endpoint in api.asp
  - Accepts JSON array of position changes
  - Updates mapleft/maptop for multiple machines

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 18:28:09 -05:00
cproudlock
40e14520e2 Add WinRM filter, VNC IP fallback, UDC/CLM process detection
displaypcs.asp:
- Replace "All Time" filter with WinRM status filter
- Options: All, Needs WinRM (Has Equipment), Has WinRM, No WinRM
- Add VNC IP fallback when hostname unavailable

displaypc.asp:
- Add VNC IP fallback when hostname unavailable

api.asp:
- Add isactive field support for installedapps table
- UDC/CLM process detection sets isactive=1 if running, 0 if not

displaymachines.asp:
- Fix to exclude PC machine types (machinetypeid >= 33)
- PCs were incorrectly showing on equipment list

Update-ShopfloorPCs-Remote.ps1:
- Add UDC.exe and PPMon.exe (CLM) process detection
- Set isactive flag based on running process
- Add 10.134.* to TrustedHosts for IP fallback connections

Update-PC-CompleteAsset.ps1:
- Add UDC/CLM process detection for local execution
- Set isactive flag on tracked applications

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 16:26:15 -05:00
cproudlock
d118b49735 Inline pctypeId logic to fix production Object required error 2025-12-09 10:47:09 -05:00
cproudlock
6785a51da0 Fix pctypeid in inline UpdateCompleteAsset, add HEATTREAT variant, add relationship notification
api.asp:
- Add pctypeid to inline UPDATE and INSERT statements in UpdateCompleteAsset
- Call GetPCTypeIdFromPCType to properly map pcType string to pctypeid
- Add "HEATTREAT" (no space) variant to GetPCTypeIdFromPCType function

displaypc.asp:
- Add relationship notification for PC types that can control equipment
  (CMM=5, Wax/Trace=6, Keyence=7, Genspect=8, Heat Treat=9, Part Marker=10)
- Shows info alert with link to Edit Machine page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 10:36:08 -05:00
cproudlock
1eb3aceeb4 Fix pctypeid UPDATE, add installedApps handling, fix network_map IDF query
- api.asp: Add pctypeid to UPDATE statement so PC type changes are saved
  (was only set on INSERT, not UPDATE - Heat Treat PCs stayed as Shopfloor)
- api.asp: Add installedApps parameter and SaveInstalledApps() function
  to save tracked apps during updateCompleteAsset calls
- network_map.asp: Fix query to use m.machinetypeid instead of mo.machinetypeid
  (IDFs and other network devices weren't appearing on map)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 10:23:01 -05:00
cproudlock
cd9058d81e Add PC uptime tracking feature
- Database: Add lastboottime column to machines table
- API: Accept lastBootUpTime parameter and store in lastboottime column
- PowerShell: Collect LastBootUpTime from Win32_OperatingSystem
  - Update-PC-Minimal.ps1: Add last boot time collection
  - Update-ShopfloorPCs-Remote.ps1: Add last boot time collection and API posting
- Display: Add Uptime column to displaypcs.asp with color-coded badges
  - > 90 days: red badge
  - > 30 days: yellow badge
  - > 7 days: blue badge
  - <= 7 days: muted text
- Filter: Add "Uptime > X days" filter dropdown (7, 30, 90 days)
- SQL: Production migration script for lastboottime column

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 09:36:23 -05:00
cproudlock
53fd7e2214 Consolidate PC machinetypeid: all PCs use 33, pctypeid determines type
- Simplified GetMachineTypeIdFromPCType() to always return 33 (PC)
- PC type differentiation now handled entirely by pctypeid
- Updated savedevice.asp: 28 -> 33
- Updated savedevice_direct.asp: 36 -> 33, added pctypeid
- Removed redundant machinetypeid mapping logic (36-43)
- All 317 existing PCs already use machinetypeid=33

Schema simplified:
  machinetypeid=33 (PC) + pctypeid determines specific type
  pctypeid: 1=Standard, 2=Engineer, 3=Shopfloor, 5=CMM, etc.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 07:53:27 -05:00
cproudlock
adeff46d80 Fix API to set pctypeid when inserting new PCs
- Added GetPCTypeIdFromPCType() function to map pcType strings to pctypeid
- INSERT now includes pctypeid column (was missing, causing PCs to not be
  properly identified as PCs in Phase 2 schema)
- pctypeid mapping: Standard=1, Engineer=2, Shopfloor=3, CMM=5, Wax/Trace=6,
  Keyence=7, Genspect/EAS1000=8, Heat Treat=9, Part Marker=10
- WJPRT* pattern override now sets both machinetypeid and pctypeid
- Fixed EAS1000/GENSPECT to map to same pctypeid (8)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 07:33:37 -05:00
cproudlock
81f905f0b0 Replace machinetypeid 33-43 checks with pctypeid throughout codebase
- PCs now identified by pctypeid IS NOT NULL (not machinetypeid >= 33)
- Equipment identified by pctypeid IS NULL (not machinetypeid < 33)
- Updated 8 files: search.asp, savemachineedit.asp, displaymachine.asp,
  displaypc.asp, displaypcs.asp, machine_map.asp, displaymachines.asp, api.asp
- Simplified queries and removed redundant machinetypeid checks
- Updated all related comments to reflect new pattern

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-09 07:24:20 -05:00
cproudlock
659e8bad4b Update pages to use pctypeid instead of machinetypeid IN (33-43)
- PCs identified by pctypeid IS NOT NULL instead of machinetypeid list
- Equipment identified by pctypeid IS NULL instead of NOT IN list
- Fixed devicecamera.asp: IDF dropdown uses machinetypeid 17, not 34
- Fixed displaypcs.asp: measuring tool filter uses pctypeid = 7

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 15:46:48 -05:00
cproudlock
c7834d4b99 Enhance WinRM remote script with app tracking and IP fallback
- Fix FormTracePak app_id from 68 to 76 (68 is Media Creator Full Edition)
- Add installed app tracking to remote WinRM script with embedded patterns
- Add IP fallback for failed hostname connections (uses recorded 10.134.* IPs)
- Add getRecordedIP API endpoint to lookup primary IP by hostname
- Mark 10.134.*.* as primary IPs, other ranges as secondary/equipment IPs
- Fix WinRM serialization issue by converting matched apps to JSON before return

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 16:36:44 -05:00
cproudlock
996705b4fd Add daily log rotation to api.asp
Issue: api.log was growing indefinitely with no rotation
Impact: With 200+ PCs reporting daily, log file would grow to 2+ GB/year

Fix: Changed logging to create daily log files
- Old: logs/api.log (single file, grows forever)
- New: logs/api-YYYY-MM-DD.log (one file per day)

Example log files:
- logs/api-2025-11-21.log
- logs/api-2025-11-22.log
- logs/api-2025-11-23.log

Benefits:
- Easier to troubleshoot (find logs by date)
- Automatic separation (no manual log rotation needed)
- Can delete old logs after N days
- File sizes manageable (~6MB/day estimated)

Cleanup Recommendation:
Delete logs older than 30 days:
  forfiles /p "C:\inetpub\wwwroot\shopdb\logs" /s /m api-*.log /d -30 /c "cmd /c del @path"

Or use Windows Task Scheduler to automate cleanup

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 11:23:11 -05:00
cproudlock
bb95615ca9 Fix application tracking in api.asp for Phase 2 schema
Issues Fixed:
1. UpdateInstalledApps() was using wrong table name 'machineapplications'
   - Changed to correct table 'installedapps'
2. INSERT was missing 'isactive' column required by installedapps table
3. GetOrCreateApplication() was using wrong column names:
   - 'applicationid' → 'appid' (primary key)
   - 'applicationname' → 'appname'
   - Removed 'version' column (doesn't exist in applications table)
   - Now stores version info in 'appdescription' field

How It Works Now:
- PowerShell script collects installed apps from registry
- Filters to tracked apps (UDC, PPDCS, Oracle, Tanium, eDNC, etc.)
- Sends to api.asp with action=updateInstalledApps
- API deletes old app mappings for PC: DELETE FROM installedapps
- API creates/finds apps in 'applications' table
- API inserts new mappings: INSERT INTO installedapps (machineid, appid, isactive)

Tables Used:
- applications (appid, appname, appdescription, isactive)
- installedapps (machineid, appid, isactive)

Impact: Application tracking now works correctly with Phase 2 schema

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 10:44:56 -05:00
cproudlock
4bcaf0913f Complete Phase 2 PC migration and network device infrastructure updates
This commit captures 20 days of development work (Oct 28 - Nov 17, 2025)
including Phase 2 PC migration, network device unification, and numerous
bug fixes and enhancements.

## Major Changes

### Phase 2: PC Migration to Unified Machines Table
- Migrated all PCs from separate `pc` table to unified `machines` table
- PCs identified by `pctypeid IS NOT NULL` in machines table
- Updated all display, add, edit, and update pages for PC functionality
- Comprehensive testing: 15 critical pages verified working

### Network Device Infrastructure Unification
- Unified network devices (Switches, Servers, Cameras, IDFs, Access Points)
  into machines table using machinetypeid 16-20
- Updated vw_network_devices view to query both legacy tables and machines table
- Enhanced network_map.asp to display all device types from machines table
- Fixed location display for all network device types

### Machine Management System
- Complete machine CRUD operations (Create, Read, Update, Delete)
- 5-tab interface: Basic Info, Network, Relationships, Compliance, Location
- Support for multiple network interfaces (up to 3 per machine)
- Machine relationships: Controls (PC→Equipment) and Dualpath (redundancy)
- Compliance tracking with third-party vendor management

### Bug Fixes (Nov 7-14, 2025)
- Fixed editdevice.asp undefined variable (pcid → machineid)
- Migrated updatedevice.asp and updatedevice_direct.asp to Phase 2 schema
- Fixed network_map.asp to show all network device types
- Fixed displaylocation.asp to query machines table for network devices
- Fixed IP columns migration and compliance column handling
- Fixed dateadded column errors in network device pages
- Fixed PowerShell API integration issues
- Simplified displaypcs.asp (removed IP and Machine columns)

### Documentation
- Created comprehensive session summaries (Nov 10, 13, 14)
- Added Machine Quick Reference Guide
- Documented all bug fixes and migrations
- API documentation for ASP endpoints

### Database Schema Updates
- Phase 2 migration scripts for PC consolidation
- Phase 3 migration scripts for network devices
- Updated views to support hybrid table approach
- Sample data creation/removal scripts for testing

## Files Modified (Key Changes)
- editdevice.asp, updatedevice.asp, updatedevice_direct.asp
- network_map.asp, network_devices.asp, displaylocation.asp
- displaypcs.asp, displaypc.asp, displaymachine.asp
- All machine management pages (add/edit/save/update)
- save_network_device.asp (fixed machine type IDs)

## Testing Status
- 15 critical pages tested and verified
- Phase 2 PC functionality: 100% working
- Network device display: 100% working
- Security: All queries use parameterized commands

## Production Readiness
- Core functionality complete and tested
- 85% production ready
- Remaining: Full test coverage of all 123 ASP pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 20:04:06 -05:00