The project-level MDL/RSK rollup specs lose `addable: false` and gain
a sibling form schema (default-project-{mdl,rsk}.form.yaml) that
makes `party` a required field. + Add row on the rollup view is now
live: the user types the party name in the Package column, the
server reads `party` from the body, validates that
<project>/archive/<party>/ exists on disk, strips the field, and
writes the row into archive/<party>/<slot>/<date>-<email>.yaml. The
response Location is the synthetic <project>/<slot>/<party>__<file>.yaml
URL so the rollup table client swaps the draft URL cleanly.
Wrong party = 422 with a clear error pointing at the SSR view as the
place to create the folder first. No auto-creation here — the rollup
is for filing deliverables/risks against existing packages, not for
spinning up new ones.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
68 lines
1.8 KiB
YAML
68 lines
1.8 KiB
YAML
# Default project-rollup Master Deliverables List spec, served by
|
|
# zddc-server when no operator-supplied table.yaml exists at
|
|
# <project>/mdl/.
|
|
#
|
|
# This view aggregates every deliverable row from every party under
|
|
# <project>/archive/. Each synthetic row is backed by the real file
|
|
# at <project>/archive/<party>/mdl/<file>.yaml; the leading `party`
|
|
# column is derived from the row's source folder (path-injected by
|
|
# the server, not stored in the YAML).
|
|
#
|
|
# + Add row IS enabled here: the `party` column doubles as the
|
|
# routing key — the server reads the submitted `party` field, finds
|
|
# the matching <project>/archive/<party>/ folder, and writes the row
|
|
# inside its mdl/ subfolder. The party folder must already exist
|
|
# (create it via the SSR view).
|
|
|
|
title: Project Deliverables (all parties)
|
|
description: Every deliverable across all parties under archive/. Click a row to edit; + Add row uses the Package column to route the new row to the matching archive/<party>/mdl/ folder.
|
|
|
|
columns:
|
|
- field: party
|
|
title: Package
|
|
width: 7em
|
|
- field: originator
|
|
title: Originator
|
|
width: 8em
|
|
- field: phase
|
|
title: Phase
|
|
width: 5em
|
|
- field: project
|
|
title: Project
|
|
width: 8em
|
|
- field: area
|
|
title: Area
|
|
width: 5em
|
|
- field: discipline
|
|
title: Disc.
|
|
width: 5em
|
|
- field: type
|
|
title: Type
|
|
width: 6em
|
|
- field: sequence
|
|
title: Seq.
|
|
width: 5em
|
|
- field: suffix
|
|
title: Suffix
|
|
width: 5em
|
|
- field: title
|
|
title: Deliverable
|
|
- field: plannedRevision
|
|
title: Rev.
|
|
width: 5em
|
|
- field: plannedDate
|
|
title: Planned
|
|
format: date
|
|
width: 8em
|
|
- field: status
|
|
title: Status
|
|
width: 6em
|
|
enum: [DFT, IFR, IFA, IFC, AFC, AB]
|
|
- field: owner
|
|
title: Owner
|
|
width: 12em
|
|
|
|
defaults:
|
|
sort:
|
|
- { field: party, dir: asc }
|
|
- { field: plannedDate, dir: asc }
|