@prenta/core 8.11.0 → 8.12.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.
- package/CHANGELOG.md +12 -0
- package/dist/api/routes/seo/handlers/issues-list.d.ts +5 -0
- package/dist/api/routes/seo/handlers/issues-list.d.ts.map +1 -1
- package/dist/api/routes/seo/handlers/issues-list.js +18 -0
- package/dist/api/routes/seo/handlers/issues-list.js.map +1 -1
- package/dist/api/routes/seo.d.ts.map +1 -1
- package/dist/api/routes/seo.js +2 -1
- package/dist/api/routes/seo.js.map +1 -1
- package/dist/seo/issue-batch-targets.d.ts +26 -0
- package/dist/seo/issue-batch-targets.d.ts.map +1 -0
- package/dist/seo/issue-batch-targets.js +207 -0
- package/dist/seo/issue-batch-targets.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @actuate-media/cms-core
|
|
2
2
|
|
|
3
|
+
## 8.12.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 1a86054: **Run with AI…** in the Posts, Pages and Media bulk bars, and in a page or post collection's list, opens the New batch AI job wizard with the picked documents, so step 2 shows "{n} selected". Picked images start on alt text, and only images are sent. Posts of two types, or more than 400 documents, can't run as one batch, so the button says why. It replaces the bars' Meta descriptions and Summaries buttons; Alt text stays, because it fills the alt text of images inside a document, which the wizard doesn't. Lists of other collection types keep all three. After queuing, the list keeps its selection, so another change can run on the same documents, and the toast's **View job** opens the job in Jobs.
|
|
8
|
+
|
|
9
|
+
An SEO scan's Results tab now has the **Fix with AI** box: a batch job for the largest kind of open issue a batch can fix (missing meta descriptions, and meta descriptions that are too long), with those documents picked. It leaves out issue types SEO autopilot fixes on its own, documents a batch can't run on (archived or scheduled), and documents with a suggestion already waiting for the same field (in the SEO proposals inbox on any of their issues, a queued batch from the wizard or a list, or a batch's review). These entry points show only to people who can queue jobs.
|
|
10
|
+
|
|
11
|
+
Jobs opens a job's drawer from a `/jobs?job=<id>` link.
|
|
12
|
+
|
|
13
|
+
Core adds `GET /seo/issues/batch-targets`: for each of those issue types, the open issues' documents grouped by collection (at most 400 per batch), whether autopilot fixes the type, and how many are left out because a suggestion is waiting.
|
|
14
|
+
|
|
3
15
|
## 8.11.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export declare function getSeoIssues(request: Request): Promise<Response>;
|
|
2
|
+
/**
|
|
3
|
+
* `GET /seo/issues/batch-targets`: for each issue type a batch AI job can fix,
|
|
4
|
+
* the open issues' documents by collection (the Jobs drawer's "Fix with AI").
|
|
5
|
+
*/
|
|
6
|
+
export declare function getSeoIssueBatchTargets(request: Request): Promise<Response>;
|
|
2
7
|
export declare function getSeoIssuesExportBrief(request: Request): Promise<Response>;
|
|
3
8
|
export declare function getSeoIssue(request: Request, params: Record<string, string>): Promise<Response>;
|
|
4
9
|
export declare function postSeoIssueResolve(request: Request, params: Record<string, string>): Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues-list.d.ts","sourceRoot":"","sources":["../../../../../src/api/routes/seo/handlers/issues-list.ts"],"names":[],"mappings":"AAYA,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA2BtE;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6IjF;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAWnB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAEnB"}
|
|
1
|
+
{"version":3,"file":"issues-list.d.ts","sourceRoot":"","sources":["../../../../../src/api/routes/seo/handlers/issues-list.ts"],"names":[],"mappings":"AAYA,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA2BtE;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAUjF;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6IjF;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAWnB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAEnB"}
|
|
@@ -36,6 +36,24 @@ export async function getSeoIssues(request) {
|
|
|
36
36
|
return internalError(err, 'seo/issues');
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* `GET /seo/issues/batch-targets`: for each issue type a batch AI job can fix,
|
|
41
|
+
* the open issues' documents by collection (the Jobs drawer's "Fix with AI").
|
|
42
|
+
*/
|
|
43
|
+
export async function getSeoIssueBatchTargets(request) {
|
|
44
|
+
try {
|
|
45
|
+
const auth = await requireAuth(request);
|
|
46
|
+
if (auth.error)
|
|
47
|
+
return auth.error;
|
|
48
|
+
if (!hasModel(db(), 'seoIssue'))
|
|
49
|
+
return json({ data: { targets: [] } });
|
|
50
|
+
const { seoIssueBatchTargets } = await import('../../../../seo/issue-batch-targets.js');
|
|
51
|
+
return json({ data: { targets: await seoIssueBatchTargets(db()) } });
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return internalError(err, 'seo/issues/batch-targets');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
39
57
|
export async function getSeoIssuesExportBrief(request) {
|
|
40
58
|
try {
|
|
41
59
|
const auth = await requireAuth(request);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues-list.js","sourceRoot":"","sources":["../../../../../src/api/routes/seo/handlers/issues-list.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issues-list.js","sourceRoot":"","sources":["../../../../../src/api/routes/seo/handlers/issues-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../../src/api/routes/seo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../../src/api/routes/seo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAoD7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAE/D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4CzD"}
|
package/dist/api/routes/seo.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getSeoPages } from './seo/handlers/pages.js';
|
|
2
2
|
import { getSeoLinkHealth, getSeoLinkSnapshot, postSeoLinkAiIndex, postSeoLinkSuggest, postSeoLinkApply, } from './seo/handlers/links.js';
|
|
3
3
|
import { postSeoScan, postSeoAudit, getSeoAudits, getSeoAudit } from './seo/handlers/audits.js';
|
|
4
|
-
import { getSeoIssues, getSeoIssuesExportBrief, getSeoIssue, postSeoIssueResolve, postSeoIssueIgnore, postSeoIssueReopen, } from './seo/handlers/issues-list.js';
|
|
4
|
+
import { getSeoIssues, getSeoIssuesExportBrief, getSeoIssueBatchTargets, getSeoIssue, postSeoIssueResolve, postSeoIssueIgnore, postSeoIssueReopen, } from './seo/handlers/issues-list.js';
|
|
5
5
|
import { postSeoIssuesBatchContentBriefs, getSeoIssueContentBrief, postSeoIssueContentBrief, getSeoIssueContentResearch, postSeoIssueContentResearch, postSeoIssueResearchAndBrief, } from './seo/handlers/issues-briefs.js';
|
|
6
6
|
import { postSeoIssueSuggestFix, postSeoIssueApplyFix, postSeoIssueDismissFix, } from './seo/handlers/issues-fixes.js';
|
|
7
7
|
import { getSeoProposals, postSeoProposalsGenerate, postSeoProposalsBulkApply, } from './seo/handlers/proposals.js';
|
|
@@ -27,6 +27,7 @@ export function registerSeoRoutes(router) {
|
|
|
27
27
|
router.get('/seo/audits/:id', getSeoAudit);
|
|
28
28
|
router.get('/seo/issues', getSeoIssues);
|
|
29
29
|
router.get('/seo/issues/export-brief', getSeoIssuesExportBrief);
|
|
30
|
+
router.get('/seo/issues/batch-targets', getSeoIssueBatchTargets);
|
|
30
31
|
router.post('/seo/issues/batch-content-briefs', postSeoIssuesBatchContentBriefs);
|
|
31
32
|
router.get('/seo/issues/:id/content-brief', getSeoIssueContentBrief);
|
|
32
33
|
router.post('/seo/issues/:id/content-brief', postSeoIssueContentBrief);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo.js","sourceRoot":"","sources":["../../../src/api/routes/seo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seo.js","sourceRoot":"","sources":["../../../src/api/routes/seo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PrentaDB } from '../db/client-types.js';
|
|
2
|
+
type BatchFixOperation = 'meta';
|
|
3
|
+
/** One collection's share of an issue type's documents. */
|
|
4
|
+
interface SeoIssueBatchSource {
|
|
5
|
+
/** The collection's key in the config: the batch's `source`. */
|
|
6
|
+
source: string;
|
|
7
|
+
/** The first `FIX_BATCH_MAX` documents, the most recently found first. */
|
|
8
|
+
documentIds: string[];
|
|
9
|
+
/** Every document in this collection, before the cap. */
|
|
10
|
+
total: number;
|
|
11
|
+
}
|
|
12
|
+
export interface SeoIssueBatchTarget {
|
|
13
|
+
/** The SEO issue type, as `ScanResults.categories[].key`. */
|
|
14
|
+
type: string;
|
|
15
|
+
operation: BatchFixOperation;
|
|
16
|
+
/** SEO autopilot fixes this type on its own, so `sources` is empty. */
|
|
17
|
+
autopilot: boolean;
|
|
18
|
+
/** The open issues' documents by collection, the largest first. */
|
|
19
|
+
sources: SeoIssueBatchSource[];
|
|
20
|
+
/** Documents left out because a suggestion for them is already waiting. */
|
|
21
|
+
waiting: number;
|
|
22
|
+
}
|
|
23
|
+
/** Every type in `BATCH_FIXES`, with the documents a batch could fix right now. */
|
|
24
|
+
export declare function seoIssueBatchTargets(db: PrentaDB): Promise<SeoIssueBatchTarget[]>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=issue-batch-targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-batch-targets.d.ts","sourceRoot":"","sources":["../../src/seo/issue-batch-targets.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAMrD,KAAK,iBAAiB,GAAG,MAAM,CAAA;AAyD/B,2DAA2D;AAC3D,UAAU,mBAAmB;IAC3B,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,iBAAiB,CAAA;IAC5B,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAA;IAClB,mEAAmE;IACnE,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAA;CAChB;AAoGD,mFAAmF;AACnF,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA2EvF"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { getFeatureGovernance } from '../ai/governance.js';
|
|
2
|
+
import { getPrentaConfig } from '../config/runtime.js';
|
|
3
|
+
import { getSeoOverrides, resolveSeoModuleSettings } from './config-store.js';
|
|
4
|
+
import { pendingFixFromMetadata } from './issue-fix-ai.js';
|
|
5
|
+
import { ISSUE_FIX_FEATURE_KEY } from './proposals.js';
|
|
6
|
+
/**
|
|
7
|
+
* Issue types a batch operation fixes, and the review field it writes. A
|
|
8
|
+
* length type counts only when the text is too long: `meta` writes at most 160
|
|
9
|
+
* characters, with no minimum, so a too-short one would stay flagged. The
|
|
10
|
+
* title is the audit's own (`audit-engine.ts`).
|
|
11
|
+
*
|
|
12
|
+
* SEO titles aren't offered. The `titles` batch writes at most 60 characters
|
|
13
|
+
* to `metaTitle`, but the audit measures the title after the site's title
|
|
14
|
+
* template adds its suffix, so an approved batch title can still be flagged
|
|
15
|
+
* (CONFLICTS.md §7).
|
|
16
|
+
*/
|
|
17
|
+
const BATCH_FIXES = [
|
|
18
|
+
{ type: 'missing-meta-description', operation: 'meta', field: 'metaDescription' },
|
|
19
|
+
{
|
|
20
|
+
type: 'meta-description-length',
|
|
21
|
+
operation: 'meta',
|
|
22
|
+
field: 'metaDescription',
|
|
23
|
+
title: 'Meta description too long',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* The review field a batch writes, by operation: the kit's names (a job's
|
|
28
|
+
* `payload.operation`) and the worker's (each of its `items`).
|
|
29
|
+
*/
|
|
30
|
+
const OPERATION_FIELDS = {
|
|
31
|
+
meta: 'metaDescription',
|
|
32
|
+
titles: 'seoTitle',
|
|
33
|
+
excerpt: 'excerpt',
|
|
34
|
+
summarize: 'excerpt',
|
|
35
|
+
};
|
|
36
|
+
/** The review field an SEO proposal's patch key writes. */
|
|
37
|
+
const PATCH_FIELDS = {
|
|
38
|
+
metaDescription: 'metaDescription',
|
|
39
|
+
metaTitle: 'seoTitle',
|
|
40
|
+
seoTitle: 'seoTitle',
|
|
41
|
+
};
|
|
42
|
+
/** The statuses a batch resolves (`resolveBatchAiTargets`): never archived or scheduled. */
|
|
43
|
+
const BATCH_STATUSES = ['PUBLISHED', 'DRAFT'];
|
|
44
|
+
/**
|
|
45
|
+
* The most documents one "Fix with AI" batch takes. The wizard's estimate
|
|
46
|
+
* sends the picked ids in its query string, and a request line much past
|
|
47
|
+
* 16 KB (Node's header limit, with the cookies) is refused; 400 ids is about
|
|
48
|
+
* 11 KB. Run it again for the rest once this batch is reviewed.
|
|
49
|
+
*/
|
|
50
|
+
const FIX_BATCH_MAX = 400;
|
|
51
|
+
/**
|
|
52
|
+
* Whether autopilot applies a type's fixes on its own: switched on, not
|
|
53
|
+
* paused, the type enabled and not paused, and AI fixes allowed without
|
|
54
|
+
* approval (the gate's `passesPolicy` and `passesGovernance`). Its owner,
|
|
55
|
+
* plan and daily caps aren't checked: while it's set to fix a type, the type
|
|
56
|
+
* is left to it.
|
|
57
|
+
*/
|
|
58
|
+
function autopilotFixes(policy, approvalRequired, type) {
|
|
59
|
+
if (!policy.enabled || policy.pausedAt || approvalRequired)
|
|
60
|
+
return false;
|
|
61
|
+
const key = type;
|
|
62
|
+
return policy.types[key] === true && typeof policy.pausedTypes[key] !== 'string';
|
|
63
|
+
}
|
|
64
|
+
function fieldOf(operation, customField) {
|
|
65
|
+
if (operation === 'custom')
|
|
66
|
+
return typeof customField === 'string' ? customField : undefined;
|
|
67
|
+
return typeof operation === 'string' ? OPERATION_FIELDS[operation] : undefined;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Documents with a suggestion on the way or waiting, by review field:
|
|
71
|
+
* - in a queued or running batch job that writes the field (its operation, or
|
|
72
|
+
* a custom instruction on it);
|
|
73
|
+
* - with a proposal for it in the SEO proposals inbox, on any open issue (a
|
|
74
|
+
* duplicate description's proposal writes the same field as a missing one);
|
|
75
|
+
* - with a pending review item for it.
|
|
76
|
+
*/
|
|
77
|
+
async function suggestionsWaiting(db, ids) {
|
|
78
|
+
const busy = new Map();
|
|
79
|
+
const add = (field, id) => {
|
|
80
|
+
const set = busy.get(field) ?? new Set();
|
|
81
|
+
set.add(id);
|
|
82
|
+
busy.set(field, set);
|
|
83
|
+
};
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- optional-model guard
|
|
85
|
+
const d = db;
|
|
86
|
+
if (d.job?.findMany) {
|
|
87
|
+
const jobs = await d.job.findMany({
|
|
88
|
+
where: { type: 'batch-ai', status: { in: ['queued', 'running'] } },
|
|
89
|
+
select: { payload: true },
|
|
90
|
+
});
|
|
91
|
+
for (const { payload } of jobs) {
|
|
92
|
+
const p = (payload ?? {});
|
|
93
|
+
// Wizard jobs carry `operation` and `documentIds`. Jobs a list queued
|
|
94
|
+
// through `POST /ai/batch` carry only `items`, each with its own
|
|
95
|
+
// operation and document.
|
|
96
|
+
const field = fieldOf(p.operation, p.field);
|
|
97
|
+
if (field && Array.isArray(p.documentIds)) {
|
|
98
|
+
for (const id of p.documentIds)
|
|
99
|
+
if (typeof id === 'string')
|
|
100
|
+
add(field, id);
|
|
101
|
+
}
|
|
102
|
+
if (Array.isArray(p.items)) {
|
|
103
|
+
for (const item of p.items) {
|
|
104
|
+
const itemField = fieldOf(item?.operation, p.field);
|
|
105
|
+
if (itemField && typeof item?.documentId === 'string')
|
|
106
|
+
add(itemField, item.documentId);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (ids.length > 0) {
|
|
112
|
+
const open = await db.seoIssue.findMany({
|
|
113
|
+
where: { status: { in: ['open', 'recurring'] }, entityId: { in: ids } },
|
|
114
|
+
select: { entityId: true, metadata: true },
|
|
115
|
+
});
|
|
116
|
+
for (const row of open) {
|
|
117
|
+
const patch = pendingFixFromMetadata(row.metadata)?.patch;
|
|
118
|
+
if (!patch || !row.entityId)
|
|
119
|
+
continue;
|
|
120
|
+
for (const key of Object.keys(patch)) {
|
|
121
|
+
const field = PATCH_FIELDS[key];
|
|
122
|
+
if (field)
|
|
123
|
+
add(field, row.entityId);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (d.jobReviewItem?.findMany && ids.length > 0) {
|
|
128
|
+
const fields = [...new Set(BATCH_FIXES.map((fix) => fix.field))];
|
|
129
|
+
const items = await d.jobReviewItem.findMany({
|
|
130
|
+
where: { status: 'pending', field: { in: fields }, documentId: { in: ids } },
|
|
131
|
+
select: { documentId: true, field: true },
|
|
132
|
+
});
|
|
133
|
+
for (const item of items)
|
|
134
|
+
add(item.field, item.documentId);
|
|
135
|
+
}
|
|
136
|
+
return busy;
|
|
137
|
+
}
|
|
138
|
+
/** Every type in `BATCH_FIXES`, with the documents a batch could fix right now. */
|
|
139
|
+
export async function seoIssueBatchTargets(db) {
|
|
140
|
+
const [overrides, governance] = await Promise.all([
|
|
141
|
+
getSeoOverrides(db),
|
|
142
|
+
getFeatureGovernance(db, ISSUE_FIX_FEATURE_KEY),
|
|
143
|
+
]);
|
|
144
|
+
const policy = resolveSeoModuleSettings(overrides).autopilot;
|
|
145
|
+
const autopilot = new Set(BATCH_FIXES.filter((fix) => autopilotFixes(policy, governance.approvalRequired, fix.type)).map((fix) => fix.type));
|
|
146
|
+
const types = BATCH_FIXES.map((fix) => fix.type).filter((type) => !autopilot.has(type));
|
|
147
|
+
const issues = types.length > 0
|
|
148
|
+
? await db.seoIssue.findMany({
|
|
149
|
+
where: { status: { in: ['open', 'recurring'] }, type: { in: types } },
|
|
150
|
+
select: { type: true, title: true, entityId: true, metadata: true },
|
|
151
|
+
orderBy: { lastDetectedAt: 'desc' },
|
|
152
|
+
})
|
|
153
|
+
: [];
|
|
154
|
+
const ids = [
|
|
155
|
+
...new Set(issues.map((issue) => issue.entityId).filter((id) => Boolean(id))),
|
|
156
|
+
];
|
|
157
|
+
const [docs, busy] = await Promise.all([
|
|
158
|
+
ids.length > 0
|
|
159
|
+
? db.document.findMany({
|
|
160
|
+
where: { id: { in: ids }, deletedAt: null, status: { in: BATCH_STATUSES } },
|
|
161
|
+
select: { id: true, collection: true },
|
|
162
|
+
})
|
|
163
|
+
: Promise.resolve([]),
|
|
164
|
+
suggestionsWaiting(db, ids),
|
|
165
|
+
]);
|
|
166
|
+
const collections = getPrentaConfig()?.collections ?? {};
|
|
167
|
+
const collectionOf = new Map(docs
|
|
168
|
+
.filter((doc) => Object.hasOwn(collections, doc.collection))
|
|
169
|
+
.map((doc) => [doc.id, doc.collection]));
|
|
170
|
+
return BATCH_FIXES.map((fix) => {
|
|
171
|
+
if (autopilot.has(fix.type)) {
|
|
172
|
+
return { type: fix.type, operation: fix.operation, autopilot: true, sources: [], waiting: 0 };
|
|
173
|
+
}
|
|
174
|
+
const bySource = new Map();
|
|
175
|
+
const waiting = new Set();
|
|
176
|
+
for (const issue of issues) {
|
|
177
|
+
if (issue.type !== fix.type || (fix.title && issue.title !== fix.title))
|
|
178
|
+
continue;
|
|
179
|
+
const id = issue.entityId;
|
|
180
|
+
const source = id ? collectionOf.get(id) : undefined;
|
|
181
|
+
if (!id || !source)
|
|
182
|
+
continue;
|
|
183
|
+
if (pendingFixFromMetadata(issue.metadata) || busy.get(fix.field)?.has(id)) {
|
|
184
|
+
waiting.add(id);
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const set = bySource.get(source) ?? new Set();
|
|
188
|
+
set.add(id);
|
|
189
|
+
bySource.set(source, set);
|
|
190
|
+
}
|
|
191
|
+
const sources = [...bySource.entries()]
|
|
192
|
+
.map(([source, set]) => ({
|
|
193
|
+
source,
|
|
194
|
+
documentIds: [...set].slice(0, FIX_BATCH_MAX),
|
|
195
|
+
total: set.size,
|
|
196
|
+
}))
|
|
197
|
+
.sort((a, b) => b.total - a.total);
|
|
198
|
+
return {
|
|
199
|
+
type: fix.type,
|
|
200
|
+
operation: fix.operation,
|
|
201
|
+
autopilot: false,
|
|
202
|
+
sources,
|
|
203
|
+
waiting: waiting.size,
|
|
204
|
+
};
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=issue-batch-targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-batch-targets.js","sourceRoot":"","sources":["../../src/seo/issue-batch-targets.ts"],"names":[],"mappings":"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"}
|