feat: add metadata console and seo ai rule pages
This commit is contained in:
@@ -2,6 +2,7 @@ export const loginApiUrl = "/guest/login";
|
||||
|
||||
export const getSystemConfigListApiUrl = "/system/config/list";
|
||||
export const getSystemConfigSaveApiUrl = "/system/config/save";
|
||||
export const getSystemConfigSeoAiRulesResetApiUrl = "/system/config/seo-ai-rules/reset";
|
||||
|
||||
export const getSystemPlanListApiUrl = "/system/plan/list";
|
||||
export const getSystemPlanSaveApiUrl = "/system/plan/save";
|
||||
|
||||
@@ -924,7 +924,15 @@ export namespace SiteList {
|
||||
skipped_template_missing_count?: number;
|
||||
skipped_duplicate_in_file_count?: number;
|
||||
strategy_profile_counts?: Record<string, number>;
|
||||
inserted_domains?: Array<{ d_id?: number; d_domain?: string; strategy_profile?: SeoStrategyProfile }>;
|
||||
inserted_domains?: Array<{
|
||||
d_id?: number;
|
||||
d_domain?: string;
|
||||
d_name?: string;
|
||||
t_id?: number;
|
||||
strategy_profile?: SeoStrategyProfile;
|
||||
tkd_provider?: string;
|
||||
tkd_mode?: string;
|
||||
}>;
|
||||
skipped_domains?: Array<{ d_domain?: string; reason?: string; t_id?: number }>;
|
||||
run_root?: string;
|
||||
uploaded_excel_path?: string;
|
||||
@@ -934,6 +942,67 @@ export namespace SiteList {
|
||||
probe_failed_count?: number;
|
||||
summary_json_path?: string;
|
||||
summary_html_path?: string;
|
||||
next_step_notice?: string[];
|
||||
codex_continue_prompt?: string;
|
||||
post_import_workflow?: {
|
||||
enabled?: boolean;
|
||||
auto_ai_after_import?: boolean;
|
||||
summary?: string;
|
||||
inserted_domain_count?: number;
|
||||
inserted_domain_hosts?: string[];
|
||||
contains_openai_domains?: boolean;
|
||||
artifact_audit?: {
|
||||
summary?: {
|
||||
total?: number;
|
||||
state_ready_count?: number;
|
||||
manifest_ready_count?: number;
|
||||
positioning_ready_count?: number;
|
||||
published_copy_ready_count?: number;
|
||||
sitemap_generated_count?: number;
|
||||
ai_pending_count?: number;
|
||||
};
|
||||
items?: Array<{
|
||||
host?: string;
|
||||
site_name?: string;
|
||||
state_exists?: boolean;
|
||||
manifest_exists?: boolean;
|
||||
site_positioning_exists?: boolean;
|
||||
published_copy_exists?: boolean;
|
||||
ai_status?: string;
|
||||
wait_for_ai_before_publish?: boolean;
|
||||
sitemap_status?: "generated" | "queued_pending" | string;
|
||||
existing_sitemaps?: string[];
|
||||
notes?: string[];
|
||||
}>;
|
||||
};
|
||||
recommended_for_operator?: "openai_continue" | "codex_continue";
|
||||
recommended_for_technical?: "openai_continue" | "codex_continue";
|
||||
notices?: string[];
|
||||
choices?: Array<{
|
||||
key?: "openai_continue" | "codex_continue";
|
||||
label?: string;
|
||||
audience?: string;
|
||||
description?: string;
|
||||
}>;
|
||||
openai?: {
|
||||
domain_ids?: number[];
|
||||
domain_id_csv?: string;
|
||||
hosts?: string[];
|
||||
probe_status?: "passed" | "partial" | "failed" | "skipped" | string;
|
||||
probe_summary_html_path?: string;
|
||||
probe_summary_json_path?: string;
|
||||
operator_steps?: string[];
|
||||
};
|
||||
codex?: {
|
||||
workspace_path?: string;
|
||||
open_in_vscode_hint?: string;
|
||||
prompt?: string;
|
||||
};
|
||||
ui_suggestion?: {
|
||||
message?: string;
|
||||
button_labels?: string[];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
export interface DomainImportRunSummaryItem {
|
||||
|
||||
@@ -9,6 +9,9 @@ export namespace ConfigList {
|
||||
sc_val: string;
|
||||
sc_description: string;
|
||||
}
|
||||
export interface resetSeoAiRuleParams {
|
||||
sc_code?: string;
|
||||
}
|
||||
export interface delParams {
|
||||
sc_id: string;
|
||||
}
|
||||
@@ -18,5 +21,8 @@ export namespace ConfigList {
|
||||
sc_val: string;
|
||||
sc_description: string;
|
||||
}
|
||||
export interface SeoAiRuleCard extends ResList {
|
||||
note?: Partial<ResList> | null;
|
||||
}
|
||||
export interface ResData extends ResultData {}
|
||||
}
|
||||
|
||||
@@ -78,4 +78,125 @@ export namespace VideoList {
|
||||
tag_list?: any;
|
||||
}
|
||||
export interface ResData extends ResultData {}
|
||||
|
||||
export interface MetadataMissingTaskPoolPlanTaskStatus {
|
||||
exists?: boolean;
|
||||
enabled?: boolean;
|
||||
limit_seconds?: number;
|
||||
limit_human?: string;
|
||||
status_label?: string;
|
||||
db_ready?: boolean;
|
||||
db_error?: string;
|
||||
pt_id?: number;
|
||||
pt_name?: string;
|
||||
pt_code?: string;
|
||||
last_run_at?: string;
|
||||
}
|
||||
|
||||
export interface MetadataMissingTaskPoolStatusData {
|
||||
generated_at?: string;
|
||||
recommended_action?: string;
|
||||
operator_hint?: string[];
|
||||
workbench?: {
|
||||
generated_at?: string;
|
||||
videos_with_any_missing_metadata?: number;
|
||||
queue_size?: number;
|
||||
workbench_index_path?: string;
|
||||
latest_run?: Record<string, any>;
|
||||
};
|
||||
task_pool?: {
|
||||
generated_at?: string;
|
||||
batch_count?: number;
|
||||
pending_count?: number;
|
||||
processing_count?: number;
|
||||
done_count?: number;
|
||||
skipped_count?: number;
|
||||
task_pool_index_path?: string;
|
||||
};
|
||||
plan_task?: MetadataMissingTaskPoolPlanTaskStatus;
|
||||
}
|
||||
|
||||
export interface MetadataMissingTaskPoolOpsData {
|
||||
summary?: MetadataMissingTaskPoolStatusData;
|
||||
ops?: {
|
||||
generated_at?: string;
|
||||
recommended_action?: string;
|
||||
command_entries?: Array<{
|
||||
label?: string;
|
||||
command?: string;
|
||||
}>;
|
||||
artifact_entries?: Array<{
|
||||
label?: string;
|
||||
path?: string;
|
||||
}>;
|
||||
};
|
||||
}
|
||||
|
||||
export interface MetadataMissingWorkbenchSummaryData {
|
||||
generated_at?: string;
|
||||
sample_limit?: number;
|
||||
queue_limit?: number;
|
||||
prompt_limit?: number;
|
||||
run_id?: string;
|
||||
top_missing_fields?: Array<{
|
||||
field?: string;
|
||||
missing_count?: number;
|
||||
missing_ratio?: number;
|
||||
}>;
|
||||
next_actions?: Array<{
|
||||
key?: string;
|
||||
label?: string;
|
||||
summary?: string;
|
||||
}>;
|
||||
operator_notes?: Array<{
|
||||
title?: string;
|
||||
content?: string;
|
||||
}>;
|
||||
queue?: {
|
||||
queue_size?: number;
|
||||
items?: Array<Record<string, any>>;
|
||||
};
|
||||
audit?: {
|
||||
total_videos?: number;
|
||||
videos_with_any_missing_metadata?: number;
|
||||
field_stats?: Array<Record<string, any>>;
|
||||
};
|
||||
codex_dispatch_prompt?: string;
|
||||
}
|
||||
|
||||
export interface MetadataMissingTaskPoolData {
|
||||
generated_at?: string;
|
||||
source_generated_at?: string;
|
||||
batch_size?: number;
|
||||
batch_limit?: number;
|
||||
total_videos?: number;
|
||||
videos_with_any_missing_metadata?: number;
|
||||
queue_size?: number;
|
||||
operator_hint?: string;
|
||||
top_missing_fields?: Array<{
|
||||
field?: string;
|
||||
missing_count?: number;
|
||||
missing_ratio?: number;
|
||||
}>;
|
||||
todo_summary?: Array<{
|
||||
batch_id?: string;
|
||||
label?: string;
|
||||
focus_field?: string;
|
||||
items_count?: number;
|
||||
priority_level?: string;
|
||||
}>;
|
||||
batches?: Array<{
|
||||
batch_id?: string;
|
||||
batch_no?: number;
|
||||
batch_label?: string;
|
||||
focus_field?: string;
|
||||
priority_level?: string;
|
||||
items_count?: number;
|
||||
status_label?: string;
|
||||
owner?: string;
|
||||
history_count?: number;
|
||||
codex_prompt?: string;
|
||||
items?: Array<Record<string, any>>;
|
||||
}>;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ResPage, ResultData } from "@/api/interface/index";
|
||||
import { ConfigList } from "@/api/interface/system/config";
|
||||
import { getSystemConfigListApiUrl, getSystemConfigSaveApiUrl } from "@/api/config";
|
||||
import { getSystemConfigListApiUrl, getSystemConfigSaveApiUrl, getSystemConfigSeoAiRulesResetApiUrl } from "@/api/config";
|
||||
import http from "@/api";
|
||||
|
||||
|
||||
@@ -12,3 +12,7 @@ export const getConfigList = (params: ConfigList.ReqParams) => {
|
||||
export const SaveApi = (params: ConfigList.saveParams) => {
|
||||
return http.post<ResPage<ResultData>>(getSystemConfigSaveApiUrl, params);
|
||||
};
|
||||
|
||||
export const resetSeoAiRulesApi = (params: ConfigList.resetSeoAiRuleParams) => {
|
||||
return http.post<ResPage<ResultData>>(getSystemConfigSeoAiRulesResetApiUrl, params);
|
||||
};
|
||||
|
||||
@@ -19,3 +19,27 @@ export const batchData = (params: VideoList.delParams) => {
|
||||
export const batchVipData = (params: VideoList.delParams) => {
|
||||
return http.post<ResPage<ResultData>>(getVideoSetLevelApiUrl, params);
|
||||
};
|
||||
|
||||
export const getMetadataMissingTaskPoolStatus = () => {
|
||||
return http.get<VideoList.MetadataMissingTaskPoolStatusData>(`/video/metadata/missing/task-pool/status`);
|
||||
};
|
||||
|
||||
export const getMetadataMissingTaskPoolOps = () => {
|
||||
return http.get<VideoList.MetadataMissingTaskPoolOpsData>(`/video/metadata/missing/task-pool/ops`);
|
||||
};
|
||||
|
||||
export const getMetadataMissingWorkbenchSummary = () => {
|
||||
return http.get<VideoList.MetadataMissingWorkbenchSummaryData>(`/video/metadata/missing/workbench`);
|
||||
};
|
||||
|
||||
export const getMetadataMissingTaskPoolSummary = () => {
|
||||
return http.get<VideoList.MetadataMissingTaskPoolData>(`/video/metadata/missing/task-pool`);
|
||||
};
|
||||
|
||||
export const runMetadataMissingWorkbench = () => {
|
||||
return http.post<ResultData>(`/video/metadata/missing/workbench/run`, {});
|
||||
};
|
||||
|
||||
export const runMetadataMissingTaskPool = () => {
|
||||
return http.post<ResultData>(`/video/metadata/missing/task-pool/run`, {});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user