95 lines
4.3 KiB
JavaScript
95 lines
4.3 KiB
JavaScript
/**
|
||
* 最终全链路验证
|
||
*/
|
||
|
||
const SG = { ip: '43.156.237.110', port: 3911, key: 'zy_gtw_74d30f54fa8b5581514569ee7874def57861a31ccb2be8c9' }
|
||
const GZ = { ip: '43.139.217.141', port: 3910, key: 'zy_gtw_4a155446b7acc09fe46a2a29972c0ca5d9954da19c35dc23' }
|
||
|
||
async function callGK(srv, method, path, body = null) {
|
||
const url = `http://${srv.ip}:${srv.port}${path}`
|
||
const opts = { method, headers: { 'Authorization': `Bearer ${srv.key}`, 'Content-Type': 'application/json' } }
|
||
if (body) opts.body = JSON.stringify(body)
|
||
const res = await fetch(url, opts)
|
||
const text = await res.text()
|
||
try { return { status: res.status, data: JSON.parse(text) } }
|
||
catch { return { status: res.status, data: { raw: text } } }
|
||
}
|
||
|
||
async function exec(srv, cmd) {
|
||
const r = await callGK(srv, 'POST', '/exec', { cmd })
|
||
return r.data
|
||
}
|
||
|
||
async function main() {
|
||
console.log('═'.repeat(50))
|
||
console.log('✅ 铸渊图片工作室 · 最终验收')
|
||
console.log('═'.repeat(50))
|
||
|
||
// 1. 新加坡本地服务检查
|
||
console.log('\n1️⃣ 新加坡image-studio:')
|
||
const r1 = await exec(SG, 'curl -s -w "\nHTTP:%{http_code}" http://localhost:3912/ 2>&1 | tail -2')
|
||
console.log(' localhost:3912:', (r1.stdout || '').trim())
|
||
|
||
// 2. 新加坡Nginx代理
|
||
const r2 = await exec(SG, 'curl -s -w "\nHTTP:%{http_code}" http://localhost/images/ 2>&1 | tail -2')
|
||
console.log(' SG nginx /images/:', (r2.stdout || '').trim())
|
||
|
||
// 3. 新加坡外网
|
||
const r3 = await exec(SG, `curl -s -w "\nHTTP:%{http_code}" http://${SG.ip}/images/ 2>&1 | tail -2`)
|
||
console.log(' SG public /images/:', (r3.stdout || '').trim())
|
||
|
||
// 4. 广州→新加坡
|
||
const r4 = await exec(GZ, `curl -s --connect-timeout 5 -w "\nHTTP:%{http_code}" http://${SG.ip}/images/ 2>&1 | tail -2`)
|
||
console.log(' GZ→SG /images/:', (r4.stdout || '').trim())
|
||
|
||
// 5. 广州Nginx代理
|
||
const r5 = await exec(GZ, `curl -s -k --connect-timeout 5 -H "Host: guanghulab.com" -w "\nHTTP:%{http_code}" https://localhost/images/ 2>&1 | tail -2`)
|
||
console.log(' GZ nginx /images/:', (r5.stdout || '').trim())
|
||
|
||
// 6. 检查生成的测试图片
|
||
console.log('\n2️⃣ 验证生成的图片:')
|
||
const r6 = await exec(SG, 'ls -la /data/image-studio/output/deploy_greeting.png 2>&1')
|
||
console.log(' 图片文件:', (r6.stdout || '').trim())
|
||
|
||
// 7. 通过广州Nginx代理访问图片
|
||
const imgName = 'deploy_greeting.png'
|
||
const r7 = await exec(GZ, `curl -s -k --connect-timeout 5 -H "Host: guanghulab.com" -o /dev/null -w "HTTP:%{http_code} SIZE:%{size_download}" https://localhost/images/output/${imgName} 2>&1`)
|
||
console.log(' 广州Nginx→图片:', r7.stdout || r7.stderr)
|
||
|
||
// 8. 生成更多测试
|
||
console.log('\n3️⃣ 生成不同风格的测试图:')
|
||
const tests = [
|
||
['即刻风格', 'node generate.js --text "记录今日份思考\n种一棵树最好的时间是十年前\n其次是现在" --for "即刻" --output final_jike'],
|
||
['海报风格', 'node generate.js --text "公司放假通知\n时间:6月1日-6月5日\n请大家提前安排好工作\n祝大家节日快乐" --for "海报" --output final_poster'],
|
||
]
|
||
for (const [name, cmd] of tests) {
|
||
const r = await exec(SG, `cd /data/image-studio && ${cmd} 2>&1 | tail -5`)
|
||
console.log(` ${name}:`, (r.stdout || r.stderr || '').slice(0, 100))
|
||
}
|
||
|
||
// 9. 所有生成的文件
|
||
console.log('\n4️⃣ 所有图片列表:')
|
||
const r8 = await exec(SG, 'ls -lhS /data/image-studio/output/*.png 2>&1')
|
||
console.log(r8.stdout || r8.stderr)
|
||
|
||
// 10. PM2状态
|
||
console.log('\n5️⃣ PM2状态:')
|
||
const r9 = await exec(SG, 'pm2 show image-studio 2>&1 | grep -E "status|uptime|restarts|port"')
|
||
console.log(r9.stdout || r9.stderr)
|
||
|
||
console.log('\n' + '═'.repeat(50))
|
||
console.log('🎉 铸渊图片工作室部署完成!')
|
||
console.log('═'.repeat(50))
|
||
console.log()
|
||
console.log('📎 访问入口:')
|
||
console.log(' https://guanghulab.com/images/')
|
||
console.log(' (广州Nginx → 新加坡Nginx → image-studio:3912)')
|
||
console.log()
|
||
console.log('🤖 如何使用:')
|
||
console.log(' 冰朔,你只需要在对话里告诉我内容和场景,')
|
||
console.log(' 我来理解、设计、生成配图。')
|
||
console.log(' 生成的图片在 https://guanghulab.com/images/ 可以直接查看下载。')
|
||
}
|
||
|
||
main().catch(err => console.error('❌', err))
|