@prenta/core 8.0.0 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/api/routes/scheduling.d.ts.map +1 -1
  3. package/dist/api/routes/scheduling.js +6 -47
  4. package/dist/api/routes/scheduling.js.map +1 -1
  5. package/dist/content-health/cron.d.ts +16 -0
  6. package/dist/content-health/cron.d.ts.map +1 -1
  7. package/dist/content-health/cron.js +18 -4
  8. package/dist/content-health/cron.js.map +1 -1
  9. package/dist/db/model-types.d.ts +15 -0
  10. package/dist/db/model-types.d.ts.map +1 -1
  11. package/dist/generated/browser.d.ts +8 -0
  12. package/dist/generated/client.d.ts +8 -0
  13. package/dist/generated/internal/class.d.ts +11 -0
  14. package/dist/generated/internal/class.js +4 -4
  15. package/dist/generated/internal/prismaNamespace.d.ts +99 -1
  16. package/dist/generated/internal/prismaNamespace.js +22 -1
  17. package/dist/generated/internal/prismaNamespaceBrowser.d.ts +23 -0
  18. package/dist/generated/internal/prismaNamespaceBrowser.js +22 -1
  19. package/dist/generated/models/Job.d.ts +1243 -0
  20. package/dist/generated/models/Job.js +1 -0
  21. package/dist/generated/models.d.ts +1 -0
  22. package/dist/jobs/handlers.d.ts +4 -0
  23. package/dist/jobs/handlers.d.ts.map +1 -0
  24. package/dist/jobs/handlers.js +116 -0
  25. package/dist/jobs/handlers.js.map +1 -0
  26. package/dist/jobs/memory-store.d.ts +13 -0
  27. package/dist/jobs/memory-store.d.ts.map +1 -0
  28. package/dist/jobs/memory-store.js +55 -0
  29. package/dist/jobs/memory-store.js.map +1 -0
  30. package/dist/jobs/prisma-store.d.ts +13 -0
  31. package/dist/jobs/prisma-store.d.ts.map +1 -0
  32. package/dist/jobs/prisma-store.js +113 -0
  33. package/dist/jobs/prisma-store.js.map +1 -0
  34. package/dist/jobs/queue.d.ts +17 -0
  35. package/dist/jobs/queue.d.ts.map +1 -0
  36. package/dist/jobs/queue.js +134 -0
  37. package/dist/jobs/queue.js.map +1 -0
  38. package/dist/jobs/routes.d.ts +10 -0
  39. package/dist/jobs/routes.d.ts.map +1 -0
  40. package/dist/jobs/routes.js +61 -0
  41. package/dist/jobs/routes.js.map +1 -0
  42. package/dist/jobs/seo-scan-tick.d.ts +12 -0
  43. package/dist/jobs/seo-scan-tick.d.ts.map +1 -0
  44. package/dist/jobs/seo-scan-tick.js +41 -0
  45. package/dist/jobs/seo-scan-tick.js.map +1 -0
  46. package/dist/jobs/types.d.ts +52 -0
  47. package/dist/jobs/types.d.ts.map +1 -0
  48. package/dist/jobs/types.js +2 -0
  49. package/dist/jobs/types.js.map +1 -0
  50. package/dist/seo/audit-runner.d.ts +26 -0
  51. package/dist/seo/audit-runner.d.ts.map +1 -1
  52. package/dist/seo/audit-runner.js +264 -6
  53. package/dist/seo/audit-runner.js.map +1 -1
  54. package/package.json +1 -1
  55. package/prisma/migrations/0022_jobs/migration.sql +20 -0
  56. package/prisma/schema.prisma +22 -0
@@ -0,0 +1,41 @@
1
+ import { AuditAlreadyRunningError, frontEndContentCollectionTypes, runAndPersistAudit, sweepStaleAuditRuns, } from '../seo/audit-runner.js';
2
+ import { maybeSendSeoDigest } from '../seo/digest.js';
3
+ import { getPrentaConfig } from '../config/runtime.js';
4
+ /**
5
+ * One SEO audit + digest attempt. Failures stay in the result so a retry
6
+ * policy can see them, and a thrown audit error does not discard the digest.
7
+ */
8
+ export async function runSeoScanTick(db) {
9
+ let swept = 0;
10
+ try {
11
+ swept = await sweepStaleAuditRuns(db);
12
+ }
13
+ catch {
14
+ // Sweep is best-effort hygiene — never blocks the audit.
15
+ }
16
+ let audit;
17
+ try {
18
+ const collectionTypes = frontEndContentCollectionTypes(getPrentaConfig());
19
+ const run = await runAndPersistAudit(db, { startedById: null, collectionTypes });
20
+ audit = {
21
+ runId: run.id,
22
+ status: run.status,
23
+ siteScore: run.siteScoreAfter,
24
+ issuesFound: run.issuesFound,
25
+ pagesScanned: run.pagesScanned,
26
+ };
27
+ }
28
+ catch (err) {
29
+ const message = String(err instanceof Error ? err.message : err);
30
+ audit = err instanceof AuditAlreadyRunningError ? { skipped: message } : { error: message };
31
+ }
32
+ let digest;
33
+ try {
34
+ digest = await maybeSendSeoDigest(db);
35
+ }
36
+ catch (err) {
37
+ digest = { sent: false, error: String(err instanceof Error ? err.message : err) };
38
+ }
39
+ return { swept, audit, digest };
40
+ }
41
+ //# sourceMappingURL=seo-scan-tick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo-scan-tick.js","sourceRoot":"","sources":["../../src/jobs/seo-scan-tick.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAyB,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAY;IAK/C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;IAED,IAAI,KAA8B,CAAA;IAClC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,8BAA8B,CAAC,eAAe,EAAE,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAA;QAChF,KAAK,GAAG;YACN,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,cAAc;YAC7B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAChE,KAAK,GAAG,GAAG,YAAY,wBAAwB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;IAC7F,CAAC;IAED,IAAI,MAAwB,CAAA;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;IACnF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACjC,CAAC"}
@@ -0,0 +1,52 @@
1
+ export type JobStatus = 'queued' | 'running' | 'succeeded' | 'dead';
2
+ export interface JobProgress {
3
+ completed: number;
4
+ total: number;
5
+ message?: string;
6
+ }
7
+ export interface JobRecord {
8
+ id: string;
9
+ type: string;
10
+ payload: Record<string, unknown>;
11
+ status: JobStatus;
12
+ attempts: number;
13
+ maxAttempts: number;
14
+ runAt: Date;
15
+ lockedAt: Date | null;
16
+ lastError: string | null;
17
+ progress: JobProgress;
18
+ createdAt: Date;
19
+ updatedAt: Date;
20
+ }
21
+ interface JobHandlerContext {
22
+ now: Date;
23
+ deadline: Date;
24
+ }
25
+ type JobHandlerResult = {
26
+ done: true;
27
+ progress?: JobProgress;
28
+ } | {
29
+ done: false;
30
+ progress: JobProgress;
31
+ payload?: Record<string, unknown>;
32
+ };
33
+ export type JobHandler = (job: JobRecord, ctx: JobHandlerContext) => Promise<JobHandlerResult>;
34
+ export interface JobStore {
35
+ insert(job: JobRecord): Promise<void>;
36
+ /** A queued or running job of this type, if one exists. */
37
+ findActive(type: string): Promise<JobRecord | null>;
38
+ /** Oldest queued job whose runAt has passed. Marks it running. */
39
+ claimNext(now: Date): Promise<JobRecord | null>;
40
+ /** Running jobs locked before `cutoff` (the worker was killed mid-slice). */
41
+ findStaleRunning(cutoff: Date): Promise<JobRecord[]>;
42
+ save(job: JobRecord): Promise<void>;
43
+ list(limit: number): Promise<JobRecord[]>;
44
+ }
45
+ export interface QueueTickResult {
46
+ succeeded: number;
47
+ continued: number;
48
+ retried: number;
49
+ dead: number;
50
+ }
51
+ export {};
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAA;AAEnE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,MAAM,EAAE,SAAS,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,WAAW,CAAA;IACrB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,IAAI,CAAA;IACT,QAAQ,EAAE,IAAI,CAAA;CACf;AAED,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,WAAW,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAA;AAE7E,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE9F,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,2DAA2D;IAC3D,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACnD,kEAAkE;IAClE,SAAS,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC/C,6EAA6E;IAC7E,gBAAgB,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IACpD,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":""}
@@ -42,6 +42,8 @@ export type ContentCollectionTypes = Record<string, 'page' | 'post'>;
42
42
  * SEO surfaces show real front-end pages/posts/landing pages and nothing else.
43
43
  */
44
44
  export declare function frontEndContentCollectionTypes(cfg: unknown): ContentCollectionTypes;
45
+ /** Documents the job worker audits per tick. Small enough to finish inside the cron budget. */
46
+ export declare const AUDIT_QUEUE_SLICE = 100;
45
47
  /** Map a published document row into the audit engine's entity shape. */
46
48
  export declare function documentToAuditEntity(doc: any, collectionTypes?: ContentCollectionTypes, siteSeo?: SiteSEOConfig, configSnapshot?: PrentaCMSConfig | null): AuditEntityInput;
47
49
  export interface GatherAuditOptions {
@@ -123,4 +125,28 @@ export declare function sweepStaleAuditRuns(db: PrentaDB, nowMs?: number): Promi
123
125
  * Throws if the SEO models aren't available (caller maps to 501).
124
126
  */
125
127
  export declare function runAndPersistAudit(db: PrentaDB, options?: RunAuditOptions): Promise<PersistedAuditRun>;
128
+ interface AuditSliceResult {
129
+ runId: string;
130
+ pagesScanned: number;
131
+ total: number;
132
+ done: boolean;
133
+ /** True only when this pass stopped before every published page was audited. */
134
+ truncated: boolean;
135
+ skipped: boolean;
136
+ }
137
+ /**
138
+ * Audit one page of the corpus and persist that page's issues.
139
+ *
140
+ * The run stays `RUNNING` until `pagesScanned` reaches `total`. Issues on
141
+ * pages not yet visited are left alone; the last slice resolves whatever this
142
+ * run never restamped. `truncated` stays false when the queue finishes the
143
+ * corpus. A one-shot {@link runAndPersistAudit} that stops at
144
+ * {@link AUDIT_MAX_ENTITIES} still reports `truncated: true`.
145
+ */
146
+ export declare function runAuditSlice(db: PrentaDB, options?: RunAuditOptions & {
147
+ runId?: string | null;
148
+ skip?: number;
149
+ take?: number;
150
+ }): Promise<AuditSliceResult>;
151
+ export {};
126
152
  //# sourceMappingURL=audit-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-runner.d.ts","sourceRoot":"","sources":["../../src/seo/audit-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAA;AAO1B,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAWxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGrD,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,qBAAqB,CAAA;AAW5B;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;AAEpE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAgBnF;AAkBD,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,eAAe,GAAG,IAAI,GACtC,gBAAgB,CAyElB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAA;IACxC;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACxC,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAqBD,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,QAAQ,EACZ,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,aAAa,CAAM,GACxE,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,EACZ,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2C7B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gFAAgF;IAChF,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAA;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,oBAAoB,CAAA;CACpC;AA6BD;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;;CAKlD;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,SAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAW3F;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,QAAQ,EACZ,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA6L5B"}
1
+ {"version":3,"file":"audit-runner.d.ts","sourceRoot":"","sources":["../../src/seo/audit-runner.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  * sequence of runs while the issue table reflects current state.
15
15
  */
16
16
  import { RENDERED_DEPENDENT_ISSUE_TYPES, runSeoAuditAnalysis, } from './audit-engine.js';
17
+ import { calculateSiteSeoScore } from './score.js';
17
18
  import { resolveSeoModuleSettings, getSeoOverrides, applySeoOverrides, SEO_CONFIG_COLLECTION, } from './config-store.js';
18
19
  import { gatherAuditSignals } from './audit-signals.js';
19
20
  import { findInBatches } from '../db/find-in-batches.js';
@@ -75,12 +76,13 @@ export function frontEndContentCollectionTypes(cfg) {
75
76
  return out;
76
77
  }
77
78
  /**
78
- * Upper bound on documents loaded into a single audit pass. Audits hold the
79
- * full entity set in memory and rescore each one, so an unbounded `findMany`
80
- * is an OOM / latency risk on large instances. Sites past this cap should move
81
- * to incremental/queued auditing.
79
+ * Upper bound on documents loaded into a single query. A pass never holds
80
+ * more than this many entities in memory. The queued audit walks every page
81
+ * of the corpus, so this is a slice size ceiling, not a cap on the site.
82
82
  */
83
83
  const AUDIT_MAX_ENTITIES = 5000;
84
+ /** Documents the job worker audits per tick. Small enough to finish inside the cron budget. */
85
+ export const AUDIT_QUEUE_SLICE = 100;
84
86
  function asRecord(v) {
85
87
  return v && typeof v === 'object' && !Array.isArray(v) ? v : {};
86
88
  }
@@ -318,6 +320,12 @@ export async function runAndPersistAudit(db, options = {}) {
318
320
  collectionTypes: options.collectionTypes,
319
321
  effectiveConfig,
320
322
  });
323
+ const total = typeof db.document?.count === 'function'
324
+ ? await countAuditEntities(db, { collectionTypes: options.collectionTypes })
325
+ : entities.length;
326
+ // A full page that is shorter than the corpus was cut off. Say so, and
327
+ // do not resolve issues on the pages this pass never loaded.
328
+ const truncated = total > entities.length;
321
329
  const renderedEnabled = moduleSettings.auditRenderedHtml;
322
330
  const renderedResult = renderedEnabled && siteUrl && originSource
323
331
  ? await fetchRenderedEvidence(entities.map(({ entityId, url }) => ({ entityId, url })), { origin: siteUrl, originSource })
@@ -382,7 +390,10 @@ export async function runAndPersistAudit(db, options = {}) {
382
390
  const unverifiedEntityIds = new Set(entitiesWithEvidence
383
391
  .filter(({ renderedEvidence }) => renderedEvidence?.state === 'unverified')
384
392
  .map(({ entityId }) => entityId));
385
- await persistIssues(db, run.id, result.issues, { unverifiedEntityIds });
393
+ await persistIssues(db, run.id, result.issues, {
394
+ unverifiedEntityIds,
395
+ reconcile: !truncated,
396
+ });
386
397
  // Seed redirect recovery suggestions for legitimate broken paths and 404 hits.
387
398
  {
388
399
  const pathPrefixes = Object.values(effectiveConfig?.collections ?? {})
@@ -416,7 +427,8 @@ export async function runAndPersistAudit(db, options = {}) {
416
427
  breakdown: result.siteScore.breakdown,
417
428
  renderedAudit: renderedResult.summary,
418
429
  indexableCount: entities.filter((e) => !e.noindex).length,
419
- truncated: entities.length === AUDIT_MAX_ENTITIES,
430
+ total,
431
+ truncated,
420
432
  },
421
433
  },
422
434
  });
@@ -446,6 +458,221 @@ export async function runAndPersistAudit(db, options = {}) {
446
458
  throw err;
447
459
  }
448
460
  }
461
+ function emptySliceAcc() {
462
+ return {
463
+ entities: 0,
464
+ contentWeighted: 0,
465
+ technicalWeighted: 0,
466
+ structuredWeighted: 0,
467
+ brokenLinks: 0,
468
+ redirectChains: 0,
469
+ redirectLoops: 0,
470
+ slowPages: 0,
471
+ issues: 0,
472
+ critical: 0,
473
+ warning: 0,
474
+ info: 0,
475
+ indexable: 0,
476
+ verified: 0,
477
+ unverified: 0,
478
+ notAttempted: 0,
479
+ unverifiedEntityIds: [],
480
+ };
481
+ }
482
+ function readSliceAcc(metadata) {
483
+ const raw = asRecord(asRecord(metadata).acc);
484
+ const acc = emptySliceAcc();
485
+ const numeric = [
486
+ 'entities',
487
+ 'contentWeighted',
488
+ 'technicalWeighted',
489
+ 'structuredWeighted',
490
+ 'brokenLinks',
491
+ 'redirectChains',
492
+ 'redirectLoops',
493
+ 'slowPages',
494
+ 'issues',
495
+ 'critical',
496
+ 'warning',
497
+ 'info',
498
+ 'indexable',
499
+ 'verified',
500
+ 'unverified',
501
+ 'notAttempted',
502
+ ];
503
+ for (const key of numeric) {
504
+ if (typeof raw[key] === 'number')
505
+ acc[key] = raw[key];
506
+ }
507
+ if (Array.isArray(raw.unverifiedEntityIds)) {
508
+ acc.unverifiedEntityIds = raw.unverifiedEntityIds.filter((id) => typeof id === 'string');
509
+ }
510
+ return acc;
511
+ }
512
+ function categoryScore(breakdown, category) {
513
+ return breakdown.find((item) => item.category === category)?.score ?? 0;
514
+ }
515
+ function finishScore(acc) {
516
+ const n = acc.entities || 1;
517
+ const linkRedirect = Math.max(0, 100 - acc.brokenLinks * 15 - (acc.redirectChains + acc.redirectLoops) * 8);
518
+ const performance = acc.slowPages > 0 ? Math.max(0, 70 - acc.slowPages * 10) : 70;
519
+ return calculateSiteSeoScore({
520
+ content: Math.round(acc.contentWeighted / n),
521
+ technical: Math.round(acc.technicalWeighted / n),
522
+ linkRedirect,
523
+ structuredSocial: Math.round(acc.structuredWeighted / n),
524
+ performance,
525
+ });
526
+ }
527
+ /**
528
+ * Audit one page of the corpus and persist that page's issues.
529
+ *
530
+ * The run stays `RUNNING` until `pagesScanned` reaches `total`. Issues on
531
+ * pages not yet visited are left alone; the last slice resolves whatever this
532
+ * run never restamped. `truncated` stays false when the queue finishes the
533
+ * corpus. A one-shot {@link runAndPersistAudit} that stops at
534
+ * {@link AUDIT_MAX_ENTITIES} still reports `truncated: true`.
535
+ */
536
+ export async function runAuditSlice(db, options = {}) {
537
+ if (!db?.seoAuditRun?.create || !db?.seoIssue?.findMany) {
538
+ throw new Error('SEO models not available');
539
+ }
540
+ const take = Math.min(AUDIT_MAX_ENTITIES, Math.max(1, Math.floor(options.take ?? AUDIT_QUEUE_SLICE)));
541
+ const skip = Math.max(0, Math.floor(options.skip ?? 0));
542
+ const staticConfig = getPrentaConfig();
543
+ const overrides = await getSeoOverrides(db).catch(() => null);
544
+ const moduleSettings = resolveSeoModuleSettings(overrides);
545
+ const effectiveConfig = applySeoOverrides(staticConfig, overrides);
546
+ const { siteUrl, source: originSource } = resolvePublicSiteUrlFromSnapshot(staticConfig, overrides);
547
+ let runId = options.runId ?? null;
548
+ if (!runId) {
549
+ const inFlight = await db.seoAuditRun
550
+ .findFirst({
551
+ where: { status: 'RUNNING' },
552
+ orderBy: { startedAt: 'desc' },
553
+ select: { id: true, startedAt: true },
554
+ })
555
+ .catch(() => null);
556
+ if (inFlight?.startedAt && Date.now() - new Date(inFlight.startedAt).getTime() < STALE_RUN_MS) {
557
+ return {
558
+ runId: inFlight.id ?? '',
559
+ pagesScanned: 0,
560
+ total: 0,
561
+ done: true,
562
+ truncated: false,
563
+ skipped: true,
564
+ };
565
+ }
566
+ const prev = await db.seoAuditRun.findFirst({
567
+ where: { status: 'COMPLETED' },
568
+ orderBy: { startedAt: 'desc' },
569
+ select: { siteScoreAfter: true },
570
+ });
571
+ const created = await db.seoAuditRun.create({
572
+ data: {
573
+ status: 'RUNNING',
574
+ scope: options.scope ?? 'full',
575
+ startedById: options.startedById ?? null,
576
+ siteScoreBefore: prev?.siteScoreAfter ?? null,
577
+ },
578
+ });
579
+ runId = created.id;
580
+ }
581
+ const totalKnown = typeof db.document?.count === 'function'
582
+ ? await countAuditEntities(db, { collectionTypes: options.collectionTypes })
583
+ : null;
584
+ const entities = await gatherAuditEntities(db, {
585
+ collectionTypes: options.collectionTypes,
586
+ effectiveConfig,
587
+ skip,
588
+ take,
589
+ });
590
+ const pagesScanned = skip + entities.length;
591
+ const total = totalKnown ?? (entities.length < take ? pagesScanned : pagesScanned + 1);
592
+ const done = entities.length === 0 || entities.length < take || pagesScanned >= total;
593
+ const current = await db.seoAuditRun.findFirst({ where: { id: runId } }).catch(() => null);
594
+ const acc = readSliceAcc(current?.metadata);
595
+ if (entities.length > 0) {
596
+ const renderedEnabled = moduleSettings.auditRenderedHtml;
597
+ const renderedResult = renderedEnabled && siteUrl && originSource
598
+ ? await fetchRenderedEvidence(entities.map(({ entityId, url }) => ({ entityId, url })), { origin: siteUrl, originSource })
599
+ : buildNotAttemptedRenderedResult(entities.length, renderedEnabled ? 'no-origin' : 'disabled', originSource);
600
+ const entitiesWithEvidence = entities.map((entity, index) => ({
601
+ ...entity,
602
+ renderedEvidence: renderedResult.evidence[index],
603
+ }));
604
+ const signals = {
605
+ sitemapEnabled: moduleSettings.sitemapEnabled,
606
+ robotsEnabled: moduleSettings.robotsEnabled,
607
+ ...options.signals,
608
+ };
609
+ const result = runSeoAuditAnalysis(entitiesWithEvidence, signals);
610
+ const unverifiedEntityIds = entitiesWithEvidence
611
+ .filter(({ renderedEvidence }) => renderedEvidence?.state === 'unverified')
612
+ .map(({ entityId }) => entityId);
613
+ await persistIssues(db, runId, result.issues, {
614
+ unverifiedEntityIds: new Set(unverifiedEntityIds),
615
+ reconcile: false,
616
+ });
617
+ const weight = entities.length;
618
+ acc.entities += weight;
619
+ acc.contentWeighted += categoryScore(result.siteScore.breakdown, 'content') * weight;
620
+ acc.technicalWeighted += categoryScore(result.siteScore.breakdown, 'technical') * weight;
621
+ acc.structuredWeighted += categoryScore(result.siteScore.breakdown, 'structuredSocial') * weight;
622
+ acc.issues += result.counts.total;
623
+ acc.critical += result.counts.critical;
624
+ acc.warning += result.counts.warning;
625
+ acc.info += result.counts.info;
626
+ acc.indexable += entities.filter((entity) => !entity.noindex).length;
627
+ acc.verified += renderedResult.summary.verified;
628
+ acc.unverified += renderedResult.summary.unverified;
629
+ acc.notAttempted += renderedResult.summary.notAttempted;
630
+ acc.unverifiedEntityIds.push(...unverifiedEntityIds);
631
+ }
632
+ if (done) {
633
+ await reconcileUnstampedIssues(db, runId, new Set(acc.unverifiedEntityIds));
634
+ }
635
+ const score = finishScore(acc);
636
+ await db.seoAuditRun.update({
637
+ where: { id: runId },
638
+ data: {
639
+ status: done ? 'COMPLETED' : 'RUNNING',
640
+ ...(done ? { finishedAt: new Date() } : {}),
641
+ siteScoreAfter: done ? score.score : null,
642
+ pagesScanned,
643
+ issuesFound: acc.issues,
644
+ criticalCount: acc.critical,
645
+ warningCount: acc.warning,
646
+ infoCount: acc.info,
647
+ metadata: {
648
+ breakdown: done ? score.breakdown : undefined,
649
+ total,
650
+ truncated: false,
651
+ acc,
652
+ indexableCount: acc.indexable,
653
+ renderedAudit: {
654
+ enabled: moduleSettings.auditRenderedHtml,
655
+ originSource,
656
+ verified: acc.verified,
657
+ unverified: acc.unverified,
658
+ notAttempted: acc.notAttempted,
659
+ partial: false,
660
+ bytesRead: 0,
661
+ durationMs: 0,
662
+ reasons: [],
663
+ },
664
+ },
665
+ },
666
+ });
667
+ return {
668
+ runId,
669
+ pagesScanned,
670
+ total,
671
+ done,
672
+ truncated: false,
673
+ skipped: false,
674
+ };
675
+ }
449
676
  function shouldPreserveRenderedIssue(issue, unverifiedEntityIds) {
450
677
  if (!RENDERED_DEPENDENT_ISSUE_TYPES.has(issue.type))
451
678
  return false;
@@ -539,6 +766,8 @@ async function persistIssues(db, auditRunId, detected, options) {
539
766
  });
540
767
  }
541
768
  }
769
+ if (options.reconcile === false)
770
+ return;
542
771
  // Auto-resolve open/recurring issues that were not detected this run.
543
772
  const toResolve = existing.filter((issue) => !detectedKeys.has(issue.issueKey) &&
544
773
  (issue.status === 'open' || issue.status === 'recurring') &&
@@ -550,4 +779,33 @@ async function persistIssues(db, auditRunId, detected, options) {
550
779
  });
551
780
  }
552
781
  }
782
+ /** Resolve open issues this queued run never restamped. */
783
+ async function reconcileUnstampedIssues(db, auditRunId, unverifiedEntityIds) {
784
+ const existing = await findInBatches(({ take, cursor }) => db.seoIssue.findMany({
785
+ take,
786
+ ...(cursor ? { skip: 1, cursor: { id: cursor } } : {}),
787
+ orderBy: { id: 'asc' },
788
+ select: {
789
+ id: true,
790
+ type: true,
791
+ entityId: true,
792
+ relatedEntityIds: true,
793
+ status: true,
794
+ auditRunId: true,
795
+ },
796
+ }));
797
+ const now = new Date();
798
+ for (const issue of existing) {
799
+ if (issue.auditRunId === auditRunId)
800
+ continue;
801
+ if (issue.status !== 'open' && issue.status !== 'recurring')
802
+ continue;
803
+ if (shouldPreserveRenderedIssue(issue, unverifiedEntityIds))
804
+ continue;
805
+ await db.seoIssue.update({
806
+ where: { id: issue.id },
807
+ data: { status: 'resolved', resolvedAt: now },
808
+ });
809
+ }
810
+ }
553
811
  //# sourceMappingURL=audit-runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-runner.js","sourceRoot":"","sources":["../../src/seo/audit-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-runner.js","sourceRoot":"","sources":["../../src/seo/audit-runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prenta/core",
3
- "version": "8.0.0",
3
+ "version": "8.2.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,20 @@
1
+ -- Job queue for SEO audit, content health, and batch AI (#444).
2
+
3
+ CREATE TABLE "prenta_jobs" (
4
+ "id" TEXT NOT NULL,
5
+ "type" TEXT NOT NULL,
6
+ "payload" JSONB NOT NULL,
7
+ "status" TEXT NOT NULL,
8
+ "attempts" INTEGER NOT NULL DEFAULT 0,
9
+ "maxAttempts" INTEGER NOT NULL DEFAULT 3,
10
+ "runAt" TIMESTAMP(3) NOT NULL,
11
+ "lockedAt" TIMESTAMP(3),
12
+ "lastError" TEXT,
13
+ "progress" JSONB NOT NULL,
14
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
15
+ "updatedAt" TIMESTAMP(3) NOT NULL,
16
+
17
+ CONSTRAINT "prenta_jobs_pkey" PRIMARY KEY ("id")
18
+ );
19
+
20
+ CREATE INDEX "prenta_jobs_status_runAt_idx" ON "prenta_jobs"("status", "runAt");
@@ -1116,3 +1116,25 @@ model DocumentNotification {
1116
1116
  @@index([commentId])
1117
1117
  @@map("prenta_document_notifications")
1118
1118
  }
1119
+
1120
+ /// Background work for SEO audit, content health, and batch AI.
1121
+ /// `status` is queued | running | succeeded | dead. A dead row is the
1122
+ /// dead-letter: it is not claimed again. Ids are minted by the queue so a
1123
+ /// stub database that ignores `create` still returns a job id.
1124
+ model Job {
1125
+ id String @id
1126
+ type String
1127
+ payload Json
1128
+ status String
1129
+ attempts Int @default(0)
1130
+ maxAttempts Int @default(3)
1131
+ runAt DateTime
1132
+ lockedAt DateTime?
1133
+ lastError String?
1134
+ progress Json
1135
+ createdAt DateTime @default(now())
1136
+ updatedAt DateTime @updatedAt
1137
+
1138
+ @@index([status, runAt])
1139
+ @@map("prenta_jobs")
1140
+ }