Restore prominent Concursos dropdown before authorized APIEX and SWOT delivery
tests / ci (push) Canceled after 0s
tests / ci (push) Canceled after 0s
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
## 10/11/2026 — Concursos visíveis no menu principal; instalação agrupada autorizada
|
||||||
|
|
||||||
|
Conferência delimitada do destino7476dc34 por SSH autenticado: `procurement.enabled=true`, módulo disponível, tabelas presentes; `/concursos` e raiz HTTP200 com `procurementEnabled=true`. Preservados um concurso em rascunho e zero versões publicadas. O módulo não desapareceu nem estava desligado: a ligação estava dentro de Descoberta. Pedido Tempo «onde foram parar concurso? depois de resolver isso autorizo a instalação»: entrada promovida a grupo próprio **Concursos e anúncios** no menu horizontal comum, com **Consultar concursos e anúncios** e, após autenticação, **Os concursos que acompanho**. Retirada só a ligação duplicada de Descoberta; cinco atalhos principais e autorizações editoriais preservados. Não cria/publica concursos nem muda flags, dados ou schema.
|
||||||
|
|
||||||
|
Prova dirigida da navegação:20casos aprovados, incluindo visitante/utilizador, disponibilidade, destinos únicos e selecção correcta de catálogo/ficha/acompanhamentos. Tipos/lint/compilação QA aprovados. Observação anterior `outputs/investment-preparation-20261110/concursos-before.json`; pacote agrupado `outputs/entrega-apiex-swot-concursos-20261110.zip`, preservando o pacote APIEX/SWOT anterior. O conjunto APIEX/SWOT abaixo conserva as provas aceites, sem repetição. Instalação autorizada expressamente após esta correcção; execução e recibo final separados desta prova QA. Visual continua pendente por indisponibilidade do conector.
|
||||||
|
|
||||||
## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
|
## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
|
||||||
|
|
||||||
**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
|
**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
## 10/11/2026 — Concursos visíveis no menu principal; instalação agrupada autorizada
|
||||||
|
|
||||||
|
Conferência delimitada do destino7476dc34 por SSH autenticado: `procurement.enabled=true`, módulo disponível, tabelas presentes; `/concursos` e raiz HTTP200 com `procurementEnabled=true`. Preservados um concurso em rascunho e zero versões publicadas. O módulo não desapareceu nem estava desligado: a ligação estava dentro de Descoberta. Pedido Tempo «onde foram parar concurso? depois de resolver isso autorizo a instalação»: entrada promovida a grupo próprio **Concursos e anúncios** no menu horizontal comum, com **Consultar concursos e anúncios** e, após autenticação, **Os concursos que acompanho**. Retirada só a ligação duplicada de Descoberta; cinco atalhos principais e autorizações editoriais preservados. Não cria/publica concursos nem muda flags, dados ou schema.
|
||||||
|
|
||||||
|
Prova dirigida da navegação:20casos aprovados, incluindo visitante/utilizador, disponibilidade, destinos únicos e selecção correcta de catálogo/ficha/acompanhamentos. Tipos/lint/compilação QA aprovados. Observação anterior `outputs/investment-preparation-20261110/concursos-before.json`; pacote agrupado `outputs/entrega-apiex-swot-concursos-20261110.zip`, preservando o pacote APIEX/SWOT anterior. O conjunto APIEX/SWOT abaixo conserva as provas aceites, sem repetição. Instalação autorizada expressamente após esta correcção; execução e recibo final separados desta prova QA. Visual continua pendente por indisponibilidade do conector.
|
||||||
|
|
||||||
## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
|
## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
|
||||||
|
|
||||||
**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
|
**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
## 10/11/2026 — Concursos visíveis no menu principal; instalação agrupada autorizada
|
||||||
|
|
||||||
|
Conferência delimitada do destino7476dc34 por SSH autenticado: `procurement.enabled=true`, módulo disponível, tabelas presentes; `/concursos` e raiz HTTP200 com `procurementEnabled=true`. Preservados um concurso em rascunho e zero versões publicadas. O módulo não desapareceu nem estava desligado: a ligação estava dentro de Descoberta. Pedido Tempo «onde foram parar concurso? depois de resolver isso autorizo a instalação»: entrada promovida a grupo próprio **Concursos e anúncios** no menu horizontal comum, com **Consultar concursos e anúncios** e, após autenticação, **Os concursos que acompanho**. Retirada só a ligação duplicada de Descoberta; cinco atalhos principais e autorizações editoriais preservados. Não cria/publica concursos nem muda flags, dados ou schema.
|
||||||
|
|
||||||
|
Prova dirigida da navegação:20casos aprovados, incluindo visitante/utilizador, disponibilidade, destinos únicos e selecção correcta de catálogo/ficha/acompanhamentos. Tipos/lint/compilação QA aprovados. Observação anterior `outputs/investment-preparation-20261110/concursos-before.json`; pacote agrupado `outputs/entrega-apiex-swot-concursos-20261110.zip`, preservando o pacote APIEX/SWOT anterior. O conjunto APIEX/SWOT abaixo conserva as provas aceites, sem repetição. Instalação autorizada expressamente após esta correcção; execução e recibo final separados desta prova QA. Visual continua pendente por indisponibilidade do conector.
|
||||||
|
|
||||||
## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
|
## 10/11/2026 — APIEX e SWOT no dossier existente: QA concluído, instalação pendente
|
||||||
|
|
||||||
**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
|
**Instalado:** `7476dc343098f15a7982e9d7581bf4f59d43bc1a` em https://teste-investidor.tempo.co.mz, promovido às14:28:12UTC e conferido às14:29:07UTC (16:29 locais). Transporte CBF15 deixa de ser pendência de instalação. Delta14hashes Git/HTTPS, root/up/login/revision200, configuração intacta, zero migrations/importações; backup/restauro190tabelas e369ficheiros conferidos. Recibos `outputs/cbf15-carry-delivery-20261110/`; release anterior e pacotes preservados.
|
||||||
|
|||||||
@@ -131,9 +131,14 @@ export function PortalGroupedMenu() {
|
|||||||
);
|
);
|
||||||
const accountGroups = groups.filter(
|
const accountGroups = groups.filter(
|
||||||
(group) =>
|
(group) =>
|
||||||
!['home', 'discovery', 'realization', 'support', 'work'].includes(
|
![
|
||||||
group.id,
|
'home',
|
||||||
),
|
'procurement-area',
|
||||||
|
'discovery',
|
||||||
|
'realization',
|
||||||
|
'support',
|
||||||
|
'work',
|
||||||
|
].includes(group.id),
|
||||||
);
|
);
|
||||||
const institutionalCurrent = url.split('?')[0] === '/contacto';
|
const institutionalCurrent = url.split('?')[0] === '/contacto';
|
||||||
return (
|
return (
|
||||||
@@ -195,6 +200,7 @@ export function PortalGroupedMenu() {
|
|||||||
{groups
|
{groups
|
||||||
.filter((group) =>
|
.filter((group) =>
|
||||||
[
|
[
|
||||||
|
'procurement-area',
|
||||||
'discovery',
|
'discovery',
|
||||||
'realization',
|
'realization',
|
||||||
'support',
|
'support',
|
||||||
|
|||||||
@@ -478,6 +478,30 @@ export function portalNavigation(access: PortalNavAccess): PortalNavItem[] {
|
|||||||
: null)
|
: null)
|
||||||
: null;
|
: null;
|
||||||
return uniqueNavigationDestinations([
|
return uniqueNavigationDestinations([
|
||||||
|
...(access.procurement
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
id: 'procurement-area',
|
||||||
|
label: 'Concursos e anúncios',
|
||||||
|
children: [
|
||||||
|
link(
|
||||||
|
'procurement',
|
||||||
|
'Consultar concursos e anúncios',
|
||||||
|
'/concursos',
|
||||||
|
),
|
||||||
|
...(access.authenticated
|
||||||
|
? [
|
||||||
|
link(
|
||||||
|
'procurement-watched',
|
||||||
|
'Os concursos que acompanho',
|
||||||
|
'/concursos/acompanhar',
|
||||||
|
),
|
||||||
|
]
|
||||||
|
: []),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: []),
|
||||||
{
|
{
|
||||||
id: 'discovery',
|
id: 'discovery',
|
||||||
label: 'Descoberta',
|
label: 'Descoberta',
|
||||||
@@ -501,15 +525,6 @@ export function portalNavigation(access: PortalNavAccess): PortalNavItem[] {
|
|||||||
: []),
|
: []),
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
...(access.procurement
|
|
||||||
? [
|
|
||||||
link(
|
|
||||||
'procurement',
|
|
||||||
'Concursos e anúncios',
|
|
||||||
'/concursos',
|
|
||||||
),
|
|
||||||
]
|
|
||||||
: []),
|
|
||||||
{
|
{
|
||||||
id: 'related-catalogues',
|
id: 'related-catalogues',
|
||||||
label: 'Catálogos relacionados',
|
label: 'Catálogos relacionados',
|
||||||
|
|||||||
@@ -404,3 +404,47 @@ void test('funding links require installation and saved list requires authentica
|
|||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
void test('installed concours has its own primary group and preserves public and private destinations', () => {
|
||||||
|
const base = { authenticated: false, manager: false };
|
||||||
|
assert.equal(
|
||||||
|
portalNavigation(base).some((g) => g.id === 'procurement-area'),
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
for (const authenticated of [false, true]) {
|
||||||
|
const groups = portalNavigation({
|
||||||
|
...base,
|
||||||
|
authenticated,
|
||||||
|
procurement: true,
|
||||||
|
});
|
||||||
|
const group = groups.find((g) => g.id === 'procurement-area');
|
||||||
|
assert.equal(group.label, 'Concursos e anúncios');
|
||||||
|
assert.equal(
|
||||||
|
destinations(groups).filter((h) => h === '/concursos').length,
|
||||||
|
1,
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
JSON.stringify(groups.find((g) => g.id === 'discovery')).includes(
|
||||||
|
'/concursos',
|
||||||
|
),
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
currentNavigationGroup(groups, '/concursos?q=obras'),
|
||||||
|
'procurement-area',
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
currentNavigationGroup(groups, '/concursos/fixture'),
|
||||||
|
'procurement-area',
|
||||||
|
);
|
||||||
|
assert.equal(
|
||||||
|
destinations(group.children).includes('/concursos/acompanhar'),
|
||||||
|
authenticated,
|
||||||
|
);
|
||||||
|
if (authenticated)
|
||||||
|
assert.equal(
|
||||||
|
currentNavigationItem(groups, '/concursos/acompanhar'),
|
||||||
|
'procurement-watched',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user