ci: trigga på master + formatfix inför Gitea Actions
CI / Typecheck, test & build (push) Failing after 2s

This commit is contained in:
Sven (AAMOS AI)
2026-08-13 17:25:14 +07:00
parent 61d60931ad
commit c32a7e33c7
141 changed files with 40555 additions and 45210 deletions
+10 -1
View File
@@ -2,7 +2,16 @@
* Product analytics schema (spec §8).
* Pseudonymous events stored in Postgres, separated from AAMOS memory.
*/
import { index, integer, jsonb, pgTable, text, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
import {
index,
integer,
jsonb,
pgTable,
text,
timestamp,
uuid,
varchar,
} from "drizzle-orm/pg-core";
import { createdAt } from "./_shared.js";
import { households } from "./households.js";
import { users } from "./users.js";
+9 -1
View File
@@ -1,4 +1,12 @@
import { boolean, doublePrecision, integer, pgTable, text, uuid, varchar } from "drizzle-orm/pg-core";
import {
boolean,
doublePrecision,
integer,
pgTable,
text,
uuid,
varchar,
} from "drizzle-orm/pg-core";
import { createdAt, updatedAt } from "./_shared.js";
import { inventoryItems } from "./inventory.js";
+3 -4
View File
@@ -24,10 +24,9 @@ export const households = pgTable(
/** Fas 1b: aktiveringsmått (spec §4.2) */
firstScanCompletedAt: timestamp("first_scan_completed_at", { withTimezone: true }),
fifthItemConfirmedAt: timestamp("fifth_item_confirmed_at", { withTimezone: true }),
firstRecipeRecommendationViewedAt: timestamp(
"first_recipe_recommendation_viewed_at",
{ withTimezone: true },
),
firstRecipeRecommendationViewedAt: timestamp("first_recipe_recommendation_viewed_at", {
withTimezone: true,
}),
firstRecipeSavedOrStartedAt: timestamp("first_recipe_saved_or_started_at", {
withTimezone: true,
}),
+6 -2
View File
@@ -121,7 +121,9 @@ export const inventoryConflicts = pgTable(
householdId: uuid("household_id")
.notNull()
.references(() => households.id, { onDelete: "cascade" }),
inventoryItemId: uuid("inventory_item_id").references(() => inventoryItems.id, { onDelete: "cascade" }),
inventoryItemId: uuid("inventory_item_id").references(() => inventoryItems.id, {
onDelete: "cascade",
}),
scanJobId: uuid("scan_job_id"),
/** Beskrivande typ: receipt_vs_image, member_vs_member, offline_vs_server, model_disagreement. */
conflictType: text("conflict_type").notNull(),
@@ -137,7 +139,9 @@ export const inventoryConflicts = pgTable(
proposedResolution: jsonb("proposed_resolution").$type<Record<string, unknown>>(),
status: text("status").notNull().default("open"),
/** Användaren som löste konflikten, eller NULL om system-förslag. */
resolvedByUserId: uuid("resolved_by_user_id").references(() => users.id, { onDelete: "set null" }),
resolvedByUserId: uuid("resolved_by_user_id").references(() => users.id, {
onDelete: "set null",
}),
resolution: jsonb("resolution").$type<Record<string, unknown>>(),
/** Modell- och promptversion som användes när konflikten upptäcktes. */
modelVersion: text("model_version"),
+12 -9
View File
@@ -217,14 +217,16 @@ export const cookingSessions = pgTable(
/** Måltidsdatum (UTC) som rester/matlådor knyts till. */
mealDate: date("meal_date"),
/** Vilka meal_boxes som påverkades av sessionen och med hur mycket. */
mealBoxMutations: jsonb("meal_box_mutations").$type<
Array<{ mealBoxId: string; deltaPortions: number; frozen: boolean }>
>(),
mealBoxMutations:
jsonb("meal_box_mutations").$type<
Array<{ mealBoxId: string; deltaPortions: number; frozen: boolean }>
>(),
leftoverNote: text("leftover_note"),
/** Ursprungligt FEFO-förslag, sparas för ev. undo/omräkning. */
plannedDeductions: jsonb("planned_deductions").$type<
Array<{ itemId: string; quantity: number; unit: string; name: string }>
>(),
plannedDeductions:
jsonb("planned_deductions").$type<
Array<{ itemId: string; quantity: number; unit: string; name: string }>
>(),
startedAt: timestamp("started_at", { withTimezone: true }),
completedAt: timestamp("completed_at", { withTimezone: true }),
cancelledAt: timestamp("cancelled_at", { withTimezone: true }),
@@ -283,9 +285,10 @@ export const cookingAssumptionProfiles = pgTable(
/** Hur många observationer profilen bygger på. */
observationCount: integer("observation_count").notNull().default(0),
/** Senaste rådata för felsökning/återspelning. */
lastSessionAnswers: jsonb("last_session_answers").$type<
Array<{ sessionId: string; eaten: number; leftovers: number; date: string }>
>(),
lastSessionAnswers:
jsonb("last_session_answers").$type<
Array<{ sessionId: string; eaten: number; leftovers: number; date: string }>
>(),
updatedAt: updatedAt(),
},
(t) => [
+13 -5
View File
@@ -2,7 +2,18 @@
* Release gates schema (spec §17).
* Configurable go/no-go criteria evaluated against analytics events.
*/
import { boolean, doublePrecision, index, integer, pgEnum, pgTable, text, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
import {
boolean,
doublePrecision,
index,
integer,
pgEnum,
pgTable,
text,
timestamp,
uuid,
varchar,
} from "drizzle-orm/pg-core";
import { createdAt, updatedAt } from "./_shared.js";
import {
RELEASE_GATE_CATEGORIES,
@@ -19,10 +30,7 @@ export const releaseGateComparisonEnum = pgEnum(
"release_gate_comparison",
tuple(RELEASE_GATE_COMPARISONS),
);
export const releaseGateStatusEnum = pgEnum(
"release_gate_status",
tuple(RELEASE_GATE_STATUSES),
);
export const releaseGateStatusEnum = pgEnum("release_gate_status", tuple(RELEASE_GATE_STATUSES));
export const releaseGates = pgTable(
"release_gates",