Skip to content

feat: implement step 6 (award) for procurement tracker#5637

Draft
josbell wants to merge 15 commits intomainfrom
OPS-1640/procurement-tracker-step-6-requester
Draft

feat: implement step 6 (award) for procurement tracker#5637
josbell wants to merge 15 commits intomainfrom
OPS-1640/procurement-tracker-step-6-requester

Conversation

@josbell
Copy link
Copy Markdown
Contributor

@josbell josbell commented May 8, 2026

Summary

Implements Step 6 (Award) of the Procurement Tracker workflow, allowing CORs to track and complete the final award milestone in the procurement lifecycle.

Changes

Backend

  • Added database migration with 12 new award_* fields for Step 6
  • Implemented 3 validation rules:
    • AwardCompletionRequiredFieldsRule - validates required fields and date constraints
    • AwardApprovalRequiredRule - enforces approval_status = APPROVED before completion
    • AwardAgreementDataRequiredRule - validates Vendor and CLINs exist for contracts
  • Updated service layer field mapping and auto-advance logic
  • Fixed schema to preserve AWARD approval fields in API responses
  • Added unit and integration tests (8 integration tests covering full flow)

Frontend

  • Created Step 6 component with 3 render states (read-only, active form, completed)
  • Implemented Vest v6 validation suite for date and user fields
  • Created custom hook for state management and API integration
  • Built Request Award Approval page with Step 5 prerequisite check
  • Integrated into main procurement tracker with feature flag gate
  • Added route /agreements/:id/award-approval
  • Added TypeScript types and component tests

Testing

  • Backend unit tests pass
  • Backend integration tests pass (8 tests)
  • Frontend validation suite tests pass
  • Backend linting passes
  • Frontend linting passes
  • Manual QA (pending)
  • E2E tests (pending)
  • CI passes (pending)

Manual QA Checklist

See implementation summary at .claude/stories/OPS-1640-step-6-implementation-summary.md (local only, not in repo)

Key flows to test:

  1. Save target completion date
  2. Request award approval
  3. Complete step after approval approved
  4. Validation errors (missing vendor, missing CLINs, no approval)
  5. Step 5 prerequisite check
  6. BLI in review check

Known Limitations

  • Approval workflow saves state only - actual Division Director approval flow not implemented
  • For testing, manually set approval_status = "APPROVED" in database
  • Email notifications not implemented

Related Issues

Closes #1640

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

josbell and others added 13 commits May 7, 2026 12:05
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…tion

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@josbell josbell self-assigned this May 8, 2026
josbell and others added 2 commits May 7, 2026 18:24
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
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.

Step 6 of Procurement Tracker - Award (Submitter/Requester)

1 participant