Skip to content

feat: DAH-4006/4007 create invite to interview document list page#2843

Open
fwextensions wants to merge 13 commits intomainfrom
jdunning/dah-4007-i2i-doc-list
Open

feat: DAH-4006/4007 create invite to interview document list page#2843
fwextensions wants to merge 13 commits intomainfrom
jdunning/dah-4007-i2i-doc-list

Conversation

@fwextensions
Copy link
Copy Markdown
Collaborator

@fwextensions fwextensions commented Mar 28, 2026

Description

Implements the yes/no/later response and document list pages for I2I. For now, the new files are in pages/inviteToApply, but these will probably be reorganized or combined during refactoring.

Jira ticket

https://sfgovdt.jira.com/browse/DAH-4006
https://sfgovdt.jira.com/browse/DAH-4007

Screenshots

image image

Before requesting eng review

Version Control

  • branch name begins with angular if it contains updates to Angular code
  • branch name contains the Jira ticket number
  • PR name follows type: TICKET-NUMBER Description format, use DAH-000 if it does not need a ticket
  • PR name follows urgent: Description format if it is urgent and does not need a ticket

Code quality

  • the set of changes is small
  • all automated code checks pass (linting, tests, coverage, etc.)
  • if the PR is a bugfix, there are tests and logs around the bug

Code conventions

  • web pages are formatted with .scss stylesheets and ui-seeds tokens, rather than inline styles or Tailwind

Review instructions

  • instructions specify which environment(s) it applies to
  • instructions work for PA testers
  • instructions have already been performed at least once

Request eng review

  • PR has needs review label
  • Use Housing Eng group to automatically assign reviewers, and/or assign specific engineers
  • If time sensitive, notify engineers in Slack

Before merging

Request product acceptance (PA) testing

  • PA tested in the review environment (use needs product acceptance label)
  • if PA testing cannot be done, changes are behind a feature flag

…le projects

- Create InviteToInterviewDocuments.tsx modeled on InviteToApplyDocuments
- Add ~130 translation keys under inviteToInterviewPage.documents.*
- 6 document sections: identity, proof of income, bank statements,
  rental history, child custody, housing assistance
- Reuses existing invite-to-apply styles and shared components
- Add Rails route: /listings/:id/invite-to-interview
- Create InviteToInterviewPageController with simple index action
- Create Slim view template rendering InviteToInterviewPage React component
- Add invite-to-interview.tsx entry point with feature flag guard
- Register InviteToInterviewPage in react_application.tsx
- Add InviteToInterview to AppPages enum
- Update rails_best_practices.yml whitelist
Copilot AI review requested due to automatic review settings March 28, 2026 02:07
@wiz-dt-tis
Copy link
Copy Markdown

wiz-dt-tis bot commented Mar 28, 2026

Wiz Scan Summary

Scanner Findings
Vulnerability Finding Vulnerabilities -
Data Finding Sensitive Data 1 Info
Secret Finding Secrets -
IaC Misconfiguration IaC Misconfigurations -
SAST Finding SAST Findings -
Software Management Finding Software Management Findings -
Total 1 Info

View scan details in Wiz

To detect these findings earlier in the dev lifecycle, try using Wiz Code VS Code Extension.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Info Sensitive Data Finding

PII

More Details
Attribute Value
Data Classifier PII/Name
Data Classifier ID BUILTIN-125

Sampled Examples

Key Value
assistance.contact.helpLine.title1 Frc*o
assistance.contact.questionsAboutListings.title1 D****A

Rule ID: BUILTIN-125


To ignore this finding as an exception, reply to this conversation with #wiz_ignore reason

If you'd like to ignore this finding in all future scans, add an exception in the .wiz file (learn more) or create an Ignore Rule (learn more).


To get more details on how to remediate this issue using AI, reply to this conversation with #wiz remediate

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really? You're flagging Francisco and DAHLIA as people's names? 🙄

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Rails + React page for the “Invite to Interview” flow, exposing a documents checklist UI for a listing and wiring it into the existing ReactOnRails app bootstrapping and i18n system.

Changes:

  • Add a new Rails route, controller, and Slim view for /listings/:id/invite-to-interview.
  • Register and implement a new React page (InviteToInterviewPage) and its documents/checklist content component.
  • Add a new AppPages enum entry and introduce English translation strings for the new page.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
config/routes.rb Adds the new invite-to-interview route.
config/rails_best_practices.yml Allows the new controller methods in rails_best_practices config.
app/controllers/invite_to_interview_page_controller.rb New controller that renders the React entrypoint with asset props.
app/views/invite_to_interview_page/invite_to_interview.html.slim Renders the InviteToInterviewPage React component.
app/javascript/packs/react_application.tsx Registers the new React entrypoint with ReactOnRails.
app/javascript/util/routeUtil.ts Adds AppPages.InviteToInterview for page tracking/setup.
app/javascript/pages/inviteToApply/invite-to-interview.tsx New React entrypoint that fetches listing + renders checklist component.
app/javascript/pages/inviteToApply/InviteToInterviewDocuments.tsx Implements the invite-to-interview documents/checklist page UI.
app/assets/json/translations/react/en.json Adds English i18n strings for the new page.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +765 to +769
"inviteToInterviewPage.documents.title": "What you need for %{listingName}",
"inviteToInterviewPage.documents.provide": "Provide:",
"inviteToInterviewPage.documents.checkWhatYouNeed.title": "Check what you need",
"inviteToInterviewPage.documents.checkWhatYouNeed.p1": "You must provide these documents for <strong>yourself</strong> and <strong>anyone else</strong> you will live with:",
"inviteToInterviewPage.documents.checkWhatYouNeed.p2": "<a href='%{link}'>Documents to confirm identity</a>",
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New invite-to-interview translation keys were added only to en.json. The app also ships es.json, zh.json, and tl.json, and these keys are currently missing there, which will lead to missing-string fallbacks (often rendering the raw key) for non-English users. Please add corresponding entries (even temporarily duplicating English) to the other locale files or ensure the i18n system has a defined fallback behavior for these keys.

Copilot uses AI. Check for mistakes.
- Route is now /listings/:id/invite-to-interview/documents
- Controller action renamed from index to documents
- React entry point accepts documentsPath prop like I2A pattern
- Leaves room for future I2I landing pages at /invite-to-interview
@hshaosf hshaosf temporarily deployed to dahlia-webapp-pr-2843 March 28, 2026 18:43 Inactive
Add child margin, list styles, and icon list styles to .accordionContent
so elements inside accordions have the same vertical spacing as elements
in the main page sections.
Replace hardcoded office hours translation with listing.Office_Hours
field from Salesforce data. Remove unused officeHoursValue key.
- Create InviteToInterviewSubmitYourInfo component with schedule
  appointment flow, gather documents, and attend appointment steps
- Add deadline passed/active banner handling
- Add What to expect after appointment and housing counselor sections
- Wire up invite-to-interview.tsx entry point to render the new page
- Add Rails route and controller index action for /listings/:id/invite-to-interview
- Add 33 new translation strings under inviteToInterviewPage.submitYourInfo.*
- Update rails_best_practices.yml with new controller action
@hshaosf hshaosf temporarily deployed to dahlia-webapp-pr-2843 March 29, 2026 00:34 Inactive
- Create InviteToInterviewWithdrawn with same card layout as I2A,
  body text references appointment instead of document submission
- Create InviteToInterviewWaitlist (new page type) with waitlist
  explanation, listing link, and change-answer section
- Create InviteToInterviewDeadlinePassed with leasing agent contact
- Wire all response pages into invite-to-interview.tsx entry point
  with JWT handling mirroring the I2A pattern
- Update controller with JWT decode/encode and response routing
- Add 13 new translation strings for response pages
…tMeLater

Aligns naming convention with the I2A counterpart (InviteToApplyContactMeLater)
@hshaosf hshaosf temporarily deployed to dahlia-webapp-pr-2843 March 29, 2026 00:57 Inactive
- Jest: 10 tests covering deadline passed, withdrawn, contact me later,
  submit your info page, schedule button visibility, and documents page
- RSpec: controller specs for index (with/without params, JWT handling),
  documents action, and React layout usage
- Fix stale InviteToInterviewWaitlist reference in entry point
@hshaosf hshaosf temporarily deployed to dahlia-webapp-pr-2843 March 29, 2026 02:00 Inactive
@hshaosf hshaosf temporarily deployed to dahlia-webapp-pr-2843 March 31, 2026 19:25 Inactive
The bloom-housing Button component doesn't forward the style prop
directly. Using nativeButtonProps to pass it through to the DOM element.
@fwextensions fwextensions changed the title feat: DAH-4007 create invite to interview document list page feat: DAH-4006/4007 create invite to interview document list page Apr 3, 2026
@fwextensions fwextensions added the needs review Pull request needs review label Apr 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs review Pull request needs review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants