feat: T6 wave 5 – readiness checks and report, compliance and medicine UI, label UI
Backend Image / build-and-push (push) Successful in 6m45s
Frontend Image / build-and-push (push) Failing after 9m30s

- Readiness: all 18 checks (medicine lots, treatment log gaps, labels,
  harvest withdrawal), medicine subjects masked without
  veterinary-medicines:read, report PDF (counts only), summary cached 60 s,
  409 codes READINESS_*.
- Frontend: /compliance page with acknowledge/revoke, dashboard line and
  nav; veterinary medicine catalogue, lots, movement book with inventory
  and disposal; label designer check panel, print card with gap list and
  proof print, food business master data, product legal name.
- Service worker: cacheability is path-based (the backend sends no-store
  on every answer); compliance, medicine, restriction, notice and label
  check/print paths and restricted document kinds are never cached.
- ARCHITECTURE.md §2, §12.10–12.11, Annahmen 86–90.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-10-15 15:59:08 +02:00
1 parent b912d29166
commit b4746a2b17
149 files changed
+11869 -320

No files matched your search

@@ -0,0 +1,17 @@
import { describe, expect, it } from "vitest";
import { DOCUMENT_ENTITY_TYPES } from "./types";
describe("DOCUMENT_ENTITY_TYPES", () => {
it("knows the three compliance kinds besides the existing ones", () => {
expect(DOCUMENT_ENTITY_TYPES).toEqual([
"APIARY",
"COLONY",
"QUEEN",
"INSPECTION",
"HONEY_BATCH",
"MEDICINE_LOT",
"AUTHORITY_NOTICE",
"APIARY_RESTRICTION",
]);
});
});
+12 -1
View File
@@ -1,4 +1,15 @@
export type DocumentEntityType = "APIARY" | "COLONY" | "QUEEN" | "INSPECTION" | "HONEY_BATCH";
export const DOCUMENT_ENTITY_TYPES = [
"APIARY",
"COLONY",
"QUEEN",
"INSPECTION",
"HONEY_BATCH",
"MEDICINE_LOT",
"AUTHORITY_NOTICE",
"APIARY_RESTRICTION",
] as const;
export type DocumentEntityType = (typeof DOCUMENT_ENTITY_TYPES)[number];
export interface DocumentSummary {
id: string;