feat: allow correcting honey measurements and queen evaluations
Backend Image / build-and-push (push) Successful in 2m3s
Frontend Image / build-and-push (push) Successful in 1m41s

Both records could be created but never changed. A water-content reading
decides whether a batch may be sold as honey at all, and queen ratings drive
breeding decisions - a slipped digit in either is exactly the kind of wrong
value that must not be left standing.

- New PATCH /honey-batches/measurements/:measurementId behind
  honey-batches:measure, and PATCH /queens/evaluations/:evaluationId behind
  queens:evaluate. Both are addressed by the child record's own id, so the
  routes take two path segments and do not collide with PATCH /:id.
- Both log before and after data, like every other correction.
- The measurement list on the honey batch page and the rating list on the queen
  page gained an edit dialog; the rating dialog reuses the existing criteria
  list rather than restating it.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5 committed 2026-09-19 08:15:54 +02:00
1 parent b0e05daa42
commit 42ceb33844
14 files changed
+503 -15

No files matched your search

@@ -2,6 +2,7 @@ import { apiFetch } from "@/lib/auth/api-client";
import {
CreateHoneyBatchInput,
CreateHoneyMeasurementInput,
UpdateHoneyMeasurementInput,
HoneyBatch,
HoneyBatchContainerAllocation,
HoneyBatchRelocation,
@@ -47,6 +48,16 @@ export function updateHoneyBatch(
});
}
export function updateHoneyMeasurement(
measurementId: string,
input: UpdateHoneyMeasurementInput,
): Promise<HoneyBatch> {
return apiFetch<HoneyBatch>(`/honey-batches/measurements/${measurementId}`, {
method: "PATCH",
body: JSON.stringify(input),
});
}
export function addHoneyMeasurement(
id: string,
input: CreateHoneyMeasurementInput,
@@ -107,3 +107,11 @@ export interface CreateHoneyMeasurementInput {
temperature?: number;
notes?: string;
}
export interface UpdateHoneyMeasurementInput {
waterContent?: number;
measuredAt?: string;
device?: string;
temperature?: number;
notes?: string;
}
+11
View File
@@ -2,6 +2,7 @@ import { apiFetch } from "@/lib/auth/api-client";
import {
AssignColonyInput,
CreateQueenEvaluationInput,
UpdateQueenEvaluationInput,
CreateQueenInput,
Queen,
QueenColonyHistoryEntry,
@@ -59,6 +60,16 @@ export function fetchQueenEvaluations(id: string): Promise<QueenEvaluation[]> {
return apiFetch<QueenEvaluation[]>(`/queens/${id}/evaluations`);
}
export function updateQueenEvaluation(
evaluationId: string,
input: UpdateQueenEvaluationInput,
): Promise<QueenEvaluation> {
return apiFetch<QueenEvaluation>(`/queens/evaluations/${evaluationId}`, {
method: "PATCH",
body: JSON.stringify(input),
});
}
export function addQueenEvaluation(
id: string,
input: CreateQueenEvaluationInput,
+2
View File
@@ -124,3 +124,5 @@ export interface CreateQueenEvaluationInput {
honeyYield: number;
notes?: string;
}
export type UpdateQueenEvaluationInput = Partial<CreateQueenEvaluationInput>;