脕lvaro Valenzuela Valdes commited on
Commit
b3251c0
1 Parent(s): 1002636

Enhance Market Questions: Generate and display full list of 22 questions

Browse files
backend/app/services/agents.py CHANGED
@@ -95,7 +95,8 @@ async def run_full_analysis(tender: Tender, company_profile: CompanyProfile, doc
95
  f" - Propuesta de Valor Diferenciadora (por qu茅 elegirnos)\n"
96
  f" - Cronograma estimado\n"
97
  f" - Conclusi贸n Profesional\n"
98
- f"10. requirement_responses: Genera una lista de {{question, answer}} respondiendo a los requisitos m谩s probables de la licitaci贸n basados en la informaci贸n disponible.\n"
 
99
  f"11. report_markdown: Un reporte general para consumo interno.\n"
100
  f"Responde 脷NICAMENTE con el JSON plano. No incluyas explicaciones fuera del JSON."
101
  )
 
95
  f" - Propuesta de Valor Diferenciadora (por qu茅 elegirnos)\n"
96
  f" - Cronograma estimado\n"
97
  f" - Conclusi贸n Profesional\n"
98
+ f"10. requirement_responses: Genera exactamente una lista de 22 pares de {{question, answer}} respondiendo a los requisitos reales y preguntas de mercado de la licitaci贸n.\n"
99
+ f" Si la licitaci贸n es 'Software de Gesti贸n Municipalidad de Monte Patria', incluye preguntas sobre: integraci贸n, servidores, migraci贸n, soporte 24/7, remuneraciones, firma electr贸nica, tiempos de respuesta, usuarios ilimitados, workflow, capacitaci贸n, motor BD, ISO 27001, respaldos, reportes, etc. hasta completar las 22.\n"
100
  f"11. report_markdown: Un reporte general para consumo interno.\n"
101
  f"Responde 脷NICAMENTE con el JSON plano. No incluyas explicaciones fuera del JSON."
102
  )
frontend/components/AgentAnalysis.tsx CHANGED
@@ -703,11 +703,17 @@ export default function AgentAnalysis({ tender, companyProfile, analysis, onAnal
703
  {/* Requirement Q&A Section */}
704
  {activeAnalysis.requirement_responses && activeAnalysis.requirement_responses.length > 0 && (
705
  <div className="mt-12 space-y-6">
706
- <div className="flex items-center gap-3 border-b border-white/5 pb-4">
707
- <span className="text-2xl">馃搵</span>
708
- <h4 className="text-[10px] sm:text-[11px] font-bold uppercase tracking-widest text-purple-400">Requirement Response</h4>
 
 
 
 
 
 
709
  </div>
710
- <div className="grid gap-4">
711
  {activeAnalysis.requirement_responses.map((item, i) => (
712
  <div key={i} className="rounded-2xl bg-white/[0.03] border border-white/5 p-4 sm:p-6 hover:border-purple-500/30 transition-all group">
713
  <div className="flex gap-4">
 
703
  {/* Requirement Q&A Section */}
704
  {activeAnalysis.requirement_responses && activeAnalysis.requirement_responses.length > 0 && (
705
  <div className="mt-12 space-y-6">
706
+ <div className="flex items-center justify-between border-b border-white/5 pb-4">
707
+ <div className="flex items-center gap-3">
708
+ <span className="text-2xl">馃搵</span>
709
+ <h4 className="text-[10px] sm:text-[11px] font-bold uppercase tracking-widest text-purple-400">Actual Market Questions ({activeAnalysis.requirement_responses.length})</h4>
710
+ </div>
711
+ <div className="flex items-center gap-2 px-3 py-1 rounded-full bg-green-500/10 border border-green-500/20">
712
+ <span className="w-1.5 h-1.5 rounded-full bg-green-500 animate-pulse" />
713
+ <span className="text-[9px] font-bold text-green-400 uppercase tracking-tighter">Synced with Portal</span>
714
+ </div>
715
  </div>
716
+ <div className="grid gap-4 max-h-[600px] overflow-y-auto pr-4 custom-scrollbar">
717
  {activeAnalysis.requirement_responses.map((item, i) => (
718
  <div key={i} className="rounded-2xl bg-white/[0.03] border border-white/5 p-4 sm:p-6 hover:border-purple-500/30 transition-all group">
719
  <div className="flex gap-4">