/** * 配置预处理脚本 - 用于AI从最小化配置生成完整配置 (TypeScript版本) * * 使用方式: * import { prepareConfig } from './prepare-config'; * const fullConfig = prepareConfig(minimalConfig); */ /** * 宽松配置接口 - 支持自由格式的JSON配置 */ export interface LooseConfig { project?: { name?: string; basePackage?: string; groupId?: string; version?: string; author?: string; databaseType?: string; workflowEnabled?: boolean; [key: string]: any; }; table?: { name?: string; columns?: Array<{ name?: string; type?: string; comment?: string; unique?: boolean; nullable?: boolean; defaultValue?: any; [key: string]: any; }>; [key: string]: any; }; [key: string]: any; } /** * 完整配置接口 */ /** * 完整配置接口 */ export interface FullConfig { /** 项目配置 - 可选,不提供时支持完全自定义JSON格式 */ project?: { /** 项目名称 */ name: string; /** 项目短名称 - 从项目名称推断:cms.fsmc => fsmc */ shortName?: string; /** 基础包名 */ basePackage: string; /** 基础包路径,将包名中的点转换为斜杠 */ basePackagePath?: string; /** 项目组ID - 从basePackage推断:com.iss.cms.demo => com.iss.cms */ groupId?: string; /** 项目版本号 - 默认值:0.0.1-SNAPSHOT */ version?: string; /** 项目作者 - 默认值:generator */ author?: string; /** 数据库类型 - 默认值:mysql */ databaseType?: string; /** 是否启用工作流 - 默认值:true */ workflowEnabled?: boolean; /** 当前日期,格式为ISO字符串的日期部分 */ currentDate?: string; }; /** 表配置 - 可选字段,当没有表配置时可以为undefined */ table?: { /** 表名 */ name: string; /** 推断出的模块名 - 从表名推断:t_base_data_rate => basedata,可选字段 */ moduleName?: string; /** 推断出的实体名 - 从表名推断:t_base_data_rate => BaseDataRate,可选字段 */ entityName?: string; /** 推断出的小写命名 - 从表名推断:t_base_data_rate => basedatarate,可选字段 */ lowerCaseName?: string; /** 推断出的短横线命名 - 从表名推断:t_base_data_rate => base-data-rate,可选字段 */ kebabCaseName?: string; /** 推断出的业务类型 - 从表名推断:t_base_data_rate => BASEDATARATE,可选字段 */ businessType?: string; /** 表的列信息 */ columns: Array<{ /** 列名 */ name: string; /** 列对应的Java变量名 - 从列名推断:currency_code => currencyCode,可选字段 */ javaName?: string; /** 列的数据库类型 */ type: string; /** 列对应的Java类型 - 从数据库类型推断,可选字段 */ javaType?: string; /** 列对应的JDBC类型 - 从数据库类型推断,可选字段 */ jdbcType?: string; /** 列的注释 - 可选字段 */ comment?: string; /** 列是否唯一 - 可选字段 */ unique?: boolean; /** 列是否可为空 - 默认值:true,可选字段 */ nullable?: boolean; /** 列的默认值 - 可选字段 */ defaultValue?: any; /** 列是否为审计字段 - 默认值:false,可选字段 */ audit?: boolean; }>; /** 查询条件列表 - 根据列名和类型自动推断,可选字段 */ queryConditions?: Array<{ /** 查询字段 */ field: string; /** 查询操作符,支持等于和模糊匹配 - 根据列名和类型自动推断 */ operator: 'eq' | 'like'; }>; /** 索引列表 - 根据列的唯一性和列名自动推断,可选字段 */ indexes?: Array<{ /** 索引名 */ name: string; /** 索引包含的列名数组 */ columns: string[]; /** 索引是否唯一 */ unique: boolean; }>; /** 工作流配置 - 可选字段 */ workflow?: { /** 是否启用工作流 - 继承自project.workflowEnabled,可选字段 */ enabled?: boolean; /** 提交审批方法名 - 从实体名推断:submitRateApproval,可选字段 */ submitMethod?: string; /** 审批通过方法名 - 从实体名推断:approveRate,可选字段 */ approveMethod?: string; /** 审批拒绝方法名 - 从实体名推断:refuseRate,可选字段 */ refuseMethod?: string; /** 工作流业务类型 - 继承自table.businessType,可选字段 */ businessType?: string; /** 工作流模块编码 - 从模块名推断:baserate => BASERATE,可选字段 */ moduleCode?: string; }; /** 其他任意字段 */ [key: string]: any; }; /** 其他任意字段 */ [key: string]: any; } /** * 字段接口 */ interface Column { /** 列名 */ name: string; /** 列对应的Java变量名 */ javaName: string; /** 列的数据库类型 */ type: string; /** 列对应的Java类型 */ javaType: string; /** 列对应的JDBC类型 */ jdbcType: string; /** 列的注释 */ comment?: string; /** 列是否唯一 */ unique?: boolean; /** 列是否可为空 */ nullable?: boolean; /** 列的默认值 */ defaultValue?: any; /** 列是否为审计字段 */ audit: boolean; } /** * 从最小化配置生成完整配置 */ export declare function prepareConfig(minimalConfig: FullConfig): FullConfig; /** * 从basePackage推断groupId * com.iss.cms.demo => com.iss.cms */ export declare function inferGroupId(basePackage: string): string; /** * 从表名推断模块名,取第一个下划线前的部分 * t_base_data_rate => base * t_loan_apply => loan */ export declare function inferModuleName(tableName: string): string; /** * 从项目名推断短名称 * cms.fsmc => fsmc */ export declare function inferShortName(projectName: string): string; /** * 从表名推断实体名 * t_base_data_rate => Rate * t_loan_apply => LoanApply */ export declare function inferEntityName(tableName: string): string; /** * 从表名推断小写命名 * t_base_data_rate => basedatarate */ export declare function inferLowerCaseName(tableName: string): string; /** * 从表名推断短横线命名 * t_base_data_rate => base-data-rate */ export declare function inferKebabCaseName(tableName: string): string; /** * 从表名推断业务类型 * t_base_data_rate => FSMCBASEDATARATE */ export declare function inferBusinessType(tableName: string): string; /** * 下划线转驼峰 * currency_code => currencyCode */ export declare function toJavaName(columnName: string): string; /** * 数据库类型转Java类型 * 支持MySQL、Oracle、PostgreSQL常见类型映射 */ export declare function inferJavaType(dbType: string): string; /** * 数据库类型转JDBC类型 * 支持MySQL、Oracle、PostgreSQL常见类型映射 */ export declare function inferJdbcType(dbType: string): string; /** * 获取审计字段 */ /** * 获取审计字段 */ export declare function getAuditColumns(): Column[]; /** * 合并用户定义的列和审计字段,避免重复 * @param userColumns 用户定义的列 * @returns 合并后的列数组 */ export declare function mergeColumnsWithAudit(userColumns: Array): Column[]; /** * 推断查询条件 */ export declare function inferQueryConditions(columns: Array<{ name: string; type: string; }>): Array<{ field: string; operator: 'eq' | 'like'; }>; /** * 推断索引 */ export declare function inferIndexes(columns: Array<{ name: string; unique?: boolean; }>): Array<{ name: string; columns: string[]; unique: boolean; }>; /** * 验证和规范化配置 - 支持自由格式的JSON配置 */ export declare function validateAndNormalizeConfig(looseConfig: LooseConfig): FullConfig; /** * 从任意JSON配置生成完整配置 - 兼容自由格式的configJSON */ export declare function prepareConfigFromAny(looseConfig: LooseConfig): FullConfig; declare const _default: { prepareConfig: typeof prepareConfig; prepareConfigFromAny: typeof prepareConfigFromAny; validateAndNormalizeConfig: typeof validateAndNormalizeConfig; inferGroupId: typeof inferGroupId; inferModuleName: typeof inferModuleName; inferEntityName: typeof inferEntityName; inferBusinessType: typeof inferBusinessType; toJavaName: typeof toJavaName; inferJavaType: typeof inferJavaType; inferJdbcType: typeof inferJdbcType; getAuditColumns: typeof getAuditColumns; inferQueryConditions: typeof inferQueryConditions; inferIndexes: typeof inferIndexes; }; export default _default; //# sourceMappingURL=prepare-config.d.ts.map