email: per-mailbox captured/matched counts on Email Capture (v0.1.0:65)

/api/email/accounts now returns captured + matched per account (from the per-mailbox
sighting table email_account_messages joined to emails; emails dedupe globally so an
email seen by two mailboxes counts for each). Each mailbox card on the Email Capture
page shows "<N> captured · <M> matched" so per-user coverage is visible, not just the
aggregate. Verified in preview with two seeded mailboxes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Keysat
2026-06-07 23:10:51 -05:00
parent 069e60053b
commit 701e37b579
5 changed files with 39 additions and 4 deletions
+3 -2
View File
@@ -29,8 +29,9 @@ export const PACKAGE_TITLE = 'Ten31 Database'
// * 0.1.0:61 (Email Capture: live backfill progress + auto-refresh)
// * 0.1.0:62 (fix backfill crash on no-Reply-To emails; Sync now retries errored mailboxes)
// * 0.1.0:63 (System Status: storage usage — DB, attachments, backups, disk free)
// * Current: 0.1.0:64 (email-activity agent: propose->review->approve grid notes; sync ~15 min)
export const PACKAGE_VERSION = '0.1.0:64'
// * 0.1.0:64 (email-activity agent: propose->review->approve grid notes; sync ~15 min)
// * Current: 0.1.0:65 (Email Capture: per-mailbox captured/matched counts)
export const PACKAGE_VERSION = '0.1.0:65'
export const DATA_MOUNT_PATH = '/data'
export const WEB_PORT = 8080
+3 -2
View File
@@ -25,8 +25,9 @@ import { v_0_1_0_61 } from './v0.1.0.61'
import { v_0_1_0_62 } from './v0.1.0.62'
import { v_0_1_0_63 } from './v0.1.0.63'
import { v_0_1_0_64 } from './v0.1.0.64'
import { v_0_1_0_65 } from './v0.1.0.65'
export const versionGraph = VersionGraph.of({
current: v_0_1_0_64,
other: [v_0_1_0_39, v_0_1_0_40, v_0_1_0_41, v_0_1_0_42, v_0_1_0_43, v_0_1_0_44, v_0_1_0_45, v_0_1_0_46, v_0_1_0_47, v_0_1_0_48, v_0_1_0_49, v_0_1_0_50, v_0_1_0_51, v_0_1_0_52, v_0_1_0_53, v_0_1_0_54, v_0_1_0_55, v_0_1_0_56, v_0_1_0_57, v_0_1_0_58, v_0_1_0_59, v_0_1_0_60, v_0_1_0_61, v_0_1_0_62, v_0_1_0_63],
current: v_0_1_0_65,
other: [v_0_1_0_39, v_0_1_0_40, v_0_1_0_41, v_0_1_0_42, v_0_1_0_43, v_0_1_0_44, v_0_1_0_45, v_0_1_0_46, v_0_1_0_47, v_0_1_0_48, v_0_1_0_49, v_0_1_0_50, v_0_1_0_51, v_0_1_0_52, v_0_1_0_53, v_0_1_0_54, v_0_1_0_55, v_0_1_0_56, v_0_1_0_57, v_0_1_0_58, v_0_1_0_59, v_0_1_0_60, v_0_1_0_61, v_0_1_0_62, v_0_1_0_63, v_0_1_0_64],
})
+16
View File
@@ -0,0 +1,16 @@
import { VersionInfo } from '@start9labs/start-sdk'
// Email Capture: per-mailbox counts. Each enrolled mailbox card now shows how many
// emails that mailbox captured and how many matched to investors (from the per-account
// sighting table; emails are de-duplicated globally, so an email seen by two mailboxes
// counts for each). Read-only. No schema migration.
export const v_0_1_0_65 = VersionInfo.of({
version: '0.1.0:65',
releaseNotes: {
en_US: [
'Email Capture now shows captured and matched-to-investor counts per Ten31 mailbox,',
'so you can see each users email coverage, not just the totals.',
].join(' '),
},
migrations: { up: async () => {}, down: async () => {} },
})