feat(dsfa): Go DSFA deprecated, URL-Fix, fehlende Endpoints + 145 Tests
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 34s
CI / test-python-backend-compliance (push) Successful in 30s
CI / test-python-document-crawler (push) Successful in 27s
CI / test-python-dsms-gateway (push) Successful in 18s

- Go: DEPRECATED-Kommentare an allen 6 DSFA-Handlern + Route-Block
- api.ts: URL-Fix /dsgvo/dsfas → /dsfa (Detail-Seite war komplett kaputt)
- Python: Section-Update, Workflow (submit/approve), Export (JSON+CSV), UCCA-Stubs
- Tests: 145/145 bestanden (Schema + Route-Integration mit TestClient+SQLite)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-03-06 19:41:12 +01:00
parent 095eff26d9
commit 6a940344c2
5 changed files with 1005 additions and 97 deletions

View File

@@ -64,7 +64,7 @@ function getHeaders(): HeadersInit {
* List all DSFAs for the current tenant
*/
export async function listDSFAs(status?: string): Promise<DSFA[]> {
const url = new URL(`${getBaseUrl()}/dsgvo/dsfas`, window.location.origin)
const url = new URL(`${getBaseUrl()}/dsfa`, window.location.origin)
if (status) {
url.searchParams.set('status', status)
}
@@ -83,7 +83,7 @@ export async function listDSFAs(status?: string): Promise<DSFA[]> {
* Get a single DSFA by ID
*/
export async function getDSFA(id: string): Promise<DSFA> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/${id}`, {
const response = await fetch(`${getBaseUrl()}/dsfa/${id}`, {
method: 'GET',
headers: getHeaders(),
credentials: 'include',
@@ -96,7 +96,7 @@ export async function getDSFA(id: string): Promise<DSFA> {
* Create a new DSFA
*/
export async function createDSFA(data: CreateDSFARequest): Promise<DSFA> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas`, {
const response = await fetch(`${getBaseUrl()}/dsfa`, {
method: 'POST',
headers: getHeaders(),
credentials: 'include',
@@ -110,7 +110,7 @@ export async function createDSFA(data: CreateDSFARequest): Promise<DSFA> {
* Update an existing DSFA
*/
export async function updateDSFA(id: string, data: Partial<DSFA>): Promise<DSFA> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/${id}`, {
const response = await fetch(`${getBaseUrl()}/dsfa/${id}`, {
method: 'PUT',
headers: getHeaders(),
credentials: 'include',
@@ -124,7 +124,7 @@ export async function updateDSFA(id: string, data: Partial<DSFA>): Promise<DSFA>
* Delete a DSFA
*/
export async function deleteDSFA(id: string): Promise<void> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/${id}`, {
const response = await fetch(`${getBaseUrl()}/dsfa/${id}`, {
method: 'DELETE',
headers: getHeaders(),
credentials: 'include',
@@ -147,7 +147,7 @@ export async function updateDSFASection(
sectionNumber: number,
data: UpdateDSFASectionRequest
): Promise<DSFA> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/${id}/sections/${sectionNumber}`, {
const response = await fetch(`${getBaseUrl()}/dsfa/${id}/sections/${sectionNumber}`, {
method: 'PUT',
headers: getHeaders(),
credentials: 'include',
@@ -165,7 +165,7 @@ export async function updateDSFASection(
* Submit a DSFA for DPO review
*/
export async function submitDSFAForReview(id: string): Promise<SubmitForReviewResponse> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/${id}/submit-for-review`, {
const response = await fetch(`${getBaseUrl()}/dsfa/${id}/submit-for-review`, {
method: 'POST',
headers: getHeaders(),
credentials: 'include',
@@ -178,7 +178,7 @@ export async function submitDSFAForReview(id: string): Promise<SubmitForReviewRe
* Approve or reject a DSFA (DPO/CISO/GF action)
*/
export async function approveDSFA(id: string, data: ApproveDSFARequest): Promise<{ message: string }> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/${id}/approve`, {
const response = await fetch(`${getBaseUrl()}/dsfa/${id}/approve`, {
method: 'POST',
headers: getHeaders(),
credentials: 'include',
@@ -196,7 +196,7 @@ export async function approveDSFA(id: string, data: ApproveDSFARequest): Promise
* Get DSFA statistics for the dashboard
*/
export async function getDSFAStats(): Promise<DSFAStatsResponse> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/stats`, {
const response = await fetch(`${getBaseUrl()}/dsfa/stats`, {
method: 'GET',
headers: getHeaders(),
credentials: 'include',
@@ -216,7 +216,7 @@ export async function createDSFAFromAssessment(
assessmentId: string,
data?: CreateDSFAFromAssessmentRequest
): Promise<CreateDSFAFromAssessmentResponse> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/from-assessment/${assessmentId}`, {
const response = await fetch(`${getBaseUrl()}/dsfa/from-assessment/${assessmentId}`, {
method: 'POST',
headers: getHeaders(),
credentials: 'include',
@@ -231,7 +231,7 @@ export async function createDSFAFromAssessment(
*/
export async function getDSFAByAssessment(assessmentId: string): Promise<DSFA | null> {
try {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/by-assessment/${assessmentId}`, {
const response = await fetch(`${getBaseUrl()}/dsfa/by-assessment/${assessmentId}`, {
method: 'GET',
headers: getHeaders(),
credentials: 'include',
@@ -269,7 +269,7 @@ export async function checkDSFARequired(assessmentId: string): Promise<DSFATrigg
* Export a DSFA as JSON
*/
export async function exportDSFAAsJSON(id: string): Promise<Blob> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/${id}/export?format=json`, {
const response = await fetch(`${getBaseUrl()}/dsfa/${id}/export?format=json`, {
method: 'GET',
headers: {
'Accept': 'application/json',
@@ -288,7 +288,7 @@ export async function exportDSFAAsJSON(id: string): Promise<Blob> {
* Export a DSFA as PDF
*/
export async function exportDSFAAsPDF(id: string): Promise<Blob> {
const response = await fetch(`${getBaseUrl()}/dsgvo/dsfas/${id}/export/pdf`, {
const response = await fetch(`${getBaseUrl()}/dsfa/${id}/export/pdf`, {
method: 'GET',
headers: {
'Accept': 'application/pdf',