@growth-labs/cms 0.5.9 → 0.5.10
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/README.md +17 -1
- package/dist/engine/content-insights.d.ts +11 -4
- package/dist/engine/content-insights.d.ts.map +1 -1
- package/dist/engine/content-insights.js +22 -7
- package/dist/engine/content-insights.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/routes/content-insights.d.ts +1 -1
- package/dist/routes/content-insights.d.ts.map +1 -1
- package/dist/routes/content-insights.js +20 -5
- package/dist/routes/content-insights.js.map +1 -1
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/insights-ingest.d.ts +48 -48
- package/dist/schema/migrations.d.ts.map +1 -1
- package/dist/schema/migrations.js +9 -0
- package/dist/schema/migrations.js.map +1 -1
- package/dist/schema/types.d.ts +67 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +10 -0
- package/dist/schema/types.js.map +1 -1
- package/dist/surveys/schema.d.ts +48 -48
- package/dist/ui/screens/ContentInsightsScreen.d.ts +28 -0
- package/dist/ui/screens/ContentInsightsScreen.d.ts.map +1 -1
- package/dist/ui/screens/ContentInsightsScreen.js +111 -36
- package/dist/ui/screens/ContentInsightsScreen.js.map +1 -1
- package/dist/ui/screens/content-insights-data.d.ts +13 -1
- package/dist/ui/screens/content-insights-data.d.ts.map +1 -1
- package/dist/ui/screens/content-insights-data.js +29 -1
- package/dist/ui/screens/content-insights-data.js.map +1 -1
- package/migrations/0022_content_insight_dismissal_reasons.sql +8 -0
- package/package.json +1 -1
- package/src/engine/content-insights.ts +32 -7
- package/src/index.ts +2 -0
- package/src/routes/content-insights.ts +31 -5
- package/src/schema/index.ts +1 -0
- package/src/schema/migrations.ts +9 -0
- package/src/schema/types.ts +92 -0
- package/src/ui/screens/ContentInsightsScreen.tsx +416 -195
- package/src/ui/screens/content-insights-data.ts +40 -2
package/README.md
CHANGED
|
@@ -148,7 +148,7 @@ unschedule/duplicate), `routes.authors` (list/create/get/update),
|
|
|
148
148
|
init/part/complete/abort multipart flows for both podcast audio and video
|
|
149
149
|
source uploads), and `routes.cron` (publish — gated by `requireAdmin`).
|
|
150
150
|
|
|
151
|
-
### Insight Engine v2
|
|
151
|
+
### Insight Engine v2 lanes and dismissal rationale
|
|
152
152
|
|
|
153
153
|
The signed `contentInsights.ingest` route strictly validates and preserves the
|
|
154
154
|
bounded Insight Engine v2 JSON wire contract before writing its existing
|
|
@@ -158,6 +158,22 @@ content outline. These fields are optional for backward-compatible payloads,
|
|
|
158
158
|
but are never silently stripped when supplied by Foundry. No CMS migration is
|
|
159
159
|
needed because the data remains inside the existing JSON blobs.
|
|
160
160
|
|
|
161
|
+
Masthead presents those rows once in the five canonical action lanes —
|
|
162
|
+
commission, refresh, optimize CTR, consolidate, and monitor — with a
|
|
163
|
+
`Legacy / unclassified` fallback for older rows. Cards show only the bounded v2
|
|
164
|
+
evidence that a row provides, preserving legacy metrics and briefs without
|
|
165
|
+
placeholder values.
|
|
166
|
+
|
|
167
|
+
`POST contentInsights.dismiss` accepts exactly `{ intentKey, reasonCode, note? }`.
|
|
168
|
+
`reasonCode` is one of `off_topic`, `already_covered`, `cant_win`,
|
|
169
|
+
`wrong_format`, `not_now`, or `other`. The optional note is trimmed once,
|
|
170
|
+
stored as `null` when blank, and limited to 500 characters; `other` requires at
|
|
171
|
+
least three non-whitespace characters. Migration
|
|
172
|
+
`0022_content_insight_dismissal_reasons` adds nullable legacy-compatible
|
|
173
|
+
`reason_code` and `note` columns, and applies the same enum and length bounds in
|
|
174
|
+
D1. The Masthead card action opens an internal editor and removes a card only
|
|
175
|
+
after this request succeeds; it never publishes content.
|
|
176
|
+
|
|
161
177
|
`routes.subscriptions` keeps paid members, exports, KPIs, plan mix, and paid
|
|
162
178
|
gift-order tracking separate from complimentary access administration. The
|
|
163
179
|
complimentary surface is explicit: list, grant, revoke, and retry-email
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import type { InsightsIngestPayload } from '../schema/insights-ingest.js';
|
|
2
|
-
import type { ContentInsightRow } from '../schema/types.js';
|
|
2
|
+
import type { ContentInsightRow, InsightDismissalReasonCode } from '../schema/types.js';
|
|
3
3
|
import type { D1Database } from './d1.js';
|
|
4
|
-
/** True when
|
|
4
|
+
/** True when an Insights read/write depends on a table missing from an older schema. */
|
|
5
5
|
export declare function isMissingInsightsTable(error: unknown): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* True only for schema drift that a reason-coded dismissal requires. This is
|
|
8
|
+
* deliberately scoped to the dismissal route: bare D1 missing-column errors do
|
|
9
|
+
* not identify their table, while the engine statement here only names
|
|
10
|
+
* content_insight_dismissals.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isMissingInsightDismissalSchema(error: unknown): boolean;
|
|
6
13
|
/**
|
|
7
14
|
* Read the current board for (site_id, run_date), EXCLUDING any (site_id, intent_key)
|
|
8
15
|
* present in content_insight_dismissals. Ordered best-bets first (by best_bet_rank),
|
|
9
16
|
* then by desk + desk_rank for the desk groups. evidence/brief are decoded from TEXT.
|
|
10
17
|
*/
|
|
11
18
|
export declare function listInsightBoard(db: D1Database, siteId: string, runDate: string): Promise<ContentInsightRow[]>;
|
|
12
|
-
/** Persist
|
|
13
|
-
export declare function dismissInsight(db: D1Database, siteId: string, intentKey: string, dismissedBy: string | null): Promise<void>;
|
|
19
|
+
/** Persist an editor-attributed dismissal for (site_id, intent_key), replacing trusted reason data. */
|
|
20
|
+
export declare function dismissInsight(db: D1Database, siteId: string, intentKey: string, dismissedBy: string | null, reasonCode: InsightDismissalReasonCode, note: string | null): Promise<void>;
|
|
14
21
|
/** Clear a dismissal so the intent reappears on the next board read. */
|
|
15
22
|
export declare function undismissInsight(db: D1Database, siteId: string, intentKey: string): Promise<void>;
|
|
16
23
|
export type ReplaceOutcome = 'applied' | 'duplicate' | 'stale';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-insights.d.ts","sourceRoot":"","sources":["../../src/engine/content-insights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"content-insights.d.ts","sourceRoot":"","sources":["../../src/engine/content-insights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,KAAK,EACX,iBAAiB,EAEjB,0BAA0B,EAE1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK9D;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvE;AAeD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACrC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAc9B;AAED,uGAAuG;AACvG,wBAAsB,cAAc,CACnC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,EAAE,0BAA0B,EACtC,IAAI,EAAE,MAAM,GAAG,IAAI,GACjB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wEAAwE;AACxE,wBAAsB,gBAAgB,CACrC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;AAC9D,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,cAAc,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACzC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,qBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAmGxB"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
/** True when
|
|
1
|
+
/** True when an Insights read/write depends on a table missing from an older schema. */
|
|
2
2
|
export function isMissingInsightsTable(error) {
|
|
3
|
-
return error instanceof Error &&
|
|
3
|
+
return (error instanceof Error &&
|
|
4
|
+
/no such table: (?:content_insights|content_insight_dismissals)\b/i.test(error.message));
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* True only for schema drift that a reason-coded dismissal requires. This is
|
|
8
|
+
* deliberately scoped to the dismissal route: bare D1 missing-column errors do
|
|
9
|
+
* not identify their table, while the engine statement here only names
|
|
10
|
+
* content_insight_dismissals.
|
|
11
|
+
*/
|
|
12
|
+
export function isMissingInsightDismissalSchema(error) {
|
|
13
|
+
if (isMissingInsightsTable(error))
|
|
14
|
+
return true;
|
|
15
|
+
if (!(error instanceof Error))
|
|
16
|
+
return false;
|
|
17
|
+
return /(?:no such column:\s*(?:reason_code|note)\b|table\s+content_insight_dismissals\s+has no column named\s+(?:reason_code|note)\b)/i.test(error.message);
|
|
4
18
|
}
|
|
5
19
|
function decodeRow(raw) {
|
|
6
20
|
return {
|
|
@@ -27,12 +41,13 @@ export async function listInsightBoard(db, siteId, runDate) {
|
|
|
27
41
|
.all();
|
|
28
42
|
return (result.results || []).map(decodeRow);
|
|
29
43
|
}
|
|
30
|
-
/** Persist
|
|
31
|
-
export async function dismissInsight(db, siteId, intentKey, dismissedBy) {
|
|
44
|
+
/** Persist an editor-attributed dismissal for (site_id, intent_key), replacing trusted reason data. */
|
|
45
|
+
export async function dismissInsight(db, siteId, intentKey, dismissedBy, reasonCode, note) {
|
|
32
46
|
await db
|
|
33
|
-
.prepare(`INSERT OR REPLACE INTO content_insight_dismissals
|
|
34
|
-
|
|
35
|
-
|
|
47
|
+
.prepare(`INSERT OR REPLACE INTO content_insight_dismissals
|
|
48
|
+
(site_id, intent_key, dismissed_at, dismissed_by, reason_code, note)
|
|
49
|
+
VALUES (?, ?, unixepoch(), ?, ?, ?)`)
|
|
50
|
+
.bind(siteId, intentKey, dismissedBy, reasonCode, note)
|
|
36
51
|
.run();
|
|
37
52
|
}
|
|
38
53
|
/** Clear a dismissal so the intent reappears on the next board read. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-insights.js","sourceRoot":"","sources":["../../src/engine/content-insights.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-insights.js","sourceRoot":"","sources":["../../src/engine/content-insights.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './engine/index.js';
|
|
2
2
|
export * from './providers/index.js';
|
|
3
3
|
export type { CmsUser } from './routes/context.js';
|
|
4
|
-
export { type ArticleContentRow, type AuthorRow, applyMigrations, CMS_MIGRATION_SQL, CMS_MIGRATIONS_0002_PLUS, CMS_TABLES, type CmsActivityLogRow, type CmsApiKeyRow, type CmsNotificationRow, type CmsReaderStateRow, type CmsRole, type CmsTableName, type CmsWebhookRow, type ContentContributorRow, type ContentImportRow, type ContentItemRow, type ContentPublicationAttemptRow, type ContentPublicationAttemptState, type ContentPublicationOperation, type ContentRelationRow, type ContentRevisionRow, type ContentSlugRedirectRow, type ContentStatus, type ContentTagLinkRow, type ContentTagRow, type ContentType, type ContentVisibility, type FoundryCallbackEventRow, type MastheadUserRow, type MediaAssetRow, NON_CMS_TABLES, type PodcastContentRow, type ReaderManualReadState, splitStatements, type VideoContentRow, type VideoProcessingState, type WorkspaceInviteRow, type WorkspaceMembershipRow, type WorkspaceSettingsRow, } from './schema/index.js';
|
|
4
|
+
export { type ArticleContentRow, type AuthorRow, applyMigrations, CMS_MIGRATION_SQL, CMS_MIGRATIONS_0002_PLUS, CMS_TABLES, type CmsActivityLogRow, type CmsApiKeyRow, type CmsNotificationRow, type CmsReaderStateRow, type CmsRole, type CmsTableName, type CmsWebhookRow, type ContentContributorRow, type ContentImportRow, type ContentItemRow, type ContentPublicationAttemptRow, type ContentPublicationAttemptState, type ContentPublicationOperation, type ContentRelationRow, type ContentRevisionRow, type ContentSlugRedirectRow, type ContentStatus, type ContentTagLinkRow, type ContentTagRow, type ContentType, type ContentVisibility, type FoundryCallbackEventRow, type InsightDismissalReasonCode, InsightDismissalReasonCodeSchema, type MastheadUserRow, type MediaAssetRow, NON_CMS_TABLES, type PodcastContentRow, type ReaderManualReadState, splitStatements, type VideoContentRow, type VideoProcessingState, type WorkspaceInviteRow, type WorkspaceMembershipRow, type WorkspaceSettingsRow, } from './schema/index.js';
|
|
5
5
|
export * from './surveys/errors.js';
|
|
6
6
|
export * from './surveys/schema.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgCA,cAAc,mBAAmB,CAAA;AAGjC,cAAc,sBAAsB,CAAA;AAEpC,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,eAAe,EAEf,iBAAiB,EACjB,wBAAwB,EAExB,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GACzB,MAAM,mBAAmB,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgCA,cAAc,mBAAmB,CAAA;AAGjC,cAAc,sBAAsB,CAAA;AAEpC,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,eAAe,EAEf,iBAAiB,EACjB,wBAAwB,EAExB,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,gCAAgC,EAChC,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GACzB,MAAM,mBAAmB,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -36,7 +36,7 @@ export { applyMigrations,
|
|
|
36
36
|
// migration contract
|
|
37
37
|
CMS_MIGRATION_SQL, CMS_MIGRATIONS_0002_PLUS,
|
|
38
38
|
// table contract
|
|
39
|
-
CMS_TABLES, NON_CMS_TABLES, splitStatements, } from './schema/index.js';
|
|
39
|
+
CMS_TABLES, InsightDismissalReasonCodeSchema, NON_CMS_TABLES, splitStatements, } from './schema/index.js';
|
|
40
40
|
export * from './surveys/errors.js';
|
|
41
41
|
export * from './surveys/schema.js';
|
|
42
42
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,mEAAmE;AACnE,qGAAqG;AACrG,uEAAuE;AACvE,6BAA6B;AAC7B,EAAE;AACF,qEAAqE;AACrE,iEAAiE;AACjE,qEAAqE;AACrE,iDAAiD;AACjD,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,oEAAoE;AACpE,2EAA2E;AAC3E,+EAA+E;AAC/E,qBAAqB;AACrB,oEAAoE;AACpE,wEAAwE;AACxE,4EAA4E;AAC5E,yEAAyE;AACzE,8EAA8E;AAC9E,gFAAgF;AAChF,0EAA0E;AAC1E,6EAA6E;AAC7E,iDAAiD;AAEjD,sEAAsE;AACtE,sDAAsD;AACtD,cAAc,mBAAmB,CAAA;AAEjC,mEAAmE;AACnE,cAAc,sBAAsB,CAAA;AAGpC,OAAO,EAGN,eAAe;AACf,qBAAqB;AACrB,iBAAiB,EACjB,wBAAwB;AACxB,iBAAiB;AACjB,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,mEAAmE;AACnE,qGAAqG;AACrG,uEAAuE;AACvE,6BAA6B;AAC7B,EAAE;AACF,qEAAqE;AACrE,iEAAiE;AACjE,qEAAqE;AACrE,iDAAiD;AACjD,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,oEAAoE;AACpE,2EAA2E;AAC3E,+EAA+E;AAC/E,qBAAqB;AACrB,oEAAoE;AACpE,wEAAwE;AACxE,4EAA4E;AAC5E,yEAAyE;AACzE,8EAA8E;AAC9E,gFAAgF;AAChF,0EAA0E;AAC1E,6EAA6E;AAC7E,iDAAiD;AAEjD,sEAAsE;AACtE,sDAAsD;AACtD,cAAc,mBAAmB,CAAA;AAEjC,mEAAmE;AACnE,cAAc,sBAAsB,CAAA;AAGpC,OAAO,EAGN,eAAe;AACf,qBAAqB;AACrB,iBAAiB,EACjB,wBAAwB;AACxB,iBAAiB;AACjB,UAAU,EAyBV,gCAAgC,EAGhC,cAAc,EAGd,eAAe,GAMf,MAAM,mBAAmB,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA"}
|
|
@@ -7,7 +7,7 @@ export interface ContentInsightsRouteConfig extends CmsRouteConfig {
|
|
|
7
7
|
export interface ContentInsightsRouteHandlers {
|
|
8
8
|
/** GET /content/insights?runDate= — the current board, dismissed intents filtered out. */
|
|
9
9
|
board(ctx: RouteContext): Promise<Response>;
|
|
10
|
-
/** POST /content/insights/dismiss { intentKey } — persist a dismissal. */
|
|
10
|
+
/** POST /content/insights/dismiss { intentKey, reasonCode, note? } — persist a dismissal. */
|
|
11
11
|
dismiss(ctx: RouteContext): Promise<Response>;
|
|
12
12
|
/** POST /content/insights/undismiss { intentKey } — clear a dismissal. */
|
|
13
13
|
undismiss(ctx: RouteContext): Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-insights.d.ts","sourceRoot":"","sources":["../../src/routes/content-insights.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-insights.d.ts","sourceRoot":"","sources":["../../src/routes/content-insights.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAQ,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AA8CtD,MAAM,WAAW,0BAA2B,SAAQ,cAAc;IACjE,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC5C,0FAA0F;IAC1F,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,6FAA6F;IAC7F,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7C,0EAA0E;IAC1E,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/C,iFAAiF;IACjF,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAC5C;AAED,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,0BAA0B,GAChC,4BAA4B,CA0G9B"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { dismissInsight, isMissingInsightsTable, listInsightBoard, replaceInsightsBoard, undismissInsight, } from '../engine/content-insights.js';
|
|
2
|
+
import { dismissInsight, isMissingInsightDismissalSchema, isMissingInsightsTable, listInsightBoard, replaceInsightsBoard, undismissInsight, } from '../engine/content-insights.js';
|
|
3
3
|
import { verifyHmac } from '../engine/foundry-dispatch.js';
|
|
4
4
|
import { InsightsIngestPayloadSchema } from '../schema/insights-ingest.js';
|
|
5
|
+
import { InsightDismissalReasonCodeSchema } from '../schema/types.js';
|
|
5
6
|
import { resolveConfig } from './config.js';
|
|
6
7
|
import { json } from './context.js';
|
|
7
|
-
const DismissSchema = z
|
|
8
|
+
const DismissSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
intentKey: z.string().min(1),
|
|
11
|
+
reasonCode: InsightDismissalReasonCodeSchema,
|
|
12
|
+
note: z.string().max(500).optional(),
|
|
13
|
+
})
|
|
14
|
+
.strict();
|
|
15
|
+
const IntentKeySchema = z.object({ intentKey: z.string().min(1) });
|
|
8
16
|
/** Resolve YYYY-MM-DD; defaults to the current UTC date when no ?runDate is given. */
|
|
9
17
|
function resolveRunDate(ctx) {
|
|
10
18
|
const url = new URL(ctx.request.url);
|
|
@@ -64,12 +72,19 @@ export function createContentInsightsRoutes(config) {
|
|
|
64
72
|
const parsed = DismissSchema.safeParse(await ctx.request.json().catch(() => null));
|
|
65
73
|
if (!parsed.success)
|
|
66
74
|
return json({ error: 'Invalid request', details: parsed.error.flatten() }, 400);
|
|
75
|
+
const note = parsed.data.note?.trim() || null;
|
|
76
|
+
if (parsed.data.reasonCode === 'other' && (note == null || note.length < 3)) {
|
|
77
|
+
return json({
|
|
78
|
+
error: 'Invalid request',
|
|
79
|
+
details: { note: ['A note of at least 3 characters is required for other.'] },
|
|
80
|
+
}, 400);
|
|
81
|
+
}
|
|
67
82
|
try {
|
|
68
|
-
await dismissInsight(ctx.db, siteId, parsed.data.intentKey, ctx.userId ?? null);
|
|
83
|
+
await dismissInsight(ctx.db, siteId, parsed.data.intentKey, ctx.userId ?? null, parsed.data.reasonCode, note);
|
|
69
84
|
return json({ dismissed: true });
|
|
70
85
|
}
|
|
71
86
|
catch (error) {
|
|
72
|
-
if (
|
|
87
|
+
if (isMissingInsightDismissalSchema(error))
|
|
73
88
|
return json({ error: 'schema_not_ready' }, 409);
|
|
74
89
|
throw error;
|
|
75
90
|
}
|
|
@@ -78,7 +93,7 @@ export function createContentInsightsRoutes(config) {
|
|
|
78
93
|
const denied = await resolved.authz.requirePublisher(ctx);
|
|
79
94
|
if (denied)
|
|
80
95
|
return denied;
|
|
81
|
-
const parsed =
|
|
96
|
+
const parsed = IntentKeySchema.safeParse(await ctx.request.json().catch(() => null));
|
|
82
97
|
if (!parsed.success)
|
|
83
98
|
return json({ error: 'Invalid request', details: parsed.error.flatten() }, 400);
|
|
84
99
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-insights.js","sourceRoot":"","sources":["../../src/routes/content-insights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACN,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GAChB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"content-insights.js","sourceRoot":"","sources":["../../src/routes/content-insights.ts"],"names":[],"mappings":"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"}
|
package/dist/schema/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { applyMigrations, CMS_MIGRATION_SQL, CMS_MIGRATIONS_0002_PLUS, splitStatements, } from './migrations.js';
|
|
2
2
|
export { CMS_TABLES, type CmsTableName, NON_CMS_TABLES, } from './tables.js';
|
|
3
3
|
export type { ArticleContentRow, AuthorRow, CmsActivityLogRow, CmsApiKeyRow, CmsNotificationRow, CmsReaderStateRow, CmsRole, CmsWebhookRow, ContentContributorRow, ContentImportRow, ContentItemRow, ContentPublicationAttemptRow, ContentPublicationAttemptState, ContentPublicationOperation, ContentRelationRow, ContentRevisionRow, ContentSlugRedirectRow, ContentStatus, ContentTagLinkRow, ContentTagRow, ContentType, ContentVisibility, FoundryCallbackEventRow, MastheadUserRow, MediaAssetRow, PodcastContentRow, ReaderManualReadState, VideoContentRow, VideoProcessingState, WorkspaceInviteRow, WorkspaceMembershipRow, WorkspaceSettingsRow, } from './types.js';
|
|
4
|
+
export { type InsightDismissalReasonCode, InsightDismissalReasonCodeSchema } from './types.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACN,UAAU,EACV,KAAK,YAAY,EACjB,cAAc,GACd,MAAM,aAAa,CAAA;AAEpB,YAAY,EACX,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACN,UAAU,EACV,KAAK,YAAY,EACjB,cAAc,GACd,MAAM,aAAa,CAAA;AAEpB,YAAY,EACX,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,KAAK,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/schema/index.js
CHANGED
|
@@ -3,4 +3,5 @@
|
|
|
3
3
|
// ported in WS7-05 and will build on these types.
|
|
4
4
|
export { applyMigrations, CMS_MIGRATION_SQL, CMS_MIGRATIONS_0002_PLUS, splitStatements, } from './migrations.js';
|
|
5
5
|
export { CMS_TABLES, NON_CMS_TABLES, } from './tables.js';
|
|
6
|
+
export { InsightDismissalReasonCodeSchema } from './types.js';
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/dist/schema/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4EAA4E;AAC5E,kDAAkD;AAElD,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACN,UAAU,EAEV,cAAc,GACd,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,4EAA4E;AAC5E,kDAAkD;AAElD,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACN,UAAU,EAEV,cAAc,GACd,MAAM,aAAa,CAAA;AAoCpB,OAAO,EAAmC,gCAAgC,EAAE,MAAM,YAAY,CAAA"}
|