Extract common patterns into reusable methods (GetDateRange,
BuildNestQuery, GetPlateWeightByNest, BuildMaterialSummaries).
Add programmedBy filter to materials-to-order endpoint.
Introduce record types for cleaner data passing.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Support /nests/{year}/{nestName} routes to disambiguate older programs
that don't have year digits in the name. Refactor GetNestPathAsync to
handle 2025+ .pep files in flat directory vs older .zip files in year
subdirectories.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add GET /api/analytics/materials-to-order endpoint to retrieve materials
needed for programs with "To Be Cut" status. Returns plate requirements
grouped by material/grade/thickness with associated program names.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add GET /api/nests/parts/search endpoint to search for parts across nests
by part name. Supports filtering by year and customer, with configurable
result limit.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add AnalyticsController with endpoints for tracking material consumption:
- /analytics/material-usage - usage summary with optional monthly grouping
- /analytics/plate-sizes - commonly used plate size analysis
- /analytics/thickness-breakdown - consumption by material thickness
- /analytics/customer-usage - material breakdown per customer
- /analytics/stock-recommendations - stock level suggestions based on history
- /analytics/top-materials - quick summary of most used materials
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add auto-approval for common git commands (add, commit, mv) and tree command
to streamline development workflow.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove development-only restriction for Swagger UI to allow API documentation
access in all environments. This is safe as the service is local-only.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enable auto-approval for reading files from the Roslyn Bridge skill
directory to streamline C# code analysis workflow.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Set Application to "N/A" when converting from PepLib.Nest to satisfy
the required property constraint.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add null-conditional operator for dwg.QtyRequired (dwg?.QtyRequired ?? 0)
- Use string.Empty instead of null for plate names
- Remove unused using statements
These changes prevent potential null reference exceptions and provide
better default values.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add required keyword to string properties across all model classes
- Initialize Part.NestedOn array with Array.Empty<int>()
- Remove unused using statements from model files
This improves null safety and code maintainability.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Provides commands for diagnostics, symbol queries, refs, formatting, and project actions
- Useful for code inspection and maintenance via Roslyn Bridge API
- Add parameters: -RunAsCurrentUser, -ServiceCredential, -DomainUser, -Domain, -User, -UseLocalSystem
- Preflight checks for elevation, service logon right, and directory permissions
- Create service with provided credentials or prompt for current user password by default
- Improve start reliability and status reporting
- Update guidance output to reflect new config
- Drop PepSettings:MaterialsFile from appsettings.json
- Update DEPLOY.md with guidance on service account and note that materials are sourced from DB
- Remove obsolete reference to material.lfn
- Strip directories and extensions and compare using ToUpperInvariant
- Improves resilience when sources differ in path/casing/extension formatting
- Ensures accurate QtyNested across plates with duplicates
- Add GetPartsFromDbAsync(NestHeader) to aggregate quantities and plate indices
- Use NestName + CopyID filter to select correct program set
- Preserve original drawing name case; normalize grouping to avoid duplicates
- Replace PepHelper.GetParts(nest) usage with DB-driven result
- Remove DotNetZip package from PepLib.Core.csproj
- Update DrawingReader, NestReader, and ZipHelper to use System.IO.Compression.ZipArchive
- Simplify stream handling and improve resource disposal
- Keep behavior consistent for loop/plate detection and extraction
- Make all string properties nullable (Name, Customer, Comments, etc.)
- Fixes "all fields are required" error in Swagger UI and API validation
- Filter properties are optional query parameters, not required fields
All filter logic already checks for null values before applying filters,
so this change aligns the model definition with its actual usage.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move Deploy-PepApi.ps1 to scripts/
- Move DEPLOY.md to scripts/
- Update all script path references to scripts/Deploy-PepApi.ps1
- Update deployment documentation with correct paths
- Add clarification to run from repository root
The deploy script already had logic to detect the scripts subfolder,
this change improves repository organization by separating deployment
tooling from source code.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Microsoft.Extensions.Hosting.WindowsServices package (v8.0.1)
- Configure host to use Windows Service lifetime management
- Enables proper startup/shutdown when installed via Deploy-PepApi.ps1
Fixes issue where service would fail to start when deployed as Windows Service.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>