# MFE Shell — Configuração de Endereços

Referência dos três arquivos onde ficam os endereços no `mfe-shell` (branch `devops`).

> Documentação completa: [`tf_oci_clusters/docs/mfe-architecture.md`](https://dev.azure.com/CN-Squad/Invista%20FIDC%20-%20Nexus/_git/tf_oci_clusters?path=/docs/mfe-architecture.md)

---

## Como funciona (main.ts)

O `main.ts` decide qual manifesto usar conforme o ambiente:

```typescript
import { environment } from './environments/environment';

if (!environment.production) {
  // DEV: lê environment.federationManifest, cria blob URL dinâmico
  const blob = new Blob([JSON.stringify(environment.federationManifest)], { type: 'application/json' });
  initFederation(URL.createObjectURL(blob))...
} else {
  // PROD: usa o arquivo estático
  initFederation('federation.manifest.json')...
}
```

| Build | Manifesto usado | Arquivo |
|-------|----------------|---------|
| `npm run build:dev` (produção = false) | `environment.federationManifest` | `src/environments/environment.dev.ts` |
| `npm run build:prod` (produção = true) | arquivo estático | `public/federation.manifest.json` |

---

## 1. `src/environments/environment.dev.ts` — Arquivo principal (build DEV)

É aqui que ficam as URLs reais usadas no deploy OCI (build `npm run build:dev`).

```typescript
export const environment = {
  production: false,
  development: true,

  // URLs dos MFEs remotos (federation)
  federationManifest: {
    'mfe-auth':   'https://nexus-auth-dev.invista.com.br/remoteEntry.json',
    'mfe-user':   'https://nexus-user-dev.invista.com.br/remoteEntry.json',
    'mfe-person': 'https://nexus-person-dev.invista.com.br/remoteEntry.json',
    'mfe-poc':    'https://nexus-poc-dev.invista.com.br/remoteEntry.json'
  },

  // URLs das APIs backend
  apiUrls: {
    baseUrl:         'https://llbywpgzxj.execute-api.us-east-2.amazonaws.com/dev/api',
    authUrl:         'https://llbywpgzxj.execute-api.us-east-2.amazonaws.com/dev/api/auth',
    userUrl:         'https://04fy406qme.execute-api.us-east-2.amazonaws.com/dev/api/user',
    personUrl:       'https://qfmruzhrlj.execute-api.us-east-2.amazonaws.com/dev/api/person',
    userExternalUrl: 'https://04fy406qme.execute-api.us-east-2.amazonaws.com/dev/api/user-external',
    ssoUrl:          'https://n7u24ds9cg.execute-api.us-east-2.amazonaws.com/dev/api/sso/Auth',
    pocUrl:          'https://pd98177mna.execute-api.us-east-2.amazonaws.com/dev/api/poc',
    beltUrl:         'https://yxnupsrqx5.execute-api.us-east-2.amazonaws.com/dev/api/belt',
    notificationUrl: 'https://z2yz9ykvtd.execute-api.us-east-2.amazonaws.com/dev/api/notification'
  }
};
```

**Observações:**
- `federationManifest`: aponta para `nexus-{name}-dev.invista.com.br` — domínios Cloudflare
- `apiUrls`: ainda apontam para **AWS API Gateway** (us-east-2) — pendente migração OCI
- `mfe-formalization` **não está** no federationManifest (não tem rota no shell ainda)

---

## 2. `public/federation.manifest.json` — Manifesto estático (build PROD)

Usado apenas em builds de produção (`environment.production = true`).
Atualmente aponta para localhost (desenvolvimento local).

```json
{
  "mfe-auth":   "https://localhost:4201/remoteEntry.json",
  "mfe-user":   "https://localhost:4202/remoteEntry.json",
  "mfe-person": "https://localhost:4203/remoteEntry.json"
}
```

> **Atenção:** Este arquivo **não é usado no deploy OCI atual** (build:dev).
> Precisa ser atualizado antes de ter um build de produção funcional.

---

## 3. `src/app/core/config/environment.service.ts` — Serviço exposto via federation

Exposto para todos os MFEs remotos via `./EnvironmentService`. Os remotes consomem as URLs de API daqui.

```typescript
private config: AppConfig = {
  production:      false,
  baseUrl:         'https://llbywpgzxj.execute-api.us-east-2.amazonaws.com/dev/api',
  authUrl:         'https://llbywpgzxj.execute-api.us-east-2.amazonaws.com/dev/api/auth',
  userUrl:         'https://04fy406qme.execute-api.us-east-2.amazonaws.com/dev/api/user',
  personUrl:       'https://qfmruzhrlj.execute-api.us-east-2.amazonaws.com/dev/api/person',
  userExternalUrl: 'https://04fy406qme.execute-api.us-east-2.amazonaws.com/dev/api/user-external',
  ssoUrl:          'https://n7u24ds9cg.execute-api.us-east-2.amazonaws.com/dev/api/sso/Auth',
  version:         '1.0.0',
  appName:         'Invista App'
};
```

> Valores idênticos ao `environment.dev.ts > apiUrls` (AWS). Provavelmente deve ser refatorado para ler de `environment`.

---

## Resumo: o que mudar para OCI

### federationManifest (environment.dev.ts)

As URLs `nexus-{name}-dev.invista.com.br` precisam resolver para os buckets OCI.
Opção A — DNS Cloudflare apontando para API Gateway MFE:

```typescript
federationManifest: {
  'mfe-auth':          'https://mfe-auth-dev.invista.com.br/remoteEntry.json',
  'mfe-user':          'https://mfe-user-dev.invista.com.br/remoteEntry.json',
  'mfe-person':        'https://mfe-person-dev.invista.com.br/remoteEntry.json',
  'mfe-formalization': 'https://mfe-formalization-dev.invista.com.br/remoteEntry.json',
  'mfe-poc':           'https://mfe-poc-dev.invista.com.br/remoteEntry.json'
}
```

Opção B — URL direta Object Storage (sem DNS):

```typescript
'mfe-auth': 'https://objectstorage.sa-saopaulo-1.oraclecloud.com/n/grbb7qzeuoag/b/mfe-auth-dev/o/remoteEntry.json'
```

### apiUrls (environment.dev.ts + EnvironmentService)

Substituir todos os domínios `*.execute-api.us-east-2.amazonaws.com` por:

```
https://api-dev.invista.com.br/api/*
```

(Cloudflare → LB Test_Crivo_Dev → api-gateway-nexus-dev, já funcional)

---

## Checklist de pendências

- [ ] Adicionar `mfe-formalization` ao `federationManifest` em `environment.dev.ts`
- [ ] Atualizar domínios do `federationManifest`: `nexus-{name}-dev` → `mfe-{name}-dev` (ou URL OCI direta)
- [ ] Migrar `apiUrls` de AWS para OCI (`api-dev.invista.com.br`)
- [ ] Migrar `EnvironmentService` para ler de `environment.apiUrls` (evitar duplicação)
- [ ] Atualizar `public/federation.manifest.json` para build de produção
- [ ] DNS Cloudflare: `mfe-{name}-dev.invista.com.br` + `api-dev.invista.com.br`
- [ ] VCN peering vcn-oke ↔ DRG-Invista-Shared

---

*Atualizado em: 2026-03-01 | Leitura direta do repo mfe-shell (branch devops)*
