实现本地 Markdown 清洗评审器

This commit is contained in:
2026-08-24 01:02:16 +08:00
parent 80001a8ab9
commit ac798a2610
39 changed files with 9357 additions and 119 deletions
+113
View File
@@ -0,0 +1,113 @@
export type RunStatus = "success" | "failed" | "unstable";
export interface ComponentSummary {
component_position: number;
component_id: string;
version: string;
parameters: unknown;
applicability: string;
change_count: number;
}
export interface DocumentSummary {
document_id: string;
source_label: string;
status: RunStatus;
input_sha256: string;
current_sha256: string;
change_count: number;
source_available: boolean;
output_available: boolean;
availability_error: string | null;
}
export interface RunSummaryResponse {
schema_version: 1;
run: {
run_id: string;
run_date: string;
status: RunStatus;
started_at_utc: string;
completed_at_utc: string;
retention_until: string;
};
components: ComponentSummary[];
documents: DocumentSummary[];
summary: {
document_count: number;
success_count: number;
failed_count: number;
unstable_count: number;
change_count: number;
};
original_run_location_changed: boolean;
}
export interface ChangeDetail {
component_id: string;
component_version: string;
component_position: number;
proposal_ref: {
component_position: number;
snapshot_sha256: string;
proposal_index: number;
};
edit_index: number;
reason: string;
location: {
line: number;
column: number;
};
editor_range: {
start: number;
end: number;
} | null;
before: string;
after: string;
}
export interface RunErrorDetail {
component_id: string;
component_version: string;
component_position: number;
stage: "transform" | "final_review";
error_type: string;
message: string;
}
export interface ResidualProposalDetail {
component_id: string;
component_version: string;
component_position: number;
reason: string;
edit_count: number;
}
export interface DocumentComparisonResponse {
schema_version: 1;
document: DocumentSummary;
components: ComponentSummary[];
original_markdown: string | null;
cleaned_markdown: string | null;
changes: ChangeDetail[];
errors: RunErrorDetail[];
residual_proposals: ResidualProposalDetail[];
}
export interface ComponentStageResponse {
schema_version: 1;
document_id: string;
component: ComponentSummary;
before_sha256: string;
after_sha256: string;
before_markdown: string;
after_markdown: string;
changes: ChangeDetail[];
}
export interface ApiErrorResponse {
error: {
code: string;
message: string;
};
}