mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-11 05:42:19 +00:00
Merge branch 'feat/v146-server-insights' into feat/v146-server
This commit is contained in:
commit
af15be4708
81 files changed
+18200
-1821
No files matched your search
@@ -41,7 +41,7 @@ const ADMITTED: Record<string, { jobs: string[]; why: string }> = {
|
||||
jobs: ["daily_briefing"],
|
||||
why: "The daily briefing's generation and its phrasing re-roll; the JSON and grounding repairs do not reason.",
|
||||
},
|
||||
"app/api/insights/generate/route.ts": {
|
||||
"lib/insights/briefing-request/completion.ts": {
|
||||
jobs: ["daily_briefing"],
|
||||
why: "A briefing asked for by hand reasons like the scheduled one; its JSON and grounding repairs do not.",
|
||||
},
|
||||
|
||||
@@ -177,7 +177,7 @@ const TS_READERS: Record<string, Entry> = {
|
||||
"app/api/insights/cards/route.ts": {
|
||||
exempt: "pulse is summarised from day means (readDayMeanSeries)",
|
||||
},
|
||||
"app/api/insights/comprehensive/route.ts": {
|
||||
"lib/insights/comprehensive-overview/build.ts": {
|
||||
exempt: "summarises the mood series only",
|
||||
},
|
||||
};
|
||||
|
||||
@@ -76,7 +76,7 @@ import type { ShareScope } from "@/lib/sharing/scope";
|
||||
|
||||
import { ADMITTED_MUTATING_HANDLERS } from "../../tests/fixtures/v137/sharing-matrix";
|
||||
import { API_HANDLER, guardModuleOf } from "./helpers/auth-guards";
|
||||
import { readSourceText } from "./helpers/source-files";
|
||||
import { readSourceText, walkSourceFiles } from "./helpers/source-files";
|
||||
|
||||
const SRC = join(process.cwd(), "src");
|
||||
|
||||
@@ -3316,15 +3316,30 @@ describe("(g) the MANAGE route set is frozen", () => {
|
||||
// and refreshes no token. Credential policy belongs inside every resolver
|
||||
// and presence helper so a delegate or managed system job cannot select a
|
||||
// personal BYOK key or custom base URL first.
|
||||
// The route hands its body to the overview modules, so the leg reads the
|
||||
// route and every one of them: the probe is called among them, and no
|
||||
// resolver is called by any.
|
||||
const comprehensiveModules = [
|
||||
"app/api/insights/comprehensive/route.ts",
|
||||
...walkSourceFiles(join(SRC, "lib/insights/comprehensive-overview"), {
|
||||
floor: 5,
|
||||
}).map((f) => `lib/insights/comprehensive-overview/${f}`),
|
||||
];
|
||||
expect(read(comprehensiveModules[0])).toContain(
|
||||
'"@/lib/insights/comprehensive-overview/overview"',
|
||||
);
|
||||
expect(
|
||||
callsSymbol(
|
||||
"app/api/insights/comprehensive/route.ts",
|
||||
"probeProviderPresence",
|
||||
),
|
||||
comprehensiveModules.some((m) => callsSymbol(m, "probeProviderPresence")),
|
||||
).toBe(true);
|
||||
expect(
|
||||
callsSymbol("app/api/insights/comprehensive/route.ts", "resolveProvider"),
|
||||
).toBe(false);
|
||||
for (const m of comprehensiveModules) {
|
||||
for (const name of [
|
||||
"resolveProvider",
|
||||
"resolveProviderChain",
|
||||
"probeProviderChain",
|
||||
]) {
|
||||
expect(callsSymbol(m, name), `${m} calls ${name}`).toBe(false);
|
||||
}
|
||||
}
|
||||
for (const name of [
|
||||
"resolveProvider",
|
||||
"resolveProviderChain",
|
||||
|
||||
@@ -506,7 +506,7 @@ const READER_UNIT_PRODUCERS = [
|
||||
"lib/ai/prompts/weight.ts",
|
||||
"lib/insights/features-units.ts",
|
||||
"lib/insights/comprehensive-generate.ts",
|
||||
"app/api/insights/generate/route.ts",
|
||||
"lib/insights/briefing-request/features.ts",
|
||||
"lib/insights/weight-status.ts",
|
||||
"lib/insights/metric-status.ts",
|
||||
"lib/insights/narrative/period-narrative.ts",
|
||||
|
||||
Reference in new issue
Block a user