fix(ecommerce): corrige origen de bodega Bogotá→Cali y activa redes/Cambios/FAQ
Build and Push Medusa / Escaneo de Secretos (Gitleaks) (push) Successful in 30s
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (push) Successful in 21s
Build and Push Medusa / Construir y publicar Medusa (push) Successful in 19m40s
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 9m12s
Build and Push Medusa / Escaneo de Secretos (Gitleaks) (push) Successful in 30s
Build and Push Frontend / Escaneo de Secretos (Gitleaks) (push) Successful in 21s
Build and Push Medusa / Construir y publicar Medusa (push) Successful in 19m40s
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 9m12s
- ENVIOCLICK_ORIGIN_DANE_CODE en configmap.yaml estaba cargado con el código DANE de Bogotá (11001000) por error; corregido a Santiago de Cali, Valle del Cauca (76001000). Toda cotización real de envío hecha antes de esta fecha se calculó desde el origen equivocado. - Corregido también el fallback stale en medusa-config.ts (originDaneCode) que seguía apuntando a Bogotá. - Actualizado el texto de /envios y /contacto (misma dirección física, Cra 100 #42-65, solo cambia la ciudad). - Footer: Instagram y Facebook reales enlazados (verificados en vivo contra los perfiles antes de linkear), y "Preguntas frecuentes" / "Cambios" ya apuntan a contenido real en vez de /catalog. - Nuevas páginas /cambios (5 días hábiles, envío de devolución a cargo de ARI Shopping) y /preguntas-frecuentes. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012Y4df3Z7odr9Cg8F2nw6uV
This commit is contained in:
1 parent
3efab94e2b
commit
76b7d827c5
7 files changed
+154
-18
No files matched your search
@@ -160,7 +160,7 @@ module.exports = defineConfig({
|
||||
options: {
|
||||
apiKey: required("ENVIOCLICK_API_KEY"),
|
||||
sandbox: process.env.ENVIOCLICK_SANDBOX !== "false",
|
||||
originDaneCode: process.env.ENVIOCLICK_ORIGIN_DANE_CODE || "11001000",
|
||||
originDaneCode: process.env.ENVIOCLICK_ORIGIN_DANE_CODE || "76001000",
|
||||
originAddress: required("ENVIOCLICK_ORIGIN_ADDRESS"),
|
||||
originCompany: process.env.ENVIOCLICK_ORIGIN_COMPANY || "ARI Shopping",
|
||||
originFirstName: process.env.ENVIOCLICK_ORIGIN_FIRST_NAME || "ARI",
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
import type { Metadata } from "next";
|
||||
import { MessageCircle, PackageOpen, ShieldCheck, Truck } from "lucide-react";
|
||||
import { Button } from "@/components/ui/button";
|
||||
|
||||
export const metadata: Metadata = { title: "Cambios | ARI Shopping" };
|
||||
|
||||
const WHATSAPP_URL = "https://wa.me/573016138155";
|
||||
|
||||
export default function CambiosPage() {
|
||||
return (
|
||||
<section className="mx-auto max-w-3xl px-4 py-14 lg:py-20">
|
||||
<span className="text-xs font-black uppercase tracking-[.18em] text-ari-coral">Ayuda</span>
|
||||
<h1 className="mt-3 text-4xl font-black tracking-tight sm:text-5xl">Cambios</h1>
|
||||
<p className="mt-5 text-lg leading-8 text-slate-600">
|
||||
Si tu pedido no es lo que esperabas, te ayudamos a cambiarlo.
|
||||
</p>
|
||||
|
||||
<div className="mt-10 grid gap-6 sm:grid-cols-2">
|
||||
<div className="rounded-2xl border border-slate-200 p-6">
|
||||
<PackageOpen className="size-6 text-ari-marino" />
|
||||
<h2 className="mt-3 font-black">5 días hábiles</h2>
|
||||
<p className="mt-2 text-sm leading-6 text-slate-600">
|
||||
Tenés 5 días hábiles desde que recibís tu pedido para solicitar un cambio.
|
||||
</p>
|
||||
</div>
|
||||
<div className="rounded-2xl border border-slate-200 p-6">
|
||||
<Truck className="size-6 text-ari-marino" />
|
||||
<h2 className="mt-3 font-black">Envío de vuelta sin costo</h2>
|
||||
<p className="mt-2 text-sm leading-6 text-slate-600">
|
||||
ARI Shopping asume el costo del envío de vuelta del producto — no tenés que pagar nada extra.
|
||||
</p>
|
||||
</div>
|
||||
<div className="rounded-2xl border border-slate-200 p-6">
|
||||
<ShieldCheck className="size-6 text-ari-marino" />
|
||||
<h2 className="mt-3 font-black">Condiciones</h2>
|
||||
<p className="mt-2 text-sm leading-6 text-slate-600">
|
||||
El producto debe estar sin usar, con su empaque y etiquetas originales.
|
||||
</p>
|
||||
</div>
|
||||
<div className="rounded-2xl border border-slate-200 p-6">
|
||||
<MessageCircle className="size-6 text-ari-marino" />
|
||||
<h2 className="mt-3 font-black">¿Cómo lo pido?</h2>
|
||||
<p className="mt-2 text-sm leading-6 text-slate-600">
|
||||
Escribinos por WhatsApp con tu número de pedido y coordinamos la recolección y el cambio.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Button asChild variant="primary" size="lg" className="mt-10">
|
||||
<a href={WHATSAPP_URL} target="_blank" rel="noopener noreferrer">
|
||||
<MessageCircle className="size-5" />
|
||||
Solicitar un cambio por WhatsApp
|
||||
</a>
|
||||
</Button>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
@@ -49,7 +49,7 @@ export default function ContactoPage() {
|
||||
|
||||
<div className="mt-10 flex items-center justify-center gap-2 text-sm text-slate-500">
|
||||
<MapPin className="size-4" />
|
||||
Despachamos desde Bogotá D.C., Colombia
|
||||
Despachamos desde Santiago de Cali, Colombia
|
||||
</div>
|
||||
|
||||
<Button asChild variant="primary" size="lg" className="mt-10">
|
||||
|
||||
@@ -17,7 +17,7 @@ export default function EnviosPage() {
|
||||
<span className="text-xs font-black uppercase tracking-[.18em] text-ari-coral">Ayuda</span>
|
||||
<h1 className="mt-3 text-4xl font-black tracking-tight sm:text-5xl">Envíos</h1>
|
||||
<p className="mt-5 text-lg leading-8 text-slate-600">
|
||||
Hacemos envíos a nivel nacional desde nuestra bodega en Bogotá D.C.
|
||||
Hacemos envíos a nivel nacional desde nuestra bodega en Santiago de Cali, Valle del Cauca
|
||||
</p>
|
||||
|
||||
<div className="mt-10 grid gap-6 sm:grid-cols-2">
|
||||
@@ -49,7 +49,7 @@ export default function EnviosPage() {
|
||||
<MapPinned className="size-6 text-ari-marino" />
|
||||
<h2 className="mt-3 font-black">Cobertura</h2>
|
||||
<p className="mt-2 text-sm leading-6 text-slate-600">
|
||||
Envíos a todo el territorio nacional colombiano desde nuestra bodega en Bogotá D.C.
|
||||
Envíos a todo el territorio nacional colombiano desde nuestra bodega en Santiago de Cali, Valle del Cauca
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
import type { Metadata } from "next";
|
||||
import Link from "next/link";
|
||||
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion";
|
||||
|
||||
export const metadata: Metadata = { title: "Preguntas frecuentes | ARI Shopping" };
|
||||
|
||||
// Solo preguntas cuya respuesta es un hecho real del storefront (ver
|
||||
// ADR 0009/0010) -- nada de metodos de pago, plazos u opciones que no
|
||||
// esten realmente implementados.
|
||||
const FAQS: { question: string; answer: React.ReactNode }[] = [
|
||||
{
|
||||
question: "¿Qué métodos de pago aceptan?",
|
||||
answer: "Pagás por PSE, con transferencia directa desde tu banco. Podés pagar como persona natural o jurídica.",
|
||||
},
|
||||
{
|
||||
question: "¿A qué ciudades hacen envíos?",
|
||||
answer: "A todo el territorio nacional colombiano. El costo del envío se calcula automáticamente según tu dirección y lo ves en el checkout antes de pagar.",
|
||||
},
|
||||
{
|
||||
question: "¿Cuánto tarda en llegar mi pedido?",
|
||||
answer: (
|
||||
<>
|
||||
Depende de la transportadora asignada y tu ciudad — más detalle en{" "}
|
||||
<Link href="/envios" className="font-bold text-ari-marino hover:underline">
|
||||
Envíos
|
||||
</Link>
|
||||
.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
question: "¿Puedo cambiar un producto que no me sirvió?",
|
||||
answer: (
|
||||
<>
|
||||
Sí, tenés 5 días hábiles desde que lo recibís y nosotros asumimos el envío de vuelta — más detalle en{" "}
|
||||
<Link href="/cambios" className="font-bold text-ari-marino hover:underline">
|
||||
Cambios
|
||||
</Link>
|
||||
.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
question: "Tengo otra pregunta, ¿cómo los contacto?",
|
||||
answer: (
|
||||
<>
|
||||
Escribinos por WhatsApp o correo desde{" "}
|
||||
<Link href="/contacto" className="font-bold text-ari-marino hover:underline">
|
||||
Contacto
|
||||
</Link>
|
||||
, te respondemos lo antes posible.
|
||||
</>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
export default function PreguntasFrecuentesPage() {
|
||||
return (
|
||||
<section className="mx-auto max-w-3xl px-4 py-14 lg:py-20">
|
||||
<span className="text-xs font-black uppercase tracking-[.18em] text-ari-coral">Ayuda</span>
|
||||
<h1 className="mt-3 text-4xl font-black tracking-tight sm:text-5xl">Preguntas frecuentes</h1>
|
||||
<Accordion type="single" collapsible className="mt-10">
|
||||
{FAQS.map((faq) => (
|
||||
<AccordionItem key={faq.question} value={faq.question}>
|
||||
<AccordionTrigger>{faq.question}</AccordionTrigger>
|
||||
<AccordionContent>{faq.answer}</AccordionContent>
|
||||
</AccordionItem>
|
||||
))}
|
||||
</Accordion>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
@@ -38,12 +38,13 @@ data:
|
||||
# reemplaza la tarifa fija. Solo config no sensible; ENVIOCLICK_API_KEY
|
||||
# va en secrets.template.yaml. ENVIOCLICK_SANDBOX=true usa el endpoint
|
||||
# de guía de pruebas (/shipment_sandbox) -- la cotización siempre usa
|
||||
# tarifas reales, no tiene modo sandbox. Origen = bodega Bogotá
|
||||
# ("Bodega principal ARI Shopping", sin dirección física real cargada
|
||||
# todavía -- ENVIOCLICK_ORIGIN_ADDRESS es un placeholder hasta que la
|
||||
# haya).
|
||||
# tarifas reales, no tiene modo sandbox. Origen = bodega Santiago de
|
||||
# Cali, Valle del Cauca ("Bodega principal ARI Shopping") -- corregido
|
||||
# 2026-09-12: el código DANE cargado originalmente era el de Bogotá
|
||||
# (11001000) por error; toda cotización real hecha antes de esta
|
||||
# fecha calculó la tarifa desde el origen equivocado.
|
||||
ENVIOCLICK_SANDBOX: "true"
|
||||
ENVIOCLICK_ORIGIN_DANE_CODE: "11001000"
|
||||
ENVIOCLICK_ORIGIN_DANE_CODE: "76001000"
|
||||
ENVIOCLICK_ORIGIN_ADDRESS: "Cra 100 #42-65"
|
||||
ENVIOCLICK_ORIGIN_COMPANY: "ARI Shopping"
|
||||
ENVIOCLICK_ORIGIN_EMAIL: "[email protected]"
|
||||
|
||||
@@ -1,19 +1,25 @@
|
||||
import Link from "next/link";
|
||||
import { Facebook, Instagram, MessageCircle } from "lucide-react";
|
||||
|
||||
// "Envíos" y "Contacto" ya tienen paginas reales (app/envios,
|
||||
// app/contacto -- contenido real: transportadoras de EnvioClick,
|
||||
// WhatsApp/correo reales). "Preguntas frecuentes" y "Cambios" todavia
|
||||
// no tienen contenido real decidido -- quedan apuntando a /catalog
|
||||
// (no rotas, pero tampoco resueltas) hasta que se defina que van a
|
||||
// decir.
|
||||
// Las 4 paginas de "Ayuda" ya tienen contenido real (app/envios,
|
||||
// app/cambios, app/preguntas-frecuentes, app/contacto).
|
||||
const HELP_LINKS = [
|
||||
{ label: "Preguntas frecuentes", href: "/catalog" },
|
||||
{ label: "Preguntas frecuentes", href: "/preguntas-frecuentes" },
|
||||
{ label: "Envíos", href: "/envios" },
|
||||
{ label: "Cambios", href: "/catalog" },
|
||||
{ label: "Cambios", href: "/cambios" },
|
||||
{ label: "Contacto", href: "/contacto" },
|
||||
];
|
||||
|
||||
// Cuentas reales confirmadas por el usuario (Instagram verificado en
|
||||
// vivo antes de linkearlo -- la primera cuenta sugerida, @arishopping,
|
||||
// no era la real). El link de WhatsApp usa el mismo numero real ya
|
||||
// confirmado en /contacto y en el fallback del checkout.
|
||||
const SOCIAL_LINKS = [
|
||||
{ label: "Instagram", href: "https://www.instagram.com/ari_shopping1/", Icon: Instagram },
|
||||
{ label: "Facebook", href: "https://www.facebook.com/share/1Dkmvko6HF/", Icon: Facebook },
|
||||
{ label: "WhatsApp", href: "https://wa.me/573016138155", Icon: MessageCircle },
|
||||
];
|
||||
|
||||
const SHOP_LINKS = [
|
||||
{ label: "Novedades", href: "/catalog" },
|
||||
{ label: "Juguetes", href: "/catalog" },
|
||||
@@ -22,7 +28,7 @@ const SHOP_LINKS = [
|
||||
];
|
||||
|
||||
export function Footer() {
|
||||
return <footer className="bg-ari-marino text-white"><div className="mx-auto grid max-w-7xl gap-10 px-4 py-14 sm:grid-cols-2 lg:grid-cols-4"><div><div className="flex flex-col items-start gap-3"><img src="/images/brand/logo-ari.svg" alt="ARI shopping" className="h-11 w-auto" width={200} height={64} />{/* eslint-disable-line @next/next/no-img-element -- vector propio, next/image no optimiza SVG sin habilitar dangerouslyAllowSVG */}<p className="text-xs text-white/60">Tesoros para cada aventura.</p></div><div className="mt-5 flex gap-3"><Instagram /><Facebook /><MessageCircle /></div></div><FooterColumn title="Compra" links={SHOP_LINKS} /><FooterColumn title="Ayuda" links={HELP_LINKS} /><div><h3 className="font-black">Newsletter</h3><p className="mt-3 text-sm leading-6 text-white/60">Recibe lanzamientos y promociones especiales.</p><div className="mt-4 flex rounded-full bg-white p-1"><input className="min-w-0 flex-1 bg-transparent px-4 text-sm text-slate-950 outline-none" placeholder="Tu correo" /><button className="rounded-full bg-ari-coral px-4 text-sm font-black text-white">Unirme</button></div></div></div><div className="border-t border-white/10 py-5 text-center text-xs text-white/50">© 2026 ARI Shopping · Frontend headless v4.1 · GitOps</div></footer>;
|
||||
return <footer className="bg-ari-marino text-white"><div className="mx-auto grid max-w-7xl gap-10 px-4 py-14 sm:grid-cols-2 lg:grid-cols-4"><div><div className="flex flex-col items-start gap-3"><img src="/images/brand/logo-ari.svg" alt="ARI shopping" className="h-11 w-auto" width={200} height={64} />{/* eslint-disable-line @next/next/no-img-element -- vector propio, next/image no optimiza SVG sin habilitar dangerouslyAllowSVG */}<p className="text-xs text-white/60">Tesoros para cada aventura.</p></div><div className="mt-5 flex gap-3">{SOCIAL_LINKS.map(({ label, href, Icon }) => <a key={label} href={href} target="_blank" rel="noopener noreferrer" aria-label={label} className="text-white/80 transition hover:text-ari-coral-claro"><Icon /></a>)}</div></div><FooterColumn title="Compra" links={SHOP_LINKS} /><FooterColumn title="Ayuda" links={HELP_LINKS} /><div><h3 className="font-black">Newsletter</h3><p className="mt-3 text-sm leading-6 text-white/60">Recibe lanzamientos y promociones especiales.</p><div className="mt-4 flex rounded-full bg-white p-1"><input className="min-w-0 flex-1 bg-transparent px-4 text-sm text-slate-950 outline-none" placeholder="Tu correo" /><button className="rounded-full bg-ari-coral px-4 text-sm font-black text-white">Unirme</button></div></div></div><div className="border-t border-white/10 py-5 text-center text-xs text-white/50">© 2026 ARI Shopping · Frontend headless v4.1 · GitOps</div></footer>;
|
||||
}
|
||||
|
||||
function FooterColumn({ title, links }: { title: string; links: { label: string; href: string }[] }) {
|
||||
|
||||
Reference in new issue
Block a user