All checks were successful
Deploy Development / deploy (push) Successful in 44s
Test Suite / pytest-backend (push) Successful in 1m54s
Test Suite / lint-backend (push) Successful in 2s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 19s
Test Suite / playwright-smoke (push) Successful in 15s
EFS-Tabellen, Registry-Sync und Fields-API ermöglichen archetyp-spezifische Felder; Frontend rendert sie im Profil-Modal per FieldRenderer. Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
import { apiFetch } from './client.js'
|
|
|
|
export function listArchetypeFieldDefinitions(entityType, archetypeKey) {
|
|
const params = new URLSearchParams({
|
|
entity_type: entityType,
|
|
archetype_key: archetypeKey,
|
|
})
|
|
return apiFetch(`/api/entity-archetypes/field-definitions?${params}`)
|
|
}
|
|
|
|
export function getInitiativeFieldDefinitions(initiativeId) {
|
|
return apiFetch(`/api/initiatives/${initiativeId}/field-definitions`)
|
|
}
|
|
|
|
export function getInitiativeFields(initiativeId) {
|
|
return apiFetch(`/api/initiatives/${initiativeId}/fields`)
|
|
}
|
|
|
|
export function patchInitiativeFields(initiativeId, fields) {
|
|
return apiFetch(`/api/initiatives/${initiativeId}/fields`, {
|
|
method: 'PATCH',
|
|
body: JSON.stringify({ fields }),
|
|
})
|
|
}
|
|
|
|
export async function saveInitiativeDynamicFields(initiativeId, dynamicFields) {
|
|
if (!dynamicFields || Object.keys(dynamicFields).length === 0) {
|
|
return
|
|
}
|
|
await patchInitiativeFields(initiativeId, dynamicFields)
|
|
}
|
|
|
|
export function splitInitiativeFormPayload(payload) {
|
|
const { dynamicFields, ...core } = payload
|
|
return { core, dynamicFields: dynamicFields || {} }
|
|
}
|