feat(competitor-analysis): Fix 404, SDK compatibility, and update docs
Resolved multiple issues preventing the 'competitor-analysis' app from running and serving its frontend:
1. **Fixed Python SyntaxError in Prompts:** Corrected unterminated string literals and ensure proper multi-line string formatting (using .format() instead of f-strings for complex prompts) in .
2. **Addressed Python SDK Compatibility (google-generativeai==0.3.0):**
* Removed for and by adapting the orchestrator to pass JSON schemas as direct Python dictionaries, as required by the older SDK version.
* Updated with detailed guidance on handling / imports and dictionary-based schema definitions for older SDKs.
3. **Corrected Frontend Build Dependencies:** Moved critical build dependencies (like , , ) from to in .
* Updated to include this pitfall, ensuring frontend build tools are installed in Docker.
4. **Updated Documentation:**
* : Added comprehensive lessons learned regarding dependencies, Python SDK versioning (specifically and imports for ), and robust multi-line prompt handling.
* : Integrated specific details of the encountered errors and their solutions, making the migration report a more complete historical record and guide.
These changes collectively fix the 404 error by ensuring the Python backend starts correctly and serves the frontend assets after a successful build.
This commit is contained in:
44
competitor-analysis-app/components/Step5_SilverBullets.tsx
Normal file
44
competitor-analysis-app/components/Step5_SilverBullets.tsx
Normal file
@@ -0,0 +1,44 @@
|
||||
import React from 'react';
|
||||
import type { SilverBullet } from '../types';
|
||||
|
||||
interface Step5SilverBulletsProps {
|
||||
silver_bullets: SilverBullet[];
|
||||
t: any;
|
||||
}
|
||||
|
||||
const Step5SilverBullets: React.FC<Step5SilverBulletsProps> = ({ silver_bullets, t }) => {
|
||||
if (!silver_bullets || silver_bullets.length === 0) {
|
||||
return (
|
||||
<div>
|
||||
<h2 className="text-2xl font-bold mb-4">{t.title}</h2>
|
||||
<p className="text-light-subtle dark:text-brand-light">{t.generating}</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h2 className="text-2xl font-bold mb-4">{t.title}</h2>
|
||||
<p className="text-light-subtle dark:text-brand-light mb-6">
|
||||
{t.subtitle}
|
||||
</p>
|
||||
|
||||
<div className="space-y-4">
|
||||
{silver_bullets.map((bullet, index) => (
|
||||
<div key={index} className="bg-light-secondary dark:bg-brand-secondary p-6 rounded-lg shadow-lg">
|
||||
<h3 className="text-lg font-semibold text-light-text dark:text-white mb-2">
|
||||
{t.cardTitle} <span className="text-brand-highlight">{bullet.competitor_name}</span>
|
||||
</h3>
|
||||
<blockquote className="border-l-4 border-brand-highlight pl-4">
|
||||
<p className="text-lg italic text-light-subtle dark:text-brand-light">
|
||||
"{bullet.statement}"
|
||||
</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Step5SilverBullets;
|
||||
Reference in New Issue
Block a user