Files
telegram-management-system/backend/unified_demo.js
你的用户名 237c7802e5
Some checks failed
Deploy / deploy (push) Has been cancelled
Initial commit: Telegram Management System
Full-stack web application for Telegram management
- Frontend: Vue 3 + Vben Admin
- Backend: NestJS
- Features: User management, group broadcast, statistics

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 15:37:50 +08:00

318 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env node
/**
* 完整演示新的统一智能姓名管理系统
*/
const { chromium } = require('playwright');
async function unifiedDemo() {
console.log('🎯 演示全新的统一智能姓名管理系统...\n');
let browser;
let page;
try {
browser = await chromium.launch({
headless: false,
slowMo: 1500,
devtools: false
});
const context = await browser.newContext({
viewport: { width: 1600, height: 1000 }
});
page = await context.newPage();
// 监听API调用
page.on('request', request => {
const url = request.url();
if (url.includes('/nameTemplate/')) {
console.log(`🔗 ${request.method()} ${url}`);
}
});
page.on('response', response => {
const url = response.url();
if (url.includes('/nameTemplate/')) {
console.log(`📡 ${response.status()} ${url}`);
}
});
// ==================== 第1步登录 ====================
console.log('🚀 第1步登录系统...');
await page.goto('http://localhost:8891');
await page.waitForLoadState('networkidle');
await page.fill('input[type="text"]', 'admin');
await page.fill('input[type="password"]', '111111');
await page.click('button:has-text("登录")');
await page.waitForLoadState('networkidle');
console.log('✅ 登录成功');
await page.screenshot({ path: 'unified_01_login.png', fullPage: true });
// ==================== 第2步访问新的统一姓名管理 ====================
console.log('\n🎯 第2步访问新的统一智能姓名管理系统...');
await page.goto('http://localhost:8891/#/nameManage/unified');
await page.waitForLoadState('networkidle');
await page.waitForTimeout(5000); // 等待系统状态加载
console.log('✅ 进入统一姓名管理系统');
await page.screenshot({ path: 'unified_02_main_interface.png', fullPage: true });
// ==================== 第3步检查系统状态面板 ====================
console.log('\n📊 第3步检查4层级生成系统状态...');
const systemStatus = await page.evaluate(() => {
// 检查生成器状态卡片
const statusCards = document.querySelectorAll('.status-card');
const generatorItems = document.querySelectorAll('.generator-item');
const platformTags = document.querySelectorAll('.platform-tags .ivu-tag');
const cultureTags = document.querySelectorAll('.culture-tags .ivu-tag');
return {
statusCardsCount: statusCards.length,
generatorCount: generatorItems.length,
platformCount: platformTags.length,
cultureCount: cultureTags.length,
hasGeneratePanel: !!document.querySelector('.generate-panel')
};
});
console.log('✅ 系统状态面板分析:');
console.log(` 📊 状态卡片: ${systemStatus.statusCardsCount}`);
console.log(` 🎯 生成器: ${systemStatus.generatorCount}`);
console.log(` 🌐 支持平台: ${systemStatus.platformCount}`);
console.log(` 🌍 支持文化: ${systemStatus.cultureCount}`);
console.log(` 🎲 智能生成面板: ${systemStatus.hasGeneratePanel ? '存在' : '不存在'}`);
// ==================== 第4步测试智能生成功能 ====================
console.log('\n🎲 第4步测试智能姓名生成功能...');
// 设置生成参数
const platformSelect = await page.locator('.generate-panel .ivu-select').first();
if (await platformSelect.isVisible()) {
await platformSelect.click();
await page.waitForTimeout(500);
await page.click('li:has-text("微信")');
console.log('🔧 选择平台: 微信');
}
const cultureSelect = await page.locator('.generate-panel .ivu-select').nth(1);
if (await cultureSelect.isVisible()) {
await cultureSelect.click();
await page.waitForTimeout(500);
await page.click('li:has-text("中文")');
console.log('🌍 选择文化: 中文');
}
// 点击生成按钮
const generateBtn = await page.locator('button:has-text("生成姓名")');
if (await generateBtn.isVisible()) {
await generateBtn.click();
console.log('🎯 触发智能生成...');
await page.waitForTimeout(3000);
await page.screenshot({ path: 'unified_03_generate_names.png', fullPage: true });
// 检查生成结果
const generateResults = await page.evaluate(() => {
const resultItems = document.querySelectorAll('.name-result-item');
return Array.from(resultItems).map(item => ({
displayName: item.querySelector('.name-display strong')?.textContent,
nameParts: item.querySelector('.name-parts')?.textContent,
tags: Array.from(item.querySelectorAll('.ivu-tag')).map(tag => tag.textContent)
}));
});
if (generateResults.length > 0) {
console.log('✅ 智能生成成功:');
generateResults.forEach((result, index) => {
console.log(` ${index + 1}. ${result.displayName} ${result.nameParts} [${result.tags.join(', ')}]`);
});
} else {
console.log('⚠️ 生成结果为空(可能系统配置未完成)');
}
}
// ==================== 第5步测试添加新模板功能 ====================
console.log('\n 第5步测试添加姓名模板功能...');
const addButton = await page.locator('button:has-text("添加姓名模板")');
if (await addButton.isVisible()) {
await addButton.click();
await page.waitForTimeout(2000);
console.log('🖱️ 打开添加模板弹窗');
await page.screenshot({ path: 'unified_04_add_modal.png', fullPage: true });
// 检查弹窗内容
const modalInfo = await page.evaluate(() => {
const modal = document.querySelector('.ivu-modal');
if (!modal) return { hasModal: false };
const inputs = modal.querySelectorAll('input');
const selects = modal.querySelectorAll('.ivu-select');
return {
hasModal: true,
title: modal.querySelector('.ivu-modal-header')?.textContent?.trim(),
inputCount: inputs.length,
selectCount: selects.length,
inputPlaceholders: Array.from(inputs).map(input => input.placeholder).filter(p => p)
};
});
if (modalInfo.hasModal) {
console.log('✅ 高级添加弹窗:');
console.log(` 📝 标题: ${modalInfo.title}`);
console.log(` 📝 输入框: ${modalInfo.inputCount}`);
console.log(` 📋 下拉选择: ${modalInfo.selectCount}`);
console.log(` 📋 字段: ${modalInfo.inputPlaceholders.join(', ')}`);
// 填写一些示例数据
const lastNameInput = await page.locator('input[placeholder*="姓氏"]');
if (await lastNameInput.isVisible()) {
await lastNameInput.fill('智能');
console.log('✏️ 填写姓氏: 智能');
}
const firstNameInput = await page.locator('input[placeholder*="名字"]');
if (await firstNameInput.isVisible()) {
await firstNameInput.fill('生成');
console.log('✏️ 填写名字: 生成');
}
const displayNameInput = await page.locator('input[placeholder*="显示名称"]');
if (await displayNameInput.isVisible()) {
await displayNameInput.fill('智能生成');
console.log('✏️ 填写显示名: 智能生成');
}
await page.waitForTimeout(1000);
await page.screenshot({ path: 'unified_05_filled_form.png', fullPage: true });
// 取消而不是提交
const cancelButton = await page.locator('button:has-text("取消")');
if (await cancelButton.isVisible()) {
await cancelButton.click();
console.log('❌ 取消添加(演示完成)');
}
}
}
// ==================== 第6步测试高级搜索功能 ====================
console.log('\n🔍 第6步测试高级搜索和过滤功能...');
// 测试关键词搜索
const keywordInput = await page.locator('input[placeholder*="搜索姓名"]');
if (await keywordInput.isVisible()) {
await keywordInput.fill('李');
console.log('🔍 输入搜索关键词: 李');
// 测试文化过滤
const cultureFilter = await page.locator('form .ivu-select').nth(1);
if (await cultureFilter.isVisible()) {
await cultureFilter.click();
await page.waitForTimeout(500);
const cnOption = await page.locator('li:has-text("中文")');
if (await cnOption.isVisible()) {
await cnOption.click();
console.log('🌍 选择文化过滤: 中文');
}
}
const searchButton = await page.locator('button:has-text("搜索")');
if (await searchButton.isVisible()) {
await searchButton.click();
await page.waitForTimeout(2000);
console.log('🔍 执行高级搜索');
await page.screenshot({ path: 'unified_06_advanced_search.png', fullPage: true });
// 重置搜索
const resetButton = await page.locator('button:has-text("重置")');
if (await resetButton.isVisible()) {
await resetButton.click();
await page.waitForTimeout(1000);
console.log('🧹 重置搜索条件');
}
}
}
// ==================== 第7步检查数据表格 ====================
console.log('\n📋 第7步检查增强型数据表格...');
const tableInfo = await page.evaluate(() => {
const table = document.querySelector('table');
if (!table) return { hasTable: false };
const headers = Array.from(table.querySelectorAll('thead th')).map(th => th.textContent?.trim());
const rows = table.querySelectorAll('tbody tr');
return {
hasTable: true,
headerCount: headers.length,
headers: headers,
rowCount: rows.length,
hasAdvancedColumns: headers.includes('文化') && headers.includes('平台') && headers.includes('质量')
};
});
if (tableInfo.hasTable) {
console.log('✅ 增强型数据表格:');
console.log(` 📊 列数: ${tableInfo.headerCount}`);
console.log(` 📋 列标题: ${tableInfo.headers.join(' | ')}`);
console.log(` 📊 数据行: ${tableInfo.rowCount}`);
console.log(` 🎯 高级列: ${tableInfo.hasAdvancedColumns ? '已包含文化/平台/质量列' : '基础列'}`);
}
// ==================== 第8步最终展示 ====================
console.log('\n🎉 第8步系统功能总览...');
await page.screenshot({ path: 'unified_07_final_overview.png', fullPage: true });
console.log('\n🏆 统一智能姓名管理系统演示完成!');
console.log('\n📂 生成的演示截图:');
console.log(' unified_01_login.png - 系统登录');
console.log(' unified_02_main_interface.png - 统一管理界面');
console.log(' unified_03_generate_names.png - 智能生成功能');
console.log(' unified_04_add_modal.png - 高级添加弹窗');
console.log(' unified_05_filled_form.png - 详细表单');
console.log(' unified_06_advanced_search.png - 高级搜索功能');
console.log(' unified_07_final_overview.png - 最终系统总览');
console.log('\n✨ 新统一系统特点:');
console.log(' 🎯 统一界面: 替代分离的姓氏/名字页面');
console.log(' 📊 系统状态: 实时显示4层级生成器状态');
console.log(' 🌐 多平台支持: 8个通讯平台适配');
console.log(' 🌍 多文化支持: 14种文化背景');
console.log(' 🎲 智能生成: 实时在线生成高质量姓名');
console.log(' 🔍 高级搜索: 多维度过滤和搜索');
console.log(' 📋 增强表格: 文化/平台/质量/权重等丰富信息');
console.log(' 高级添加: 全面的模板配置选项');
console.log(' 🔧 智能路由: 旧页面隐藏,新页面为主入口');
console.log('\n⏰ 浏览器将保持打开20秒供最终观察...');
await page.waitForTimeout(20000);
} catch (error) {
console.error('❌ 演示失败:', error.message);
if (page) {
await page.screenshot({ path: 'unified_error.png', fullPage: true });
}
} finally {
if (browser) {
await browser.close();
}
console.log('🏁 统一系统演示结束');
}
}
if (require.main === module) {
unifiedDemo().catch(console.error);
}
module.exports = unifiedDemo;