Sync latest-evidence search and distinct source counts

This commit is contained in:
Admin 2026-09-29 20:20:14 +00:00
parent 27330207c5
commit 849dba6047
2 changed files with 13 additions and 5 deletions

View File

@ -813,7 +813,9 @@ export async function listSources() {
export async function sourceStatus() { export async function sourceStatus() {
const result = await pool.query(` const result = await pool.query(`
SELECT s.*, SELECT s.*,
(SELECT COUNT(*)::int FROM signals sig WHERE sig.source_id=s.id) AS signal_count, (SELECT COUNT(DISTINCT sig.external_id)::int
FROM signals sig
WHERE sig.source_id=s.id) AS signal_count,
(SELECT COUNT(*)::int (SELECT COUNT(*)::int
FROM opportunities o FROM opportunities o
JOIN signals sig ON sig.id=o.signal_id JOIN signals sig ON sig.id=o.signal_id
@ -924,11 +926,17 @@ export async function getEvidence(id: string) {
export async function searchEvidence(query: string, limit = 20) { export async function searchEvidence(query: string, limit = 20) {
const result = await pool.query( const result = await pool.query(
`SELECT e.*, s.source_id,s.title,s.summary,s.url,s.published_at, `WITH latest_signal AS (
SELECT DISTINCT ON (source_id,external_id) id
FROM signals
ORDER BY source_id,external_id,detected_at DESC
)
SELECT e.*, s.source_id,s.title,s.summary,s.url,s.published_at,
src.publisher,src.source_class,src.independence_group,src.authority_tier, src.publisher,src.source_class,src.independence_group,src.authority_tier,
ss.retrieved_at AS snapshot_retrieved_at ss.retrieved_at AS snapshot_retrieved_at
FROM evidence e FROM latest_signal ls
JOIN signals s ON s.id=e.signal_id JOIN signals s ON s.id=ls.id
JOIN evidence e ON e.signal_id=s.id
LEFT JOIN sources src ON src.id=s.source_id LEFT JOIN sources src ON src.id=s.source_id
LEFT JOIN source_snapshots ss ON ss.id=e.snapshot_id LEFT JOIN source_snapshots ss ON ss.id=e.snapshot_id
WHERE e.excerpt ILIKE $1 OR s.title ILIKE $1 OR s.summary ILIKE $1 WHERE e.excerpt ILIKE $1 OR s.title ILIKE $1 OR s.summary ILIKE $1

View File

@ -143,7 +143,7 @@ app.get("/ready", async (_req, res) => {
try { try {
const result = await pool.query( const result = await pool.query(
`SELECT s.id, s.name, s.last_synced_at, s.last_error, `SELECT s.id, s.name, s.last_synced_at, s.last_error,
COUNT(sig.id)::int AS signal_count COUNT(DISTINCT sig.external_id)::int AS signal_count
FROM sources s FROM sources s
LEFT JOIN signals sig ON sig.source_id=s.id LEFT JOIN signals sig ON sig.source_id=s.id
GROUP BY s.id,s.name,s.last_synced_at,s.last_error,s.baseline_complete GROUP BY s.id,s.name,s.last_synced_at,s.last_error,s.baseline_complete