/** * 为 api_mapping_merged.md 中的请求体 JSON 字段添加中文注释 * 直接在 MD 文件上操作,在每个 JSON key 后面追加 // 注释 */ const fs = require('fs'); const path = require('path'); // 字段名 → 中文注释 映射表 const FIELD_COMMENTS = { // ===== 通用分页/排序 ===== 'pageIndex': '页码索引', 'PageIndex': '页码索引', 'pageindex': '页码索引', 'pageSize': '每页条数', 'pagesize': '每页条数', 'current': '当前页码', 'SortStr': '排序字段', 'sortstr': '排序字段', 'sortStr': '排序字段', 'keyWord': '搜索关键词', 'SearchParameter': '查询参数对象', 'searchParameter': '查询参数对象', // ===== 关键词搜索对象 ===== 'Key': '搜索字段名', 'Value': '搜索值', 'key': '搜索字段名', 'value': '搜索值', // ===== 用户/员工信息 ===== 'USER_ID': '用户ID', 'USER_NAME': '用户姓名', 'USER_PASSPORT': '用户账号', 'USER_MOBILEPHONE': '用户手机号', 'USER_LOGINIP': '登录IP地址', 'USER_LOGINPLACE': '登录地点', 'USER_STATUS': '用户状态', 'USER_PATTERN': '用户模式', 'USER_PROVINCE': '用户所属省份', 'UserTypeIds': '用户类型ID集合', 'STAFF_ID': '员工ID', 'STAFF_NAME': '员工姓名', 'Staff_ID': '员工ID', // ===== 行为记录 ===== 'BEHAVIORRECORD_ROUT': '行为记录路由', 'BEHAVIORRECORD_ROUTNAME': '行为记录路由名称', 'BEHAVIORRECORD_TIME': '行为记录时间', 'BEHAVIORRECORD_TYPE': '行为记录类型', 'BEHAVIORRECORD_TIME_Start': '行为记录开始时间', 'BEHAVIORRECORD_TIME_End': '行为记录结束时间', // ===== 企业/商户 ===== 'OWNERUNIT_ID': '业主单位ID', 'OWNERUNIT_NAME': '业主单位名称', 'OWNERUNIT_NATURE': '业主单位性质', 'OWNER_NAME': '业主名称', 'BUSINESSMAN_ID': '商户ID', 'BUSINESS_ID': '业务ID', 'PROVINCE_CODE': '省份编码', 'PROVINCE_CODES': '省份编码集合', 'OPERATE_DATE': '操作日期', 'OPERATE_DATE_Start': '操作起始日期', 'OPERATE_DATE_End': '操作结束日期', // ===== 服务商/门店 ===== 'SERVERPART_ID': '服务商ID', 'SERVERPART_IDS': '服务商ID集合', 'ServerpartIds': '服务商ID集合', 'Serverpart_IDS': '服务商ID集合', 'ServerpartId': '服务商ID', 'SERVERPARTSHOP_ID': '门店ID', 'SERVERPARTSHOP_IDS': '门店ID集合', 'ServerpartShop_ID': '门店ID', 'ServerpartShopId': '门店ID', 'SERVERPARTSTATICTYPE_ID': '门店静态类型ID', 'SHOPCODES': '门店编码集合', 'SHOPTRADE': '门店业态', 'SPREGIONTYPE_IDS': '区域类型ID集合', // ===== 消息 ===== 'RECSTAFF_ID': '接收人员工ID', 'MESSAGE_STATE': '消息状态', 'NOTICEINFO_STATE': '公告状态', 'NOTICEINFO_TYPES': '公告类型集合', // ===== 合同相关 ===== 'REGISTERCOMPACT_ID': '合同ID', 'REGISTERCOMPACT_HOSTID': '主合同ID', 'COMPACT_STATE': '合同状态', 'COMPACT_TYPE': '合同类型', 'COMPACT_STARTDATE': '合同开始日期', 'COMPACT_ENDDATE': '合同结束日期', 'COMPACT_DETAILS': '合同详情', 'AbnormalContract': '是否异常合同', // ===== 项目相关 ===== 'BUSINESSPROJECT_ID': '经营项目ID', 'BUSINESSPROJECT_IDS': '经营项目ID集合', 'BUSINESSPROJECTSPLIT_STATE': '项目拆分状态', 'PROJECT_VALID': '项目有效状态', 'PROJECT_STARTDATE': '项目开始日期', 'PROJECT_ENDDATE': '项目结束日期', 'ProjectStateSearch': '项目状态搜索', 'ProjectTypeSearch': '项目类型搜索', 'CalcAccumulate': '是否计算累计', 'ShowAccount': '是否显示账户', 'ShowRevenue': '是否显示营收', 'ShowShare': '是否显示分润', // ===== 门店费用 ===== 'SHOPEXPENSE_ID': '门店费用ID', 'SHOPEXPENSE_STATE': '门店费用状态', 'SHOPEXPENSE_TYPE': '门店费用类型', // ===== 提成/分润 ===== 'SHOPROYALTY_ID': '提成方案ID', 'ShopRoyaltyId': '提成方案ID', 'SHOPROYALTYDETAIL_STATE': '提成明细状态', // ===== 商品相关 ===== 'COMMODITY_STATE': '商品状态', 'COMMODITY_TYPE': '商品类型', // ===== 供应商 ===== 'SUPPLIER_ID': '供应商ID', 'SUPPLIER_IDS': '供应商ID集合', 'SUPPLIER_STATE': '供应商状态', 'SUPPLIEREVALUATION_ID': '供应商评价ID', // ===== 资质 ===== 'QUALIFICATION_ID': '资质ID', 'QUALIFICATION_ENDDATE': '资质到期日期', 'QUALIFICATION_STARTDATE': '资质开始日期', 'QUALIFICATION_ENDDATE_Start': '资质到期起始日期', 'QUALIFICATION_ENDDATE_End': '资质到期结束日期', 'QUALIFICATION_STATESEARCH': '资质状态搜索', // ===== 审批流程 ===== 'BusinessProcess_State': '审批状态', 'BusinessProcess_StateSearch': '审批状态搜索', 'BusinessProcess_StartDate': '审批开始日期', 'BusinessProcess_EndDate': '审批结束日期', 'PendState': '待办状态', 'Operation_Type': '操作类型', 'OPERATION_TYPES': '操作类型集合', // ===== 销售相关 ===== 'SELLER_ID': '销售人员ID', 'SELLMASTER_DATE': '销售主单日期', 'SELL_ENDDATE_Start': '销售结束起始日期', 'SELL_ENDDATE_End': '销售结束结束日期', // ===== 财务/账单 ===== 'ACCOUNT_TYPE': '账户类型', 'BillState': '账单状态', 'BILL_DATE_Start': '账单起始日期', 'BILL_DATE_End': '账单结束日期', 'SETTLEMENT_MODES': '结算方式', // ===== 日期相关 ===== 'STARTDATESearch': '开始日期搜索', 'ENDDATESearch': '结束日期搜索', 'Start_DATE': '开始日期', 'Start_Date': '开始日期', 'End_DATE': '结束日期', 'End_Date': '结束日期', 'START_DATE_Start': '开始日期(起)', 'START_DATE_End': '开始日期(止)', 'END_DATE_Start': '结束日期(起)', 'DueDate_End': '到期日期(止)', 'Due_StartDate': '到期开始日期', 'Due_EndDate': '到期结束日期', 'EFFECT_STARTDATE_End': '生效开始日期(止)', 'EFFECT_ENDDATE_Start': '生效结束日期(起)', 'dateRange': '日期范围', 'STATISTICS_DATE_Start': '统计起始日期', 'STATISTICS_DATE_End': '统计结束日期', 'STATISTICS_MONTH_Start': '统计起始月份', 'STATISTICS_MONTH_End': '统计结束月份', 'STATISTICS_TYPE': '统计类型', // ===== 验核/审核 ===== 'CHECK_STARTDATE': '审核开始日期', 'CHECK_ENDDATE': '审核结束日期', 'CHECK_STARTDATE_SEARCH': '审核开始日期搜索', 'CHECK_ENDDATE_SEARCH': '审核结束日期搜索', 'CHECK_TYPE': '审核类型', // ===== 合作商户 ===== 'COOPMERCHANTS_ID': '合作商户ID', 'COOPMERCHANTS_STATE': '合作商户状态', 'LINKER_STATE': '联系人状态', // ===== 评价 ===== 'EVALUATIONLEVEL_TYPE': '评价等级类型', 'EVALUATIONRULES_STATE': '评价规则状态', 'EVALUATION_DEPARTMENT_IDS': '评价部门ID集合', // ===== 仓库 ===== 'WAREHOUSE_STATE': '仓库状态', // ===== 品牌/业态 ===== 'BRAND_INDUSTRY': '品牌行业', // ===== 投诉/建议 ===== 'SUGGESTION_STATES': '建议状态', 'SUGGESTION_TYPES': '建议类型', 'TREATMENT_MARKSTATE': '处理标记状态', 'EXCEPTION_TYPE': '异常类型', 'ERROR_RATE': '错误率', // ===== 投标/招商 ===== 'BID_STATES': '投标状态', // ===== 收银/支付 ===== 'CASHWORKER_TYPE': '收银员类型', 'SOURCE_PLATFORMS': '来源平台集合', // ===== 日志/操作记录 ===== 'OPERATELOG_TYPES': '操作日志类型集合', 'BUSINESSLOG_TYPE': '业务日志类型', 'TABLE_NAME': '数据表名', // ===== 其他通用 ===== 'VALID': '是否有效', 'ValidState': '有效状态', 'ISVALID': '是否有效', 'ShowWholePower': '是否显示全部权限', 'HasImage': '是否有图片', 'Worker_ValId': '工作人员有效ID', 'name': '名称', 'notExist': '排除条件', 'TYPE_STATE': '类型状态', 'USERDEFINEDTYPE_STATE': '自定义类型状态', 'HOLIDAY_TYPE_IDS': '假期类型ID集合', 'ENUM_LABEL': '枚举标签', // ===== 数据源相关参数 ===== 'DataType': '数据类型', 'StartTime': '开始时间', 'EndTime': '结束时间', 'StartDate': '开始日期', 'EndDate': '结束日期', 'ServerpartShopIds': '门店ID集合', 'ExcludeOff': '是否排除关闭', 'DataSourceType': '数据来源类型', 'GroupByDaily': '是否按日分组', 'ShowRevenueSplit': '是否显示营收拆分', 'AccountDate': '账户日期', 'SearchKeyName': '搜索字段名', 'SortDesc': '是否降序', }; // 读取 MD 文件 const mdPath = path.join(__dirname, '..', 'config', 'api_mapping_merged.md'); let content = fs.readFileSync(mdPath, 'utf-8'); // 处理 JSON 代码块中的每一行 // 匹配格式: "fieldName": "type" 或 "fieldName": { const lines = content.split('\n'); let inJsonBlock = false; let isDataBody = false; for (let i = 0; i < lines.length; i++) { const line = lines[i]; // 检测进入 JSON 代码块 if (line.trim() === '```json') { inJsonBlock = true; // 检查上一行是否是请求体标记 if (i > 0 && (lines[i - 1].includes('请求体 (data/body)') || lines[i - 1].includes('查询参数 (params/query)'))) { isDataBody = true; } continue; } // 检测离开 JSON 代码块 if (line.trim() === '```') { inJsonBlock = false; isDataBody = false; continue; } // 只处理 JSON 块内的行 if (!inJsonBlock || !isDataBody) continue; // 跳过已有注释的行 if (line.includes('//')) continue; // 匹配 JSON key: "fieldName": value const match = line.match(/^(\s*)"([^"]+)":\s*(.+)$/); if (match) { const indent = match[1]; const fieldName = match[2]; const rest = match[3]; const comment = FIELD_COMMENTS[fieldName]; if (comment) { // 去掉行尾逗号后添加注释,再加回逗号 const trimmedRest = rest.trimEnd(); const hasComma = trimmedRest.endsWith(','); const valueStr = hasComma ? trimmedRest.slice(0, -1) : trimmedRest; // 对于对象开始 { 的情况 if (valueStr.trim() === '{' || valueStr.trim() === '{}' || valueStr.trim() === '{}') { lines[i] = `${indent}"${fieldName}": ${trimmedRest} // ${comment}`; } else { lines[i] = `${indent}"${fieldName}": ${valueStr}${hasComma ? ',' : ''} // ${comment}`; } } } } content = lines.join('\n'); fs.writeFileSync(mdPath, content, 'utf-8'); // 统计注释添加数 const commentCount = (content.match(/\/\/ /g) || []).length; console.log(`✅ 完成!共添加 ${commentCount} 处注释`);