const fs = require('fs');
const path = require('path');

// 读取serviceConfig.ts文件
const serviceConfigPath = path.join(__dirname, 'server/src/config/serviceConfig.ts');
const serviceConfigContent = fs.readFileSync(serviceConfigPath, 'utf8');

// 读取DomainBootstrap.ts文件
const domainBootstrapPath = path.join(__dirname, 'server/src/core/runtime/DomainBootstrap.ts');
const domainBootstrapContent = fs.readFileSync(domainBootstrapPath, 'utf8');

// 从serviceConfig.ts中提取服务名称
const serviceNameRegex = /name: '([^']+)'/g;
const serviceConfigs = [];
let match;
while ((match = serviceNameRegex.exec(serviceConfigContent)) !== null) {
  serviceConfigs.push(match[1]);
}

// 从DomainBootstrap.ts中提取注册的服务名称
const registeredServiceRegex = /name: '([^']+)'/g;
const registeredServices = [];
let registeredMatch;
while ((registeredMatch = registeredServiceRegex.exec(domainBootstrapContent)) !== null) {
  registeredServices.push(registeredMatch[1]);
}

// 找出未注册的服务
const unregisteredServices = serviceConfigs.filter(service => !registeredServices.includes(service));

// 找出多余注册的服务（在DomainBootstrap中注册但不在serviceConfig中定义的服务）
const extraRegisteredServices = registeredServices.filter(service => !serviceConfigs.includes(service));

// 输出结果
console.log('=== 服务注册一致性检查 ===');
console.log(`ServiceConfig中定义的服务数量: ${serviceConfigs.length}`);
console.log(`DomainBootstrap中注册的服务数量: ${registeredServices.length}`);
console.log('\n=== 未注册的服务 ===');
if (unregisteredServices.length > 0) {
  console.log(unregisteredServices.join('\n'));
} else {
  console.log('所有服务都已注册');
}
console.log('\n=== 多余注册的服务 ===');
if (extraRegisteredServices.length > 0) {
  console.log(extraRegisteredServices.join('\n'));
} else {
  console.log('没有多余注册的服务');
}
