321 lines
11 KiB
JavaScript
321 lines
11 KiB
JavaScript
/**
|
|
* 为 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} 处注释`);
|