Phase 1 ops core: base blocks, feedback, canary fixes
- Add app/ekonomi/anvandare/prenumerationer/butik/feedback blocks to computeOpsSummary. - New feedback table, POST /api/feedback, GDPR erasure wiring. - Canary: only count unverified/rejected published recipes; treat verified/editorial as safe. - Add 'rejected' recipe verification status enum value. - Fix food-safety lint baseline: remove egg/cured fish from raw-protein list, relax genomstekt regex, add safe-cooking phrases to seed recipes. - Seed recipes now get verificationStatus=editorial. - Tests: ops summary blocks, feedback route, me.residual cleanup.
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import { index, pgEnum, pgTable, text, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
|
||||
import { createdAt } from "./_shared.js";
|
||||
import { users } from "./users.js";
|
||||
|
||||
export const feedbackTypeEnum = pgEnum("feedback_type", ["bug", "onskemal"]);
|
||||
export const feedbackStatusEnum = pgEnum("feedback_status", ["oppen", "pagar", "stangd"]);
|
||||
|
||||
/** Användarfeedback: buggrapporter och önskemål (doc §2). */
|
||||
export const feedback = pgTable(
|
||||
"feedback",
|
||||
{
|
||||
id: uuid("id").primaryKey().defaultRandom(),
|
||||
userId: uuid("user_id").references(() => users.id, { onDelete: "set null" }),
|
||||
typ: feedbackTypeEnum("typ").notNull(),
|
||||
rubrik: varchar("rubrik", { length: 200 }).notNull(),
|
||||
/** Full text – visas aldrig i ops-sammanfattningen. */
|
||||
text: text("text").notNull(),
|
||||
status: feedbackStatusEnum("status").notNull().default("oppen"),
|
||||
plattform: varchar("plattform", { length: 16 }),
|
||||
appVersion: varchar("app_version", { length: 32 }),
|
||||
createdAt: createdAt(),
|
||||
},
|
||||
(t) => [
|
||||
index("feedback_status_created_idx").on(t.status, t.createdAt),
|
||||
index("feedback_user_idx").on(t.userId, t.createdAt),
|
||||
],
|
||||
);
|
||||
@@ -18,6 +18,7 @@ export * from "./memory.js";
|
||||
export * from "./seasons.js";
|
||||
export * from "./subscriptions.js";
|
||||
export * from "./analytics.js";
|
||||
export * from "./feedback.js";
|
||||
export * from "./ops.js";
|
||||
export * from "./platform.js";
|
||||
export * from "./releaseGates.js";
|
||||
|
||||
Reference in New Issue
Block a user