接入人味文案案例自动保存
This commit is contained in:
+43
-6
@@ -187,9 +187,6 @@ export function initializeSchema(db: Database.Database) {
|
||||
create index if not exists idx_scoring_runs_job_revision
|
||||
on scoring_runs(job_id, revision);
|
||||
|
||||
create index if not exists idx_scoring_runs_result_version
|
||||
on scoring_runs(result_version_id);
|
||||
|
||||
create index if not exists idx_optimization_cases_updated_at
|
||||
on optimization_cases(updated_at);
|
||||
|
||||
@@ -205,10 +202,50 @@ export function initializeSchema(db: Database.Database) {
|
||||
create index if not exists idx_publication_records_job_revision
|
||||
on publication_records(job_id, revision);
|
||||
|
||||
create index if not exists idx_publication_records_result_version
|
||||
on publication_records(result_version_id);
|
||||
|
||||
create index if not exists idx_performance_snapshots_publication
|
||||
on performance_snapshots(publication_id);
|
||||
`);
|
||||
|
||||
ensureColumn(db, "article_jobs", "case_id", "text");
|
||||
ensureColumn(db, "scoring_runs", "result_version_id", "text");
|
||||
ensureColumn(db, "scoring_runs", "case_type", "text not null default 'article'");
|
||||
ensureColumn(db, "publication_records", "result_version_id", "text");
|
||||
ensureColumn(
|
||||
db,
|
||||
"publication_records",
|
||||
"publish_target",
|
||||
"text not null default ''",
|
||||
);
|
||||
|
||||
const publicationColumns = getTableColumns(db, "publication_records");
|
||||
if (publicationColumns.includes("platform")) {
|
||||
db.exec(
|
||||
"update publication_records set publish_target = platform where publish_target = ''",
|
||||
);
|
||||
}
|
||||
|
||||
db.exec(`
|
||||
create index if not exists idx_scoring_runs_result_version
|
||||
on scoring_runs(result_version_id);
|
||||
|
||||
create index if not exists idx_publication_records_result_version
|
||||
on publication_records(result_version_id);
|
||||
`);
|
||||
}
|
||||
|
||||
function getTableColumns(db: Database.Database, tableName: string) {
|
||||
return db
|
||||
.prepare(`pragma table_info(${tableName})`)
|
||||
.all()
|
||||
.map((row) => (row as { name: string }).name);
|
||||
}
|
||||
|
||||
function ensureColumn(
|
||||
db: Database.Database,
|
||||
tableName: string,
|
||||
columnName: string,
|
||||
definition: string,
|
||||
) {
|
||||
if (getTableColumns(db, tableName).includes(columnName)) return;
|
||||
db.exec(`alter table ${tableName} add column ${columnName} ${definition}`);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import type {
|
||||
CopyOptimizationResult,
|
||||
} from "../domain/types";
|
||||
import { copyOptimizationResultSchema } from "../domain/validation";
|
||||
import { generateValidatedJson } from "../llm/client";
|
||||
import { generateValidatedJson, type GenerateInput } from "../llm/client";
|
||||
import {
|
||||
RENWEI_COPY_OPTIMIZER_SYSTEM_PROMPT,
|
||||
buildRenweiCopyOptimizationPrompt,
|
||||
@@ -11,6 +11,7 @@ import {
|
||||
|
||||
export async function optimizeRenweiCopy(
|
||||
input: CopyOptimizationRequest,
|
||||
options: { onAuditSummary?: GenerateInput["onAuditSummary"] } = {},
|
||||
): Promise<CopyOptimizationResult> {
|
||||
return generateValidatedJson({
|
||||
schema: copyOptimizationResultSchema,
|
||||
@@ -18,5 +19,6 @@ export async function optimizeRenweiCopy(
|
||||
prompt: buildRenweiCopyOptimizationPrompt(input),
|
||||
temperature: 0.2,
|
||||
task: "renwei_copy_optimizer",
|
||||
onAuditSummary: options.onAuditSummary,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user