@fayz-ai/plugin-forms 0.10.14 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/FormFillDialog.d.ts +17 -0
- package/dist/components/FormFillDialog.d.ts.map +1 -0
- package/dist/components/PersonFormsAlert.d.ts +39 -0
- package/dist/components/PersonFormsAlert.d.ts.map +1 -0
- package/dist/data/mock.d.ts.map +1 -1
- package/dist/data/supabase.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +243 -17
- package/dist/index.js.map +1 -1
- package/dist/lib/person-requirements.d.ts +23 -0
- package/dist/lib/person-requirements.d.ts.map +1 -0
- package/dist/migrations/index.d.ts +2 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/views/TemplateListView.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type RequirementState = 'pending' | 'expired' | 'valid';
|
|
2
|
+
export interface PersonFormRequirement {
|
|
3
|
+
templateId: string;
|
|
4
|
+
templateName: string;
|
|
5
|
+
category: string;
|
|
6
|
+
validityDays: number | null;
|
|
7
|
+
/** Quando foi preenchido pela última vez. `null` = nunca. */
|
|
8
|
+
lastFilledAt: string | null;
|
|
9
|
+
/** Até quando vale. `null` = não vence, ou nunca foi preenchido. */
|
|
10
|
+
validUntil: string | null;
|
|
11
|
+
state: RequirementState;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Os formulários exigidos desta pessoa.
|
|
15
|
+
*
|
|
16
|
+
* Devolve vazio quando a casa não exige nenhum — que é o padrão. O aviso só
|
|
17
|
+
* existe depois que alguém marcou um modelo como exigido em Configurações →
|
|
18
|
+
* Formulários.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getPersonFormRequirements(tenantId: string, personId: string): Promise<PersonFormRequirement[]>;
|
|
21
|
+
/** O que precisa de ação: nunca preenchido ou vencido. */
|
|
22
|
+
export declare const isOutstanding: (r: PersonFormRequirement) => boolean;
|
|
23
|
+
//# sourceMappingURL=person-requirements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"person-requirements.d.ts","sourceRoot":"","sources":["../../src/lib/person-requirements.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAE9D,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,oEAAoE;IACpE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,gBAAgB,CAAA;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAgBlC;AAED,0DAA0D;AAC1D,eAAO,MAAM,aAAa,GAAI,GAAG,qBAAqB,KAAG,OAA8B,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export declare const MIGRATION_000_BASELINE = "-- ============================================================================\n-- plugins/plugin-forms/src/migrations/000_baseline.sql \u2014 what installing this provisions, as one file.\n--\n-- GENERATED by scripts/emit-unit-baselines.mjs (#338). Do not edit by hand:\n-- change the schema, regenerate, and let scripts/check-chain-equivalence.mjs\n-- prove the result still matches.\n--\n-- This replaced 7 migration files. They are kept, unapplied, in\n-- migrations.archive/ \u2014 a year of decisions is worth reading even when it is no\n-- longer worth replaying.\n--\n-- Object order is fixed rather than dependency-sorted: schemas, types,\n-- sequences, tables, defaults, functions, constraints, views, indexes, foreign\n-- keys, triggers, row security, policies, grants. Dependencies BETWEEN units\n-- are carried by the order packages/db/chain.json declares.\n-- ============================================================================\n\n-- A LANGUAGE sql function binds its body at CREATE time, and 570 functions\n-- sorted by name are not sorted by who calls whom. This is what lets them load\n-- in any order; every body is still compiled on first call, so a genuinely\n-- broken reference surfaces then rather than never. Session-scoped.\nSET check_function_bodies = false;\n\n\n\n-- \u2500\u2500 default privileges: reset \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n-- Cleared BEFORE anything is created, so every object below gets the ACL the\n-- dump describes rather than the image's defaults on top of it. Restored at\n-- the end of this file.\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON SEQUENCES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public REVOKE ALL ON TABLES FROM anon, authenticated, service_role, fayz_connector$stmt$;\nEND $dp$;\n\n\n-- \u2500\u2500 table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nCREATE TABLE public.plg_forms_document_files (\n id uuid DEFAULT gen_random_uuid() NOT NULL,\n tenant_id uuid NOT NULL,\n document_id uuid NOT NULL,\n field_key text NOT NULL,\n file_url text NOT NULL,\n file_name text,\n file_size integer,\n mime_type text,\n sort_order integer DEFAULT 0,\n metadata jsonb DEFAULT '{}'::jsonb,\n created_at timestamp with time zone DEFAULT now() NOT NULL\n);\n\nCREATE TABLE public.plg_forms_documents (\n document_id uuid NOT NULL,\n tenant_id uuid NOT NULL,\n template_id uuid NOT NULL,\n data jsonb DEFAULT '{}'::jsonb NOT NULL,\n signed_at timestamp with time zone,\n signed_by uuid,\n created_at timestamp with time zone DEFAULT now() NOT NULL,\n updated_at timestamp with time zone DEFAULT now() NOT NULL\n);\n\nCREATE TABLE public.plg_forms_templates (\n id uuid DEFAULT gen_random_uuid() NOT NULL,\n tenant_id uuid NOT NULL,\n name text NOT NULL,\n description text,\n category text DEFAULT 'general'::text NOT NULL,\n version integer DEFAULT 1 NOT NULL,\n is_current boolean DEFAULT true NOT NULL,\n parent_id uuid,\n schema jsonb DEFAULT '{\"fields\": [], \"layout\": {\"columns\": 12}}'::jsonb NOT NULL,\n specialty text,\n tags text[] DEFAULT '{}'::text[],\n metadata jsonb DEFAULT '{}'::jsonb,\n is_active boolean DEFAULT true NOT NULL,\n is_deleted boolean DEFAULT false NOT NULL,\n created_by uuid,\n updated_by uuid,\n created_at timestamp with time zone DEFAULT now() NOT NULL,\n updated_at timestamp with time zone DEFAULT now() NOT NULL\n);\n\n\n-- \u2500\u2500 function \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nCREATE FUNCTION public.agent_forms_upsert_template(p_tenant_id uuid, p_actor_user_id uuid, p_payload jsonb) RETURNS jsonb\n LANGUAGE plpgsql SECURITY DEFINER\n SET search_path TO 'public'\n AS $$\nDECLARE\n v_denial jsonb;\n v_used int;\n v_template_id uuid;\n v_is_update boolean;\n v_name text;\n v_category text;\n v_description text;\n v_existing jsonb;\n v_input jsonb;\n v_merged jsonb;\n v_fields jsonb;\n v_schema jsonb;\n v_final_id uuid;\nBEGIN\n -- \u2500\u2500 payload \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n BEGIN\n v_template_id := NULLIF(p_payload->>'template_id','')::uuid;\n EXCEPTION WHEN OTHERS THEN\n RETURN jsonb_build_object('ok', false, 'error', 'invalid template_id');\n END;\n v_is_update := v_template_id IS NOT NULL;\n v_name := btrim(p_payload->>'name');\n v_category := lower(COALESCE(NULLIF(p_payload->>'category',''), 'general'));\n v_description := left(p_payload->>'description', 1000);\n IF v_category NOT IN ('anamnesis','evolution','report','contract','general') THEN\n v_category := 'general';\n END IF;\n\n IF NOT v_is_update AND (v_name IS NULL OR v_name = '') THEN\n RETURN jsonb_build_object('ok', false, 'error', 'name is required to create a form');\n END IF;\n\n -- \u2500\u2500 authorization: role \u2192 plan \u2192 form_templates cap \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n SELECT count(*) INTO v_used FROM plg_forms_templates\n WHERE tenant_id = p_tenant_id AND is_deleted = false;\n v_denial := agent_guard(p_tenant_id, p_actor_user_id, 'custom_forms',\n CASE WHEN v_is_update THEN 'update' ELSE 'create' END,\n 'form_templates', v_used, CASE WHEN v_is_update THEN 0 ELSE 1 END);\n IF v_denial IS NOT NULL THEN\n RETURN jsonb_build_object('ok', false, 'denial', v_denial);\n END IF;\n\n -- \u2500\u2500 current fields (for APPEND / to reject an unknown id) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n IF v_is_update THEN\n SELECT COALESCE(schema->'fields','[]'::jsonb) INTO v_existing\n FROM plg_forms_templates\n WHERE id = v_template_id AND tenant_id = p_tenant_id AND is_deleted = false;\n IF v_existing IS NULL THEN\n RETURN jsonb_build_object('ok', false, 'error', 'unknown template for this tenant');\n END IF;\n ELSE\n v_existing := '[]'::jsonb;\n END IF;\n\n -- \u2500\u2500 normalize the incoming fields to the builder's FormFieldDef shape \u2500\u2500\u2500\u2500\n -- (id, type, label, required, placeholder, col, colSpan, options) \u2014 row is\n -- assigned last, across the merged list.\n WITH src AS (\n SELECT CASE\n WHEN p_payload ? 'fields' THEN COALESCE(p_payload->'fields','[]'::jsonb)\n WHEN p_payload ? 'append_fields' THEN COALESCE(p_payload->'append_fields','[]'::jsonb)\n ELSE '[]'::jsonb\n END AS arr\n ),\n norm AS (\n SELECT f.ord, jsonb_strip_nulls(jsonb_build_object(\n 'id', COALESCE(NULLIF(f.value->>'id',''), gen_random_uuid()::text),\n 'type', COALESCE(NULLIF(f.value->>'type',''), 'text'),\n 'label', COALESCE(NULLIF(f.value->>'label',''), 'Campo'),\n 'required', COALESCE((f.value->>'required')::boolean, false),\n 'placeholder', NULLIF(f.value->>'placeholder',''),\n 'col', 0,\n 'colSpan', 12,\n 'options', CASE\n WHEN jsonb_typeof(f.value->'options') = 'array' AND jsonb_array_length(f.value->'options') > 0\n THEN (SELECT jsonb_agg(jsonb_build_object(\n 'label', opt,\n 'value', lower(regexp_replace(btrim(opt), '\\s+', '_', 'g'))))\n FROM jsonb_array_elements_text(f.value->'options') opt)\n ELSE NULL END\n )) AS field\n FROM src, jsonb_array_elements(src.arr) WITH ORDINALITY AS f(value, ord)\n )\n SELECT COALESCE(jsonb_agg(field ORDER BY ord), '[]'::jsonb) INTO v_input FROM norm;\n\n -- REPLACE with `fields`; otherwise APPEND onto what's already there.\n IF p_payload ? 'fields' THEN\n v_merged := v_input;\n ELSE\n v_merged := v_existing || v_input;\n END IF;\n\n -- sequential rows across the final list\n SELECT COALESCE(jsonb_agg(jsonb_set(e.value, '{row}', to_jsonb((e.ord - 1))) ORDER BY e.ord), '[]'::jsonb)\n INTO v_fields\n FROM jsonb_array_elements(v_merged) WITH ORDINALITY AS e(value, ord);\n\n v_schema := jsonb_build_object('layout', jsonb_build_object('columns', 12), 'fields', v_fields);\n\n -- \u2500\u2500 write + audit \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n IF v_is_update THEN\n UPDATE plg_forms_templates SET\n name = COALESCE(NULLIF(v_name,''), name),\n category = v_category,\n description = COALESCE(v_description, description),\n schema = v_schema,\n updated_by = p_actor_user_id,\n updated_at = now()\n WHERE id = v_template_id AND tenant_id = p_tenant_id AND is_deleted = false\n RETURNING id INTO v_final_id;\n ELSE\n INSERT INTO plg_forms_templates (tenant_id, name, category, description, schema, created_by, updated_by)\n VALUES (p_tenant_id, v_name, v_category, v_description, v_schema, p_actor_user_id, p_actor_user_id)\n RETURNING id INTO v_final_id;\n END IF;\n\n INSERT INTO audit_logs (tenant_id, user_id, action, entity_type, entity_id, metadata)\n VALUES (p_tenant_id, p_actor_user_id,\n CASE WHEN v_is_update THEN 'agent.updateFormTemplate' ELSE 'agent.createFormTemplate' END,\n 'form_template', v_final_id::text,\n jsonb_build_object('payload', p_payload));\n\n RETURN jsonb_build_object(\n 'ok', true,\n 'id', v_final_id,\n 'record', jsonb_build_object(\n 'ref', jsonb_build_object('id', v_final_id, 'resource', 'plg_forms_templates',\n 'archetype', 'custom_forms:template'),\n 'name', COALESCE(NULLIF(v_name,''), (SELECT name FROM plg_forms_templates WHERE id = v_final_id)),\n 'category', v_category,\n 'fieldCount', jsonb_array_length(v_fields)\n )\n );\nEND;\n$$;\n\n\n-- \u2500\u2500 constraint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nALTER TABLE ONLY public.plg_forms_document_files\n ADD CONSTRAINT plg_forms_document_files_pkey1 PRIMARY KEY (id);\n\nALTER TABLE ONLY public.plg_forms_documents\n ADD CONSTRAINT plg_forms_documents_pkey1 PRIMARY KEY (document_id);\n\nALTER TABLE ONLY public.plg_forms_templates\n ADD CONSTRAINT plg_forms_templates_pkey PRIMARY KEY (id);\n\n\n-- \u2500\u2500 view \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nCREATE VIEW public.plg_forms_rep_submissions WITH (security_invoker='true') AS\n SELECT d.id AS submission_id,\n d.tenant_id,\n d.created_at,\n d.updated_at,\n d.title,\n d.status,\n d.kind,\n d.person_id,\n p.name AS person_name,\n p.email AS person_email,\n p.phone AS person_phone,\n f.template_id,\n COALESCE(NULLIF(t.name, ''::text), 'Sem modelo'::text) AS template_name,\n COALESCE(NULLIF(t.category, ''::text), 'Sem categoria'::text) AS template_category,\n f.signed_at,\n f.data AS form_data,\n 1 AS submissions,\n CASE\n WHEN (f.signed_at IS NOT NULL) THEN 1\n ELSE 0\n END AS is_signed,\n CASE\n WHEN (d.status = 'completed'::text) THEN 1\n ELSE 0\n END AS is_completed,\n CASE\n WHEN (d.status = 'draft'::text) THEN 1\n ELSE 0\n END AS is_draft\n FROM (((public.documents d\n JOIN public.plg_forms_documents f ON ((f.document_id = d.id)))\n LEFT JOIN public.plg_forms_templates t ON ((t.id = f.template_id)))\n LEFT JOIN public.people p ON ((p.id = d.person_id)))\n WHERE d.is_active;\n\nCREATE VIEW public.v_documents WITH (security_invoker='true') AS\n SELECT d.id,\n d.tenant_id,\n d.kind,\n d.person_id,\n d.title,\n d.description,\n d.status,\n d.file_url,\n d.file_name,\n d.file_size,\n d.mime_type,\n d.tags,\n d.notes,\n d.is_active,\n d.metadata,\n d.created_by,\n d.updated_by,\n d.created_at,\n d.updated_at,\n d.storage_provider,\n d.storage_bucket,\n d.storage_path,\n d.checksum,\n d.unit_id,\n d.subject_type,\n d.subject_id,\n f.template_id,\n f.data AS form_data,\n f.signed_at,\n f.signed_by,\n t.name AS template_name,\n t.category AS template_category,\n p.name AS person_name\n FROM (((public.documents d\n LEFT JOIN public.plg_forms_documents f ON ((f.document_id = d.id)))\n LEFT JOIN public.plg_forms_templates t ON ((t.id = f.template_id)))\n LEFT JOIN public.people p ON ((p.id = d.person_id)));\n\nCREATE VIEW public.v_forms_template_usage WITH (security_invoker='true') AS\n SELECT f.template_id,\n f.tenant_id,\n count(*) AS document_count,\n max(d.created_at) AS last_document_at\n FROM (public.plg_forms_documents f\n JOIN public.documents d ON (((d.id = f.document_id) AND (d.is_active = true))))\n GROUP BY f.template_id, f.tenant_id;\n\n\n-- \u2500\u2500 index \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nCREATE INDEX idx_plg_forms_templates_category ON public.plg_forms_templates USING btree (tenant_id, category);\n\nCREATE INDEX idx_plg_forms_templates_current ON public.plg_forms_templates USING btree (tenant_id, is_current, is_active) WHERE ((is_current = true) AND (is_active = true) AND (is_deleted = false));\n\nCREATE INDEX idx_plg_forms_templates_parent ON public.plg_forms_templates USING btree (parent_id);\n\nCREATE INDEX idx_plg_forms_templates_tenant ON public.plg_forms_templates USING btree (tenant_id);\n\n\n-- \u2500\u2500 fk constraint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nALTER TABLE ONLY public.plg_forms_document_files\n ADD CONSTRAINT plg_forms_document_files_document_id_fkey1 FOREIGN KEY (document_id) REFERENCES public.documents(id) ON DELETE CASCADE;\n\nALTER TABLE ONLY public.plg_forms_document_files\n ADD CONSTRAINT plg_forms_document_files_tenant_id_fkey1 FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;\n\nALTER TABLE ONLY public.plg_forms_documents\n ADD CONSTRAINT plg_forms_documents_document_id_fkey FOREIGN KEY (document_id) REFERENCES public.documents(id) ON DELETE CASCADE;\n\nALTER TABLE ONLY public.plg_forms_documents\n ADD CONSTRAINT plg_forms_documents_template_id_fkey1 FOREIGN KEY (template_id) REFERENCES public.plg_forms_templates(id);\n\nALTER TABLE ONLY public.plg_forms_documents\n ADD CONSTRAINT plg_forms_documents_tenant_id_fkey1 FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;\n\nALTER TABLE ONLY public.plg_forms_templates\n ADD CONSTRAINT plg_forms_templates_parent_id_fkey FOREIGN KEY (parent_id) REFERENCES public.plg_forms_templates(id);\n\nALTER TABLE ONLY public.plg_forms_templates\n ADD CONSTRAINT plg_forms_templates_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;\n\n\n-- \u2500\u2500 row security \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nALTER TABLE public.plg_forms_document_files ENABLE ROW LEVEL SECURITY;\n\nALTER TABLE public.plg_forms_documents ENABLE ROW LEVEL SECURITY;\n\nALTER TABLE public.plg_forms_templates ENABLE ROW LEVEL SECURITY;\n\n\n-- \u2500\u2500 policy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nCREATE POLICY plg_forms_document_files_delete ON public.plg_forms_document_files FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_document_files_insert ON public.plg_forms_document_files FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_document_files_select ON public.plg_forms_document_files FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_document_files_update ON public.plg_forms_document_files FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_documents_delete ON public.plg_forms_documents FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_documents_insert ON public.plg_forms_documents FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_documents_select ON public.plg_forms_documents FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_documents_update ON public.plg_forms_documents FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_templates_delete ON public.plg_forms_templates FOR DELETE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_templates_insert ON public.plg_forms_templates FOR INSERT TO authenticated WITH CHECK ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_templates_select ON public.plg_forms_templates FOR SELECT TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\nCREATE POLICY plg_forms_templates_update ON public.plg_forms_templates FOR UPDATE TO authenticated USING ((tenant_id IN ( SELECT public.user_tenant_ids() AS user_tenant_ids)));\n\n\n-- \u2500\u2500 acl \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nREVOKE ALL ON FUNCTION public.agent_forms_upsert_template(p_tenant_id uuid, p_actor_user_id uuid, p_payload jsonb) FROM PUBLIC;\nGRANT ALL ON FUNCTION public.agent_forms_upsert_template(p_tenant_id uuid, p_actor_user_id uuid, p_payload jsonb) TO authenticated;\nGRANT ALL ON FUNCTION public.agent_forms_upsert_template(p_tenant_id uuid, p_actor_user_id uuid, p_payload jsonb) TO service_role;\n\nGRANT MAINTAIN ON TABLE public.plg_forms_document_files TO anon;\nGRANT ALL ON TABLE public.plg_forms_document_files TO authenticated;\nGRANT ALL ON TABLE public.plg_forms_document_files TO service_role;\n\nGRANT MAINTAIN ON TABLE public.plg_forms_documents TO anon;\nGRANT ALL ON TABLE public.plg_forms_documents TO authenticated;\nGRANT ALL ON TABLE public.plg_forms_documents TO service_role;\n\nGRANT MAINTAIN ON TABLE public.plg_forms_templates TO anon;\nGRANT ALL ON TABLE public.plg_forms_templates TO authenticated;\nGRANT ALL ON TABLE public.plg_forms_templates TO service_role;\n\nGRANT MAINTAIN ON TABLE public.plg_forms_rep_submissions TO anon;\nGRANT ALL ON TABLE public.plg_forms_rep_submissions TO authenticated;\nGRANT ALL ON TABLE public.plg_forms_rep_submissions TO service_role;\n\nGRANT MAINTAIN ON TABLE public.v_documents TO anon;\nGRANT ALL ON TABLE public.v_documents TO authenticated;\nGRANT ALL ON TABLE public.v_documents TO service_role;\n\nGRANT MAINTAIN ON TABLE public.v_forms_template_usage TO anon;\nGRANT ALL ON TABLE public.v_forms_template_usage TO authenticated;\nGRANT ALL ON TABLE public.v_forms_template_usage TO service_role;\n\n\n-- \u2500\u2500 comment \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nCOMMENT ON VIEW public.plg_forms_rep_submissions IS 'One row per form submission (a document WITH a form behind it), joined to its template and the person who filled it.';\n\nCOMMENT ON VIEW public.v_documents IS 'Documents with their template joined. security_invoker: the reader''s own RLS decides, not the migration role''s (core 043, carried forward here so re-creating 002 cannot undo it).';\n\n\n-- \u2500\u2500 default privileges: restore \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n-- Put back, so the NEXT thing installed inherits what the chain had.\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON SEQUENCES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON FUNCTIONS TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT MAINTAIN ON TABLES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO postgres$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO anon$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO authenticated$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$ALTER DEFAULT PRIVILEGES FOR ROLE supabase_admin IN SCHEMA public GRANT ALL ON TABLES TO service_role$stmt$;\nEND $dp$;\n\nDO $dp$ BEGIN\n EXECUTE $stmt$--\n-- PostgreSQL database dump complete\n--$stmt$;\nEXCEPTION WHEN insufficient_privilege OR undefined_object THEN\n RAISE NOTICE 'baseline: not ours to set \u2014 %', $stmt$--\n-- PostgreSQL database dump complete\n--$stmt$;\nEND $dp$;\n";
|
|
2
|
+
export declare const MIGRATION_001_O_FORMULARIO_DIZ_SE_ELE_E_EXIGIDO = "-- O formul\u00E1rio diz se ele \u00E9 exigido, e por quanto tempo vale.\n--\n-- O V1 abre o agendamento e avisa, assim que o cliente \u00E9 escolhido:\n--\n-- \"1 formul\u00E1rio pendente de preenchimento\"\n-- Anamnese \u00B7 Nunca preenchido\n--\n-- e, depois de respondido, a mesma faixa vira \"Anamnese em dia \u2014 v\u00E1lido at\u00E9\n-- 08/03/2027\". \u00C9 a PRIMEIRA exig\u00EAncia do atendimento e ela \u00E9 do CLIENTE, n\u00E3o do\n-- servi\u00E7o: vale para qualquer coisa que ele venha fazer.\n--\n-- O V2 tem os formul\u00E1rios (25 modelos, 575 respostas migradas) e n\u00E3o tem as\n-- duas perguntas que fazem o aviso existir:\n--\n-- este modelo \u00E9 EXIGIDO de todo cliente? \u2192 required_on_attendance\n-- a resposta VENCE? \u2192 validity_days\n--\n-- Sem a validade, uma anamnese de 2019 conta como preenchida para sempre \u2014 e\n-- anamnese velha \u00E9 pior que anamnese nenhuma, porque ningu\u00E9m vai perguntar de\n-- novo. O V1 usa seis meses; aqui a casa decide, e NULL = n\u00E3o vence.\n--\n-- Nada \u00E9 exigido por padr\u00E3o: `false` em todo modelo existente. Um aviso que\n-- nasce ligado em 25 modelos transforma a primeira abertura do agendamento numa\n-- lista de pend\u00EAncias que ningu\u00E9m pediu.\n\nALTER TABLE public.plg_forms_templates\n ADD COLUMN IF NOT EXISTS required_on_attendance boolean NOT NULL DEFAULT false;\n\nALTER TABLE public.plg_forms_templates\n ADD COLUMN IF NOT EXISTS validity_days integer;\n\nCOMMENT ON COLUMN public.plg_forms_templates.required_on_attendance IS\n 'V1: require_on_attendance \u2014 este modelo \u00E9 exigido de TODO cliente, antes de qualquer atendimento.';\nCOMMENT ON COLUMN public.plg_forms_templates.validity_days IS\n 'Por quantos dias a resposta vale. NULL = n\u00E3o vence. O V1 usa 180 na anamnese.';\n\n-- S\u00F3 os exigidos entram na conta do aviso, e s\u00E3o poucos: \u00EDndice parcial.\nCREATE INDEX IF NOT EXISTS idx_plg_forms_templates_required\n ON public.plg_forms_templates (tenant_id)\n WHERE required_on_attendance AND is_active AND NOT is_deleted;\n\n-- ---------------------------------------------------------------------------\n-- O que falta a ESTA pessoa\n--\n-- Fun\u00E7\u00E3o e n\u00E3o view: a pergunta \u00E9 sempre sobre UMA pessoa (a que est\u00E1 sendo\n-- agendada, a que chegou na recep\u00E7\u00E3o), e uma view que cruza 25 modelos com\n-- 123.484 pessoas para depois filtrar uma \u00E9 um scan por abertura de modal.\n--\n-- Devolve uma linha por modelo exigido, com o estado j\u00E1 decidido \u2014 `pending`,\n-- `expired` ou `valid`. Decidir no banco e n\u00E3o na tela \u00E9 o que faz as tr\u00EAs\n-- portas (agendamento, check-in, ficha) contarem a mesma hist\u00F3ria.\n-- ---------------------------------------------------------------------------\n\nCREATE OR REPLACE FUNCTION public.forms_person_requirements(\n p_tenant_id uuid,\n p_person_id uuid\n)\nRETURNS TABLE (\n template_id uuid,\n template_name text,\n category text,\n validity_days integer,\n last_filled_at timestamptz,\n valid_until date,\n state text\n)\nLANGUAGE sql\nSTABLE\nSECURITY INVOKER\n-- `search_path` qualificado no corpo: vazio e sem qualificar, o corpo compila\n-- no DDL e estoura na primeira chamada.\nSET search_path TO ''\nAS $$\n WITH exigidos AS (\n SELECT t.id, t.name, t.category, t.validity_days\n FROM public.plg_forms_templates t\n WHERE t.tenant_id = p_tenant_id\n AND t.required_on_attendance\n AND t.is_active\n AND NOT t.is_deleted\n ),\n ultima AS (\n SELECT fd.template_id, max(coalesce(fd.signed_at, fd.created_at)) AS em\n FROM public.plg_forms_documents fd\n JOIN public.documents d ON d.id = fd.document_id\n WHERE fd.tenant_id = p_tenant_id\n AND d.person_id = p_person_id\n GROUP BY fd.template_id\n )\n SELECT e.id,\n e.name,\n e.category,\n e.validity_days,\n u.em,\n CASE WHEN u.em IS NOT NULL AND e.validity_days IS NOT NULL\n THEN (u.em + make_interval(days => e.validity_days))::date\n END,\n CASE\n WHEN u.em IS NULL THEN 'pending'\n WHEN e.validity_days IS NULL THEN 'valid'\n WHEN (u.em + make_interval(days => e.validity_days))::date < current_date THEN 'expired'\n ELSE 'valid'\n END\n FROM exigidos e\n LEFT JOIN ultima u ON u.template_id = e.id\n ORDER BY e.name;\n$$;\n\nCOMMENT ON FUNCTION public.forms_person_requirements(uuid, uuid) IS\n 'Os formul\u00E1rios exigidos desta pessoa, com o estado j\u00E1 decidido (pending | expired | valid). Alimenta o aviso do agendamento, do check-in e da ficha.';\n\nGRANT EXECUTE ON FUNCTION public.forms_person_requirements(uuid, uuid) TO authenticated;\n";
|
|
3
|
+
export declare const MIGRATION_002_A_FICHA_DO_V1_TEM_ONDE_MORAR = "-- A ficha do V1 tem onde morar.\n--\n-- 612.148 linhas do Espa\u00E7o Facial sem destino nenhum \u2014 o maior buraco isolado\n-- do porte inteiro, e 11% de todo o dado daquele tenant.\n--\n-- client_form_responses 611.831 a resposta: o prontu\u00E1rio declarado\n-- service_default_forms 314 qual servi\u00E7o exige qual formul\u00E1rio\n-- form_template_fields 256 o campo\n-- form_templates 23 o molde\n--\n-- \u2500\u2500 O que este plugin J\u00C1 tem, e por isso n\u00E3o se recria \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n--\n-- Medido no cluster em 22/09/2026, antes de escrever uma linha:\n--\n-- public.plg_forms_templates existe \u2014 com `schema jsonb`\n-- public.plg_forms_documents existe \u2014 extens\u00E3o de public.documents\n-- public.plg_forms_document_files existe\n-- public.document_kinds j\u00E1 declara kind='form', plugin='forms'\n--\n-- Isso muda o porte inteiro. O plano de 22/09 previa quatro tabelas novas;\n-- s\u00E3o UMA tabela nova e cinco colunas, porque:\n--\n-- `form_template_fields` N\u00C3O vira tabela. O V2 guarda o campo DENTRO do\n-- molde, em `plg_forms_templates.schema->'fields'`, e os moldes que j\u00E1\n-- existem no cluster (25 linhas, outros tenants) provam o formato:\n-- {id, col, row, type, label, colSpan, source{...}}. Criar\n-- plg_forms_template_fields seria abrir um segundo lugar para a mesma\n-- coisa \u2014 o de-para monta o jsonb no augment e pronto.\n--\n-- `client_form_responses` N\u00C3O vira tabela. Resposta de formul\u00E1rio \u00E9\n-- DOCUMENTO: `public.documents` (o arqu\u00E9tipo, com person_id, unit_id,\n-- subject_type/subject_id, notes) mais `plg_forms_documents` (a extens\u00E3o,\n-- com template_id e data). \u00C9 o mesmo par que `invoices` faz com\n-- `public.orders` + `plg_financial_invoices`.\n--\n-- \u2500\u2500 unit_id fica NULLABLE, e isso \u00E9 decis\u00E3o registrada \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n--\n-- O V1 n\u00E3o escopa ficha por unidade: `client_form_responses` n\u00E3o tem unit_id.\n-- O V2 escopa tudo por franquia. Das tr\u00EAs sa\u00EDdas poss\u00EDveis \u2014 nullable,\n-- NOT NULL pela unidade do profissional, NOT NULL pela unidade de cadastro \u2014\n-- ficou a NULLABLE, com null valendo para a franquia inteira. \u00C9 o que o V1 faz\n-- hoje na pr\u00E1tica, e as outras duas escondem a ficha do cliente que trocou de\n-- unidade. `documents.unit_id` j\u00E1 \u00E9 nullable: nada a alterar.\n--\n-- Idempotente.\n\n-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n-- 1. O molde ganha o que faz dele uma BOLA do atendimento\n-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n--\n-- `required_on_attendance` e `validity_days` j\u00E1 entraram na 001. Faltam as tr\u00EAs\n-- que a tela do V1 l\u00EA para decidir se pinta a bola, se ela alerta, e se o\n-- cliente pode responder sozinho. Sem elas o molde existe e n\u00E3o serve.\n\nALTER TABLE public.plg_forms_templates\n ADD COLUMN IF NOT EXISTS icon text;\nALTER TABLE public.plg_forms_templates\n ADD COLUMN IF NOT EXISTS alert_when_missing boolean NOT NULL DEFAULT false;\nALTER TABLE public.plg_forms_templates\n ADD COLUMN IF NOT EXISTS show_on_self_service boolean NOT NULL DEFAULT false;\n\nCOMMENT ON COLUMN public.plg_forms_templates.icon IS\n 'Nome do \u00EDcone com que a bola do atendimento \u00E9 pintada. \u2190 form_templates.icon';\nCOMMENT ON COLUMN public.plg_forms_templates.alert_when_missing IS\n 'A aus\u00EAncia da resposta alerta, em vez de s\u00F3 faltar. \u2190 form_templates.alert_when_missing';\nCOMMENT ON COLUMN public.plg_forms_templates.show_on_self_service IS\n 'O cliente responde sozinho, fora do atendimento. \u2190 form_templates.show_on_client_self_service';\n\n-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n-- 2. A resposta diz a QUAL servi\u00E7o ela se refere, e quem a colheu\n-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n--\n-- `documents` j\u00E1 responde de quem \u00E9 (person_id), de que unidade (unit_id) e a\n-- que ela se pendura (subject_type/subject_id \u2192 o agendamento). O que falta \u00E9\n-- do dom\u00EDnio do formul\u00E1rio: o servi\u00E7o e o profissional.\n--\n-- `documents.created_by` N\u00C3O serve para professional_id: created_by \u00E9 o usu\u00E1rio\n-- autenticado que gravou a linha, e no porte isso \u00E9 o motor. O V1 guarda\n-- `professional_id` apontando para uma PESSOA do cat\u00E1logo \u2014 outra pergunta.\n\nALTER TABLE public.plg_forms_documents\n ADD COLUMN IF NOT EXISTS product_id uuid;\nALTER TABLE public.plg_forms_documents\n ADD COLUMN IF NOT EXISTS professional_id uuid;\n\nDO $$\nBEGIN\n IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'plg_forms_documents_product_fk') THEN\n ALTER TABLE public.plg_forms_documents\n ADD CONSTRAINT plg_forms_documents_product_fk\n FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE SET NULL;\n END IF;\n IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'plg_forms_documents_professional_fk') THEN\n ALTER TABLE public.plg_forms_documents\n ADD CONSTRAINT plg_forms_documents_professional_fk\n FOREIGN KEY (professional_id) REFERENCES public.people(id) ON DELETE SET NULL;\n END IF;\nEND $$;\n\nCOMMENT ON COLUMN public.plg_forms_documents.product_id IS\n 'O servi\u00E7o a que a ficha se refere. Servi\u00E7o \u00E9 produto no V2 (kind=''service''). \u2190 client_form_responses.service_id';\nCOMMENT ON COLUMN public.plg_forms_documents.professional_id IS\n 'Quem colheu a ficha. \u2190 client_form_responses.professional_id';\n\nCREATE INDEX IF NOT EXISTS plg_forms_documents_product_idx\n ON public.plg_forms_documents (tenant_id, product_id) WHERE product_id IS NOT NULL;\nCREATE INDEX IF NOT EXISTS plg_forms_documents_template_idx\n ON public.plg_forms_documents (tenant_id, template_id);\n\n-- O \u00EDndice que a tela do atendimento pede: as fichas DESTE agendamento.\n-- 611.831 documentos e a pergunta \u00E9 sempre por subject.\nCREATE INDEX IF NOT EXISTS documents_subject_idx\n ON public.documents (tenant_id, subject_type, subject_id)\n WHERE subject_id IS NOT NULL;\n\n-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n-- 3. Qual servi\u00E7o exige qual formul\u00E1rio\n-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n--\n-- A \u00FAnica tabela nova. 314 linhas, e \u00E9 a REGRA que gera a bola: sem ela o V2\n-- n\u00E3o sabe que \"Botox\" pede a ficha de anamnese facial.\n--\n-- Sem unit_id de prop\u00F3sito, pelo mesmo motivo de\n-- `plg_clinical_service_revisions`: \u00E9 CAT\u00C1LOGO. O que um servi\u00E7o exige vale na\n-- rede inteira, e escond\u00EA-lo por filial faria a bola aparecer numa unidade e\n-- sumir na outra para o mesmo servi\u00E7o.\n\nCREATE TABLE IF NOT EXISTS public.plg_forms_service_defaults (\n id uuid DEFAULT gen_random_uuid() NOT NULL,\n tenant_id uuid NOT NULL,\n product_id uuid NOT NULL,\n template_id uuid NOT NULL,\n -- Vocabul\u00E1rio medido no V1, n\u00E3o inventado: um CHECK fechado aqui viraria\n -- quarentena na primeira linha com um valor que ningu\u00E9m previu. O de-para\n -- normaliza; a tabela aceita o que vier e o default cobre o nulo.\n requirement_scope text DEFAULT 'always'::text NOT NULL,\n metadata jsonb DEFAULT '{}'::jsonb NOT NULL,\n created_at timestamp with time zone DEFAULT now() NOT NULL,\n updated_at timestamp with time zone DEFAULT now() NOT NULL,\n CONSTRAINT plg_forms_service_defaults_pkey PRIMARY KEY (id)\n);\n\nDO $$\nBEGIN\n IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'plg_forms_service_defaults_tenant_fk') THEN\n ALTER TABLE public.plg_forms_service_defaults\n ADD CONSTRAINT plg_forms_service_defaults_tenant_fk\n FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;\n END IF;\n IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'plg_forms_service_defaults_product_fk') THEN\n ALTER TABLE public.plg_forms_service_defaults\n ADD CONSTRAINT plg_forms_service_defaults_product_fk\n FOREIGN KEY (product_id) REFERENCES public.products(id) ON DELETE CASCADE;\n END IF;\n IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'plg_forms_service_defaults_template_fk') THEN\n ALTER TABLE public.plg_forms_service_defaults\n ADD CONSTRAINT plg_forms_service_defaults_template_fk\n FOREIGN KEY (template_id) REFERENCES public.plg_forms_templates(id) ON DELETE CASCADE;\n END IF;\nEND $$;\n\n-- O par \u00E9 \u00FAnico: um servi\u00E7o n\u00E3o exige o mesmo molde duas vezes.\nCREATE UNIQUE INDEX IF NOT EXISTS plg_forms_service_defaults_uq\n ON public.plg_forms_service_defaults (tenant_id, product_id, template_id);\nCREATE INDEX IF NOT EXISTS plg_forms_service_defaults_product_idx\n ON public.plg_forms_service_defaults (tenant_id, product_id);\n\nCOMMENT ON TABLE public.plg_forms_service_defaults IS\n 'Qual formul\u00E1rio cada servi\u00E7o exige \u2014 a regra que gera a bola do atendimento. \u2190 service_default_forms';\n\nDROP TRIGGER IF EXISTS plg_forms_service_defaults_updated_at ON public.plg_forms_service_defaults;\nCREATE TRIGGER plg_forms_service_defaults_updated_at\n BEFORE UPDATE ON public.plg_forms_service_defaults\n FOR EACH ROW EXECUTE FUNCTION public.handle_updated_at();\n\n-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n-- 4. Quem enxerga\n-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n--\n-- Mesma forma das outras plg_forms_*: cerca de TENANT, via user_tenant_ids().\n-- N\u00E3o \u00E9 a forma mais apertada do SDK, e de prop\u00F3sito \u2014 uma regra de cat\u00E1logo\n-- com pol\u00EDtica de unidade divergiria das outras tr\u00EAs tabelas do plugin e\n-- quebraria a tela que j\u00E1 existe. Apertar isso \u00E9 uma migration do plugin\n-- inteiro, n\u00E3o um efeito colateral do porte.\n\nALTER TABLE public.plg_forms_service_defaults ENABLE ROW LEVEL SECURITY;\nALTER TABLE public.plg_forms_service_defaults FORCE ROW LEVEL SECURITY;\nGRANT SELECT, INSERT, UPDATE, DELETE ON TABLE public.plg_forms_service_defaults TO authenticated;\nGRANT ALL ON TABLE public.plg_forms_service_defaults TO service_role;\n\nDROP POLICY IF EXISTS plg_forms_service_defaults_select ON public.plg_forms_service_defaults;\nCREATE POLICY plg_forms_service_defaults_select ON public.plg_forms_service_defaults\n FOR SELECT TO authenticated USING (tenant_id IN (SELECT user_tenant_ids()));\n\nDROP POLICY IF EXISTS plg_forms_service_defaults_insert ON public.plg_forms_service_defaults;\nCREATE POLICY plg_forms_service_defaults_insert ON public.plg_forms_service_defaults\n FOR INSERT TO authenticated WITH CHECK (tenant_id IN (SELECT user_tenant_ids()));\n\nDROP POLICY IF EXISTS plg_forms_service_defaults_update ON public.plg_forms_service_defaults;\nCREATE POLICY plg_forms_service_defaults_update ON public.plg_forms_service_defaults\n FOR UPDATE TO authenticated USING (tenant_id IN (SELECT user_tenant_ids()))\n WITH CHECK (tenant_id IN (SELECT user_tenant_ids()));\n\nDROP POLICY IF EXISTS plg_forms_service_defaults_delete ON public.plg_forms_service_defaults;\nCREATE POLICY plg_forms_service_defaults_delete ON public.plg_forms_service_defaults\n FOR DELETE TO authenticated USING (tenant_id IN (SELECT user_tenant_ids()));\n";
|
|
2
4
|
export declare const MIGRATIONS: Array<{
|
|
3
5
|
id: string;
|
|
4
6
|
sql: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,0+kCA0mBlC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,0+kCA0mBlC,CAAA;AAED,eAAO,MAAM,+CAA+C,mtJAgH3D,CAAA;AAED,eAAO,MAAM,0CAA0C,q5cA8MtD,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIzD,CAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -57,6 +57,10 @@ export interface FormTemplate {
|
|
|
57
57
|
metadata: Record<string, unknown>;
|
|
58
58
|
isActive: boolean;
|
|
59
59
|
isDeleted: boolean;
|
|
60
|
+
/** Exigido de TODO cliente antes de qualquer atendimento (migration 001). */
|
|
61
|
+
requiredOnAttendance: boolean;
|
|
62
|
+
/** Por quantos dias a resposta vale. `null` = não vence. */
|
|
63
|
+
validityDays: number | null;
|
|
60
64
|
createdBy?: string;
|
|
61
65
|
updatedBy?: string;
|
|
62
66
|
createdAt: string;
|
|
@@ -153,6 +157,8 @@ export interface UpdateTemplateInput {
|
|
|
153
157
|
tags?: string[];
|
|
154
158
|
metadata?: Record<string, unknown>;
|
|
155
159
|
isActive?: boolean;
|
|
160
|
+
requiredOnAttendance?: boolean;
|
|
161
|
+
validityDays?: number | null;
|
|
156
162
|
}
|
|
157
163
|
export interface CreateDocumentInput {
|
|
158
164
|
templateId?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,OAAO,GACP,MAAM,GACN,UAAU,GACV,OAAO,GACP,SAAS,GACT,QAAQ,CAAA;AAMZ,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,aAAa,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,gBAAgB;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wCAAwC;IACxC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,MAAM,EAAE;QAAE,OAAO,EAAE,EAAE,CAAA;KAAE,CAAA;CACxB;AAMD,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,WAAW,GACX,QAAQ,GACR,UAAU,GACV,SAAS,CAAA;AAEb,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,oBAAoB,EAAE,OAAO,CAAA;IAC7B,4DAA4D;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAMD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE1E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,cAAc,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAMD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;CAClB;AAMD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAA;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,yDAAyD;IACzD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAMD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,MAAM,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateListView.d.ts","sourceRoot":"","sources":["../../src/views/TemplateListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAA;AASxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAA;AAE9D,UAAU,qBAAqB;IAC7B,KAAK,EAAE,gBAAgB,CAAA;IACvB,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAUD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"TemplateListView.d.ts","sourceRoot":"","sources":["../../src/views/TemplateListView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAA;AASxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,UAAU,CAAA;AAE9D,UAAU,qBAAqB;IAC7B,KAAK,EAAE,gBAAgB,CAAA;IACvB,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAUD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,qBAAqB,qBA2PvF"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"status": "beta",
|
|
5
5
|
"dependencies": []
|
|
6
6
|
},
|
|
7
|
-
"version": "0.
|
|
7
|
+
"version": "0.11.0",
|
|
8
8
|
"description": "Fayz SDK — plugin-forms plugin",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"sideEffects": false,
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"@dnd-kit/modifiers": "^9.0.0",
|
|
32
32
|
"@dnd-kit/sortable": "^10.0.0",
|
|
33
33
|
"@dnd-kit/utilities": "^3.2.2",
|
|
34
|
-
"@fayz-ai/core": "^0.
|
|
35
|
-
"@fayz-ai/admin": "^0.
|
|
36
|
-
"@fayz-ai/ui": "^0.
|
|
34
|
+
"@fayz-ai/core": "^0.30.0",
|
|
35
|
+
"@fayz-ai/admin": "^0.30.0",
|
|
36
|
+
"@fayz-ai/ui": "^0.30.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/react": "^18.3.0",
|