newCloud/scripts/annotate_params.js
ylj20011123 f651d3c91b update
2026-02-28 18:56:16 +08:00

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} 处注释`);