- 迁移25个模块,包含95个控制器和160个服务 - 新增验证码管理、登录配置、云编译等模块 - 完善认证授权、会员管理、支付系统等核心功能 - 实现完整的队列系统、配置管理、监控体系 - 确保100%功能对齐和命名一致性 - 支持生产环境部署
78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const repoRoot = path.resolve(__dirname, '..');
|
|
const commonRoot = path.join(repoRoot, 'wwjcloud', 'src', 'common');
|
|
|
|
function listDirs(dir) {
|
|
if (!fs.existsSync(dir)) return [];
|
|
return fs
|
|
.readdirSync(dir, { withFileTypes: true })
|
|
.filter(d => d.isDirectory())
|
|
.map(d => d.name);
|
|
}
|
|
|
|
function hasAnyTsFiles(dir) {
|
|
if (!fs.existsSync(dir)) return false;
|
|
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
for (const e of entries) {
|
|
const full = path.join(dir, e.name);
|
|
if (e.isFile() && e.name.endsWith('.ts') && !e.name.endsWith('.d.ts')) return true;
|
|
if (e.isDirectory() && hasAnyTsFiles(full)) return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function scanModule(moduleName) {
|
|
const base = path.join(commonRoot, moduleName);
|
|
const result = { module: moduleName };
|
|
// controllers
|
|
result.controller_admin = hasAnyTsFiles(path.join(base, 'controllers', 'adminapi'));
|
|
result.controller_api = hasAnyTsFiles(path.join(base, 'controllers', 'api'));
|
|
// services
|
|
result.service_admin = hasAnyTsFiles(path.join(base, 'services', 'admin'));
|
|
result.service_api = hasAnyTsFiles(path.join(base, 'services', 'api'));
|
|
result.service_core = hasAnyTsFiles(path.join(base, 'services', 'core'));
|
|
// entities
|
|
result.entities = hasAnyTsFiles(path.join(base, 'entities'));
|
|
return result;
|
|
}
|
|
|
|
function main() {
|
|
if (!fs.existsSync(commonRoot)) {
|
|
console.error('common root not found:', commonRoot);
|
|
process.exit(1);
|
|
}
|
|
const modules = listDirs(commonRoot);
|
|
const rows = modules.map(scanModule);
|
|
console.log('module,controller_admin,controller_api,service_admin,service_api,service_core,entities');
|
|
for (const r of rows) {
|
|
console.log([
|
|
r.module,
|
|
r.controller_admin ? 'Y' : 'N',
|
|
r.controller_api ? 'Y' : 'N',
|
|
r.service_admin ? 'Y' : 'N',
|
|
r.service_api ? 'Y' : 'N',
|
|
r.service_core ? 'Y' : 'N',
|
|
r.entities ? 'Y' : 'N',
|
|
].join(','));
|
|
}
|
|
|
|
const problems = rows.filter(r => !r.service_admin || !r.controller_admin || !r.entities);
|
|
if (problems.length) {
|
|
console.error('\nMissing layers summary:');
|
|
for (const p of problems) {
|
|
const miss = [];
|
|
if (!p.controller_admin) miss.push('controller_admin');
|
|
if (!p.service_admin) miss.push('service_admin');
|
|
if (!p.entities) miss.push('entities');
|
|
console.error(`- ${p.module}: ${miss.join(' | ')}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (require.main === module) {
|
|
try { main(); } catch (e) { console.error(e); process.exit(1); }
|
|
}
|