Add meetings, sprints, and approval decision notes

Migration 042 creates meetings and sprints tables, adds decision_notes
to approvals. Full-stack: MeetingService, SprintService, IPC channels,
preload bridge, domain types. UI: MeetingsPage with scheduling and
type filtering, SprintsPage with progress tracking, ApprovalDetailDialog
with decision notes textarea.
This commit is contained in:
ZacharyZhang-NY committed 2026-06-07 18:01:58 -04:00
1 parent 75e5d17a86
commit ed9b3a3dd1
18 files changed
+430 -12

No files matched your search

@@ -0,0 +1,37 @@
export const approvalNotesMeetingsSprintsSchema = `
alter table approvals add column decision_notes text;
create table if not exists meetings (
id text primary key,
org_id text not null references organizations(id) on delete cascade,
title text not null,
meeting_type text not null,
status text not null,
scheduled_at text,
duration_minutes integer not null,
agenda text not null,
notes text not null,
decisions text not null,
created_at text not null,
updated_at text not null
);
create index if not exists idx_meetings_org on meetings(org_id, scheduled_at);
create table if not exists sprints (
id text primary key,
org_id text not null references organizations(id) on delete cascade,
name text not null,
goal text not null,
status text not null,
start_date text not null,
end_date text not null,
velocity_points integer not null default 0,
completed_points integer not null default 0,
retrospective text not null,
created_at text not null,
updated_at text not null
);
create index if not exists idx_sprints_org on sprints(org_id, status);
`;
@@ -40,6 +40,7 @@ import { providerAuthProfileCascadeSchema } from "./migrations/038-provider-auth
import { auditImmutabilityOrgTeardownSchema } from "./migrations/039-audit-immutability-org-teardown";
import { documentsKnowledgeAutomationSchema } from "./migrations/040-documents-knowledge-automation";
import { taskSubtasksDeleteSchema } from "./migrations/041-task-subtasks-delete";
import { approvalNotesMeetingsSprintsSchema } from "./migrations/042-approval-notes-meetings-sprints";
interface Migration {
version: number;
@@ -89,6 +90,7 @@ const MIGRATIONS: Migration[] = [
{ version: 39, name: "audit_immutability_org_teardown", sql: auditImmutabilityOrgTeardownSchema },
{ version: 40, name: "documents_knowledge_automation", sql: documentsKnowledgeAutomationSchema },
{ version: 41, name: "task_subtasks_delete", sql: taskSubtasksDeleteSchema },
{ version: 42, name: "approval_notes_meetings_sprints", sql: approvalNotesMeetingsSprintsSchema },
];
const SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1].version;