Skip to main content

Project Registration - Implementation Plan

Last Updated: 2025-12-23 Status: In Progress Total Issues: 57 (in Backlog)


Overview

This page tracks the implementation plan for Project Registration workflow improvements. Issues are grouped by root cause and prioritized by impact.

GitHub Project: View Project Board


Progress Summary

PhaseFocusIssuesStatus
1Critical Bugs (Autosave/PR#)#156, #149, #130, #116Pending
2Permissions & Roles7 issuesPending
3Notes & Search3 issuesPending
4Auth & Session6 issuesPending
5Workflow States6 issuesPending
6Form UI6 issuesPending
7Best Practices Refactor-Pending

Issue Categories

Category A: Autosave & PR# Issues (4 issues) - CRITICAL

Root Cause: Backend returns empty projectId, race conditions in autosave

IssueTitleStatus
#156Work Owner can't create task without PR#
#149Autosave corrupts task/project
#130PR# auto-save race condition
#116Autosave breaks dropdown

Category B: Permission & Role Issues (7 issues)

Root Cause: Missing role checks, incorrect authorization

IssueTitleStatus
#126Contractor: Detail tab missing
#127Purchasing can't delete owner's attachments
#132Ownership change rule before approval
#137System Admin edit projects anytime
#138Owner view others' tasks but not edit
#152Contractor cannot view task details
#158Update Role matrix for Safety Officer/Area

Category C: Workflow State Issues (11 issues)

Root Cause: Missing workflow commands, state transitions

IssueTitleStatus
#73Owner can't hand over to contractor at start
#76Approved to Closed transition
#78Recall cannot be done once canceled
#84Cannot view canceled task
#85Restore canceled task
#86Cancellation status inconsistency
#106Pre-start Work Permit workflow
#107Disable reviews after completion
#154Clarify second submission routing
#155Auto-create 3 tasks for contractor
#160Safety Officer/Area tasks

Category D: Form & UI Issues (6 issues)

Root Cause: UI improvements needed

IssueTitleStatus
#108Improve pre-work procedures form
#117Redesign pre-work form
#120Remove default setting option
#131Sort PR# by Unused/Used
#150Test long Thai text
#153Project info on contractor tasks

Category E: Auth & Email Issues (7 issues)

Root Cause: Session/email configuration

IssueTitleStatus
#41Automatic email invitation
#118Session expires causing data loss
#119Duplicate email clears form
#121Extend invite expiry to 72 hours
#122Add non-expiring app link
#123Direct app URL when expired
#124Password visibility toggle

Category F: Notes & Attachments Issues (2 issues)

Root Cause: Endpoint/permission issues

IssueTitleStatus
#151Cannot add Note (405 Error)
#127Attachment ownership

Category G: Search & Filter Issues (2 issues)

Root Cause: Missing/broken functionality

IssueTitleStatus
#57Search button not working
#71Improving task search

Category H: Admin & Settings Issues (3 issues)

Root Cause: Missing admin features

IssueTitleStatus
#35System Admin define workspace area
#64Update user info on dialog
#134Clear All Data option

Category I: Future Features (15 issues)

Root Cause: New feature requests

IssueTitlePriority
#45Digital signature/approvalMedium
#55Joint project creationMedium
#56Project key as PR No.Low
#65Work procedure confirmation docMedium
#69Contractor position during trainingLow
#70QR Code public displayLow
#75Enhance command flowMedium
#82Contractor accounts via agentsLow
#87Improve Task Assignee/AssignerMedium
#92Work-owner role behaviorMedium
#97Contractor supervisor sectionLow
#133Lock record after approvalHigh
#135Frontend mockup next phaseLow
#136Test email notificationsTesting
#159Email to contractor after approvalMedium

Implementation Details

Phase 1: Critical Bug Fixes

Goal: Fix blocking autosave/PR# issues

Root Cause Analysis:

// SaveTaskDocumentFormEndpoint.cs (Line 58)
// BUG: Returns hardcoded Guid.Empty instead of actual projectId
await Send.ResultAsync(
TypedResults.Ok(new SaveTaskDocumentFormResponse(
documentFormRequest.Task.Id,
Guid.Empty // <-- BUG: Should return task.ProjectId
))
);

Fix Steps:

  1. Update SaveTaskDocumentFormEndpoint.cs to return actual projectId
  2. Update frontend to sync projectId from response
  3. Add autosave request deduplication
  4. Pause autosave when dropdown is open
  5. Allow task creation without PR# (warning instead of block)

Files to Modify:

  • backend/SafetyApp.WebApi/Features/Tasks/SaveTaskDocumentFormEndpoint.cs
  • frontend/src/app/features/docs/forms/project-registration-form.component.ts
  • frontend/src/app/features/tasks/review-task/review-task.service.ts

Phase 7: Apply Work Permit Best Practices (LAST)

Goal: Modernize Project Registration form using patterns from Work Permit prototype

Best Practices to Apply:

  1. Extract Sub-Components (reduce 1,122 lines to ~300 lines)
  2. Add Collapsible Sections with expand/collapse buttons
  3. Migrate to FormInput Model for type-safe form inputs
  4. Use Inline-Edit Component for space-efficient fields

Changelog

2025-12-23

  • Initial plan created
  • 57 issues categorized into 9 categories
  • 7 implementation phases defined
  • Plan persisted to docs site