-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-fortune-cli.js
More file actions
133 lines (112 loc) · 4.61 KB
/
test-fortune-cli.js
File metadata and controls
133 lines (112 loc) · 4.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
* AI占いサービスのコマンドラインテストツール
*
* ユースケースに従って、コマンドラインから簡単に占いフローをテストできるツール
* ダミーデータを使用して、実際のモジュールを直接呼び出します
*/
require('dotenv').config();
// ダミーモードを強制設定
process.env.NODE_ENV = 'development';
// テスト対象のモジュール
const { generateFortune } = require('./src/aiFortune/claudeApiManager');
const { generateFortunePDF } = require('./src/pdfGeneration/pdfGenerator');
const { sendFortuneEmail } = require('./src/emailSending/emailSender');
/**
* テストデータの作成
*/
function createTestFortune(type = 'general', name = '鈴木一郎') {
const testData = {
orderId: `TEST-${Date.now()}`,
name: name,
birthDate: '1990-01-01',
email: 'test@example.com',
fortuneType: type,
consultation: ''
};
// 相談内容をタイプに合わせて設定
switch (type) {
case 'career':
testData.consultation = '仕事の将来性について悩んでいます。転職すべきか、今の職場で頑張るべきか迷っています。';
break;
case 'love':
testData.consultation = '恋愛運について知りたいです。良い出会いはありますか?';
break;
case 'money':
testData.consultation = '今後の金運について教えてください。投資のタイミングはいつが良いでしょうか?';
break;
default:
testData.consultation = '全体的な運勢と今後半年の傾向について教えてください。';
}
return testData;
}
/**
* 占い生成とPDF生成のフロー全体をテスト
*/
async function testFortuneFlow(userData) {
console.log(`\n===== ${userData.name}様の${userData.fortuneType}占いテスト開始 =====`);
try {
// ステップ1: 占い結果を生成
console.log('1. 占い結果を生成中...');
const fortuneData = await generateFortune(userData, userData.fortuneType);
console.log('✓ 占い結果の生成が完了しました');
console.log(' - 内容プレビュー:', fortuneData.content.substring(0, 100) + '...');
// ステップ2: PDF生成
console.log('\n2. PDF生成中...');
const pdfPath = await generateFortunePDF({
...fortuneData,
name: userData.name
});
console.log('✓ PDFの生成が完了しました');
console.log(' - ファイル:', pdfPath);
// ステップ3: メール送信
console.log('\n3. メール送信中...');
const emailResult = await sendFortuneEmail({
...fortuneData,
email: userData.email,
name: userData.name
}, pdfPath);
console.log('✓ メールの送信が完了しました');
console.log(' - 送信先:', userData.email);
console.log('\n✅ テスト成功: すべてのステップが正常に完了しました');
console.log(`===== ${userData.name}様の${userData.fortuneType}占いテスト完了 =====\n`);
return { fortuneData, pdfPath, emailResult };
} catch (error) {
console.error('❌ テスト失敗:', error.message);
console.log(`===== ${userData.name}様の${userData.fortuneType}占いテスト失敗 =====\n`);
return { error };
}
}
/**
* メイン関数
*/
async function main() {
// コマンドライン引数の取得
const args = process.argv.slice(2);
const fortuneType = args[0] || 'general';
const userName = args[1] || '鈴木一郎';
// 使い方の表示
console.log('AI占いサービス テストツール');
console.log('---------------------------');
console.log(`占いタイプ: ${fortuneType}`);
console.log(`ユーザー名: ${userName}`);
console.log('---------------------------\n');
// テストの実行
const testData = createTestFortune(fortuneType, userName);
const results = await testFortuneFlow(testData);
// テスト実行結果の概要を出力
if (!results.error) {
console.log('\n=== テスト結果概要 ===');
console.log(`・占いタイプ: ${results.fortuneData.fortuneType}`);
console.log(`・生成日時: ${results.fortuneData.generatedAt}`);
console.log(`・PDF保存先: ${results.pdfPath}`);
console.log(`・メール送信成功: ${results.emailResult.success}`);
if (process.env.NODE_ENV === 'development') {
console.log('\n注意: 開発環境のためAPIとメール送信は実際には実行されていません');
}
}
}
// スクリプト実行
main().catch(error => {
console.error('未処理のエラーが発生しました:', error);
process.exit(1);
});