acrescimo no hero de Porquê investir em Moçambique?

Partir de uma ideia Sectores de investimento
This commit is contained in:
2026-10-26 10:22:17 +02:00
parent 43cd0be7cb
commit 8f1ab24b22
9 changed files with 80 additions and 31 deletions
@@ -2769,3 +2769,16 @@ Preservação por comparação dos registos preexistentes: **32 documentos, 31 r
**Guia da equipa no destino:** abrir a [gestão única](https://teste-investidor.tempo.co.mz/gestao-conteudos) → **Gerir conteúdos, versões e histórico** → escolher **Rascunhos**, pesquisar o título e abrir **Editar artigo** ou **Ler / pré-visualizar artigo**. Corrigir o texto e o tratamento de imagem → **Pré-visualizar alterações** → **Guardar artigo como rascunho** → **Ler revisão guardada**. Usar **Voltar ao acervo para metadados e publicação** para corrigir título, descrição, origem, enquadramento, acesso e direitos. **Publicar** continua separado, conforme a autorização e os campos existentes, quando a equipa decidir publicar. Guardar uma edição de um artigo publicado retira-o até nova publicação expressa. Não há comandos ou intervenção do Codex neste percurso corrente.
Recibo: [cadastro, acessos e preservação no destino](legacy-editorial-installation-receipt-20261022.json). A [lista única dos 50](../v2/auditoria-portal/legado-correspondencia-integral.md) e o CSV existente contêm os endereços **privados** efectivos dos 28; não são links de artigos já publicados. Capturas locais em `outputs/legacy-editorial-install-20261022/`, incluindo `editor-recovered-homologation.png`. Mantêm-se dois originais incompletos e a revisão editorial dos textos pela equipa. A Tempo não declarou ter conferido commit, pacote ou guia. **A carteira vazia e os projectos âncora continuam como falha separada, sem causa confirmada; esta entrega não a resolve.** (Saldo histórico desta entrega de 22/10; superado pela reposição auditada e reconciliação de 23/10 descritas acima. Não representa o estado actual.)
## Descoberta — 26/10/2026
Origem: pedido expresso da Tempo nesta conversa. Requisito existente V2-01; sem nova matriz. Inventário antes da verificação: as cinco páginas já existem; o menu apresentava ideia antes de porquê, sectores antes do simulador, que estava em Realização. A página inicial tinha apenas os atalhos Consultar oportunidades e Simulador Fiscal. Não foi confirmada eliminação de funcionalidade neste recorte; reutilizam-se os destinos e as provas anteriores, sem reabrir as aprovações históricas.
Alteração local: menu Descoberta e atalhos iniciais passam a Porquê investir em Moçambique (`/porque-investir`) → Partir de uma ideia (`/investimentos/iniciar`) → Consultar oportunidades (`/oportunidades`) → Simulador Fiscal (`/simulador-fiscal`, com contexto existente no menu) → Sectores de investimento (`/sectores`). O atalho de oportunidades passa de mudança de vista local a ligação à página do catálogo. Restantes catálogos e destinos conservados; início de preparação privada mantém a autenticação existente.
Guia: na barra, abrir Descoberta e seleccionar o item; na página inicial, os cinco atalhos seguem a mesma ordem e abrem as respectivas páginas. O simulador passa a pertencer a Descoberta. Código, schema, dados, configuração e permissões: só muda o código de apresentação/navegação; sem migrations ou escritas em dados, sem alteração de permissões. Nenhuma perda de dados inferida por leituras de interface. Disponibilização e verificação do destino não executadas nesta alteração local.
Verificação local do delta: seis testes existentes de navegação passaram; ordem dos cinco destinos e preservação do contexto/rascunho fiscal conferidas com e sem contexto. `npm run types:check`, `npm run build` e `git diff --check` passaram. Traduções dos novos rótulos do menu acrescentadas em inglês, francês e espanhol. Sem nova conferência visual no navegador ou publicação no destino. Critérios transversais da matriz permanecem no estado anterior; esta reorganização não os encerra.
Correcção expressa da Tempo, 26/10/2026: acrescentar interrogação a **Porquê investir em Moçambique?**, uniformizada no atalho, menu, caminho de navegação, título da página e traduções. Compactar os cinco atalhos iniciais: margens internas horizontais de 20 para 12 px por lado e verticais de 12 para 6 px; intervalo de 12 para 8 px; margem superior de 24 para 16 px; altura mínima de 36 px a partir de 640 px de largura, mantendo 44 px no telemóvel. São escolhas de apresentação para executar este pedido. Inventário preservado: cinco destinos, ordem, contexto fiscal e acessos anteriores; sem funcionalidade desaparecida confirmada neste delta. Verificação desta correcção: `npm run build` e `git diff --check` passaram. Sem nova conferência visual no navegador ou publicação no destino.
File diff suppressed because one or more lines are too long
+28 -11
View File
@@ -1,3 +1,4 @@
import { Link } from '@inertiajs/react';
import { ArrowRight, Search } from 'lucide-react';
import { useEffect, useState } from 'react';
import type { FormEvent } from 'react';
@@ -127,7 +128,6 @@ type PortalHeroProps = {
query: string;
setQuery: (value: string) => void;
onSearch: (event: FormEvent<HTMLFormElement>) => void;
onNavigate: (view: 'opportunities') => void;
stats?: HomeResponse['data']['stats'];
};
@@ -136,7 +136,6 @@ export default function PortalHero({
query,
setQuery,
onSearch,
onNavigate,
stats,
}: PortalHeroProps) {
const [currentSlide, setCurrentSlide] = useState(0);
@@ -261,20 +260,38 @@ export default function PortalHero({
</div>
</form>
<div className="mt-6 flex flex-wrap items-center justify-center gap-3">
<button
onClick={() => onNavigate('opportunities')}
className="inline-flex min-h-11 items-center gap-2 rounded-xl bg-white px-5 py-3 text-sm font-semibold text-[#101820] transition-colors hover:bg-slate-100 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white"
<div className="mt-4 flex flex-wrap items-center justify-center gap-2">
<Link
href="/porque-investir"
className="inline-flex min-h-11 items-center rounded-lg border border-white/50 bg-black/15 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Consultar oportunidades{' '}
Porquê investir em Moçambique?
</Link>
<Link
href="/investimentos/iniciar"
className="inline-flex min-h-11 items-center rounded-lg border border-white/50 bg-black/15 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Partir de uma ideia
</Link>
<Link
href="/oportunidades"
className="inline-flex min-h-11 items-center gap-1.5 rounded-lg bg-white px-3 py-1.5 text-sm font-semibold text-[#101820] transition-colors hover:bg-slate-100 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Consultar oportunidades
<ArrowRight size={16} aria-hidden="true" />
</button>
<a
</Link>
<Link
href="/simulador-fiscal"
className="inline-flex min-h-11 items-center rounded-xl border border-white/50 bg-black/15 px-5 py-3 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white"
className="inline-flex min-h-11 items-center rounded-lg border border-white/50 bg-black/15 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Simulador Fiscal
</a>
</Link>
<Link
href="/sectores"
className="inline-flex min-h-11 items-center rounded-lg border border-white/50 bg-black/15 px-3 py-1.5 text-sm font-semibold text-white transition-colors hover:bg-white/15 focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-white sm:min-h-9"
>
Sectores de investimento
</Link>
</div>
<dl
+22 -4
View File
@@ -58,10 +58,28 @@ const menuTranslations = [
'solicitudes recibidas',
],
[
'Porquê investir em Moçambique',
'Why invest in Mozambique',
'Pourquoi investir au Mozambique',
'Por qué invertir en Mozambique',
'Porquê investir em Moçambique?',
'Why invest in Mozambique?',
'Pourquoi investir au Mozambique ?',
'Por qué invertir en Mozambique?',
],
[
'Partir de uma ideia',
'Start with an idea',
'Partir d’une idée',
'Partir de una idea',
],
[
'Consultar oportunidades',
'Browse opportunities',
'Consulter les opportunités',
'Consultar oportunidades',
],
[
'Simulador Fiscal',
'Tax simulator',
'Simulateur fiscal',
'Simulador fiscal',
],
[
'Oportunidades de investimento',
+1 -1
View File
@@ -30,7 +30,7 @@ const names: Record<string, string> = {
'/contacto': 'Contacto',
'/politica-de-privacidade': 'Política de Privacidade',
'/termos-de-uso': 'Termos de Uso',
'/porque-investir': 'Porquê investir em Moçambique',
'/porque-investir': 'Porquê investir em Moçambique?',
'/investimentos/iniciar': 'Iniciar ou continuar investimento',
'/explorar/agronegocio': 'Explorar agronegócio',
'/agronegocio': 'Artigo de agronegócio',
+11 -11
View File
@@ -445,20 +445,25 @@ export function portalNavigation(access: PortalNavAccess): PortalNavItem[] {
id: 'discovery',
label: 'Descoberta',
children: [
link(
'why',
'Porquê investir em Moçambique?',
'/porque-investir',
),
link(
'idea-entry',
'Partir de uma ideia',
'/investimentos/iniciar',
),
link(
'why',
'Porquê investir em Moçambique',
'/porque-investir',
'opportunities',
'Consultar oportunidades',
'/oportunidades',
),
link(
'opportunities',
'Oportunidades de investimento',
'/oportunidades',
'simulator',
'Simulador Fiscal',
access.context?.simulator || '/simulador-fiscal',
),
link('sectors', 'Sectores de investimento', '/sectores'),
link('locations', 'Localizações', '/oportunidades?view=map'),
@@ -500,11 +505,6 @@ export function portalNavigation(access: PortalNavAccess): PortalNavItem[] {
label: 'Realização',
children: [
link('start', 'Iniciar investimento', '/investimentos/iniciar'),
link(
'simulator',
'Incentivos e simulador fiscal',
access.context?.simulator || '/simulador-fiscal',
),
link(
'licensing',
'Licenciamento',
-1
View File
@@ -1001,7 +1001,6 @@ export default function PortalInvestidorApp({
setQuery={setHeroQuery}
onSearch={handleHeroSearch}
stats={home.data?.data.stats}
onNavigate={navigate}
/>
<InvestmentContextCards />
<QueryStatus
+1 -1
View File
@@ -2,7 +2,7 @@ import { Link } from '@inertiajs/react';
import { Frame, card, button } from '@/pages/investment/shared';
export default function WhyInvest() {
return (
<Frame title="Porquê investir em Moçambique">
<Frame title="Porquê investir em Moçambique?">
<section className={card + ' space-y-4'}>
<h2 className="text-2xl font-bold">
Encontrar possibilidades e avaliar as condições
+1 -1
View File
@@ -100,7 +100,7 @@ void test('reconciled navigation selects discovery, realization and private supp
);
assert.equal(
currentNavigationGroup(groups, '/simulador-fiscal'),
'realization',
'discovery',
);
assert.equal(
currentNavigationGroup(groups, '/balcao-virtual/dossiers/fixture'),