Skip to content

feat(FR-2762): add deployment preset detail view in VFolderDeployModal#7127

Open
agatha197 wants to merge 6 commits into04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modalfrom
04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher
Open

feat(FR-2762): add deployment preset detail view in VFolderDeployModal#7127
agatha197 wants to merge 6 commits into04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modalfrom
04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher

Conversation

@agatha197
Copy link
Copy Markdown
Contributor

@agatha197 agatha197 commented Apr 28, 2026

Resolves #7122 (FR-2762)

Summary

  • Add DeploymentPresetDetailModal component — read-only modal that fetches preset data via Relay and renders DeploymentPresetDetailContent inside a BAIModal
  • Add DeploymentPresetDetailContent component — displays preset configuration in BAICard sections (Image, Cluster, Resources, Deployment Defaults)
  • Add info button (InfoCircleOutlined) next to the preset BAISelect in VFolderDeployModal, following the VFolderSelect pattern (BAIFlex + Space.Compact); disabled when no preset is selected
  • Place DeploymentPresetDetailModal as a sibling of Form (not inside Form.Item) to prevent double Relay query caused by Form.Item cloning its children on each render
  • Fix rowIdid field in ServiceLauncherPageContent deployment preset query (DeploymentRevisionPreset exposes id, not rowId)
  • Add modelService.DeploymentPresetDetail i18n key to all 22 locale files

Copy link
Copy Markdown
Contributor Author

agatha197 commented Apr 28, 2026

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • flow:merge-queue - adds this PR to the back of the merge queue
  • flow:hotfix - for urgent changes, fast-track this PR to the front of the merge queue

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has required the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 28, 2026

Coverage report for ./react

St.
Category Percentage Covered / Total
🔴 Statements
7.96% (-0.01% 🔻)
1859/23350
🔴 Branches
7.16% (-0.01% 🔻)
1187/16578
🔴 Functions
4.71% (+0.01% 🔼)
297/6305
🔴 Lines
7.74% (-0% 🔻)
1750/22611
Show new covered files 🐣
St.
File Statements Branches Functions Lines
🔴
... / DeploymentPresetDetailModal.tsx
0% 0% 0% 0%

Test suite run success

865 tests passing in 40 suites.

Report generated by 🧪jest coverage report action from 4c5c5df

@agatha197
Copy link
Copy Markdown
Contributor Author

Review Summary — FR-2762

I reviewed this PR against .specs/FR-2750-deployment-revision-preset-ui/spec.md (2차 마일스톤) and the project conventions for 'use memo', Relay/Suspense, antd v6 props, and the VFolderSelect button pattern.

What looks good

  • 'use memo' directive on both DeploymentPresetDetailModal and DeploymentPresetDetailModalContent — no useMemo / useCallback introduced.
  • Capability gate isSupportDeploymentPreset = baiClient.supports('deployment-preset') correctly drops the entire selector and uses fetchPolicy: 'store-only' for the list query when unsupported, avoiding a wasted network call.
  • VFolderSelect pattern is mirrored: BAIFlex direction="row" gap="xs" + Space.Compact housing the ⓘ Button, disabled={!selectedPresetId} matches the spec ("선택 전 disabled").
  • Read-only modal: BAIModal with footer={null}, no edit/delete buttons in the modal — matches "Modal 내 편집·삭제 버튼 없음" acceptance criterion.
  • Relay query uses network-only fetch policy on detail open (correct: a fresh modal open should reflect any edits since the list was last loaded).
  • All 21 locale files updated with modelService.DeploymentPresetDetail (PR description says 22; the repo has 21 — description-only nit).
  • antd v6 props: BAIModal destroyOnHidden (not destroyOnClose) used correctly. No deprecated Alert.message / Steps.direction-class diagnostics introduced.

Findings addressed (1 fix)

MEDIUM — Missing error boundary around modal Suspense (react/src/components/DeploymentPresetDetailModal.tsx)

The Suspense block had no error boundary. If useLazyLoadQuery rejected (network failure, preset deleted between list-fetch and click, permission revoked, schema mismatch), the error would bubble past the modal to whatever ancestor boundary catches first — likely the page-level MainLayout boundary, taking down the entire service launcher form the user is currently filling out.

Fixed by wrapping the inner Suspense in ErrorBoundaryWithNullFallback, matching the pattern already used in AutoScalingRuleEditorModal and ModelCardDrawer. On error the modal body simply renders nothing instead of crashing the page; the user can close the modal and continue editing the form.

Commit: 4e339c7f2 fix(FR-2762): wrap preset detail modal Suspense in error boundary

Findings considered, not changed

  • Space.Compact wraps a single Button. Functionally a no-op today, but matches the VFolderSelect pattern verbatim and leaves room for future siblings (refresh, edit). Kept for codebase consistency.
  • Tooltip over a disabled Button — antd's pointer-events suppression on disabled buttons can swallow Tooltip hover. VFolderSelect uses the identical pattern in production (disabled={!value} + <Tooltip>); deferring any change to a project-wide convention update.
  • Selector remains visible in edit mode (when endpoint exists) because it's nested under (baiClient.supports('modify-endpoint') || !endpoint). The 2차 마일스톤 spec wording targets the creation screen, but the selection isn't wired to form values yet, so this is purely cosmetic and does not affect submission.

Verification

  • bash scripts/verify.sh=== ALL PASS === (Relay, Lint, Format, TypeScript)

@agatha197 agatha197 changed the base branch from 04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modal to graphite-base/7127 April 28, 2026 07:03
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher branch from 4e339c7 to d91e348 Compare April 28, 2026 07:04
@agatha197 agatha197 force-pushed the graphite-base/7127 branch from b2ca96c to b0f5fb7 Compare April 28, 2026 07:04
@agatha197 agatha197 changed the base branch from graphite-base/7127 to 04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modal April 28, 2026 07:04
@agatha197 agatha197 changed the base branch from 04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modal to graphite-base/7127 April 28, 2026 12:15
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher branch from d91e348 to c0f02a2 Compare April 28, 2026 12:17
@agatha197 agatha197 force-pushed the graphite-base/7127 branch from b0f5fb7 to 69c1ee3 Compare April 28, 2026 12:17
@agatha197 agatha197 changed the base branch from graphite-base/7127 to 04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modal April 28, 2026 12:17
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher branch from c0f02a2 to f4e1020 Compare April 28, 2026 12:20
@agatha197 agatha197 marked this pull request as draft April 28, 2026 13:06
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher branch from f4e1020 to f4bc43d Compare April 30, 2026 02:34
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modal branch from d769590 to adc2b11 Compare April 30, 2026 02:34
@agatha197 agatha197 changed the base branch from 04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modal to graphite-base/7127 April 30, 2026 06:48
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher branch from f4bc43d to d854b85 Compare April 30, 2026 08:07
@agatha197 agatha197 force-pushed the graphite-base/7127 branch 2 times, most recently from 4bbc1f8 to cc5c7ab Compare April 30, 2026 12:17
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher branch 2 times, most recently from 6d32d63 to 8d4f518 Compare April 30, 2026 13:28
@agatha197 agatha197 force-pushed the graphite-base/7127 branch from cc5c7ab to c6a2244 Compare April 30, 2026 13:28
@agatha197 agatha197 force-pushed the graphite-base/7127 branch from c6a2244 to 1146cb6 Compare April 30, 2026 14:31
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher branch from 8d4f518 to c144ece Compare April 30, 2026 14:31
@agatha197 agatha197 changed the base branch from graphite-base/7127 to 04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modal April 30, 2026 14:32
@agatha197 agatha197 changed the title feat(FR-2762): add deployment preset detail view in service launcher feat(FR-2762): add DeploymentPresetDetailModal component Apr 30, 2026
@agatha197 agatha197 marked this pull request as ready for review April 30, 2026 15:15
@agatha197 agatha197 changed the title feat(FR-2762): add DeploymentPresetDetailModal component feat(FR-2762): add deployment preset detail view in VFolderDeployModal Apr 30, 2026
agatha197 added 5 commits May 1, 2026 00:35
Add DeploymentPresetDetailModal and wire it into ServiceLauncherPageContent.
The preset selector shows an info button (disabled until a preset is selected)
that opens a read-only modal reusing DeploymentPresetDetailContent from FR-2761.
Also adds the DeploymentPresetDetail i18n key to all 22 locales.
Prevent uncaught errors (network failure, deleted preset, permission)
from bubbling up past the modal by pairing the inner Suspense with
ErrorBoundaryWithNullFallback, matching the pattern used by
AutoScalingRuleEditorModal and ModelCardDrawer.
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2762_add_deployment_preset_detail_view_in_service_launcher branch from cdb1aff to 4243c10 Compare April 30, 2026 15:35
@agatha197 agatha197 force-pushed the 04-28-feat_fr-2761_add_deployment_preset_create_edit_delete_modal branch from 1146cb6 to e93e2bf Compare April 30, 2026 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:i18n Localization area:ux UI / UX issue. size:XL 500~ LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant