Phase 7: daily summary and read-only Hub API (AUD-73)

- internal/hub: project side of the frozen ask-contract. GET /capabilities,
  read-only POST /ask answerer (no LLM, <3s), and the outbound POST /notify
  client.
- internal/apprise: daily-summary delivery through the house Apprise API.
- internal/summary: deterministic plain-text daily summary builder.
- internal/store: CountByCategory, MessagesByCategory, and summary CRUD.
- internal/server: /capabilities and /ask (bearer-token protected), plus the
  Reports screen (/reports, build, send, delete).
- main.go: -summary, -summary-send, and -notify CLI entry points for n8n.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-10-11 22:38:49 +11:00
parent c4213ebed1
commit a349b42b1f
24 changed files with 2454 additions and 1 deletions

View File

@@ -531,3 +531,25 @@ a:hover { text-decoration: underline; }
.unsub-row { flex-direction: column; align-items: stretch; }
.rules-version { flex-direction: column; align-items: stretch; }
}
/* Phase 7 (FR-10): Reports screen and daily summary. */
.report {
border: 1px solid var(--hairline);
border-radius: 4px;
padding: var(--space-sm);
margin-bottom: var(--space-md);
display: grid;
gap: var(--space-xs);
}
.report:last-child { margin-bottom: 0; }
.report-head { display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap; }
.report-text {
margin: 0;
padding: var(--space-sm);
background: var(--surface-2, var(--canvas));
border-radius: 4px;
font: var(--type-caption);
color: var(--ink-secondary);
white-space: pre-wrap;
overflow-wrap: anywhere;
}