Skip to content

Work Instruction Editor Save Logic Overhaul, Database Schema Additions, Updated Import and Export#170

Merged
EyeBrawler merged 85 commits intomainfrom
release/1.0.0-beta.2
Mar 16, 2026
Merged

Work Instruction Editor Save Logic Overhaul, Database Schema Additions, Updated Import and Export#170
EyeBrawler merged 85 commits intomainfrom
release/1.0.0-beta.2

Conversation

@EyeBrawler
Copy link
Copy Markdown
Collaborator

@EyeBrawler EyeBrawler commented Mar 16, 2026

New Features

Spreadsheet import and export now supports...

  • Produced Parts
  • Multiple Associated Products
  • Part node input type via the format: (PART_NAME, PART_NUMBER, INPUT_TYPE)
    • Valid options for INPUT_TYPE are Serial, ProductionLogId, and Tag.

User Import and Export

  • From the "Users" page, you can now import and export users with all their associated roles.

New Tables in the Database Schema (with models and some DTOs)

  • FailureAdjective (for describing a failed attempt)
  • FailureNoun (for specifying what part in a step failed)
  • FailureNounAdjectives (To store relationships between failure nouns and adjectives)
  • SerializablePartRelationship (to explicitly store the relationships between parts)
  • Tags (a model to store data for reusable tags for part traceability)
  • TagHistories (stores the history of reusable tags)

Note: The services and UI do not support these tables yet, that will come in a later pull request.

Bug Fixes

This pull request features a complete overhaul of work instruction save logic. New resolution services (such as the ProductResolver, PartNodeResolver, and the PartDefinitionResolver have been added to more intelligently link work instruction data to existing entities without creating new ones. This significantly improves the integrity of data persisted by the work instruction editor and its reliability.

Note: Data validation in the services still needs more work at this point, especially concerning work instructions and parts with duplicate names and/or version tags.

EyeBrawler and others added 30 commits March 10, 2026 23:00
…n work instructions are cloned for a new version.
…ializablePartRelationship. Adding extra navigation properties to the SerializablePart for convenience.
… checks are done after a work instruction is imported as it is loaded into memory only.
… Component. Also, swapping part name and number positions in the node.
…abase for products, just collects product names.
…. Adding a product resolver service to resolve products at save time.
…. Allows renaming parameter was not being set in MenuBarPhoebe.razor
EyeBrawler and others added 27 commits March 13, 2026 20:30
…kInstructionService to all use the centralized PartDefinitionResolver service.
…t Definition Names in the WorkInstructionFormDTO
…ced parts, resolution happens in the service layer.
… sure that the part node resolver does not use its own DBContext.
…n Duplicate Constraints. Part definitions can no longer share names. No two work instructions can have the same title and version strings."

This reverts commit 12c56f2.
…ype. (called PartNameWithNumberAndInputType)
… Types.

Supported Formats
* PART_NAME
* (PART_NAME)
* (PART_NAME, PART_NUMBER)
* (PART_NAME, PART_NUMBER, INPUT_TYPE)
…ges before searching the database to make new part definition objects.
… see if new part definitions need to be made for products.
@EyeBrawler EyeBrawler merged commit 39b9aa1 into main Mar 16, 2026
1 check passed
@EyeBrawler EyeBrawler deleted the release/1.0.0-beta.2 branch March 16, 2026 20:12
@EyeBrawler EyeBrawler restored the release/1.0.0-beta.2 branch March 16, 2026 20:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant