32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import {
|
|
consultationDomainDefinition,
|
|
consultationDomainIds,
|
|
type ConsultationDomain,
|
|
type ConsultationTheme,
|
|
} from "./consultation-domain-registry.ts";
|
|
|
|
export { consultationDomainIds as consultationThemeValues };
|
|
export type { ConsultationTheme };
|
|
|
|
export type ConsultationWorkflowRoute = ConsultationDomain | "rectification" | "prashna";
|
|
|
|
type WorkflowProjection = {
|
|
question: string;
|
|
themes: readonly ConsultationDomain[];
|
|
strictWorkflowRoute: ConsultationWorkflowRoute;
|
|
requiredLayers: readonly string[];
|
|
claimBoundary: string;
|
|
};
|
|
|
|
export function projectConsultationWorkflowRequest(question: string, theme: ConsultationTheme) {
|
|
const requirement = consultationDomainDefinition(theme);
|
|
const prefix = theme === "timing" ? "应期与阶段问题:" : "";
|
|
return {
|
|
question: `${prefix}${question}`,
|
|
themes: requirement.workflowThemes,
|
|
strictWorkflowRoute: requirement.strictWorkflowRoute,
|
|
requiredLayers: requirement.requiredLayers,
|
|
claimBoundary: requirement.claimBoundary,
|
|
} satisfies WorkflowProjection;
|
|
}
|