fix(precedents): separate court rulings from committee decisions correctly
All checks were successful
Build & Deploy / build-and-deploy (push) Successful in 1m37s
All checks were successful
Build & Deploy / build-and-deploy (push) Successful in 1m37s
- DB: add 'all_committees' virtual source_kind covering internal_committee + external_upload appeals_committee rows in one query - DB: stats now count all case_law rows (not just external_upload), fixing the precedents_total that excluded 44 internal-committee records - UI: courts table filters to source_type=court_ruling only; committees table uses the new all_committees query Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2052,8 +2052,18 @@ async def list_external_case_law(
|
|||||||
offset: int = 0,
|
offset: int = 0,
|
||||||
source_kind: str = "external_upload",
|
source_kind: str = "external_upload",
|
||||||
) -> list[dict]:
|
) -> list[dict]:
|
||||||
"""List chair-uploaded precedents, with simple filters."""
|
"""List chair-uploaded precedents, with simple filters.
|
||||||
|
|
||||||
|
source_kind="all_committees" expands to: source_kind='internal_committee'
|
||||||
|
OR (source_kind='external_upload' AND source_type='appeals_committee').
|
||||||
|
"""
|
||||||
pool = await get_pool()
|
pool = await get_pool()
|
||||||
|
if source_kind == "all_committees":
|
||||||
|
conditions = [
|
||||||
|
"(source_kind = 'internal_committee' OR "
|
||||||
|
"(source_kind = 'external_upload' AND source_type = 'appeals_committee'))"
|
||||||
|
]
|
||||||
|
else:
|
||||||
conditions = [f"source_kind = '{source_kind}'"]
|
conditions = [f"source_kind = '{source_kind}'"]
|
||||||
params: list = []
|
params: list = []
|
||||||
idx = 1
|
idx = 1
|
||||||
@@ -2488,19 +2498,17 @@ async def precedent_library_stats() -> dict:
|
|||||||
pool = await get_pool()
|
pool = await get_pool()
|
||||||
async with pool.acquire() as conn:
|
async with pool.acquire() as conn:
|
||||||
total = await conn.fetchval(
|
total = await conn.fetchval(
|
||||||
"SELECT COUNT(*) FROM case_law WHERE source_kind = 'external_upload'"
|
"SELECT COUNT(*) FROM case_law"
|
||||||
)
|
)
|
||||||
by_practice = await conn.fetch(
|
by_practice = await conn.fetch(
|
||||||
"""SELECT practice_area, COUNT(*) AS n
|
"""SELECT practice_area, COUNT(*) AS n
|
||||||
FROM case_law
|
FROM case_law
|
||||||
WHERE source_kind = 'external_upload'
|
|
||||||
GROUP BY practice_area
|
GROUP BY practice_area
|
||||||
ORDER BY n DESC"""
|
ORDER BY n DESC"""
|
||||||
)
|
)
|
||||||
by_level = await conn.fetch(
|
by_level = await conn.fetch(
|
||||||
"""SELECT precedent_level, COUNT(*) AS n
|
"""SELECT precedent_level, COUNT(*) AS n
|
||||||
FROM case_law
|
FROM case_law
|
||||||
WHERE source_kind = 'external_upload'
|
|
||||||
GROUP BY precedent_level
|
GROUP BY precedent_level
|
||||||
ORDER BY n DESC"""
|
ORDER BY n DESC"""
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -313,8 +313,8 @@ export function LibraryListPanel() {
|
|||||||
limit: 200,
|
limit: 200,
|
||||||
};
|
};
|
||||||
|
|
||||||
const courts = usePrecedents({ ...sharedFilters, sourceKind: "external_upload" });
|
const courts = usePrecedents({ ...sharedFilters, sourceKind: "external_upload", sourceType: "court_ruling" });
|
||||||
const committee = usePrecedents({ ...sharedFilters, sourceKind: "internal_committee" });
|
const committee = usePrecedents({ ...sharedFilters, sourceKind: "all_committees" });
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-8">
|
<div className="space-y-8">
|
||||||
|
|||||||
Reference in New Issue
Block a user