82 lines
2.9 KiB
Markdown
82 lines
2.9 KiB
Markdown
# PR-10a Bank Composition Details DTO Projection
|
|
|
|
Domain owner: `docs/studio`
|
|
Cross-domain impact: `docs/packer`
|
|
|
|
## Briefing
|
|
|
|
Introduce the Studio-owned DTO projection boundary for `Bank Composition` inside `Asset Details`.
|
|
|
|
This slice converts runtime/details source data into section-facing DTOs before any new section UI or middleware is added.
|
|
|
|
The goal is to land the data boundary first, so the UI work that follows does not bind directly to snapshot rows or raw `asset.json` shapes.
|
|
|
|
## Objective
|
|
|
|
After this PR:
|
|
|
|
- `Asset Details` has a Studio-owned DTO family for `Bank Composition`;
|
|
- snapshot-derived data feeds `available` rows;
|
|
- persisted selection data feeds `selected` rows;
|
|
- only non-blocking files reach the `available` DTO list;
|
|
- selected ordering is represented in a way that can later map to explicit persisted indexes.
|
|
|
|
## Dependencies
|
|
|
|
- [`../decisions/Bank Composition Details DTO Projection Decision.md`](../decisions/Bank%20Composition%20Details%20DTO%20Projection%20Decision.md)
|
|
- [`./PR-07c-asset-details-and-form-lifecycle.md`](./PR-07c-asset-details-and-form-lifecycle.md)
|
|
- [`../specs/4. Assets Workspace Specification.md`](../specs/4.%20Assets%20Workspace%20Specification.md)
|
|
|
|
## Scope
|
|
|
|
- add the Studio DTO family for bank-composition rows and section data
|
|
- map details/snapshot source data into:
|
|
- `available`
|
|
- `selected`
|
|
- start the DTO field set with:
|
|
- `path`
|
|
- `displayName`
|
|
- `size`
|
|
- `lastModified`
|
|
- `fingerprint`
|
|
- `metadata`
|
|
- filter blocking files out of the `available` projection
|
|
- ensure selected ordering is available to the UI as ordered row state
|
|
|
|
## Non-Goals
|
|
|
|
- no new section UI yet
|
|
- no dual-list component yet
|
|
- no capacity meter yet
|
|
- no staged-edit coordinator yet
|
|
- no persistence/apply integration yet
|
|
|
|
## Execution Method
|
|
|
|
1. Introduce the DTO types for bank-composition details data.
|
|
2. Extend the details projection path to populate `available` and `selected`.
|
|
3. Filter blocking files before DTO emission.
|
|
4. Preserve selected ordering in the section-facing projection.
|
|
5. Add regression tests around DTO mapping and filtering.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- `Asset Details` can provide Studio-owned `Bank Composition` DTOs without exposing raw packer internals to the section
|
|
- `available` rows come from current runtime/details data
|
|
- blocking files do not appear in `available`
|
|
- `selected` rows are available as ordered data
|
|
- the new DTO projection is ready for subsequent section and component slices
|
|
|
|
## Validation
|
|
|
|
- unit tests for DTO mapping from details/snapshot source data
|
|
- unit tests for blocking-file exclusion
|
|
- unit tests for selected-row ordering preservation
|
|
|
|
## Affected Artifacts
|
|
|
|
- `prometeu-studio/src/main/java/p/studio/workspaces/assets/details/...`
|
|
- `prometeu-studio/src/main/java/p/studio/workspaces/assets/messages/...`
|
|
- tests for details projection and DTO mapping
|
|
- cross-domain touchpoint: packer-facing details DTO shaping if source data is still missing
|