@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.
Files changed (146) hide show
  1. package/CHANGELOG.md +361 -0
  2. package/LICENSE +21 -0
  3. package/README.md +70 -0
  4. package/assets/fonts/NotoSans-Bold.ttf +1439 -0
  5. package/assets/fonts/NotoSans-Regular.ttf +1439 -0
  6. package/assets/fonts/NotoSans.ttf +0 -0
  7. package/assets/fonts/NotoSansJP-Bold.ttf +0 -0
  8. package/assets/fonts/NotoSansJP-Regular.ttf +0 -0
  9. package/assets/fonts/NotoSansKR-Bold.ttf +1439 -0
  10. package/assets/fonts/NotoSansKR-Regular.ttf +1439 -0
  11. package/assets/fonts/NotoSansKR.ttf +0 -0
  12. package/assets/fonts/NotoSansSC-Bold.ttf +1439 -0
  13. package/assets/fonts/NotoSansSC-Regular.ttf +1439 -0
  14. package/assets/fonts/NotoSansSC.ttf +0 -0
  15. package/dist/clients/app_store_client.d.ts +54 -0
  16. package/dist/clients/app_store_client.js +280 -0
  17. package/dist/clients/app_store_client.js.map +1 -0
  18. package/dist/clients/firebase_analytics_client.d.ts +67 -0
  19. package/dist/clients/firebase_analytics_client.js +411 -0
  20. package/dist/clients/firebase_analytics_client.js.map +1 -0
  21. package/dist/clients/github_content_client.d.ts +83 -0
  22. package/dist/clients/github_content_client.js +443 -0
  23. package/dist/clients/github_content_client.js.map +1 -0
  24. package/dist/clients/google_play_client.d.ts +49 -0
  25. package/dist/clients/google_play_client.js +275 -0
  26. package/dist/clients/google_play_client.js.map +1 -0
  27. package/dist/functions/analyze_github_init.d.ts +37 -0
  28. package/dist/functions/analyze_github_init.js +299 -0
  29. package/dist/functions/analyze_github_init.js.map +1 -0
  30. package/dist/functions/analyze_github_process.d.ts +25 -0
  31. package/dist/functions/analyze_github_process.js +268 -0
  32. package/dist/functions/analyze_github_process.js.map +1 -0
  33. package/dist/functions/analyze_github_summary.d.ts +32 -0
  34. package/dist/functions/analyze_github_summary.js +270 -0
  35. package/dist/functions/analyze_github_summary.js.map +1 -0
  36. package/dist/functions/analyze_market_research.d.ts +40 -0
  37. package/dist/functions/analyze_market_research.js +346 -0
  38. package/dist/functions/analyze_market_research.js.map +1 -0
  39. package/dist/functions/analyze_marketing_data.d.ts +96 -0
  40. package/dist/functions/analyze_marketing_data.js +990 -0
  41. package/dist/functions/analyze_marketing_data.js.map +1 -0
  42. package/dist/functions/collect_from_app_store.d.ts +25 -0
  43. package/dist/functions/collect_from_app_store.js +148 -0
  44. package/dist/functions/collect_from_app_store.js.map +1 -0
  45. package/dist/functions/collect_from_firebase_analytics.d.ts +25 -0
  46. package/dist/functions/collect_from_firebase_analytics.js +142 -0
  47. package/dist/functions/collect_from_firebase_analytics.js.map +1 -0
  48. package/dist/functions/collect_from_google_play_console.d.ts +25 -0
  49. package/dist/functions/collect_from_google_play_console.js +142 -0
  50. package/dist/functions/collect_from_google_play_console.js.map +1 -0
  51. package/dist/functions/generate_marketing_markdown.d.ts +89 -0
  52. package/dist/functions/generate_marketing_markdown.js +653 -0
  53. package/dist/functions/generate_marketing_markdown.js.map +1 -0
  54. package/dist/functions/generate_marketing_pdf.d.ts +25 -0
  55. package/dist/functions/generate_marketing_pdf.js +175 -0
  56. package/dist/functions/generate_marketing_pdf.js.map +1 -0
  57. package/dist/functions/research_market.d.ts +56 -0
  58. package/dist/functions/research_market.js +434 -0
  59. package/dist/functions/research_market.js.map +1 -0
  60. package/dist/functions.d.ts +571 -0
  61. package/dist/functions.js +648 -0
  62. package/dist/functions.js.map +1 -0
  63. package/dist/index.d.ts +13 -0
  64. package/dist/index.js +30 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/locales/de_DE.d.ts +5 -0
  67. package/dist/locales/de_DE.js +111 -0
  68. package/dist/locales/de_DE.js.map +1 -0
  69. package/dist/locales/en.d.ts +5 -0
  70. package/dist/locales/en.js +111 -0
  71. package/dist/locales/en.js.map +1 -0
  72. package/dist/locales/es_ES.d.ts +5 -0
  73. package/dist/locales/es_ES.js +111 -0
  74. package/dist/locales/es_ES.js.map +1 -0
  75. package/dist/locales/fr_FR.d.ts +5 -0
  76. package/dist/locales/fr_FR.js +111 -0
  77. package/dist/locales/fr_FR.js.map +1 -0
  78. package/dist/locales/id_ID.d.ts +5 -0
  79. package/dist/locales/id_ID.js +111 -0
  80. package/dist/locales/id_ID.js.map +1 -0
  81. package/dist/locales/index.d.ts +59 -0
  82. package/dist/locales/index.js +155 -0
  83. package/dist/locales/index.js.map +1 -0
  84. package/dist/locales/ja.d.ts +5 -0
  85. package/dist/locales/ja.js +111 -0
  86. package/dist/locales/ja.js.map +1 -0
  87. package/dist/locales/ko_KR.d.ts +5 -0
  88. package/dist/locales/ko_KR.js +111 -0
  89. package/dist/locales/ko_KR.js.map +1 -0
  90. package/dist/locales/pt_PT.d.ts +5 -0
  91. package/dist/locales/pt_PT.js +111 -0
  92. package/dist/locales/pt_PT.js.map +1 -0
  93. package/dist/locales/ru_RU.d.ts +5 -0
  94. package/dist/locales/ru_RU.js +111 -0
  95. package/dist/locales/ru_RU.js.map +1 -0
  96. package/dist/locales/types.d.ts +105 -0
  97. package/dist/locales/types.js +8 -0
  98. package/dist/locales/types.js.map +1 -0
  99. package/dist/locales/zh_CN.d.ts +5 -0
  100. package/dist/locales/zh_CN.js +111 -0
  101. package/dist/locales/zh_CN.js.map +1 -0
  102. package/dist/models/app_store_data.d.ts +87 -0
  103. package/dist/models/app_store_data.js +8 -0
  104. package/dist/models/app_store_data.js.map +1 -0
  105. package/dist/models/chart_data.d.ts +104 -0
  106. package/dist/models/chart_data.js +8 -0
  107. package/dist/models/chart_data.js.map +1 -0
  108. package/dist/models/common.d.ts +42 -0
  109. package/dist/models/common.js +8 -0
  110. package/dist/models/common.js.map +1 -0
  111. package/dist/models/firebase_analytics_data.d.ts +134 -0
  112. package/dist/models/firebase_analytics_data.js +8 -0
  113. package/dist/models/firebase_analytics_data.js.map +1 -0
  114. package/dist/models/github_analysis_data.d.ts +266 -0
  115. package/dist/models/github_analysis_data.js +101 -0
  116. package/dist/models/github_analysis_data.js.map +1 -0
  117. package/dist/models/google_play_data.d.ts +115 -0
  118. package/dist/models/google_play_data.js +8 -0
  119. package/dist/models/google_play_data.js.map +1 -0
  120. package/dist/models/index.d.ts +14 -0
  121. package/dist/models/index.js +36 -0
  122. package/dist/models/index.js.map +1 -0
  123. package/dist/models/market_research_data.d.ts +259 -0
  124. package/dist/models/market_research_data.js +8 -0
  125. package/dist/models/market_research_data.js.map +1 -0
  126. package/dist/models/marketing_analysis_data.d.ts +200 -0
  127. package/dist/models/marketing_analysis_data.js +8 -0
  128. package/dist/models/marketing_analysis_data.js.map +1 -0
  129. package/dist/models/pdf_data.d.ts +112 -0
  130. package/dist/models/pdf_data.js +8 -0
  131. package/dist/models/pdf_data.js.map +1 -0
  132. package/dist/services/chart_service.d.ts +54 -0
  133. package/dist/services/chart_service.js +436 -0
  134. package/dist/services/chart_service.js.map +1 -0
  135. package/dist/services/github_analysis_service.d.ts +73 -0
  136. package/dist/services/github_analysis_service.js +488 -0
  137. package/dist/services/github_analysis_service.js.map +1 -0
  138. package/dist/services/pdf_service.d.ts +112 -0
  139. package/dist/services/pdf_service.js +1397 -0
  140. package/dist/services/pdf_service.js.map +1 -0
  141. package/dist/utils/github_analysis_storage.d.ts +88 -0
  142. package/dist/utils/github_analysis_storage.js +154 -0
  143. package/dist/utils/github_analysis_storage.js.map +1 -0
  144. package/package.json +64 -0
  145. package/scripts/cleanup_test_data.ts +304 -0
  146. 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
+ }