email-activity agent: propose -> review -> approve grid notes (v0.1.0:64)
When a sent/received email is matched to an investor, a local-model agent drafts a
one-line dated note and queues it as a PENDING proposal (it never writes the grid
itself). On the Email Capture page a partner sees "Proposed grid notes", can edit the
text, and Approve (appends to that investor's grid notes cell, newest at bottom,
stamped with the approver) or Dismiss. Going-forward only: a cutoff (app_settings
email_activity_since, set on first run) means email dated before the feature was
enabled is never summarized, so the historical backfill makes no noise. Sovereign:
summaries run entirely on the local model (no redaction needed). Gmail sync interval
tightened 180 -> 15 min so outgoing email surfaces quickly.
Backend: migration 0002 (email_activity_proposals); propose_email_activity_notes()
runs via a new scheduler post_sync hook; list/decide functions + routes
GET /api/activity/proposals, POST .../{id}/approve|dismiss. Grid append stamps the
approving user (fundraising_state.updated_by has a FK to users). Test
test_email_activity.py (propose cutoff/idempotency, approve appends + edited note,
dismiss, already-decided guard) under FK enforcement.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { VersionInfo } from '@start9labs/start-sdk'
|
||||
|
||||
// Email-activity agent (propose -> review -> approve). When a sent/received email is
|
||||
// matched to an investor, a local-model agent drafts a one-line dated note and queues
|
||||
// it for review on the Email Capture page; a partner edits if needed and Approves
|
||||
// (appends to that investor's grid notes) or Dismisses. Going-forward only (never
|
||||
// summarizes email older than when this was switched on), so the historical backfill
|
||||
// makes no noise. Sovereign: the summary runs entirely on the local model. Gmail sync
|
||||
// interval tightened to ~15 min so outgoing email surfaces quickly. Migration 0002
|
||||
// (email_activity_proposals).
|
||||
export const v_0_1_0_64 = VersionInfo.of({
|
||||
version: '0.1.0:64',
|
||||
releaseNotes: {
|
||||
en_US: [
|
||||
'New email-activity agent: when an email is matched to an investor, it drafts a short',
|
||||
'dated note (on your local model) and queues it on the Email Capture page for you to',
|
||||
'edit, approve into that investor’s grid notes, or dismiss. Going-forward only, so',
|
||||
'the historical backfill stays quiet. Gmail now syncs about every 15 minutes.',
|
||||
].join(' '),
|
||||
},
|
||||
migrations: { up: async () => {}, down: async () => {} },
|
||||
})
|
||||
Reference in New Issue
Block a user