@mathrunet/masamune_firebase_workflow_marketing 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +361 -0
- package/LICENSE +21 -0
- package/README.md +70 -0
- package/assets/fonts/NotoSans-Bold.ttf +1439 -0
- package/assets/fonts/NotoSans-Regular.ttf +1439 -0
- package/assets/fonts/NotoSans.ttf +0 -0
- package/assets/fonts/NotoSansJP-Bold.ttf +0 -0
- package/assets/fonts/NotoSansJP-Regular.ttf +0 -0
- package/assets/fonts/NotoSansKR-Bold.ttf +1439 -0
- package/assets/fonts/NotoSansKR-Regular.ttf +1439 -0
- package/assets/fonts/NotoSansKR.ttf +0 -0
- package/assets/fonts/NotoSansSC-Bold.ttf +1439 -0
- package/assets/fonts/NotoSansSC-Regular.ttf +1439 -0
- package/assets/fonts/NotoSansSC.ttf +0 -0
- package/dist/clients/app_store_client.d.ts +54 -0
- package/dist/clients/app_store_client.js +280 -0
- package/dist/clients/app_store_client.js.map +1 -0
- package/dist/clients/firebase_analytics_client.d.ts +67 -0
- package/dist/clients/firebase_analytics_client.js +411 -0
- package/dist/clients/firebase_analytics_client.js.map +1 -0
- package/dist/clients/github_content_client.d.ts +83 -0
- package/dist/clients/github_content_client.js +443 -0
- package/dist/clients/github_content_client.js.map +1 -0
- package/dist/clients/google_play_client.d.ts +49 -0
- package/dist/clients/google_play_client.js +275 -0
- package/dist/clients/google_play_client.js.map +1 -0
- package/dist/functions/analyze_github_init.d.ts +37 -0
- package/dist/functions/analyze_github_init.js +299 -0
- package/dist/functions/analyze_github_init.js.map +1 -0
- package/dist/functions/analyze_github_process.d.ts +25 -0
- package/dist/functions/analyze_github_process.js +268 -0
- package/dist/functions/analyze_github_process.js.map +1 -0
- package/dist/functions/analyze_github_summary.d.ts +32 -0
- package/dist/functions/analyze_github_summary.js +270 -0
- package/dist/functions/analyze_github_summary.js.map +1 -0
- package/dist/functions/analyze_market_research.d.ts +40 -0
- package/dist/functions/analyze_market_research.js +346 -0
- package/dist/functions/analyze_market_research.js.map +1 -0
- package/dist/functions/analyze_marketing_data.d.ts +96 -0
- package/dist/functions/analyze_marketing_data.js +990 -0
- package/dist/functions/analyze_marketing_data.js.map +1 -0
- package/dist/functions/collect_from_app_store.d.ts +25 -0
- package/dist/functions/collect_from_app_store.js +148 -0
- package/dist/functions/collect_from_app_store.js.map +1 -0
- package/dist/functions/collect_from_firebase_analytics.d.ts +25 -0
- package/dist/functions/collect_from_firebase_analytics.js +142 -0
- package/dist/functions/collect_from_firebase_analytics.js.map +1 -0
- package/dist/functions/collect_from_google_play_console.d.ts +25 -0
- package/dist/functions/collect_from_google_play_console.js +142 -0
- package/dist/functions/collect_from_google_play_console.js.map +1 -0
- package/dist/functions/generate_marketing_markdown.d.ts +89 -0
- package/dist/functions/generate_marketing_markdown.js +653 -0
- package/dist/functions/generate_marketing_markdown.js.map +1 -0
- package/dist/functions/generate_marketing_pdf.d.ts +25 -0
- package/dist/functions/generate_marketing_pdf.js +175 -0
- package/dist/functions/generate_marketing_pdf.js.map +1 -0
- package/dist/functions/research_market.d.ts +56 -0
- package/dist/functions/research_market.js +434 -0
- package/dist/functions/research_market.js.map +1 -0
- package/dist/functions.d.ts +571 -0
- package/dist/functions.js +648 -0
- package/dist/functions.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/locales/de_DE.d.ts +5 -0
- package/dist/locales/de_DE.js +111 -0
- package/dist/locales/de_DE.js.map +1 -0
- package/dist/locales/en.d.ts +5 -0
- package/dist/locales/en.js +111 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/locales/es_ES.d.ts +5 -0
- package/dist/locales/es_ES.js +111 -0
- package/dist/locales/es_ES.js.map +1 -0
- package/dist/locales/fr_FR.d.ts +5 -0
- package/dist/locales/fr_FR.js +111 -0
- package/dist/locales/fr_FR.js.map +1 -0
- package/dist/locales/id_ID.d.ts +5 -0
- package/dist/locales/id_ID.js +111 -0
- package/dist/locales/id_ID.js.map +1 -0
- package/dist/locales/index.d.ts +59 -0
- package/dist/locales/index.js +155 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/ja.d.ts +5 -0
- package/dist/locales/ja.js +111 -0
- package/dist/locales/ja.js.map +1 -0
- package/dist/locales/ko_KR.d.ts +5 -0
- package/dist/locales/ko_KR.js +111 -0
- package/dist/locales/ko_KR.js.map +1 -0
- package/dist/locales/pt_PT.d.ts +5 -0
- package/dist/locales/pt_PT.js +111 -0
- package/dist/locales/pt_PT.js.map +1 -0
- package/dist/locales/ru_RU.d.ts +5 -0
- package/dist/locales/ru_RU.js +111 -0
- package/dist/locales/ru_RU.js.map +1 -0
- package/dist/locales/types.d.ts +105 -0
- package/dist/locales/types.js +8 -0
- package/dist/locales/types.js.map +1 -0
- package/dist/locales/zh_CN.d.ts +5 -0
- package/dist/locales/zh_CN.js +111 -0
- package/dist/locales/zh_CN.js.map +1 -0
- package/dist/models/app_store_data.d.ts +87 -0
- package/dist/models/app_store_data.js +8 -0
- package/dist/models/app_store_data.js.map +1 -0
- package/dist/models/chart_data.d.ts +104 -0
- package/dist/models/chart_data.js +8 -0
- package/dist/models/chart_data.js.map +1 -0
- package/dist/models/common.d.ts +42 -0
- package/dist/models/common.js +8 -0
- package/dist/models/common.js.map +1 -0
- package/dist/models/firebase_analytics_data.d.ts +134 -0
- package/dist/models/firebase_analytics_data.js +8 -0
- package/dist/models/firebase_analytics_data.js.map +1 -0
- package/dist/models/github_analysis_data.d.ts +266 -0
- package/dist/models/github_analysis_data.js +101 -0
- package/dist/models/github_analysis_data.js.map +1 -0
- package/dist/models/google_play_data.d.ts +115 -0
- package/dist/models/google_play_data.js +8 -0
- package/dist/models/google_play_data.js.map +1 -0
- package/dist/models/index.d.ts +14 -0
- package/dist/models/index.js +36 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/market_research_data.d.ts +259 -0
- package/dist/models/market_research_data.js +8 -0
- package/dist/models/market_research_data.js.map +1 -0
- package/dist/models/marketing_analysis_data.d.ts +200 -0
- package/dist/models/marketing_analysis_data.js +8 -0
- package/dist/models/marketing_analysis_data.js.map +1 -0
- package/dist/models/pdf_data.d.ts +112 -0
- package/dist/models/pdf_data.js +8 -0
- package/dist/models/pdf_data.js.map +1 -0
- package/dist/services/chart_service.d.ts +54 -0
- package/dist/services/chart_service.js +436 -0
- package/dist/services/chart_service.js.map +1 -0
- package/dist/services/github_analysis_service.d.ts +73 -0
- package/dist/services/github_analysis_service.js +488 -0
- package/dist/services/github_analysis_service.js.map +1 -0
- package/dist/services/pdf_service.d.ts +112 -0
- package/dist/services/pdf_service.js +1397 -0
- package/dist/services/pdf_service.js.map +1 -0
- package/dist/utils/github_analysis_storage.d.ts +88 -0
- package/dist/utils/github_analysis_storage.js +154 -0
- package/dist/utils/github_analysis_storage.js.map +1 -0
- package/package.json +64 -0
- package/scripts/cleanup_test_data.ts +304 -0
- package/scripts/list_test_data.ts +85 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AnalyzeMarketResearch = void 0;
|
|
4
|
+
const masamune_firebase_workflow_1 = require("@mathrunet/masamune_firebase_workflow");
|
|
5
|
+
const genai_1 = require("@google/genai");
|
|
6
|
+
const locales_1 = require("../locales");
|
|
7
|
+
/**
|
|
8
|
+
* A function for analyzing market research data.
|
|
9
|
+
*
|
|
10
|
+
* 市場調査データを分析するためのFunction。
|
|
11
|
+
*/
|
|
12
|
+
class AnalyzeMarketResearch extends masamune_firebase_workflow_1.WorkflowProcessFunctionBase {
|
|
13
|
+
/**
|
|
14
|
+
* The ID of the function.
|
|
15
|
+
*
|
|
16
|
+
* 関数のID。
|
|
17
|
+
*/
|
|
18
|
+
id = "analyze_market_research";
|
|
19
|
+
/**
|
|
20
|
+
* The process of the function.
|
|
21
|
+
*
|
|
22
|
+
* @param context
|
|
23
|
+
* The context of the function.
|
|
24
|
+
*
|
|
25
|
+
* @returns
|
|
26
|
+
* The action of the function.
|
|
27
|
+
*/
|
|
28
|
+
async process(context) {
|
|
29
|
+
const action = context.action;
|
|
30
|
+
const task = context.task;
|
|
31
|
+
// 1. task.resultsからmarketResearchDataを取得
|
|
32
|
+
const marketResearchData = task.results?.marketResearchData;
|
|
33
|
+
if (!marketResearchData || "error" in marketResearchData) {
|
|
34
|
+
console.log("AnalyzeMarketResearch: No valid marketResearchData found in task.results");
|
|
35
|
+
return {
|
|
36
|
+
...action,
|
|
37
|
+
results: {
|
|
38
|
+
marketResearch: {
|
|
39
|
+
error: "No valid marketResearchData found. Run research_market action first.",
|
|
40
|
+
generatedAt: new Date().toISOString(),
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// 2. task.projectからプロジェクトデータを取得
|
|
46
|
+
const projectData = await this.loadProjectData(task);
|
|
47
|
+
// 3. 環境変数からプロジェクト情報を取得
|
|
48
|
+
const gcpProjectId = process.env.GCLOUD_PROJECT || process.env.GOOGLE_CLOUD_PROJECT || process.env.GCP_PROJECT_ID;
|
|
49
|
+
const region = process.env.GCLOUD_REGION || "us-central1";
|
|
50
|
+
const modelName = process.env.GEMINI_MODEL || "gemini-2.5-flash";
|
|
51
|
+
const inputPrice = Number(process.env.MODEL_INPUT_PRICE || 0.0000003);
|
|
52
|
+
const outputPrice = Number(process.env.MODEL_OUTPUT_PRICE || 0.0000025);
|
|
53
|
+
if (!gcpProjectId) {
|
|
54
|
+
console.error("AnalyzeMarketResearch: No GCP project ID found");
|
|
55
|
+
return {
|
|
56
|
+
...action,
|
|
57
|
+
results: {
|
|
58
|
+
marketResearch: {
|
|
59
|
+
error: "No GCP project ID configured",
|
|
60
|
+
generatedAt: new Date().toISOString(),
|
|
61
|
+
},
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
// 4. GoogleGenAI を初期化(VertexAI モード)
|
|
67
|
+
const genai = new genai_1.GoogleGenAI({
|
|
68
|
+
vertexai: true,
|
|
69
|
+
project: gcpProjectId,
|
|
70
|
+
location: region,
|
|
71
|
+
});
|
|
72
|
+
// 5. プロンプトを構築
|
|
73
|
+
const locale = typeof action.locale === "object"
|
|
74
|
+
? action.locale["@language"]
|
|
75
|
+
: action.locale;
|
|
76
|
+
const prompt = this.buildAnalysisPrompt(projectData, marketResearchData, locale);
|
|
77
|
+
// 6. Gemini APIを呼び出し
|
|
78
|
+
console.log("AnalyzeMarketResearch: Calling Gemini API for deep analysis...");
|
|
79
|
+
const response = await genai.models.generateContent({
|
|
80
|
+
model: modelName,
|
|
81
|
+
contents: prompt,
|
|
82
|
+
config: {
|
|
83
|
+
responseMimeType: "application/json",
|
|
84
|
+
responseSchema: this.getResponseSchema(),
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const text = response.text;
|
|
88
|
+
if (!text) {
|
|
89
|
+
throw new Error("Failed to generate content from Gemini.");
|
|
90
|
+
}
|
|
91
|
+
// 7. JSONをパース
|
|
92
|
+
const cleanedText = text.replace(/```json/g, "").replace(/```/g, "").trim();
|
|
93
|
+
const firstBrace = cleanedText.indexOf("{");
|
|
94
|
+
const lastBrace = cleanedText.lastIndexOf("}");
|
|
95
|
+
if (firstBrace === -1 || lastBrace === -1) {
|
|
96
|
+
throw new Error("No JSON object found in response.");
|
|
97
|
+
}
|
|
98
|
+
const jsonText = cleanedText.substring(firstBrace, lastBrace + 1);
|
|
99
|
+
const analysisResult = JSON.parse(jsonText);
|
|
100
|
+
// 8. トークン使用量とコストを計算
|
|
101
|
+
const inputTokens = response.usageMetadata?.promptTokenCount ?? 0;
|
|
102
|
+
const outputTokens = response.usageMetadata?.candidatesTokenCount ?? 0;
|
|
103
|
+
const cost = inputTokens * inputPrice + outputTokens * outputPrice;
|
|
104
|
+
console.log(`AnalyzeMarketResearch: Generated successfully. Tokens: ${inputTokens} input, ${outputTokens} output. Cost: $${cost.toFixed(6)}`);
|
|
105
|
+
// 9. 結果を返却(researchDataを含める)
|
|
106
|
+
const marketResearch = {
|
|
107
|
+
...analysisResult,
|
|
108
|
+
researchData: marketResearchData,
|
|
109
|
+
generatedAt: new Date().toISOString(),
|
|
110
|
+
};
|
|
111
|
+
return {
|
|
112
|
+
...action,
|
|
113
|
+
usage: (action.usage ?? 0) + cost,
|
|
114
|
+
results: {
|
|
115
|
+
marketResearch,
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.error("AnalyzeMarketResearch: Failed to analyze market research", error);
|
|
121
|
+
return {
|
|
122
|
+
...action,
|
|
123
|
+
results: {
|
|
124
|
+
marketResearch: {
|
|
125
|
+
error: error.message,
|
|
126
|
+
generatedAt: new Date().toISOString(),
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Load project data from task.project reference.
|
|
134
|
+
*/
|
|
135
|
+
async loadProjectData(task) {
|
|
136
|
+
const projectRef = task.project;
|
|
137
|
+
if (!projectRef) {
|
|
138
|
+
return {};
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
const projectDoc = await projectRef.load();
|
|
142
|
+
if (!projectDoc.exists) {
|
|
143
|
+
return {};
|
|
144
|
+
}
|
|
145
|
+
const data = projectDoc.data();
|
|
146
|
+
return {
|
|
147
|
+
description: data?.description,
|
|
148
|
+
concept: data?.concept,
|
|
149
|
+
goal: data?.goal,
|
|
150
|
+
target: data?.target,
|
|
151
|
+
kpi: data?.kpi,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
console.error("AnalyzeMarketResearch: Failed to load project data", error);
|
|
156
|
+
return {};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Build the analysis prompt for Gemini.
|
|
161
|
+
*/
|
|
162
|
+
buildAnalysisPrompt(project, researchData, locale) {
|
|
163
|
+
const t = (0, locales_1.getTranslations)(locale);
|
|
164
|
+
return `You are a strategic business analyst. Based on the following project information and market research data, conduct a detailed strategic analysis.
|
|
165
|
+
|
|
166
|
+
## Project Information
|
|
167
|
+
- **Description**: ${project.description || "Not provided"}
|
|
168
|
+
- **Concept**: ${project.concept || "Not provided"}
|
|
169
|
+
- **Goal**: ${project.goal || "Not provided"}
|
|
170
|
+
- **Target Audience**: ${project.target || "Not provided"}
|
|
171
|
+
- **KPIs**: ${project.kpi ? JSON.stringify(project.kpi, null, 2) : "Not provided"}
|
|
172
|
+
|
|
173
|
+
## Market Research Data
|
|
174
|
+
${JSON.stringify(researchData, null, 2)}
|
|
175
|
+
|
|
176
|
+
## Analysis Tasks
|
|
177
|
+
|
|
178
|
+
### 1. Demand Forecast
|
|
179
|
+
Provide detailed demand forecasts for the following time periods:
|
|
180
|
+
- **Current**: Current market demand
|
|
181
|
+
- **3 months**: Short-term outlook
|
|
182
|
+
- **1 year**: Medium-term forecast
|
|
183
|
+
- **3 years**: Long-term forecast
|
|
184
|
+
- **5 years**: Strategic horizon
|
|
185
|
+
|
|
186
|
+
For each period, evaluate:
|
|
187
|
+
- Demand level (very_high/high/medium/low/very_low)
|
|
188
|
+
- Key factors driving the forecast
|
|
189
|
+
- Forecast confidence (high/medium/low)
|
|
190
|
+
|
|
191
|
+
### 2. Revenue Enhancement Strategies
|
|
192
|
+
Propose 3-5 specific strategies to increase revenue:
|
|
193
|
+
- Pricing optimization
|
|
194
|
+
- New monetization models
|
|
195
|
+
- Market expansion opportunities
|
|
196
|
+
- Partnership opportunities
|
|
197
|
+
- Product enhancements
|
|
198
|
+
|
|
199
|
+
For each strategy, include:
|
|
200
|
+
- Priority (high/medium/low)
|
|
201
|
+
- Expected impact
|
|
202
|
+
- Implementation steps
|
|
203
|
+
- KPIs to track
|
|
204
|
+
- Timeline
|
|
205
|
+
|
|
206
|
+
### 3. Traffic Growth Strategies
|
|
207
|
+
Propose 3-5 specific strategies to increase user acquisition and traffic:
|
|
208
|
+
- Organic growth tactics
|
|
209
|
+
- Paid acquisition channels
|
|
210
|
+
- Content marketing
|
|
211
|
+
- Viral/referral mechanisms
|
|
212
|
+
- Partnership-driven growth
|
|
213
|
+
|
|
214
|
+
### 4. Key Insights
|
|
215
|
+
List 5-7 key insights derived from the research and analysis.
|
|
216
|
+
|
|
217
|
+
## Output Instructions
|
|
218
|
+
- Base all recommendations on the provided research data
|
|
219
|
+
- Prioritize actionable and specific strategies
|
|
220
|
+
- Include implementation timelines
|
|
221
|
+
- Identify key metrics for tracking success
|
|
222
|
+
- ${t.respondInLanguage}`;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get the response schema for structured output.
|
|
226
|
+
*/
|
|
227
|
+
getResponseSchema() {
|
|
228
|
+
return {
|
|
229
|
+
type: genai_1.Type.OBJECT,
|
|
230
|
+
properties: {
|
|
231
|
+
summary: { type: genai_1.Type.STRING },
|
|
232
|
+
demandForecast: {
|
|
233
|
+
type: genai_1.Type.OBJECT,
|
|
234
|
+
properties: {
|
|
235
|
+
currentDemand: this.getDemandPeriodSchema(),
|
|
236
|
+
threeMonthForecast: this.getDemandPeriodSchema(),
|
|
237
|
+
oneYearForecast: this.getDemandPeriodSchema(),
|
|
238
|
+
threeYearForecast: this.getDemandPeriodSchema(),
|
|
239
|
+
fiveYearForecast: this.getDemandPeriodSchema(),
|
|
240
|
+
overallTrend: {
|
|
241
|
+
type: genai_1.Type.STRING,
|
|
242
|
+
enum: ["rapidly_growing", "growing", "stable", "declining", "rapidly_declining"]
|
|
243
|
+
},
|
|
244
|
+
summary: { type: genai_1.Type.STRING },
|
|
245
|
+
},
|
|
246
|
+
required: ["currentDemand", "threeMonthForecast", "oneYearForecast", "threeYearForecast", "fiveYearForecast", "overallTrend", "summary"]
|
|
247
|
+
},
|
|
248
|
+
revenueStrategies: {
|
|
249
|
+
type: genai_1.Type.ARRAY,
|
|
250
|
+
items: {
|
|
251
|
+
type: genai_1.Type.OBJECT,
|
|
252
|
+
properties: {
|
|
253
|
+
name: { type: genai_1.Type.STRING },
|
|
254
|
+
description: { type: genai_1.Type.STRING },
|
|
255
|
+
type: {
|
|
256
|
+
type: genai_1.Type.STRING,
|
|
257
|
+
enum: ["pricing", "monetization", "expansion", "partnership", "product", "marketing"]
|
|
258
|
+
},
|
|
259
|
+
priority: {
|
|
260
|
+
type: genai_1.Type.STRING,
|
|
261
|
+
enum: ["high", "medium", "low"]
|
|
262
|
+
},
|
|
263
|
+
expectedImpact: { type: genai_1.Type.STRING },
|
|
264
|
+
implementationSteps: {
|
|
265
|
+
type: genai_1.Type.ARRAY,
|
|
266
|
+
items: { type: genai_1.Type.STRING }
|
|
267
|
+
},
|
|
268
|
+
kpiMetrics: {
|
|
269
|
+
type: genai_1.Type.ARRAY,
|
|
270
|
+
items: { type: genai_1.Type.STRING }
|
|
271
|
+
},
|
|
272
|
+
timeline: { type: genai_1.Type.STRING },
|
|
273
|
+
},
|
|
274
|
+
required: ["name", "description", "type", "priority", "expectedImpact", "implementationSteps", "kpiMetrics", "timeline"]
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
trafficStrategies: {
|
|
278
|
+
type: genai_1.Type.ARRAY,
|
|
279
|
+
items: {
|
|
280
|
+
type: genai_1.Type.OBJECT,
|
|
281
|
+
properties: {
|
|
282
|
+
name: { type: genai_1.Type.STRING },
|
|
283
|
+
description: { type: genai_1.Type.STRING },
|
|
284
|
+
channel: {
|
|
285
|
+
type: genai_1.Type.STRING,
|
|
286
|
+
enum: ["organic_search", "paid_ads", "social_media", "content_marketing", "referral", "email", "partnerships", "other"]
|
|
287
|
+
},
|
|
288
|
+
priority: {
|
|
289
|
+
type: genai_1.Type.STRING,
|
|
290
|
+
enum: ["high", "medium", "low"]
|
|
291
|
+
},
|
|
292
|
+
expectedImpact: { type: genai_1.Type.STRING },
|
|
293
|
+
implementationSteps: {
|
|
294
|
+
type: genai_1.Type.ARRAY,
|
|
295
|
+
items: { type: genai_1.Type.STRING }
|
|
296
|
+
},
|
|
297
|
+
estimatedCost: { type: genai_1.Type.STRING },
|
|
298
|
+
timeline: { type: genai_1.Type.STRING },
|
|
299
|
+
},
|
|
300
|
+
required: ["name", "description", "channel", "priority", "expectedImpact", "implementationSteps", "timeline"]
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
keyInsights: {
|
|
304
|
+
type: genai_1.Type.ARRAY,
|
|
305
|
+
items: { type: genai_1.Type.STRING }
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
required: ["summary", "demandForecast", "revenueStrategies", "trafficStrategies", "keyInsights"]
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Get the schema for a demand forecast period.
|
|
313
|
+
*/
|
|
314
|
+
getDemandPeriodSchema() {
|
|
315
|
+
return {
|
|
316
|
+
type: genai_1.Type.OBJECT,
|
|
317
|
+
properties: {
|
|
318
|
+
period: { type: genai_1.Type.STRING },
|
|
319
|
+
demandLevel: {
|
|
320
|
+
type: genai_1.Type.STRING,
|
|
321
|
+
enum: ["very_high", "high", "medium", "low", "very_low"]
|
|
322
|
+
},
|
|
323
|
+
estimatedMarketSize: { type: genai_1.Type.STRING },
|
|
324
|
+
growthRate: { type: genai_1.Type.STRING },
|
|
325
|
+
keyFactors: {
|
|
326
|
+
type: genai_1.Type.ARRAY,
|
|
327
|
+
items: { type: genai_1.Type.STRING }
|
|
328
|
+
},
|
|
329
|
+
confidence: {
|
|
330
|
+
type: genai_1.Type.STRING,
|
|
331
|
+
enum: ["high", "medium", "low"]
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
required: ["period", "demandLevel", "keyFactors", "confidence"]
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
exports.AnalyzeMarketResearch = AnalyzeMarketResearch;
|
|
339
|
+
/**
|
|
340
|
+
* Export the function module.
|
|
341
|
+
*/
|
|
342
|
+
module.exports = (regions, options, data) => {
|
|
343
|
+
const instance = new AnalyzeMarketResearch();
|
|
344
|
+
return instance.build(regions);
|
|
345
|
+
};
|
|
346
|
+
//# sourceMappingURL=analyze_market_research.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze_market_research.js","sourceRoot":"","sources":["../../src/functions/analyze_market_research.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Action, WorkflowProcessFunctionBase, WorkflowContext } from "@mathrunet/masamune_firebase_workflow";
|
|
2
|
+
/**
|
|
3
|
+
* A function for analyzing marketing data using AI (Gemini).
|
|
4
|
+
*
|
|
5
|
+
* AIを使用してマーケティングデータを解析するためのFunction。
|
|
6
|
+
*/
|
|
7
|
+
export declare class AnalyzeMarketingData extends WorkflowProcessFunctionBase {
|
|
8
|
+
/**
|
|
9
|
+
* The ID of the function.
|
|
10
|
+
*
|
|
11
|
+
* 関数のID。
|
|
12
|
+
*/
|
|
13
|
+
id: string;
|
|
14
|
+
/**
|
|
15
|
+
* Translations for the current locale.
|
|
16
|
+
*/
|
|
17
|
+
private translations;
|
|
18
|
+
/**
|
|
19
|
+
* The process of the function.
|
|
20
|
+
*
|
|
21
|
+
* @param context
|
|
22
|
+
* The context of the function.
|
|
23
|
+
*
|
|
24
|
+
* @returns
|
|
25
|
+
* The action of the function.
|
|
26
|
+
*/
|
|
27
|
+
process(context: WorkflowContext): Promise<Action>;
|
|
28
|
+
/**
|
|
29
|
+
* Generate overall analysis from marketing data.
|
|
30
|
+
*/
|
|
31
|
+
private generateOverallAnalysis;
|
|
32
|
+
/**
|
|
33
|
+
* Generate improvement suggestions.
|
|
34
|
+
*/
|
|
35
|
+
private generateImprovementSuggestions;
|
|
36
|
+
/**
|
|
37
|
+
* Generate trend analysis.
|
|
38
|
+
*/
|
|
39
|
+
private generateTrendAnalysis;
|
|
40
|
+
/**
|
|
41
|
+
* Analyze reviews and extract insights.
|
|
42
|
+
*/
|
|
43
|
+
private analyzeReviews;
|
|
44
|
+
/**
|
|
45
|
+
* Build prompt for overall analysis.
|
|
46
|
+
*/
|
|
47
|
+
private buildOverallAnalysisPrompt;
|
|
48
|
+
/**
|
|
49
|
+
* Build prompt for improvement suggestions.
|
|
50
|
+
*/
|
|
51
|
+
private buildImprovementSuggestionsPrompt;
|
|
52
|
+
/**
|
|
53
|
+
* Build prompt for trend analysis.
|
|
54
|
+
*/
|
|
55
|
+
private buildTrendAnalysisPrompt;
|
|
56
|
+
/**
|
|
57
|
+
* Build prompt for review analysis.
|
|
58
|
+
*/
|
|
59
|
+
private buildReviewAnalysisPrompt;
|
|
60
|
+
/**
|
|
61
|
+
* Generate GitHub-aware improvement suggestions.
|
|
62
|
+
*
|
|
63
|
+
* GitHubリポジトリ分析に基づく改善提案を生成。
|
|
64
|
+
*/
|
|
65
|
+
private generateGitHubImprovements;
|
|
66
|
+
/**
|
|
67
|
+
* Build prompt for GitHub-aware improvements.
|
|
68
|
+
*
|
|
69
|
+
* GitHub対応改善提案用のプロンプトを生成。
|
|
70
|
+
*/
|
|
71
|
+
private buildGitHubImprovementsPrompt;
|
|
72
|
+
/**
|
|
73
|
+
* Generate competitive positioning analysis.
|
|
74
|
+
*
|
|
75
|
+
* 競合ポジショニング分析を生成。
|
|
76
|
+
*/
|
|
77
|
+
private generateCompetitivePositioning;
|
|
78
|
+
/**
|
|
79
|
+
* Build prompt for competitive positioning analysis.
|
|
80
|
+
*
|
|
81
|
+
* 競合ポジショニング分析用のプロンプトを生成。
|
|
82
|
+
*/
|
|
83
|
+
private buildCompetitivePositioningPrompt;
|
|
84
|
+
/**
|
|
85
|
+
* Generate market opportunity priority analysis.
|
|
86
|
+
*
|
|
87
|
+
* 市場機会優先度分析を生成。
|
|
88
|
+
*/
|
|
89
|
+
private generateMarketOpportunityPriority;
|
|
90
|
+
/**
|
|
91
|
+
* Build prompt for market opportunity priority analysis.
|
|
92
|
+
*
|
|
93
|
+
* 市場機会優先度分析用のプロンプトを生成。
|
|
94
|
+
*/
|
|
95
|
+
private buildMarketOpportunityPriorityPrompt;
|
|
96
|
+
}
|