From 5ff9402fd0f2236cb047d9f82adf568cd177f2bc Mon Sep 17 00:00:00 2001
From: nala
Date: Tue, 10 Nov 2026 18:51:23 +0200
Subject: [PATCH] Prepare supplied financial directory with product coverage
and native dossier continuity
---
.../FundingProgrammeController.php | 44 +-
app/Services/FundingDossierPreparation.php | 86 ++
app/Services/FundingInstitutionDetails.php | 178 ++++
app/Services/FundingProgrammeReferences.php | 44 +-
app/Services/FundingProgrammes.php | 21 +-
app/Services/InvestorPath.php | 4 +-
database/data/funding-references.json | 815 +++++++++++++++++-
.../unification/traceability-and-manual.md | 20 +
docs/investmoz/v2/auditoria-portal/backlog.md | 14 +
.../v2/auditoria-portal/matriz-requisitos.csv | 10 +-
.../visao-consolidada-modulos.md | 14 +
.../js/components/funding-dossier-choice.tsx | 207 +++++
.../js/components/funding-institution.tsx | 636 ++++++++++++++
resources/js/pages/funding/edit.tsx | 50 +-
resources/js/pages/funding/index.tsx | 30 +-
resources/js/pages/funding/manage.tsx | 27 +-
resources/js/pages/funding/reference.tsx | 10 +
resources/js/pages/funding/shared.ts | 3 +-
resources/js/pages/funding/show.tsx | 34 +-
resources/js/pages/investor-path/show.tsx | 54 ++
routes/funding.php | 1 +
tests/Feature/FundingDirectoryTest.php | 151 ++++
tests/frontend/funding-directory.test.mjs | 222 +++++
tools/funding-directory-proof.mjs | 41 +
tools/funding-directory-qa.php | 51 ++
25 files changed, 2730 insertions(+), 37 deletions(-)
create mode 100644 app/Services/FundingDossierPreparation.php
create mode 100644 app/Services/FundingInstitutionDetails.php
create mode 100644 resources/js/components/funding-dossier-choice.tsx
create mode 100644 resources/js/components/funding-institution.tsx
create mode 100644 tests/Feature/FundingDirectoryTest.php
create mode 100644 tests/frontend/funding-directory.test.mjs
create mode 100644 tools/funding-directory-proof.mjs
create mode 100644 tools/funding-directory-qa.php
diff --git a/app/Http/Controllers/FundingProgrammeController.php b/app/Http/Controllers/FundingProgrammeController.php
index 9fe7778b..8acdfc6d 100644
--- a/app/Http/Controllers/FundingProgrammeController.php
+++ b/app/Http/Controllers/FundingProgrammeController.php
@@ -4,10 +4,15 @@ namespace App\Http\Controllers;
use App\Models\Sector;
use App\Services\DocumentManagementAccess;
+use App\Services\FundingDossierPreparation;
+use App\Services\FundingInstitutionDetails;
use App\Services\FundingProgrammeReferences;
use App\Services\FundingProgrammes;
use App\Services\InvestmentGeography;
+use App\Services\InvestorContext;
+use App\Services\InvestorPath;
use App\Services\Procurement;
+use App\Services\VirtualDesk;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
@@ -43,7 +48,7 @@ final class FundingProgrammeController extends Controller
$items->through(fn ($row) => ['id' => $row->id, 'title' => json_decode($row->draft, true)['title'] ?? 'Rascunho sem título',
'version' => (int) $row->version, 'published' => $row->published_version_id !== null]);
- return tap(Inertia::render('funding/manage', ['items' => $items])->toResponse($request),
+ return tap(Inertia::render('funding/manage', ['items' => $items, 'references' => app(FundingProgrammeReferences::class)->choices($request->user())])->toResponse($request),
static fn (\Symfony\Component\HttpFoundation\Response $response) => $response->headers->set('Cache-Control', 'private, no-store'));
}
@@ -63,6 +68,7 @@ final class FundingProgrammeController extends Controller
return tap(Inertia::render('funding/edit', ['record' => $row ? ['id' => $row->id, 'code' => $row->code, 'version' => (int) $row->version,
'draft' => json_decode($row->draft, true), 'published' => $row->published_version_id !== null] : null,
'references' => Arr::only($references, ['organizations', 'sectors', 'territories', 'documents']),
+ 'institutionNatures' => FundingInstitutionDetails::NATURES, 'needs' => FundingInstitutionDetails::NEEDS,
'kinds' => FundingProgrammes::KINDS, 'windowModes' => FundingProgrammes::WINDOWS,
'history' => $id ? DB::table('funding_programme_versions')->where('programme_id', $id)->orderByDesc('version')->get(['version', 'reason', 'published_at']) : []])->toResponse($request),
static fn (\Symfony\Component\HttpFoundation\Response $response) => $response->headers->set('Cache-Control', 'private, no-store'));
@@ -118,11 +124,17 @@ final class FundingProgrammeController extends Controller
public function index(Request $request, FundingProgrammes $service): \Symfony\Component\HttpFoundation\Response
{
- $filters = $request->validate(['q' => 'nullable|string|max:150', 'kind' => 'nullable|in:fund,programme,incentive',
+ $filters = $request->validate(['q' => 'nullable|string|max:150', 'kind' => 'nullable|in:institution,fund,programme,incentive',
+ 'need' => ['nullable', Rule::in(array_keys(FundingInstitutionDetails::NEEDS))],
+ 'context' => 'nullable|uuid', 'opportunity' => 'nullable|string|max:150',
'territory' => ['nullable', 'uuid', Rule::in(app(InvestmentGeography::class)->publicReferences()->pluck('id')->all())],
'sector' => ['nullable', 'integer', Rule::in(Sector::choices()->whereNotNull('published_at')->pluck('id')->all())],
'certainty' => 'nullable|in:include_unknown,documented', 'state' => 'nullable|in:open,closed,upcoming,unknown']);
$filters = array_filter($filters, fn ($value) => $value !== null && $value !== '');
+ $dossier = $request->user() && ! empty($filters['context']) ? app(FundingDossierPreparation::class)->context($request->user(), $filters['context'], $filters['opportunity'] ?? null) : null;
+ if ($dossier && empty($filters['territory']) && $dossier['territory']) {
+ $filters['territory'] = $dossier['territory'];
+ }
$query = $service->catalogueQuery($filters);
if (! empty($filters['q'])) {
$term = '%'.str_replace(['\\', '%', '_'], ['\\\\', '\\%', '\\_'], $filters['q']).'%';
@@ -138,7 +150,7 @@ final class FundingProgrammeController extends Controller
return [...$record, 'filter_explanation' => $service->filterExplanation($record, $filters)];
});
- return tap(Inertia::render('funding/index', ['items' => $items, 'filters' => $filters, 'kinds' => FundingProgrammes::KINDS,
+ return tap(Inertia::render('funding/index', ['items' => $items, 'filters' => $filters, 'kinds' => FundingProgrammes::KINDS, 'needs' => FundingInstitutionDetails::NEEDS, 'dossier' => $dossier,
'options' => ['territories' => app(InvestmentGeography::class)->publicReferences()->orderBy('name')->get(['id', 'name']),
'sectors' => Sector::choices()->whereNotNull('published_at')->orderBy('name')->get(['id', 'name'])], 'management' => $service->access($request->user())])
->toResponse($request), static fn (\Symfony\Component\HttpFoundation\Response $response) => $response->headers->set('Cache-Control', 'private, no-store'));
@@ -146,14 +158,38 @@ final class FundingProgrammeController extends Controller
public function show(Request $request, string $id, FundingProgrammes $service): \Symfony\Component\HttpFoundation\Response
{
+ $request->validate(['context' => 'nullable|uuid', 'opportunity' => 'nullable|string|max:150', 'need' => ['nullable', Rule::in(array_keys(FundingInstitutionDetails::NEEDS))], 'territory' => 'nullable|uuid']);
+ $dossier = $request->user() && $request->filled('context') ? app(FundingDossierPreparation::class)->context($request->user(), $request->string('context')->toString(), $request->query('opportunity')) : null;
+ if ($dossier && ! $request->filled('territory') && $dossier['territory']) {
+ $request->merge(['territory' => $dossier['territory']]);
+ }
$record = $service->published($id);
+ $destinations = [];
+ if ($request->user()) {
+ foreach (app(InvestorPath::class)->contexts($request->user()) as $item) {
+ $case = app(VirtualDesk::class)->case($request->user(), $item['id']);
+ $state = app(InvestorContext::class)->state($case);
+ $choices = $state['opportunity_choices'] ?? [];
+ if ($choices === []) {
+ $destinations[] = ['id' => $item['id'], 'opportunity' => null, 'title' => $item['title']];
+ }
+ foreach ($choices as $choice) {
+ $destinations[] = ['id' => $item['id'], 'opportunity' => $choice['opportunity']['key'], 'title' => $item['title'].' — '.$choice['opportunity']['title']];
+ }
+ }
+ }
$saved = $request->user() ? DB::table('funding_programme_interests as i')->join('funding_programme_versions as v', 'v.id', '=', 'i.version_id')
->where('i.programme_id', $id)->where('i.user_id', $request->user()->id)->whereNull('i.removed_at')->first(['v.version', 'i.saved_at']) : null;
- return tap(Inertia::render('funding/show', ['record' => $record, 'saved' => $saved, 'authenticated' => $request->user() !== null])
+ return tap(Inertia::render('funding/show', ['record' => $record, 'saved' => $saved, 'authenticated' => $request->user() !== null, 'dossier' => $dossier, 'selection' => [...$request->only(['need', 'territory', 'context', 'opportunity']), 'territory_label' => app(InvestmentGeography::class)->publicReferences()->where('id', $request->query('territory'))->value('name') ?? 'Local por seleccionar'], 'needs' => FundingInstitutionDetails::NEEDS, 'destinations' => $destinations])
->toResponse($request), static fn (\Symfony\Component\HttpFoundation\Response $response) => $response->headers->set('Cache-Control', 'private, no-store'));
}
+ public function dossier(Request $request, string $id, FundingDossierPreparation $service): JsonResponse
+ {
+ return response()->json($service->save($request->user(), $id, $request->all()))->header('Cache-Control', 'private, no-store');
+ }
+
public function assess(Request $request, string $id, FundingProgrammes $service): JsonResponse
{
return response()->json($service->assess($id, $request->all()))->header('Cache-Control', 'private, no-store');
diff --git a/app/Services/FundingDossierPreparation.php b/app/Services/FundingDossierPreparation.php
new file mode 100644
index 00000000..e671ca2c
--- /dev/null
+++ b/app/Services/FundingDossierPreparation.php
@@ -0,0 +1,86 @@
+ */
+ public function context(User $actor, string $id, ?string $opportunity): array
+ {
+ $case = app(VirtualDesk::class)->case($actor, $id);
+ abort_unless(app(VirtualDesk::class)->owns($actor, $case) || $actor->can('manage-portal'), 403);
+ $state = app(InvestorContext::class)->state($case);
+ $scope = app(InvestmentConsumerScope::class);
+ $opportunity = $scope->key($state, $opportunity, true);
+ $specific = $scope->context($state, $opportunity);
+ $selections = app(VirtualDesk::class)->decode($case->payload)['investor_path']['funding_selections'] ?? [];
+
+ return ['id' => $id, 'version' => (int) $case->version, 'closed' => $case->closed_at !== null, 'opportunity' => $opportunity,
+ 'territory' => $specific['selection']['territory']['id'] ?? null,
+ 'selections' => array_values(array_filter($selections, fn ($row) => ($row['opportunity'] ?? null) === $opportunity)),
+ 'href' => '/investimentos/'.$id.($opportunity ? '?opportunity='.urlencode($opportunity) : '').'#financiamento'];
+ }
+
+ /** @param array $input
+ * @return array */
+ public function save(User $actor, string $programme, array $input): array
+ {
+ $data = Validator::make($input, ['context' => 'required|uuid', 'opportunity' => 'nullable|string|max:150', 'version' => 'required|integer|min:1',
+ 'version_id' => 'required|uuid', 'product' => 'nullable|string|max:80', 'need' => ['required', Rule::in(array_keys(FundingInstitutionDetails::NEEDS))],
+ 'territory' => 'required|uuid', 'operation_key' => 'required|uuid', 'consent' => 'accepted'])->validate();
+ $intent = hash('sha256', json_encode(Arr::sortRecursive([...$data, 'actor' => $actor->id, 'programme' => $programme]), JSON_THROW_ON_ERROR));
+
+ return DB::transaction(function () use ($actor, $programme, $data, $intent): array {
+ $desk = app(VirtualDesk::class);
+ $case = $desk->case($actor, $data['context'], true, true);
+ abort_if($case->closed_at, 409, 'O dossier está encerrado.');
+ $context = $this->context($actor, $case->id, $data['opportunity'] ?? null);
+ $payload = $desk->decode($case->payload);
+ $selections = $payload['investor_path']['funding_selections'] ?? [];
+ foreach ($selections as $selection) {
+ if ($selection['id'] === $data['operation_key']) {
+ abort_unless(hash_equals($selection['intent'], $intent), 409, 'A intenção já tem outro conteúdo.');
+
+ return $context;
+ }
+ }
+ foreach ($selections as $selection) {
+ if (($selection['opportunity'] ?? null) === $context['opportunity'] && $selection['programme_id'] === $programme && $selection['version_id'] === $data['version_id'] && ($selection['product']['code'] ?? null) === ($data['product'] ?? null) && $selection['need'] === $data['need'] && $selection['territory'] === $data['territory']) {
+ return $context;
+ }
+ }
+ abort_unless((int) $case->version === (int) $data['version'], 409, 'O dossier mudou. Consulte-o antes de guardar esta escolha.');
+ $catalogue = app(FundingProgrammes::class);
+ $record = $catalogue->published($programme);
+ abort_unless($record['version_id'] === $data['version_id'], 409, 'A ficha pública mudou. Confira a versão actual.');
+ abort_unless(app(InvestmentGeography::class)->publicReferences()->where('id', $data['territory'])->exists(), 422);
+ $product = null;
+ if ($record['payload']['kind'] === 'institution') {
+ foreach ($record['payload']['products'] as $candidate) {
+ if (($candidate['code'] ?? null) === ($data['product'] ?? null)) {
+ $product = $candidate;
+ break;
+ }
+ }
+ abort_unless(($record['payload']['products'] === [] && empty($data['product'])) || ($product && app(FundingInstitutionDetails::class)->match($product, $data)), 422, 'Seleccione um produto correspondente ao local e necessidade, incluindo as condições por confirmar.');
+ }
+ abort_if(count($selections) >= 200, 422, 'O dossier atingiu o limite de referências de financiamento.');
+ $selection = ['id' => $data['operation_key'], 'intent' => $intent, 'actor' => $actor->id, 'opportunity' => $context['opportunity'],
+ 'programme_id' => $programme, 'version_id' => $record['version_id'], 'version' => $record['version'], 'title' => $record['payload']['title'],
+ 'record' => $record['payload'], 'product' => $product, 'need' => $data['need'], 'territory' => $data['territory'], 'recorded_at' => now()->toIso8601String(),
+ 'notice' => 'Referência para preparação. Não é candidatura, contacto enviado, aprovação ou garantia de financiamento.'];
+ $payload['investor_path']['funding_selections'][] = $selection;
+ DB::table('desk_cases')->where('id', $case->id)->update(['payload' => $desk->encode($payload), 'version' => (int) $case->version + 1, 'updated_at' => now()]);
+ $desk->event($case, $actor, 'funding_preparation_saved', ['selection_id' => $selection['id'], 'programme_id' => $programme, 'version_id' => $record['version_id'], 'opportunity' => $context['opportunity']]);
+
+ return $this->context($actor, $case->id, $context['opportunity']);
+ });
+ }
+}
diff --git a/app/Services/FundingInstitutionDetails.php b/app/Services/FundingInstitutionDetails.php
new file mode 100644
index 00000000..d45a7f8d
--- /dev/null
+++ b/app/Services/FundingInstitutionDetails.php
@@ -0,0 +1,178 @@
+ 'Banco', 'credit' => 'Instituição de crédito', 'microfinance' => 'Microfinanças', 'investment_fund' => 'Fundo de investimento', 'development' => 'Agência de desenvolvimento/financiamento', 'other' => 'Outra natureza documentada', 'unknown' => 'Natureza por confirmar'];
+
+ public const NEEDS = ['investment' => 'Investimento/equipamento', 'working_capital' => 'Fundo de maneio', 'equity' => 'Participação de capital', 'guarantee' => 'Garantia', 'technical_assistance' => 'Assistência técnica', 'other' => 'Outra necessidade documentada'];
+
+ /** @param array $input
+ * @return array */
+ public function normalize(array $input, bool $publishing): array
+ {
+ $required = $publishing ? 'required' : 'nullable';
+ $rules = [
+ 'institution_key' => 'required|string|regex:/^[a-z0-9][a-z0-9.-]{0,99}$/D',
+ 'institution_nature' => ['required', Rule::in(array_keys(self::NATURES))],
+ 'contacts' => 'array|max:20', 'locations' => 'array|max:50', 'products' => 'array|max:40',
+ 'contacts.*' => 'array:kind,value,source_url,source_reference,checked_on',
+ 'contacts.*.kind' => 'required|in:website,email,phone,address', 'contacts.*.value' => "$required|string|max:1000",
+ 'locations.*' => 'array:role,label,address,territory_id,source_url,source_reference,checked_on',
+ 'locations.*.role' => 'required|in:headquarters,branch,contact_point', 'locations.*.label' => "$required|string|max:250",
+ 'locations.*.address' => 'nullable|string|max:1500', 'locations.*.territory_id' => 'nullable|uuid',
+ 'products.*' => 'array:code,title,instrument,needs,coverage,coverage_text,territory_ids,conditions,amounts,availability,contact_url,source_url,source_reference,checked_on',
+ 'products.*.code' => 'required|string|regex:/^[a-z0-9][a-z0-9-]{0,79}$/D|distinct', 'products.*.title' => "$required|string|max:250",
+ 'products.*.instrument' => 'nullable|string|max:250', 'products.*.needs' => 'array|max:6',
+ 'products.*.needs.*' => ['required', 'distinct', Rule::in(array_keys(self::NEEDS))],
+ 'products.*.coverage' => 'required|in:national,territorial,unknown', 'products.*.coverage_text' => 'nullable|string|max:2000',
+ 'products.*.territory_ids' => 'array|max:30', 'products.*.territory_ids.*' => 'required|uuid|distinct',
+ 'products.*.conditions' => 'nullable|string|max:4000', 'products.*.amounts' => 'nullable|string|max:2000',
+ 'products.*.availability' => 'required|in:documented,unknown,closed', 'products.*.contact_url' => 'nullable|url:http,https|max:2000',
+ ];
+ foreach (['contacts', 'locations', 'products'] as $prefix) {
+ $rules[$prefix.'.*.source_url'] = "$required|url:http,https|max:2000";
+ $rules[$prefix.'.*.source_reference'] = "$required|string|max:1500";
+ $rules[$prefix.'.*.checked_on'] = "$required|date_format:Y-m-d|before_or_equal:today";
+ }
+ $data = Validator::make($input, $rules)->validate();
+ foreach (['contacts', 'locations', 'products'] as $key) {
+ $data[$key] ??= [];
+ }
+ foreach ($data['contacts'] as $contact) {
+ Validator::make(['value' => $contact['value'] ?? null], ['value' => match ($contact['kind']) {
+ 'website' => "$required|url:http,https|max:1000",
+ 'email' => "$required|email|max:250",
+ default => "$required|string|max:1000",
+ }])->validate();
+ }
+ foreach ($data['locations'] as &$location) {
+ if (! empty($location['territory_id'])) {
+ $this->territory($location['territory_id']);
+ if ($publishing) {
+ $location['territory_path'] = $this->path($location['territory_id']);
+ }
+ }
+ }
+ unset($location);
+ foreach ($data['products'] as &$product) {
+ $product['needs'] ??= [];
+ $product['territory_ids'] ??= [];
+ Validator::make($product, ['territory_ids' => $product['coverage'] === 'territorial' ? ($publishing ? 'required|array|min:1' : 'array') : 'array|size:0'])->validate();
+ // Territorial drafts may be incomplete; other coverage modes never inherit the headquarters.
+ foreach ($product['territory_ids'] as $id) {
+ $this->territory($id);
+ }
+ if ($publishing) {
+ $product['territory_paths'] = array_map($this->path(...), $product['territory_ids']);
+ }
+ }
+ unset($product);
+
+ return $data;
+ }
+
+ private function territory(string $id): void
+ {
+ Validator::make(['territory' => $id], ['territory' => [Rule::in(app(InvestmentGeography::class)->publicReferences()->pluck('id')->all())]])->validate();
+ }
+
+ /** @return list */
+ private function path(string $id): array
+ {
+ return array_map(fn ($node) => ['id' => $node->id, 'name' => $node->name, 'type' => $node->location_type], app(InvestmentGeography::class)->path($id));
+ }
+
+ /** Same product must satisfy both location and need; branch addresses never imply lending coverage.
+ * @param array $product
+ * @param array $filters */
+ public function match(array $product, array $filters): bool
+ {
+ $unknown = ($filters['certainty'] ?? 'include_unknown') === 'include_unknown';
+ if ($product['availability'] === 'closed') {
+ return false;
+ }
+ if (! $unknown && $product['availability'] === 'unknown') {
+ return false;
+ }
+ if (! empty($filters['need']) && ! in_array($filters['need'], $product['needs'], true) && ! ($unknown && $product['needs'] === [])) {
+ return false;
+ }
+ if (empty($filters['territory'])) {
+ return true;
+ }
+ if ($product['coverage'] === 'national') {
+ return true;
+ }
+ if ($product['coverage'] === 'unknown') {
+ return $unknown;
+ }
+ $path = array_column(app(InvestmentGeography::class)->path($filters['territory']), 'id');
+ foreach ($product['territory_paths'] ?? [] as $covered) {
+ $ids = array_column($covered, 'id');
+ if (array_intersect($path, $product['territory_ids']) !== [] || in_array($filters['territory'], $ids, true)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /** @param array $filters */
+ public function applyFilters(Builder $query, array $filters): void
+ {
+ if (empty($filters['need']) && empty($filters['territory'])) {
+ return;
+ }
+ $unknown = ($filters['certainty'] ?? 'include_unknown') === 'include_unknown';
+ $conditions = ["p->>'availability' <> 'closed'"];
+ $bindings = [];
+ if (! $unknown) {
+ $conditions[] = "p->>'availability' <> 'unknown'";
+ }
+ if (! empty($filters['need'])) {
+ $conditions[] = "(p->'needs' @> ?::jsonb".($unknown ? " OR jsonb_array_length(p->'needs')=0" : '').')';
+ $bindings[] = json_encode([$filters['need']], JSON_THROW_ON_ERROR);
+ }
+ if (! empty($filters['territory'])) {
+ $path = array_column(app(InvestmentGeography::class)->path($filters['territory']), 'id');
+ $parts = ["p->>'coverage'='national'", "EXISTS (SELECT 1 FROM jsonb_array_elements(COALESCE(p->'territory_paths','[]'::jsonb)) t WHERE t @> ?::jsonb)"];
+ $bindings[] = json_encode([['id' => $filters['territory']]], JSON_THROW_ON_ERROR);
+ foreach ($path as $id) {
+ $parts[] = "p->'territory_ids' @> ?::jsonb";
+ $bindings[] = json_encode([$id], JSON_THROW_ON_ERROR);
+ }
+ if ($unknown) {
+ $parts[] = "p->>'coverage'='unknown'";
+ }
+ $conditions[] = '('.implode(' OR ', $parts).')';
+ }
+ $sql = "EXISTS (SELECT 1 FROM jsonb_array_elements(COALESCE(v.payload->'products','[]'::jsonb)) p WHERE ".implode(' AND ', $conditions).')';
+ $query->where(function (Builder $q) use ($sql, $bindings, $unknown, $filters): void {
+ $q->where(function (Builder $q) use ($unknown, $filters): void {
+ $q->whereRaw("v.payload->>'kind' <> 'institution'");
+ if (! empty($filters['need'])) {
+ $q->where(function (Builder $q) use ($filters, $unknown): void {
+ $q->whereRaw("v.payload->'funding_needs' @> ?::jsonb", [json_encode([$filters['need']], JSON_THROW_ON_ERROR)]);
+ if ($unknown) {
+ $q->orWhereRaw("jsonb_array_length(COALESCE(v.payload->'funding_needs','[]'::jsonb))=0");
+ }
+ });
+ }
+ })->orWhere(function (Builder $q) use ($sql, $bindings, $unknown): void {
+ $q->whereRaw("v.payload->>'kind' = 'institution'")->where(function (Builder $q) use ($sql, $bindings, $unknown): void {
+ $q->whereRaw($sql, $bindings);
+ if ($unknown) {
+ $q->orWhereRaw("jsonb_array_length(COALESCE(v.payload->'products','[]'::jsonb))=0");
+ }
+ });
+ });
+ });
+ }
+}
diff --git a/app/Services/FundingProgrammeReferences.php b/app/Services/FundingProgrammeReferences.php
index 82e76ac2..4329539c 100644
--- a/app/Services/FundingProgrammeReferences.php
+++ b/app/Services/FundingProgrammeReferences.php
@@ -6,8 +6,9 @@ use App\Models\User;
use App\Support\CheckedFile;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Str;
-/** Packaged official references prepare private drafts through existing editorial authority. */
+/** Packaged documentary references prepare private drafts through existing editorial authority. */
final class FundingProgrammeReferences
{
/** @return array */
@@ -19,13 +20,50 @@ final class FundingProgrammeReferences
abort_unless($package['format'] === 'investmoz-funding-references-v1', 503);
$reference = $package['references'][$code] ?? null;
abort_unless(is_array($reference), 404);
- $plan = ['code' => $code, 'edition' => $reference['edition'], 'draft' => $reference['draft'], 'provenance' => $reference['provenance'],
+ $unresolved = [];
+ $resolve = function (string $name) use (&$unresolved): ?string {
+ $matches = app(InvestmentGeography::class)->publicReferences()->where('location_type', 'province')->get(['id', 'name'])->filter(fn ($row) => Str::lower(Str::ascii($row->name)) === Str::lower(Str::ascii($name)));
+ if ($matches->count() !== 1) {
+ $unresolved[] = $name;
+
+ return null;
+ }
+
+ return $matches->first()->id;
+ };
+ if (! empty($reference['territory_names'])) {
+ $ids = array_values(array_filter(array_map($resolve, $reference['territory_names'])));
+ if (count($ids) === count($reference['territory_names'])) {
+ $reference['draft']['territory_ids'] = $ids;
+ } else {
+ $reference['draft']['coverage'] = 'unknown';
+ $reference['draft']['territory_ids'] = [];
+ $reference['draft']['coverage_text'] .= ' Correspondência ao cadastro territorial por confirmar.';
+ }
+ }
+ foreach ($reference['location_territory_names'] ?? [] as $index => $name) {
+ $reference['draft']['locations'][$index]['territory_id'] = $resolve($name);
+ }
+ $plan = ['unresolved_territories' => $unresolved, 'code' => $code, 'edition' => $reference['edition'], 'draft' => $reference['draft'], 'provenance' => $reference['provenance'],
'package_sha256' => hash('sha256', $bytes)];
$plan['hash'] = hash_hmac('sha256', json_encode(Arr::sortRecursive($plan), JSON_THROW_ON_ERROR), config('app.key'));
return $plan;
}
+ /** @return list */
+ public function choices(User $actor): array
+ {
+ app(FundingProgrammes::class)->guard($actor);
+ $package = json_decode(CheckedFile::read(database_path('data/funding-references.json')), true, 512, JSON_THROW_ON_ERROR);
+ $choices = [];
+ foreach ($package['references'] as $code => $reference) {
+ $choices[] = ['code' => $code, 'title' => $reference['draft']['title']];
+ }
+
+ return $choices;
+ }
+
/** @return array{id:string,created:bool} */
public function prepare(User $actor, string $code, string $hash): array
{
@@ -39,7 +77,7 @@ final class FundingProgrammeReferences
return ['id' => $existing->id, 'created' => false];
}
$id = app(FundingProgrammes::class)->save($actor, null, ['version' => 0, 'code' => $code,
- 'reason' => 'Preparação de referência oficial '.$plan['edition'].'; rascunho sem publicação automática.', 'draft' => $plan['draft']]);
+ 'reason' => 'Preparação de referência documental '.$plan['edition'].'; rascunho sem publicação automática.', 'draft' => $plan['draft']]);
DB::table('audit_events')->insert(['source_system' => 'funding-catalogue', 'entity_type' => 'funding_programmes', 'entity_id' => $id,
'actor_user_id' => $actor->id, 'action' => 'reference_prepared', 'data_classification' => 'restricted',
'after_data' => json_encode(['edition' => $plan['edition'], 'package_sha256' => $plan['package_sha256'], 'provenance' => $plan['provenance'], 'effect' => 'private_draft_only'], JSON_THROW_ON_ERROR)]);
diff --git a/app/Services/FundingProgrammes.php b/app/Services/FundingProgrammes.php
index 3a9c5e32..860badd4 100644
--- a/app/Services/FundingProgrammes.php
+++ b/app/Services/FundingProgrammes.php
@@ -18,7 +18,7 @@ use Symfony\Component\HttpFoundation\BinaryFileResponse;
/** Informational funding catalogue, separate from applications, credit decisions and fiscal calculations. */
final class FundingProgrammes
{
- public const KINDS = ['fund' => 'Fundo', 'programme' => 'Programa de apoio', 'incentive' => 'Incentivo'];
+ public const KINDS = ['institution' => 'Instituição financeira', 'fund' => 'Fundo', 'programme' => 'Programa de apoio', 'incentive' => 'Incentivo'];
public const WINDOWS = ['dated' => 'Datas documentadas', 'rolling' => 'Recepção contínua documentada', 'unknown' => 'Janela por confirmar', 'closed' => 'Encerrada segundo a fonte'];
@@ -56,6 +56,7 @@ final class FundingProgrammes
public function catalogueQuery(array $filters): Builder
{
$query = $this->publicQuery();
+ app(FundingInstitutionDetails::class)->applyFilters($query, $filters);
$includeUnknown = ($filters['certainty'] ?? 'include_unknown') === 'include_unknown';
if (! empty($filters['sector'])) {
$query->where(function (Builder $scope) use ($filters, $includeUnknown): void {
@@ -69,7 +70,7 @@ final class FundingProgrammes
if (! empty($filters['territory'])) {
$path = array_column(app(InvestmentGeography::class)->path($filters['territory']), 'id');
$query->where(function (Builder $scope) use ($filters, $path, $includeUnknown): void {
- $scope->whereRaw("v.payload->>'coverage' = 'national'")
+ $scope->whereRaw("v.payload->>'kind' = 'institution'")->orWhereRaw("v.payload->>'coverage' = 'national'")
->orWhereJsonContains('v.payload->territory_ancestor_ids', $filters['territory']);
foreach ($path as $id) {
$scope->orWhereJsonContains('v.payload->territory_ids', $id);
@@ -102,6 +103,11 @@ final class FundingProgrammes
public function filterExplanation(array $record, array $filters): array
{
$payload = $record['payload'];
+ if ($payload['kind'] === 'institution') {
+ $products = array_values(array_filter($payload['products'] ?? [], fn ($p) => app(FundingInstitutionDetails::class)->match($p, $filters)));
+
+ return ['institution' => $products === [] ? 'Instituição identificada; produtos, cobertura e disponibilidade por confirmar. Não é uma correspondência confirmada.' : 'Consulte os produtos correspondentes e as condições por confirmar. Sede e balcões não determinam a cobertura do financiamento.'];
+ }
$result = [];
if (! empty($filters['sector'])) {
$result['sector'] = $payload['sectors_scope'] === 'unknown'
@@ -200,6 +206,13 @@ final class FundingProgrammes
if (! $row && DB::table('funding_programmes')->where('code', $data['code'])->exists()) {
throw ValidationException::withMessages(['code' => 'Este identificador já pertence a uma ficha. Abra-a para actualizar ou acrescentar uma janela.']);
}
+ if ($draft['kind'] === 'institution') {
+ DB::select('select pg_advisory_xact_lock(261102, hashtext(?))', ['institution:'.$draft['institution_key']]);
+ $duplicate = DB::table('funding_programmes')->whereRaw("draft->>'kind' = 'institution'")->whereRaw("draft->>'institution_key' = ?", [$draft['institution_key']])->when($id, fn ($q) => $q->where('id', '<>', $id))->exists();
+ if ($duplicate) {
+ throw ValidationException::withMessages(['institution_key' => 'A instituição já tem ficha. Reutilize a identidade existente; não substitua as suas edições.']);
+ }
+ }
$id ??= (string) Str::uuid();
DB::table('funding_programmes')->updateOrInsert(['id' => $id], ['code' => $data['code'], 'version' => (int) $data['version'] + 1,
'draft' => json_encode($draft, JSON_THROW_ON_ERROR), 'created_by' => $row->created_by ?? $actor->id,
@@ -225,6 +238,7 @@ final class FundingProgrammes
'sectors_scope' => 'required|in:all,selected,unknown', 'sectors_text' => 'nullable|string|max:2000', 'sector_ids' => 'array|max:40',
'sector_ids.*' => ['required', 'integer', 'distinct', Rule::in(Sector::choices()->whereNotNull('published_at')->pluck('id')->all())],
'resource_ids' => 'array|max:30', 'resource_ids.*' => 'required|integer|distinct|exists:portal_resources,id',
+ 'funding_needs' => 'array|max:6', 'funding_needs.*' => ['required', 'distinct', Rule::in(array_keys(FundingInstitutionDetails::NEEDS))],
'criteria' => 'array|max:30', 'windows' => 'array|max:20',
'windows.*' => 'required|array:code,title,mode,start_on,end_on,coverage,coverage_text,territory_ids,source_url,source_reference,checked_on,application_url,criteria',
'windows.*.code' => 'required|string|regex:/^[a-z0-9][a-z0-9-]{0,79}$/D|distinct', 'windows.*.title' => "$required|string|max:250",
@@ -244,6 +258,9 @@ final class FundingProgrammes
$rules[$prefix.'.*.explanation'] = "$required|string|max:2000";
}
$data = Validator::make($input, $rules)->validate();
+ if ($data['kind'] === 'institution') {
+ $data = [...$data, ...app(FundingInstitutionDetails::class)->normalize($input, $publishing)];
+ }
$data = [...$data, 'territory_ids' => $data['territory_ids'] ?? [], 'sector_ids' => $data['sector_ids'] ?? [], 'resource_ids' => $data['resource_ids'] ?? [],
'criteria' => $data['criteria'] ?? [], 'windows' => $data['windows'] ?? []];
if ($data['coverage'] !== 'territorial' && $data['territory_ids'] !== []) {
diff --git a/app/Services/InvestorPath.php b/app/Services/InvestorPath.php
index 9a6b6ab2..c9fcc699 100644
--- a/app/Services/InvestorPath.php
+++ b/app/Services/InvestorPath.php
@@ -162,7 +162,7 @@ final class InvestorPath
$preparationTaskKeys = $opportunity !== null && ($owner || $manager) && app(PrivateInvestmentPreparation::class)->available() ? app(InvestmentPreparationWorkspace::class)->taskKeys($actor, $id, $opportunity) : null;
- return ['preparation_action' => ($owner || $manager) && app(PrivateInvestmentPreparation::class)->available() ? app(InvestmentPreparationWorkspace::class)->continuation($actor, $id, $opportunity, request()->query('swot_action')) : null, 'private_investment' => $preparation, 'case' => ['id' => $id, 'title' => $case->title, 'version' => $case->version, 'closed' => $case->closed_at !== null],
+ return ['funding_selections' => ($owner || $manager) ? array_values(array_filter($path['funding_selections'] ?? [], fn ($row) => ($row['opportunity'] ?? null) === $opportunity)) : [], 'preparation_action' => ($owner || $manager) && app(PrivateInvestmentPreparation::class)->available() ? app(InvestmentPreparationWorkspace::class)->continuation($actor, $id, $opportunity, request()->query('swot_action')) : null, 'private_investment' => $preparation, 'case' => ['id' => $id, 'title' => $case->title, 'version' => $case->version, 'closed' => $case->closed_at !== null],
'journey_id' => $journey->id, 'definition_id' => $version->id, 'definition_version' => $version->version_no, 'source_sha256' => $definition['source_sha256'],
'phases' => $definition['phases'], 'steps' => $steps, 'facts' => $facts, 'fact_reasons' => $factReasons,
'context_opportunity' => $opportunity, 'opportunity_options' => $allChoices,
@@ -180,7 +180,7 @@ final class InvestorPath
->when(! $owner && ! $manager, fn ($q) => $q->where('assignee_user_id', $actor->id))
->get(['id', 'title', 'status', 'version_no', 'due_at', 'assignee_user_id']),
'services' => app(DeskServiceAvailability::class)->current()->get()->map(fn ($s) => ['id' => $s->id, 'title' => json_decode($s->definition, true)['title'], 'effective_from' => $s->effective_from ?? null]),
- 'tools' => ['simulator' => (int) $case->user_id === $actor->id ? '/simulador-fiscal?context='.$id.($case->simulation_id ? '&draft='.$case->simulation_id : '').($opportunity ? '&opportunity='.urlencode($opportunity) : '') : null,
+ 'tools' => ['funding' => ($owner || $manager) && app(FundingProgrammes::class)->installed() ? '/fundos?context='.$id.($opportunity ? '&opportunity='.urlencode($opportunity) : '') : null, 'simulator' => (int) $case->user_id === $actor->id ? '/simulador-fiscal?context='.$id.($case->simulation_id ? '&draft='.$case->simulation_id : '').($opportunity ? '&opportunity='.urlencode($opportunity) : '') : null,
'preparation' => ($owner || $manager) && app(PrivateInvestmentPreparation::class)->available() ? '/investimentos/'.$id.'/preparacao'.($opportunity ? '?opportunity='.urlencode($opportunity) : '') : null,
'company' => '/investimentos/'.$id.'/forma-juridica',
'desk' => '/balcao-virtual/dossiers/'.$id.($opportunity ? '?opportunity='.urlencode($opportunity) : ''), 'guidance' => '/balcao-virtual/dossiers/'.$id.'/orientacao',
diff --git a/database/data/funding-references.json b/database/data/funding-references.json
index f6925b2c..3cdc540f 100644
--- a/database/data/funding-references.json
+++ b/database/data/funding-references.json
@@ -4,8 +4,18 @@
"fdel": {
"edition": "fdel-br43-20250305-tete20251020-v1",
"provenance": [
- { "url": "https://mpd.gov.mz/wp-content/uploads/2025/10/BR_43_I_SERIE_2025.pdf", "sha256": "0ea99c5f894760e3b715e377e87e9715fad9423e322e5753de1b9bb345c64753", "checked_on": "2026-11-02", "reference": "BR I Série n.º 43, 05/03/2025, pp. 157–160; Decreto n.º 4/2025 e Regulamento anexo" },
- { "url": "https://cmct.gov.mz/fundo-de-desenvolvimento-economico-local-fdel/", "sha256": "c69c2c3883766aa6a238ae44d8ee3fc99570adca2f3e647e50df59fde2786403", "checked_on": "2026-11-02", "reference": "Aviso municipal FDEL, prazo 20/10/2025" }
+ {
+ "url": "https://mpd.gov.mz/wp-content/uploads/2025/10/BR_43_I_SERIE_2025.pdf",
+ "sha256": "0ea99c5f894760e3b715e377e87e9715fad9423e322e5753de1b9bb345c64753",
+ "checked_on": "2026-11-02",
+ "reference": "BR I Série n.º 43, 05/03/2025, pp. 157–160; Decreto n.º 4/2025 e Regulamento anexo"
+ },
+ {
+ "url": "https://cmct.gov.mz/fundo-de-desenvolvimento-economico-local-fdel/",
+ "sha256": "c69c2c3883766aa6a238ae44d8ee3fc99570adca2f3e647e50df59fde2786403",
+ "checked_on": "2026-11-02",
+ "reference": "Aviso municipal FDEL, prazo 20/10/2025"
+ }
],
"draft": {
"title": "Fundo de Desenvolvimento Económico Local — FDEL",
@@ -25,8 +35,22 @@
"sector_ids": [],
"resource_ids": [],
"criteria": [
- { "code": "nationality-individual", "question": "Tem nacionalidade moçambicana?", "applies_to": "individual", "expected": "yes", "source_reference": "Decreto n.º 4/2025, art. 3", "explanation": "Condição declarada; não substitui a apreciação competente." },
- { "code": "economic-viability", "question": "O projecto apresenta elementos de viabilidade económica?", "applies_to": "all", "expected": "yes", "source_reference": "Decreto n.º 4/2025, art. 3; Regulamento, art. 13", "explanation": "A avaliação do projecto cabe às entidades competentes." }
+ {
+ "code": "nationality-individual",
+ "question": "Tem nacionalidade moçambicana?",
+ "applies_to": "individual",
+ "expected": "yes",
+ "source_reference": "Decreto n.º 4/2025, art. 3",
+ "explanation": "Condição declarada; não substitui a apreciação competente."
+ },
+ {
+ "code": "economic-viability",
+ "question": "O projecto apresenta elementos de viabilidade económica?",
+ "applies_to": "all",
+ "expected": "yes",
+ "source_reference": "Decreto n.º 4/2025, art. 3; Regulamento, art. 13",
+ "explanation": "A avaliação do projecto cabe às entidades competentes."
+ }
],
"windows": [
{
@@ -42,15 +66,788 @@
"checked_on": "2026-11-02",
"application_url": "https://cmct.gov.mz/anexo-5-plano-de-negocio/",
"criteria": [
- { "code": "tete-nuit", "question": "Dispõe de NUIT?", "applies_to": "all", "expected": "yes", "source_reference": "Aviso municipal, Requisitos", "explanation": "Documentação indicada para esta chamada histórica." },
- { "code": "tete-identity", "question": "Dispõe de cópia do BI?", "applies_to": "individual", "expected": "yes", "source_reference": "Aviso municipal, Candidatos individuais", "explanation": "Aplica-se a pessoas singulares nesta chamada." },
- { "code": "tete-registration", "question": "A entidade dispõe de comprovativo de registo legal?", "applies_to": "entity", "expected": "yes", "source_reference": "Aviso municipal, Entidades", "explanation": "Aplica-se às entidades indicadas no aviso." },
- { "code": "tete-idoneity", "question": "Dispõe de atestado de idoneidade emitido pela sede do bairro?", "applies_to": "individual", "expected": "yes", "source_reference": "Aviso municipal, Candidatos individuais", "explanation": "Documento indicado no aviso." },
- { "code": "tete-national-entity", "question": "A entidade é constituída por cidadãos nacionais?", "applies_to": "entity", "expected": "yes", "source_reference": "Aviso municipal, Entidades", "explanation": "Condição específica desta chamada." }
+ {
+ "code": "tete-nuit",
+ "question": "Dispõe de NUIT?",
+ "applies_to": "all",
+ "expected": "yes",
+ "source_reference": "Aviso municipal, Requisitos",
+ "explanation": "Documentação indicada para esta chamada histórica."
+ },
+ {
+ "code": "tete-identity",
+ "question": "Dispõe de cópia do BI?",
+ "applies_to": "individual",
+ "expected": "yes",
+ "source_reference": "Aviso municipal, Candidatos individuais",
+ "explanation": "Aplica-se a pessoas singulares nesta chamada."
+ },
+ {
+ "code": "tete-registration",
+ "question": "A entidade dispõe de comprovativo de registo legal?",
+ "applies_to": "entity",
+ "expected": "yes",
+ "source_reference": "Aviso municipal, Entidades",
+ "explanation": "Aplica-se às entidades indicadas no aviso."
+ },
+ {
+ "code": "tete-idoneity",
+ "question": "Dispõe de atestado de idoneidade emitido pela sede do bairro?",
+ "applies_to": "individual",
+ "expected": "yes",
+ "source_reference": "Aviso municipal, Candidatos individuais",
+ "explanation": "Documento indicado no aviso."
+ },
+ {
+ "code": "tete-national-entity",
+ "question": "A entidade é constituída por cidadãos nacionais?",
+ "applies_to": "entity",
+ "expected": "yes",
+ "source_reference": "Aviso municipal, Entidades",
+ "explanation": "Condição específica desta chamada."
+ }
]
}
]
}
+ },
+ "bci": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; BCI Exclusivo PME",
+ "url": "https://www.bci.co.mz/bci-exclusivo-pme/",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "BCI",
+ "kind": "institution",
+ "summary": "Conta corrente caucionada, empréstimo de médio/longo prazo, garantias e comércio externo. Público/finalidade: ENI, micro, pequenas e médias empresas.. Referência informativa, não concessão de financiamento.",
+ "manager_name": "BCI",
+ "source_url": "https://www.bci.co.mz/bci-exclusivo-pme/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; BCI Exclusivo PME",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "national",
+ "coverage_text": "Nacional; atendimento conforme rede e canais do banco.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "working_capital",
+ "investment",
+ "guarantee"
+ ],
+ "institution_key": "bci",
+ "institution_nature": "bank",
+ "contacts": [
+ {
+ "source_url": "https://www.bci.co.mz/bci-exclusivo-pme/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; BCI Exclusivo PME",
+ "checked_on": "2026-11-10",
+ "kind": "website",
+ "value": "https://www.bci.co.mz/bci-exclusivo-pme/"
+ }
+ ],
+ "locations": [],
+ "products": [
+ {
+ "source_url": "https://www.bci.co.mz/bci-exclusivo-pme/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; BCI Exclusivo PME",
+ "checked_on": "2026-11-10",
+ "code": "bci-oferta",
+ "title": "BCI — Soluções PME",
+ "instrument": "Conta corrente caucionada, empréstimo de médio/longo prazo, garantias e comércio externo.",
+ "needs": [
+ "working_capital",
+ "investment",
+ "guarantee"
+ ],
+ "coverage": "national",
+ "coverage_text": "Nacional; atendimento conforme rede e canais do banco.",
+ "territory_ids": [],
+ "conditions": "ENI, micro, pequenas e médias empresas. Oferta permanente publicada. A antiga “Linha BCI Negócios PME” terminou em 31 de Dezembro de 2018 e fica excluída das oportunidades activas.",
+ "amounts": "Variável segundo necessidade, produto e análise.",
+ "availability": "documented",
+ "contact_url": "https://www.bci.co.mz/bci-exclusivo-pme/"
+ }
+ ]
+ }
+ },
+ "millennium-bim": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Financiamento para empresas",
+ "url": "https://www.millenniumbim.co.mz/pt/empresas/produtos/financiamento",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "Millennium bim",
+ "kind": "institution",
+ "summary": "Conta empréstimo, conta corrente caucionada, factoring, confirming , leasing e garantias. Público/finalidade: Empresas e ENI elegíveis.. Referência informativa, não concessão de financiamento.",
+ "manager_name": "Millennium bim",
+ "source_url": "https://www.millenniumbim.co.mz/pt/empresas/produtos/financiamento",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Financiamento para empresas",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "national",
+ "coverage_text": "Nacional; balcões e canais do banco.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "working_capital",
+ "investment",
+ "guarantee"
+ ],
+ "institution_key": "millennium-bim",
+ "institution_nature": "bank",
+ "contacts": [
+ {
+ "source_url": "https://www.millenniumbim.co.mz/pt/empresas/produtos/financiamento",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Financiamento para empresas",
+ "checked_on": "2026-11-10",
+ "kind": "website",
+ "value": "https://www.millenniumbim.co.mz/pt/empresas/produtos/financiamento"
+ }
+ ],
+ "locations": [],
+ "products": [
+ {
+ "source_url": "https://www.millenniumbim.co.mz/pt/empresas/produtos/financiamento",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Financiamento para empresas",
+ "checked_on": "2026-11-10",
+ "code": "millennium-bim-oferta",
+ "title": "Millennium bim — Financiamento empresarial",
+ "instrument": "Conta empréstimo, conta corrente caucionada, factoring, confirming , leasing e garantias.",
+ "needs": [
+ "working_capital",
+ "investment",
+ "guarantee"
+ ],
+ "coverage": "national",
+ "coverage_text": "Nacional; balcões e canais do banco.",
+ "territory_ids": [],
+ "conditions": "Empresas e ENI elegíveis. Oferta permanente publicada. Condições finais dependem da análise de risco e contrato.",
+ "amounts": "Conta empréstimo: investimento entre 3 e 180 meses na ficha publicada; restantes termos após análise.",
+ "availability": "documented",
+ "contact_url": "https://www.millenniumbim.co.mz/pt/empresas/produtos/financiamento"
+ }
+ ]
+ }
+ },
+ "absa": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Empréstimos comerciais",
+ "url": "https://www.absa.co.mz/pt/banca-de-negocios/borrow/",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "Absa",
+ "kind": "institution",
+ "summary": "CAPEX , activos, importação, descoberto e leasing. Público/finalidade: PME e empresas com capacidade de endividamento.. Referência informativa, não concessão de financiamento.",
+ "manager_name": "Absa",
+ "source_url": "https://www.absa.co.mz/pt/banca-de-negocios/borrow/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Empréstimos comerciais",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "national",
+ "coverage_text": "Nacional; localização da empresa é recolhida no pedido.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "working_capital",
+ "investment"
+ ],
+ "institution_key": "absa",
+ "institution_nature": "bank",
+ "contacts": [
+ {
+ "source_url": "https://www.absa.co.mz/pt/banca-de-negocios/borrow/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Empréstimos comerciais",
+ "checked_on": "2026-11-10",
+ "kind": "website",
+ "value": "https://www.absa.co.mz/pt/banca-de-negocios/borrow/"
+ },
+ {
+ "source_url": "https://www.absa.co.mz/pt/banca-de-negocios/borrow/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Empréstimos comerciais",
+ "checked_on": "2026-11-10",
+ "kind": "phone",
+ "value": "+258 21 344 400"
+ },
+ {
+ "source_url": "https://www.absa.co.mz/pt/banca-de-negocios/borrow/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Empréstimos comerciais",
+ "checked_on": "2026-11-10",
+ "kind": "email",
+ "value": "linhacliente@absa.africa"
+ }
+ ],
+ "locations": [],
+ "products": [
+ {
+ "source_url": "https://www.absa.co.mz/pt/banca-de-negocios/borrow/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Empréstimos comerciais",
+ "checked_on": "2026-11-10",
+ "code": "absa-oferta",
+ "title": "Absa — Empréstimos PME e activos",
+ "instrument": "CAPEX , activos, importação, descoberto e leasing.",
+ "needs": [
+ "working_capital",
+ "investment"
+ ],
+ "coverage": "national",
+ "coverage_text": "Nacional; localização da empresa é recolhida no pedido.",
+ "territory_ids": [],
+ "conditions": "PME e empresas com capacidade de endividamento. Oferta permanente publicada. Critérios, documentos, garantias e ausência de registo desabonatório aplicam-se conforme produto.",
+ "amounts": "Leasing com prazo publicado até 5 anos; demais condições conforme análise.",
+ "availability": "documented",
+ "contact_url": "https://www.absa.co.mz/pt/banca-de-negocios/borrow/"
+ }
+ ]
+ }
+ },
+ "standard-bank": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Conta Empréstimo",
+ "url": "https://www.standardbank.co.mz/Produtos/Empresas/Conta-Emprestimo",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "Standard Bank",
+ "kind": "institution",
+ "summary": "Crédito de médio/longo prazo para bens de capital e CAPEX . Público/finalidade: Empresas com capacidade de endividamento.. Referência informativa, não concessão de financiamento.",
+ "manager_name": "Standard Bank",
+ "source_url": "https://www.standardbank.co.mz/Produtos/Empresas/Conta-Emprestimo",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Conta Empréstimo",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "national",
+ "coverage_text": "Nacional; balcões e canais empresariais.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "investment"
+ ],
+ "institution_key": "standard-bank",
+ "institution_nature": "bank",
+ "contacts": [
+ {
+ "source_url": "https://www.standardbank.co.mz/Produtos/Empresas/Conta-Emprestimo",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Conta Empréstimo",
+ "checked_on": "2026-11-10",
+ "kind": "website",
+ "value": "https://www.standardbank.co.mz/Produtos/Empresas/Conta-Emprestimo"
+ },
+ {
+ "source_url": "https://www.standardbank.co.mz/Produtos/Empresas/Conta-Emprestimo",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Conta Empréstimo",
+ "checked_on": "2026-11-10",
+ "kind": "phone",
+ "value": "+258 21 355700"
+ }
+ ],
+ "locations": [],
+ "products": [
+ {
+ "source_url": "https://www.standardbank.co.mz/Produtos/Empresas/Conta-Emprestimo",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Conta Empréstimo",
+ "checked_on": "2026-11-10",
+ "code": "standard-bank-oferta",
+ "title": "Standard Bank — Conta Empréstimo Empresas",
+ "instrument": "Crédito de médio/longo prazo para bens de capital e CAPEX .",
+ "needs": [
+ "investment"
+ ],
+ "coverage": "national",
+ "coverage_text": "Nacional; balcões e canais empresariais.",
+ "territory_ids": [],
+ "conditions": "Empresas com capacidade de endividamento. Produto activo e publicado. Sujeito a análise e garantias.",
+ "amounts": "Até 7 anos; limite definido segundo capacidade e investimento; garantias reais.",
+ "availability": "documented",
+ "contact_url": "https://www.standardbank.co.mz/Produtos/Empresas/Conta-Emprestimo"
+ }
+ ]
+ }
+ },
+ "moza": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Financiamento empresarial",
+ "url": "https://www.mozabanco.co.mz/pt/empresas/investimento/financiamento/",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "Moza Banco",
+ "kind": "institution",
+ "summary": "Tesouraria, investimento, construção e equipamento. Público/finalidade: Pequenas e médias empresas.. Referência informativa, não concessão de financiamento.",
+ "manager_name": "Moza Banco",
+ "source_url": "https://www.mozabanco.co.mz/pt/empresas/investimento/financiamento/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Financiamento empresarial",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "national",
+ "coverage_text": "Nacional; sem restrição territorial indicada no produto geral.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "working_capital",
+ "investment"
+ ],
+ "institution_key": "moza",
+ "institution_nature": "bank",
+ "contacts": [
+ {
+ "source_url": "https://www.mozabanco.co.mz/pt/empresas/investimento/financiamento/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Financiamento empresarial",
+ "checked_on": "2026-11-10",
+ "kind": "website",
+ "value": "https://www.mozabanco.co.mz/pt/empresas/investimento/financiamento/"
+ }
+ ],
+ "locations": [],
+ "products": [
+ {
+ "source_url": "https://www.mozabanco.co.mz/pt/empresas/investimento/financiamento/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Financiamento empresarial",
+ "checked_on": "2026-11-10",
+ "code": "moza-oferta",
+ "title": "Moza Banco — Crédito PME",
+ "instrument": "Tesouraria, investimento, construção e equipamento.",
+ "needs": [
+ "working_capital",
+ "investment"
+ ],
+ "coverage": "national",
+ "coverage_text": "Nacional; sem restrição territorial indicada no produto geral.",
+ "territory_ids": [],
+ "conditions": "Pequenas e médias empresas. Produto apresentado no portal. A ficha contém condições que devem ser reconfirmadas antes da publicação, incluindo montante, comissão e garantias.",
+ "amounts": "Ficha publicada: 500.000–30.000.000 MT; 6–60 meses; Prime + spread.",
+ "availability": "unknown",
+ "contact_url": "https://www.mozabanco.co.mz/pt/empresas/investimento/financiamento/"
+ }
+ ]
+ }
+ },
+ "bni": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Banca de Desenvolvimento",
+ "url": "https://www.bni.co.mz/banca-de-desenvolvimento/",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "BNI Capital: veículo do BNI, registado como produto sem duplicar a instituição",
+ "url": "https://www.bni.co.mz/banca-de-investimento/capital-de-risco/",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "BNI",
+ "kind": "institution",
+ "summary": "Crédito para sectores produtivos, infra-estruturas e projectos com impacto. Público/finalidade: Empresas e projectos de desenvolvimento.. Referência informativa, não concessão de financiamento.",
+ "manager_name": "BNI",
+ "source_url": "https://www.bni.co.mz/banca-de-desenvolvimento/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Banca de Desenvolvimento",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "national",
+ "coverage_text": "Nacional ou conforme fundo/linha específica.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "investment"
+ ],
+ "institution_key": "bni",
+ "institution_nature": "bank",
+ "contacts": [
+ {
+ "source_url": "https://www.bni.co.mz/banca-de-desenvolvimento/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Banca de Desenvolvimento",
+ "checked_on": "2026-11-10",
+ "kind": "website",
+ "value": "https://www.bni.co.mz/banca-de-desenvolvimento/"
+ },
+ {
+ "source_url": "https://www.bni.co.mz/contactos/",
+ "source_reference": "BNI — Contactos, endereço e telefone",
+ "checked_on": "2026-11-10",
+ "kind": "phone",
+ "value": "+258 21 498 581"
+ }
+ ],
+ "locations": [
+ {
+ "source_url": "https://www.bni.co.mz/contactos/",
+ "source_reference": "BNI — Contactos, endereço e telefone",
+ "checked_on": "2026-11-10",
+ "role": "contact_point",
+ "label": "BNI — endereço institucional de Maputo",
+ "address": "Av. Julius Nyerere, 3504, Bloco A2, 4668 Maputo, Moçambique",
+ "territory_id": null
+ }
+ ],
+ "products": [
+ {
+ "source_url": "https://www.bni.co.mz/banca-de-desenvolvimento/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Banca de Desenvolvimento",
+ "checked_on": "2026-11-10",
+ "code": "bni-oferta",
+ "title": "BNI — Crédito de desenvolvimento",
+ "instrument": "Crédito para sectores produtivos, infra-estruturas e projectos com impacto.",
+ "needs": [
+ "investment"
+ ],
+ "coverage": "national",
+ "coverage_text": "Nacional ou conforme fundo/linha específica.",
+ "territory_ids": [],
+ "conditions": "Empresas e projectos de desenvolvimento. Serviço institucional publicado. Cada linha deve ter o seu próprio estado e regulamento.",
+ "amounts": "Definido por operação; o simulador oficial é apenas indicativo.",
+ "availability": "documented",
+ "contact_url": "https://www.bni.co.mz/banca-de-desenvolvimento/"
+ },
+ {
+ "source_url": "https://www.bni.co.mz/banca-de-investimento/capital-de-risco/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Capital de Risco",
+ "checked_on": "2026-11-10",
+ "code": "bni-capital-oferta",
+ "title": "BNI Capital",
+ "instrument": "Participação temporária e geralmente minoritária no capital; investimento em fundos.",
+ "needs": [
+ "equity"
+ ],
+ "coverage": "national",
+ "coverage_text": "Moçambique, conforme tese e avaliação de investimento.",
+ "territory_ids": [],
+ "conditions": "Empresas não cotadas com crescimento, impacto, gestão profissional e insuficiência de capital. Serviço institucional publicado. Manifestação e processo dependem de avaliação do BNI .",
+ "amounts": "Negociado por operação; não é crédito.",
+ "availability": "documented",
+ "contact_url": "https://www.bni.co.mz/banca-de-investimento/capital-de-risco/"
+ }
+ ]
+ },
+ "location_territory_names": {
+ "0": "Maputo Cidade"
+ }
+ },
+ "gapi": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Portal Gapi",
+ "url": "https://www.gapi.co.mz/",
+ "checked_on": "2026-10-04"
+ }
+ ],
+ "draft": {
+ "title": "Gapi",
+ "kind": "institution",
+ "summary": "Crédito, garantias, capacitação e apoio empresarial. Público/finalidade: MPME , empresas rurais, agronegócio, jovens e mulheres, conforme programa.. Referência informativa, não concessão de financiamento.",
+ "manager_name": "Gapi",
+ "source_url": "https://www.gapi.co.mz/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Portal Gapi",
+ "source_checked_on": "2026-10-04",
+ "source_status": "identified",
+ "coverage": "unknown",
+ "coverage_text": "Presença nacional, com programas de cobertura territorial específica.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "working_capital",
+ "investment",
+ "guarantee",
+ "technical_assistance"
+ ],
+ "institution_key": "gapi",
+ "institution_nature": "other",
+ "contacts": [
+ {
+ "source_url": "https://www.gapi.co.mz/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Portal Gapi",
+ "checked_on": "2026-10-04",
+ "kind": "website",
+ "value": "https://www.gapi.co.mz/"
+ }
+ ],
+ "locations": [],
+ "products": [
+ {
+ "source_url": "https://www.gapi.co.mz/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Portal Gapi",
+ "checked_on": "2026-10-04",
+ "code": "gapi-oferta",
+ "title": "Gapi — Financiamento e investimento de impacto",
+ "instrument": "Crédito, garantias, capacitação e apoio empresarial.",
+ "needs": [
+ "working_capital",
+ "investment",
+ "guarantee",
+ "technical_assistance"
+ ],
+ "coverage": "unknown",
+ "coverage_text": "Presença nacional, com programas de cobertura territorial específica.",
+ "territory_ids": [],
+ "conditions": "MPME , empresas rurais, agronegócio, jovens e mulheres, conforme programa. Actividade de financiamento publicada. A Gapi declara não usar intermediários para conceder financiamento.",
+ "amounts": "Variável por linha; avaliação própria.",
+ "availability": "unknown",
+ "contact_url": "https://www.gapi.co.mz/"
+ }
+ ]
+ }
+ },
+ "fecop": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Comunicado oficial Millennium bim",
+ "url": "https://www.millenniumbim.co.mz/media/gusl5uoe/20260624-comunicado-de-imprensa_millennium-bim-reforca-solucoes-de-financiamento-para-as-pme-atraves-do-fecop.pdf",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "FECOP — crédito por bancos aderentes",
+ "kind": "fund",
+ "summary": "Partilha de risco, crédito e assistência técnica. Público/finalidade: MPME e cooperativas de produtores elegíveis.. Referência informativa, não concessão de financiamento. Condições e montantes no quadro de 04/10/2026: Dotação global anunciada de cerca de €17 milhões; condições por banco e operação. Operacionalização confirmada em Junho de 2026. O Millennium bim mantém comunicado oficial; critérios e canal exacto devem ser confirmados em cada banco.",
+ "manager_name": "Entidades do programa identificadas na fonte",
+ "source_url": "https://www.millenniumbim.co.mz/media/gusl5uoe/20260624-comunicado-de-imprensa_millennium-bim-reforca-solucoes-de-financiamento-para-as-pme-atraves-do-fecop.pdf",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Comunicado oficial Millennium bim",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "national",
+ "coverage_text": "Moçambique; operacionalizado por Millennium bim , BCI e Vista Bank .",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "investment",
+ "working_capital",
+ "technical_assistance"
+ ]
+ }
+ },
+ "semeia": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Semeia Negócios",
+ "url": "https://semeia.gapi.co.mz/",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "Semeia Negócios — FECOP",
+ "kind": "programme",
+ "summary": "Subvenção em espécie, formalização, capacitação e equipamento produtivo. Público/finalidade: Startups , micro e pequenas empresas; foco em jovens e mulheres.. Referência informativa, não concessão de financiamento. Condições e montantes no quadro de 04/10/2026: Até 450.000 MT; até 75% do investimento; subvenção sem juro. Candidaturas encerradas. O portal permite consultar candidaturas já submetidas.",
+ "manager_name": "Gapi / FECOP",
+ "source_url": "https://semeia.gapi.co.mz/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Semeia Negócios",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "national",
+ "coverage_text": "Moçambique; província e distrito constam da candidatura.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [
+ {
+ "code": "quadro-20261004",
+ "title": "Chamada indicada no quadro fornecido — encerrada",
+ "mode": "closed",
+ "coverage": "programme",
+ "territory_ids": [],
+ "source_url": "https://semeia.gapi.co.mz/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; Semeia Negócios",
+ "checked_on": "2026-11-10",
+ "application_url": "https://semeia.gapi.co.mz/",
+ "criteria": []
+ }
+ ],
+ "funding_needs": [
+ "investment",
+ "technical_assistance"
+ ]
+ }
+ },
+ "fcid-viii": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; VIII Edição FCID",
+ "url": "https://fundocatalitico.gov.mz/viii-edicao-fcid/",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "FCID VIII — Jobs Now",
+ "kind": "fund",
+ "summary": "Subvenção comparticipada para expansão produtiva, cadeias de valor e emprego. Público/finalidade: Pequenas e médias empresas e grandes empresas âncora formalizadas.. Referência informativa, não concessão de financiamento. Condições e montantes no quadro de 04/10/2026: Pequenas: USD 50.000–150.000; médias: USD 151.000–250.000; âncora: USD 251.000–500.000. Activo na data da verificação, com prazo iminente. O portal oficial mostrava candidaturas abertas e contagem decrescente; exige validação diária até ao encerramento.",
+ "manager_name": "Entidades do programa identificadas na fonte",
+ "source_url": "https://fundocatalitico.gov.mz/viii-edicao-fcid/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; VIII Edição FCID",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "territorial",
+ "coverage_text": "Províncias de Maputo, Gaza, Inhambane, Manica, Sofala e Zambézia. Não pressupõe cobertura nacional. Disponibilidade actual da janela por confirmar; a página indica candidaturas sem prazo final inequívoco.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "investment"
+ ]
+ },
+ "territory_names": [
+ "Maputo Província",
+ "Gaza",
+ "Inhambane",
+ "Manica",
+ "Sofala",
+ "Zambezia"
+ ]
+ },
+ "fae": {
+ "edition": "tempo-benchmark-20261004-directory-20261110-v1",
+ "provenance": [
+ {
+ "reference": "benchmark de melhorias investeMoz.docx; quadro comparativo 04/10/2026",
+ "sha256": "065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617",
+ "checked_on": "2026-11-10"
+ },
+ {
+ "reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; FAE",
+ "url": "https://www.bni.co.mz/banca-de-desenvolvimento/fae/",
+ "checked_on": "2026-11-10"
+ }
+ ],
+ "draft": {
+ "title": "FAE — BNI /Agência do Zambeze",
+ "kind": "programme",
+ "summary": "Crédito em desembolso único, tranches ou espécie para agronegócio e empreendedorismo. Público/finalidade: Recém-graduados, MPME , cooperativas e associações lucrativas elegíveis.. Referência informativa, não concessão de financiamento. Condições e montantes no quadro de 04/10/2026: Segundo necessidade real do ciclo de produção e comercialização. Linha e processo publicados. A página não indica uma janela corrente com prazo; marcar “confirmação necessária” antes de aceitar candidatura.",
+ "manager_name": "BNI / Agência do Zambeze",
+ "source_url": "https://www.bni.co.mz/banca-de-desenvolvimento/fae/",
+ "source_reference": "Fonte institucional indicada no quadro Tempo de 04/10/2026; FAE",
+ "source_checked_on": "2026-11-10",
+ "source_status": "identified",
+ "coverage": "unknown",
+ "coverage_text": "Vale do Zambeze; projectos e actividades elegíveis na região.",
+ "territory_ids": [],
+ "sectors_scope": "unknown",
+ "sectors_text": "Critérios sectoriais por conferir no produto/programa; nenhuma elegibilidade automática.",
+ "sector_ids": [],
+ "resource_ids": [],
+ "criteria": [],
+ "windows": [],
+ "funding_needs": [
+ "investment",
+ "working_capital"
+ ]
+ }
}
}
}
diff --git a/docs/investmoz/unification/traceability-and-manual.md b/docs/investmoz/unification/traceability-and-manual.md
index 2c669640..d9af40e9 100644
--- a/docs/investmoz/unification/traceability-and-manual.md
+++ b/docs/investmoz/unification/traceability-and-manual.md
@@ -1,3 +1,23 @@
+## 10/11/2026 — ACT-20261029-12: directório financeiro com conteúdo em QA
+
+**Homologação mantém1c75a30a; este conjunto não está instalado nem publicado.** A leitura autenticada do destino confirmou catálogo /fundos HTTP200, schema instalado e zero fichas/versões. O requisito não fica encerrado por essa disponibilidade técnica. APIEX/SWOT mantêm a entrega instalada própria, sem reabertura.
+
+Localizada e reutilizada a lista fornecida em `Relatorios/benchmark de melhorias investeMoz.docx`, SHA256 `065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617`, quadro de04/10/2026. Doze entradas documentais correspondem a **11fichas:7instituições e4programas/fundos** — BCI,Millennium bim,Absa,Standard Bank,Moza,BNI,Gapi,FECOP,Semeia Negócios,FCID VIII eFAE; **BNI Capital** integra os produtos do BNI, sem duplicar instituição ou presumir personalidade jurídica autónoma. Agregado genérico de linhas BNI não gera fundos fictícios. Referência FDEL anterior conservada, sem a contar novamente nesta entrega.
+
+O cadastro/versionamento/competência editorial existentes passam a conservar natureza factual, identidade estável, contactos com fonte/data, locais físicos (sede/balcão/ponto institucional) e produtos próprios. Moradas não determinam cobertura financeira. Produto tem finalidade, instrumento, condições/montantes, disponibilidade e cobertura próprios; vazios são identificados como por confirmar. Cobertura e necessidade têm de corresponder ao **mesmo produto**, antes da paginaçãoSQL. Critério documentado pode excluir desconhecidos; consulta geral distingue resultados por confirmar de correspondência sustentada. FCID conserva seis províncias documentadas, sem confundir Maputo Província/Cidade; FAE mantém o Vale do Zambeze como âmbito textual com vínculo geográfico por confirmar, sem inventar distritos. A localização institucional do BNI não limita o financiamento a Maputo. Semeia conserva a chamada encerrada; a antiga linha BCI2018 não é reaberta. Condições e janelas históricas não se tornam ofertas actuais pela importação. Fontes indicadas consultadas para âmbito/disponibilidade; falha de recolha da Gapi não revoga o original, cuja data04/10 e disponibilidade por confirmar ficam explícitas.
+
+Demonstrado em QA55441 existente: localização/necessidade → consulta das fichas reais fornecidas → fonte/contacto/condições → escolha privada no mesmo dossier e oportunidade → recuperação. Snapshot preserva versão pública e produto consultados mesmo após retirada/alteração da ficha. Repetição da intenção e recuperação após recarregar não duplicam a escolha/evento; outra oportunidade/actor e dossier encerrado mantêm guardas. Não envia candidatura, contactos ou dados às instituições, não concede crédito nem classifica o investidor automaticamente. Sem pontuação/IA, schema/base/porta nova, novas competências ou alteração de dados activos.
+
+Provas dirigidas: **3casos API/127asserções e13frontend**, PHPStan nível7 sem supressões, tipos/lint/Pint/compilação QA aprovados. Testes transaccionais revertidos; sequências QA podem avançar. `outputs/funding-directory-20261110/verification.json`, `content-qa.json`, `dossier-qa.json`; **catálogo consultável de revisão** `outputs/funding-directory-20261110/catalogo-qa.html` e11fichasHTML ligadas. Renderização estática dos componentes afectados, não conferência visual de navegador nem publicação no destino. Provas anteriores preservadas e reutilizadas.
+
+**Saldo ACT-12:** recorte funcional e conteúdo fornecido demonstrados em QA, preparado para disponibilização pelo fluxo editorial. **Restam instalação do conjunto, preparação/revisão/publicação autenticada das11fichas no destino e confirmação da consulta real pelo investidor**; visual continua pendente com conector indisponível. Não declarar ACT-12 encerrado ou o portal integral. Dados de sede/balcões, condições ou cobertura não documentados conservam o estado por confirmar; não bloqueiam os restantes dados fundamentados. Resíduos L1–L7/restanteL8/L9–L16 e outros módulos mantêm o saldo anterior.
+
+### Utilização do directório financeiro
+
+No dossier, escolha **Instituições financeiras e apoios**; o contexto da oportunidade é conservado. No catálogo /fundos seleccione **Local de interesse** e **Necessidade de financiamento**, pesquise e confira as mensagens de cobertura/condições por confirmar. Na ficha, leia separadamente presença física, cobertura do produto, fonte/data, contacto e disponibilidade. Escolha o produto e confirme apenas a conservação da referência privada; **Guardar e continuar no dossier** não envia candidatura. A secção **Referências de financiamento do dossier** conserva a fotografia consultada e permite abrir a ficha actual, que poderá ter mudado ou sido retirada. Resposta incerta permite repetir a mesma intenção sem duplicação; o dossier permite recuperar a escolha.
+
+Para a equipa editorial: **Gerir fundos e programas → Preparar referências fornecidas** apresenta as referências documentais (incluindo FDEL anterior). Escolha cada ficha, confira a fonte, prepare o rascunho pelo botão existente e complete apenas dados fundamentados. Repetir a preparação abre a ficha já existente, sem substituir edições. Use **Alterar** nas secções de contactos/locais/produtos; guarde, confira a prévia da versão e publique com confirmação/motivo no fluxo existente. Não publicar linhas históricas como activas nem marcar oferta desconhecida como aberta. Não é necessário novo perfil, módulo ou cadastro de organizações duplicado.
+
## 10/11/2026 — APIEX, SWOT e acesso destacado a Concursos instalados
**Homologação instalada e conferida: `1c75a30a601ef00fc187ddf5a64183446d329e6f`**, https://teste-investidor.tempo.co.mz. Inclui APIEX/SWOT37854d02 e correcção do menu autorizada pela Tempo. **Concursos e anúncios** tem agora grupo próprio no menu horizontal comum, com consulta pública e acompanhamentos para utilizadores autenticados; endereço https://teste-investidor.tempo.co.mz/concursos. O módulo já estava activo e apenas a entrada estava dentro de Descoberta; não foi necessário activá-lo novamente. Um rascunho privado e zero versões publicadas preservados.
diff --git a/docs/investmoz/v2/auditoria-portal/backlog.md b/docs/investmoz/v2/auditoria-portal/backlog.md
index ef409c9d..8d24d6a7 100644
--- a/docs/investmoz/v2/auditoria-portal/backlog.md
+++ b/docs/investmoz/v2/auditoria-portal/backlog.md
@@ -1,3 +1,17 @@
+## 10/11/2026 — ACT-20261029-12: directório financeiro com conteúdo em QA
+
+**Homologação mantém1c75a30a; este conjunto não está instalado nem publicado.** A leitura autenticada do destino confirmou catálogo /fundos HTTP200, schema instalado e zero fichas/versões. O requisito não fica encerrado por essa disponibilidade técnica. APIEX/SWOT mantêm a entrega instalada própria, sem reabertura.
+
+Localizada e reutilizada a lista fornecida em `Relatorios/benchmark de melhorias investeMoz.docx`, SHA256 `065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617`, quadro de04/10/2026. Doze entradas documentais correspondem a **11fichas:7instituições e4programas/fundos** — BCI,Millennium bim,Absa,Standard Bank,Moza,BNI,Gapi,FECOP,Semeia Negócios,FCID VIII eFAE; **BNI Capital** integra os produtos do BNI, sem duplicar instituição ou presumir personalidade jurídica autónoma. Agregado genérico de linhas BNI não gera fundos fictícios. Referência FDEL anterior conservada, sem a contar novamente nesta entrega.
+
+O cadastro/versionamento/competência editorial existentes passam a conservar natureza factual, identidade estável, contactos com fonte/data, locais físicos (sede/balcão/ponto institucional) e produtos próprios. Moradas não determinam cobertura financeira. Produto tem finalidade, instrumento, condições/montantes, disponibilidade e cobertura próprios; vazios são identificados como por confirmar. Cobertura e necessidade têm de corresponder ao **mesmo produto**, antes da paginaçãoSQL. Critério documentado pode excluir desconhecidos; consulta geral distingue resultados por confirmar de correspondência sustentada. FCID conserva seis províncias documentadas, sem confundir Maputo Província/Cidade; FAE mantém o Vale do Zambeze como âmbito textual com vínculo geográfico por confirmar, sem inventar distritos. A localização institucional do BNI não limita o financiamento a Maputo. Semeia conserva a chamada encerrada; a antiga linha BCI2018 não é reaberta. Condições e janelas históricas não se tornam ofertas actuais pela importação. Fontes indicadas consultadas para âmbito/disponibilidade; falha de recolha da Gapi não revoga o original, cuja data04/10 e disponibilidade por confirmar ficam explícitas.
+
+Demonstrado em QA55441 existente: localização/necessidade → consulta das fichas reais fornecidas → fonte/contacto/condições → escolha privada no mesmo dossier e oportunidade → recuperação. Snapshot preserva versão pública e produto consultados mesmo após retirada/alteração da ficha. Repetição da intenção e recuperação após recarregar não duplicam a escolha/evento; outra oportunidade/actor e dossier encerrado mantêm guardas. Não envia candidatura, contactos ou dados às instituições, não concede crédito nem classifica o investidor automaticamente. Sem pontuação/IA, schema/base/porta nova, novas competências ou alteração de dados activos.
+
+Provas dirigidas: **3casos API/127asserções e13frontend**, PHPStan nível7 sem supressões, tipos/lint/Pint/compilação QA aprovados. Testes transaccionais revertidos; sequências QA podem avançar. `outputs/funding-directory-20261110/verification.json`, `content-qa.json`, `dossier-qa.json`; **catálogo consultável de revisão** `outputs/funding-directory-20261110/catalogo-qa.html` e11fichasHTML ligadas. Renderização estática dos componentes afectados, não conferência visual de navegador nem publicação no destino. Provas anteriores preservadas e reutilizadas.
+
+**Saldo ACT-12:** recorte funcional e conteúdo fornecido demonstrados em QA, preparado para disponibilização pelo fluxo editorial. **Restam instalação do conjunto, preparação/revisão/publicação autenticada das11fichas no destino e confirmação da consulta real pelo investidor**; visual continua pendente com conector indisponível. Não declarar ACT-12 encerrado ou o portal integral. Dados de sede/balcões, condições ou cobertura não documentados conservam o estado por confirmar; não bloqueiam os restantes dados fundamentados. Resíduos L1–L7/restanteL8/L9–L16 e outros módulos mantêm o saldo anterior.
+
## 10/11/2026 — APIEX, SWOT e acesso destacado a Concursos instalados
**Homologação instalada e conferida: `1c75a30a601ef00fc187ddf5a64183446d329e6f`**, https://teste-investidor.tempo.co.mz. Inclui APIEX/SWOT37854d02 e correcção do menu autorizada pela Tempo. **Concursos e anúncios** tem agora grupo próprio no menu horizontal comum, com consulta pública e acompanhamentos para utilizadores autenticados; endereço https://teste-investidor.tempo.co.mz/concursos. O módulo já estava activo e apenas a entrada estava dentro de Descoberta; não foi necessário activá-lo novamente. Um rascunho privado e zero versões publicadas preservados.
diff --git a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
index 36de4e95..28e123ff 100644
--- a/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
+++ b/docs/investmoz/v2/auditoria-portal/matriz-requisitos.csv
@@ -55,7 +55,7 @@ RF-CLU-003,Representar a cadeia de valor e identificar lacunas de investimento.,
[Executável 312965f2c653] P3 staging privado completo; P4 nominal destino real 27 refs/25 territórios, zero geometrias. Pré-condições fontes conferidas; pacote para decisão, não aplicado. Reversão após uso só manifesto/build, backend e dados retidos. Adaptador ensaiado só em clone: rollback/recuperação após commit e repetição sem duplicações; aplicação 56 fontes inalterada. Acesso público e diferenças visuais/login continuam abertos. Saldo remoto delimitado 4–7 h; sem alterações remotas.
[Homologação 312965f2c653 executada] Autorização Tempo; 30 fichas privadas/30 locais/31 suportes/11 relações/2 originais e 2 definições internas, 233 caminhos conferidos. Dados anteriores/permissões preservados; zero publicação/migrations/geometrias/P7. Saldo delimitado de execução concluído. Dossier legítimo, oito lacunas e questões de autenticação/visual separadas. RECIBO-EXECUCAO-312965.json. 23/10/2026 — Complementos: causa delimitada no campo textual focus e ausência de resolução/selecção complementar; incremento preparado em QA no percurso existente. Fichas/IDs existentes por relações documentadas, necessidades sem oferta, serviços/instrumentos publicados associados à origem, localização por complemento, rascunho/prévia/confirmação/histórico no dossier, apresentação nos quatro formulários e snapshot/linhas de relatório. Provas e limites em docs/investmoz/unification/investment-complements-qa-receipt-20261023.json e secção Complementos ligados ao investimento e ao dossier do manual. Sem instalação/alteração no activo. Não repete 6b544548/4098192a nem encerra aplicação transversal. 23/10/2026 — Conferência visual QA dos complementos concluída no recorte pedido: ficha 286 pela identidade existente; Fiação como necessidade/ideia; serviço sintético QA 17 e frio 310 ligados à segunda oportunidade 309 em Gaza, conservando a primeira 286 em Sofala. Confirmação e recarregamento recuperaram selecção, origem e localização; desconhecidos mantidos Por definir. Dossier sintético 6fdbb963-726e-4048-9884-8cddc04e77a6. Provas: outputs/complements-visual-20261023/; recibo existente investment-complements-qa-receipt-20261023.json actualizado. Serviço e segunda oportunidade são fixtures explícitas, sem alegar oferta real no destino. Homologação inalterada; fechos anteriores não repetidos. | 23/10/2026: complementos instalados na homologação d8224ba8 pelo processo Git; delta conferido, sem importações/migrations ou fixtures QA; ver recibo investment-complements-qa-receipt-20261023.json. Provas anteriores preservadas; aplicação transversal parcial e contextos específicos dos quatro formulários pendentes. | 28/10/2026:existing-supply-lists-audit-20261028.json;13ficheiros inventariados,4originaisXLSXpreservados;consulta activa READONLY198tabelas,consumidor/hashGit conferidos.Gurué canónico existe;passo oferta daslistas não demonstrado,logo sem fecho do fluxo.Sem escrita/import/publicação/testes novos;pilotos manuais e entrega proactiva preservados.",território,"27/10/2026 — identidade proactiva,primeiro incremento QA | Histórico preservado: 12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada", | management_draft.canonical.relations/enterprise_size; workflow_context.classification_decisions/publication.classification/canonical_items; mestres existentes por ID; sem migrations. | /negocios: existing_business_revisions.snapshot.context.multidimensional; mesmo UUID e payload principal intacto; decisões por relação/evidência; snapshot de divulgação separado.," | Recuperação noutra sessão, nove relações/quatro dimensões, evidência/decisão por hash, exclusão privada, filtros/map matched_count, reversão compatível. Publicação é fixture sintético; transição editorial aceite não repetida. | Clone principal publicado/v26, referência publicada/v12 intacta; recuperação/validação/divulgação e filtros dirigidos; edição posterior pelo código anterior preserva o suplemento; ver relatório para fixture secundário sintético.",Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,," | QA01: prova positiva delimitada de atividade/cadeia e operações do lote concluída, conservando as aceitações anteriores e a semântica privada/confirmada/pública. | ATIVO01: instalação/importação/publicação autenticadas, scan, repetição idempotente, recuperação pública do ramo A/01/011/0112/01120 e preservação operacional concluídos. Provas funcionais QA aceites reutilizadas, sem repetição.","Só percurso técnico com fixtures sintéticas. Hipótese/necessidade/ideia/projecto/oferta não equiparados;sem procura,viabilidade,contrato,acesso ou benefício fiscal presumidos. | Histórico preservado: | QA01: divergência documental 600/579 e edição normativa abertas; cadeia editorial; publicação canónica com pré-condições sintéticas; save legado transacional; sem volume ou recuperação de payload legado cifrado; reversão parcial com sete fontes funcionais. Sem decisão ativa presumida. | ATIVO01: não encerra CAE integral ou divergência 600/579/edição normativa; cadeia exclusivamente editorial. Nenhuma classificação ou relação de investimento real alterada/divulgada. Limites QA anteriores e reversão parcial compatível mantidos; editor UUID ativo de /negocios continua não demonstrado e não bloqueante. Parques, duplicados e regulação Fintech separados.","0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,"Aplicação real preliminar privada emQA demonstrada;cláusulas integrais e pendências conservadas;sem publicação real ou validação comercial. | Histórico preservado: Primeiro incremento proactivo QA demonstrado;requisito global parcial,sem instalação nem validação económica real."
RF-CLU-004,Disponibilizar inteligência territorial e comparação multicritério.,upgrade v4 SHA f0b9815…; p. 521; requirements-audit.csv | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 546 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 241 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 546,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-CLU-004: Mapas autorizados mostram projectos, recursos, infra-estruturas, actores e riscos por unidade territorial; comparações usam critérios, período, fonte e limitações uniformes e não constituem garantia. | MASTER-e1169a77-0045: Disponibilizar inteligência territorial e comparação multicritério. | MASTER-51b8f0ad-0025: Disponibilizar inteligência territorial e comparação multicritério. | MASTER-edece80c-0045: Disponibilizar inteligência territorial e comparação multicritério.",P2,RF-CLU-004: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-e1169a77-0045: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0025: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0045: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-CLU-004 | MASTER-e1169a77-0045 | MASTER-51b8f0ad-0025 | MASTER-edece80c-0045,4,"[{""id"":""RF-CLU-004"",""pedido"":""Disponibilizar inteligência territorial e comparação multicritério."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 521; requirements-audit.csv""],""aceitacao"":""Mapas autorizados mostram projectos, recursos, infra-estruturas, actores e riscos por unidade territorial; comparações usam critérios, período, fonte e limitações uniformes e não constituem garantia."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""cartografia/relações""},{""id"":""MASTER-e1169a77-0045"",""pedido"":""Disponibilizar inteligência territorial e comparação multicritério."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 546""],""aceitacao"":""Disponibilizar inteligência territorial e comparação multicritério."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-51b8f0ad-0025"",""pedido"":""Disponibilizar inteligência territorial e comparação multicritério."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 241""],""aceitacao"":""Disponibilizar inteligência territorial e comparação multicritério."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-edece80c-0045"",""pedido"":""Disponibilizar inteligência territorial e comparação multicritério."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 546""],""aceitacao"":""Disponibilizar inteligência territorial e comparação multicritério."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
-RF-CLU-005,Gerir necessidades de financiamento e correspondência com financiadores.,upgrade v4 SHA f0b9815…; p. 525; requirements-audit.csv,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-CLU-005: A necessidade contém elo, fase, instrumento, valor, moeda, beneficiário, finalidade e elegibilidade; o CRM regista correspondências explicáveis e sujeitas a revisão humana.",P2,RF-CLU-005: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-CLU-005,1,"[{""id"":""RF-CLU-005"",""pedido"":""Gerir necessidades de financiamento e correspondência com financiadores."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 525; requirements-audit.csv""],""aceitacao"":""A necessidade contém elo, fase, instrumento, valor, moeda, beneficiário, finalidade e elegibilidade; o CRM regista correspondências explicáveis e sujeitas a revisão humana."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
+RF-CLU-005,Gerir necessidades de financiamento e correspondência com financiadores.,upgrade v4 SHA f0b9815…; p. 525; requirements-audit.csv,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","[ACT12-20261110] Directório financeiro/conteúdo fornecido em QA; não instalado/publicado. Homologação1c75a30a mantém zero fichas financeiras. | Histórico anterior preservado: Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-CLU-005: A necessidade contém elo, fase, instrumento, valor, moeda, beneficiário, finalidade e elegibilidade; o CRM regista correspondências explicáveis e sujeitas a revisão humana.",P2,RF-CLU-005: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-CLU-005,1,"[{""id"":""RF-CLU-005"",""pedido"":""Gerir necessidades de financiamento e correspondência com financiadores."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 525; requirements-audit.csv""],""aceitacao"":""A necessidade contém elo, fase, instrumento, valor, moeda, beneficiário, finalidade e elegibilidade; o CRM regista correspondências explicáveis e sujeitas a revisão humana."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","[ACT12-20261110] Onze fichas fundamentadas (7instituições+4programas/fundos; BNI Capital como produto BNI), pesquisa local/necessidade no mesmo produto, condições/fontes/contactos e gravação/recuperação no mesmo dossier demonstradas. Restam instalação, preparação/revisão/publicação autenticada e consulta real no destino; visual pendente. Outros critérios desta linha não encerrados. | Histórico anterior preservado: Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,"[ACT12-20261110] outputs/funding-directory-20261110/{verification,content-qa,dossier-qa}.json e catalogo-qa.html/11fichas;3API/127asserções,13frontend; fonte benchmark de melhorias investeMoz.docx SHA065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617. | Histórico anterior preservado: outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.",território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
RF-CLU-006,"Gerir programas, iniciativas, constrangimentos e planos de acção.",upgrade v4 SHA f0b9815…; p. 529; requirements-audit.csv,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-CLU-006: Cada registo possui objectivo ou problema, território, responsável, parceiros, orçamento, prazo, indicador, dependências, risco, escalonamento, estado e decisão necessária.",P2,RF-CLU-006: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-CLU-006,1,"[{""id"":""RF-CLU-006"",""pedido"":""Gerir programas, iniciativas, constrangimentos e planos de acção."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 529; requirements-audit.csv""],""aceitacao"":""Cada registo possui objectivo ou problema, território, responsável, parceiros, orçamento, prazo, indicador, dependências, risco, escalonamento, estado e decisão necessária."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
RF-CLU-007,Publicar páginas e dossiers de cluster a partir de dados validados.,upgrade v4 SHA f0b9815…; p. 533; requirements-audit.csv | portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 558 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 253 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 558,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-CLU-007: A página reúne visão, cadeia, mapa, projectos, lacunas, actores, financiamento, reguladores, riscos, indicadores e chamada para acção, preservando fontes, versões e níveis de divulgação. | MASTER-e1169a77-0046: Publicar páginas e dossiers de cluster a partir de dados validados. | MASTER-51b8f0ad-0026: Publicar páginas e dossiers de cluster a partir de dados validados. | MASTER-edece80c-0046: Publicar páginas e dossiers de cluster a partir de dados validados.",P2,RF-CLU-007: Relatório 25/09 conservado; estado histórico não promove conclusão | MASTER-e1169a77-0046: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0026: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0046: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,RF-CLU-007 | MASTER-e1169a77-0046 | MASTER-51b8f0ad-0026 | MASTER-edece80c-0046,4,"[{""id"":""RF-CLU-007"",""pedido"":""Publicar páginas e dossiers de cluster a partir de dados validados."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 533; requirements-audit.csv""],""aceitacao"":""A página reúne visão, cadeia, mapa, projectos, lacunas, actores, financiamento, reguladores, riscos, indicadores e chamada para acção, preservando fontes, versões e níveis de divulgação."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""cartografia/relações""},{""id"":""MASTER-e1169a77-0046"",""pedido"":""Publicar páginas e dossiers de cluster a partir de dados validados."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 558""],""aceitacao"":""Publicar páginas e dossiers de cluster a partir de dados validados."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-51b8f0ad-0026"",""pedido"":""Publicar páginas e dossiers de cluster a partir de dados validados."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 253""],""aceitacao"":""Publicar páginas e dossiers de cluster a partir de dados validados."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-edece80c-0046"",""pedido"":""Publicar páginas e dossiers de cluster a partir de dados validados."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 558""],""aceitacao"":""Publicar páginas e dossiers de cluster a partir de dados validados."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
RF-CLU-008,"Captar, qualificar e acompanhar manifestações de interesse por cluster.",upgrade v4 SHA f0b9815…; p. 537; requirements-audit.csv,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","RF-CLU-008: O investidor informa cluster, elo, território, papel, capacidade, instrumento e horizonte; o CRM cria o lead com origem, responsável, pontuação, estado e próxima acção.",P2,RF-CLU-008: Relatório 25/09 conservado; estado histórico não promove conclusão,RF-CLU-008,1,"[{""id"":""RF-CLU-008"",""pedido"":""Captar, qualificar e acompanhar manifestações de interesse por cluster."",""fontes"":[""upgrade v4 SHA f0b9815…; p. 537; requirements-audit.csv""],""aceitacao"":""O investidor informa cluster, elo, território, papel, capacidade, instrumento e horizonte; o CRM cria o lead com origem, responsável, pontuação, estado e próxima acção."",""estado"":""parcial"",""variantes"":""Relatório 25/09 conservado; estado histórico não promove conclusão"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
@@ -761,7 +761,7 @@ MASTER-e1169a77-0018,"A evolução do portal deve ser orientada por métricas de
MASTER-e1169a77-0019,"Antes da construção dos novos módulos, deverá ser concluída a Fase Zero definida nas secções 4.8.3 e 4.8.6, que concentra as melhorias imediatas da versão existente e os respectivos critérios de entrega. Esta etapa não depende de integrações institucionais ainda não confirmadas.",portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 421 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 421,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-e1169a77-0019: Antes da construção dos novos módulos, deverá ser concluída a Fase Zero definida nas secções 4.8.3 e 4.8.6, que concentra as melhorias imediatas da versão existente e os respectivos critérios de entrega. Esta etapa não depende de integrações institucionais ainda não confirmadas. | MASTER-edece80c-0019: Antes da construção dos novos módulos, deverá ser concluída a Fase Zero definida nas secções 4.8.3 e 4.8.6, que concentra as melhorias imediatas da versão existente e os respectivos critérios de entrega. Esta etapa não depende de integrações institucionais ainda não confirmadas.",P2,MASTER-e1169a77-0019: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0019: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-e1169a77-0019 | MASTER-edece80c-0019,2,"[{""id"":""MASTER-e1169a77-0019"",""pedido"":""Antes da construção dos novos módulos, deverá ser concluída a Fase Zero definida nas secções 4.8.3 e 4.8.6, que concentra as melhorias imediatas da versão existente e os respectivos critérios de entrega. Esta etapa não depende de integrações institucionais ainda não confirmadas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 421""],""aceitacao"":""Antes da construção dos novos módulos, deverá ser concluída a Fase Zero definida nas secções 4.8.3 e 4.8.6, que concentra as melhorias imediatas da versão existente e os respectivos critérios de entrega. Esta etapa não depende de integrações institucionais ainda não confirmadas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-edece80c-0019"",""pedido"":""Antes da construção dos novos módulos, deverá ser concluída a Fase Zero definida nas secções 4.8.3 e 4.8.6, que concentra as melhorias imediatas da versão existente e os respectivos critérios de entrega. Esta etapa não depende de integrações institucionais ainda não confirmadas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 421""],""aceitacao"":""Antes da construção dos novos módulos, deverá ser concluída a Fase Zero definida nas secções 4.8.3 e 4.8.6, que concentra as melhorias imediatas da versão existente e os respectivos critérios de entrega. Esta etapa não depende de integrações institucionais ainda não confirmadas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
MASTER-e1169a77-0021,"A implementação deverá partir de um diagnóstico técnico e funcional da versão actual do portal, identificando componentes reutilizáveis, dívida técnica, limitações de conteúdo, integrações existentes, qualidade dos dados, desempenho, segurança, acessibilidade e cobertura dos fluxos. Esse diagnóstico deverá produzir uma matriz Conservar, Melhorar, Substituir ou Descontinuar, evitando a reconstrução de funcionalidades estáveis e preservando os investimentos já realizados.",portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 423 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 423,governação/outros,/api/v1/investment/admin/interests/{interest}/status; /management/history; /management/interests; /management/interests/{interest}; /management/interests/{interest}/consent/contact; /management/interests/{interest}/consent/proponent; /management/opportunities; /management/opportunities/create; /management/opportunities/drafts; /management/opportunities/{id}/draft; /management/opportunities/{id}/edit; /management/opportunities/{id}/lifecycle,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-e1169a77-0021: A implementação deverá partir de um diagnóstico técnico e funcional da versão actual do portal, identificando componentes reutilizáveis, dívida técnica, limitações de conteúdo, integrações existentes, qualidade dos dados, desempenho, segurança, acessibilidade e cobertura dos fluxos. Esse diagnóstico deverá produzir uma matriz Conservar, Melhorar, Substituir ou Descontinuar, evitando a reconstrução de funcionalidades estáveis e preservando os investimentos já realizados. | MASTER-edece80c-0021: A implementação deverá partir de um diagnóstico técnico e funcional da versão actual do portal, identificando componentes reutilizáveis, dívida técnica, limitações de conteúdo, integrações existentes, qualidade dos dados, desempenho, segurança, acessibilidade e cobertura dos fluxos. Esse diagnóstico deverá produzir uma matriz Conservar, Melhorar, Substituir ou Descontinuar, evitando a reconstrução de funcionalidades estáveis e preservando os investimentos já realizados.",P2,MASTER-e1169a77-0021: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0021: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-e1169a77-0021 | MASTER-edece80c-0021,2,"[{""id"":""MASTER-e1169a77-0021"",""pedido"":""A implementação deverá partir de um diagnóstico técnico e funcional da versão actual do portal, identificando componentes reutilizáveis, dívida técnica, limitações de conteúdo, integrações existentes, qualidade dos dados, desempenho, segurança, acessibilidade e cobertura dos fluxos. Esse diagnóstico deverá produzir uma matriz Conservar, Melhorar, Substituir ou Descontinuar, evitando a reconstrução de funcionalidades estáveis e preservando os investimentos já realizados."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 423""],""aceitacao"":""A implementação deverá partir de um diagnóstico técnico e funcional da versão actual do portal, identificando componentes reutilizáveis, dívida técnica, limitações de conteúdo, integrações existentes, qualidade dos dados, desempenho, segurança, acessibilidade e cobertura dos fluxos. Esse diagnóstico deverá produzir uma matriz Conservar, Melhorar, Substituir ou Descontinuar, evitando a reconstrução de funcionalidades estáveis e preservando os investimentos já realizados."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""},{""id"":""MASTER-edece80c-0021"",""pedido"":""A implementação deverá partir de um diagnóstico técnico e funcional da versão actual do portal, identificando componentes reutilizáveis, dívida técnica, limitações de conteúdo, integrações existentes, qualidade dos dados, desempenho, segurança, acessibilidade e cobertura dos fluxos. Esse diagnóstico deverá produzir uma matriz Conservar, Melhorar, Substituir ou Descontinuar, evitando a reconstrução de funcionalidades estáveis e preservando os investimentos já realizados."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 423""],""aceitacao"":""A implementação deverá partir de um diagnóstico técnico e funcional da versão actual do portal, identificando componentes reutilizáveis, dívida técnica, limitações de conteúdo, integrações existentes, qualidade dos dados, desempenho, segurança, acessibilidade e cobertura dos fluxos. Esse diagnóstico deverá produzir uma matriz Conservar, Melhorar, Substituir ou Descontinuar, evitando a reconstrução de funcionalidades estáveis e preservando os investimentos já realizados."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""governação/outros""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,Requisito transversal; consultar estado-ativo-after.json,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Localizar obrigação verificável e consumidores/contrato atuais antes de estimar implementação ou declarar conclusão. Critério individual original preservado; cobertura atual ainda não individualizada.,"Entidades, schema/configuração e serviços existentes; correspondência individual por estabelecer","Ler secção/versão correspondente; distinguir requisito funcional, decisão e exemplo. Fontes oficiais já aceites.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: governação e demais cláusulas. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,governação e demais cláusulas,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",AGENTS.md — componentes do domínio encontrados; correspondência integral deste requisito não presumida,; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
MASTER-e1169a77-0023,"O upgrade deverá preservar, avaliar e aprofundar os cinco eixos informativos já apresentados no portal InvestMoz — “Porquê investir em Moçambique”, “Actividades económicas”, “Oportunidades de negócios”, “Áreas de investimento” e “Reguladores” — convertendo-os progressivamente de páginas predominantemente informativas numa jornada orientada à decisão e à conversão. Antes de substituir qualquer componente, a equipa deverá confirmar o seu uso, qualidade, dependências e possibilidade de reutilização. Cada conteúdo deverá conduzir o visitante da compreensão do mercado para a selecção de uma oportunidade, consulta de requisitos, manifestação de interesse e acompanhamento no CRM.",portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 437 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 437,oportunidades,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /investidor/terra-duat; /investidor/terra-duat/novo; /investidor/terra-duat/{id}; /investidor/terra-duat/{id}/actualizacoes; /investidor/terra-duat/{id}/documentos; /investidor/terra-duat/{id}/documentos/{attachment}; /investidor/terra-duat/{id}/editar; /investidor/terra-duat/{id}/imprimir; /investidor/terra-duat/{id}/solicitar-apoio; /management/opportunities,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-e1169a77-0023: O upgrade deverá preservar, avaliar e aprofundar os cinco eixos informativos já apresentados no portal InvestMoz — “Porquê investir em Moçambique”, “Actividades económicas”, “Oportunidades de negócios”, “Áreas de investimento” e “Reguladores” — convertendo-os progressivamente de páginas predominantemente informativas numa jornada orientada à decisão e à conversão. Antes de substituir qualquer componente, a equipa deverá confirmar o seu uso, qualidade, dependências e possibilidade de reutilização. Cada conteúdo deverá conduzir o visitante da compreensão do mercado para a selecção de uma oportunidade, consulta de requisitos, manifestação de interesse e acompanhamento no CRM. | MASTER-edece80c-0023: O upgrade deverá preservar, avaliar e aprofundar os cinco eixos informativos já apresentados no portal InvestMoz — “Porquê investir em Moçambique”, “Actividades económicas”, “Oportunidades de negócios”, “Áreas de investimento” e “Reguladores” — convertendo-os progressivamente de páginas predominantemente informativas numa jornada orientada à decisão e à conversão. Antes de substituir qualquer componente, a equipa deverá confirmar o seu uso, qualidade, dependências e possibilidade de reutilização. Cada conteúdo deverá conduzir o visitante da compreensão do mercado para a selecção de uma oportunidade, consulta de requisitos, manifestação de interesse e acompanhamento no CRM.",P2,MASTER-e1169a77-0023: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0023: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-e1169a77-0023 | MASTER-edece80c-0023,2,"[{""id"":""MASTER-e1169a77-0023"",""pedido"":""O upgrade deverá preservar, avaliar e aprofundar os cinco eixos informativos já apresentados no portal InvestMoz — “Porquê investir em Moçambique”, “Actividades económicas”, “Oportunidades de negócios”, “Áreas de investimento” e “Reguladores” — convertendo-os progressivamente de páginas predominantemente informativas numa jornada orientada à decisão e à conversão. Antes de substituir qualquer componente, a equipa deverá confirmar o seu uso, qualidade, dependências e possibilidade de reutilização. Cada conteúdo deverá conduzir o visitante da compreensão do mercado para a selecção de uma oportunidade, consulta de requisitos, manifestação de interesse e acompanhamento no CRM."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 437""],""aceitacao"":""O upgrade deverá preservar, avaliar e aprofundar os cinco eixos informativos já apresentados no portal InvestMoz — “Porquê investir em Moçambique”, “Actividades económicas”, “Oportunidades de negócios”, “Áreas de investimento” e “Reguladores” — convertendo-os progressivamente de páginas predominantemente informativas numa jornada orientada à decisão e à conversão. Antes de substituir qualquer componente, a equipa deverá confirmar o seu uso, qualidade, dependências e possibilidade de reutilização. Cada conteúdo deverá conduzir o visitante da compreensão do mercado para a selecção de uma oportunidade, consulta de requisitos, manifestação de interesse e acompanhamento no CRM."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-edece80c-0023"",""pedido"":""O upgrade deverá preservar, avaliar e aprofundar os cinco eixos informativos já apresentados no portal InvestMoz — “Porquê investir em Moçambique”, “Actividades económicas”, “Oportunidades de negócios”, “Áreas de investimento” e “Reguladores” — convertendo-os progressivamente de páginas predominantemente informativas numa jornada orientada à decisão e à conversão. Antes de substituir qualquer componente, a equipa deverá confirmar o seu uso, qualidade, dependências e possibilidade de reutilização. Cada conteúdo deverá conduzir o visitante da compreensão do mercado para a selecção de uma oportunidade, consulta de requisitos, manifestação de interesse e acompanhamento no CRM."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 437""],""aceitacao"":""O upgrade deverá preservar, avaliar e aprofundar os cinco eixos informativos já apresentados no portal InvestMoz — “Porquê investir em Moçambique”, “Actividades económicas”, “Oportunidades de negócios”, “Áreas de investimento” e “Reguladores” — convertendo-os progressivamente de páginas predominantemente informativas numa jornada orientada à decisão e à conversão. Antes de substituir qualquer componente, a equipa deverá confirmar o seu uso, qualidade, dependências e possibilidade de reutilização. Cada conteúdo deverá conduzir o visitante da compreensão do mercado para a selecção de uma oportunidade, consulta de requisitos, manifestação de interesse e acompanhamento no CRM."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.opportunities: 6 registos; public.opportunity_images: tabela ausente; public.opportunity_documents: tabela ausente; public.opportunity_location_drafts: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources","030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: oportunidades. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
-MASTER-e1169a77-0026,"A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo.",portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 474 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 131 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 173 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 474,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-e1169a77-0026: A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo. | MASTER-f70ce307-0009: A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo. | MASTER-51b8f0ad-0009: A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo. | MASTER-edece80c-0026: A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo.",P2,MASTER-e1169a77-0026: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0009: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0009: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0026: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-e1169a77-0026 | MASTER-f70ce307-0009 | MASTER-51b8f0ad-0009 | MASTER-edece80c-0026,4,"[{""id"":""MASTER-e1169a77-0026"",""pedido"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 474""],""aceitacao"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-f70ce307-0009"",""pedido"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 131""],""aceitacao"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-51b8f0ad-0009"",""pedido"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 173""],""aceitacao"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-edece80c-0026"",""pedido"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 474""],""aceitacao"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
+MASTER-e1169a77-0026,"A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo.",portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 474 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 131 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 173 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 474,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","[ACT12-20261110] Directório financeiro/conteúdo fornecido em QA; não instalado/publicado. Homologação1c75a30a mantém zero fichas financeiras. | Histórico anterior preservado: Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-e1169a77-0026: A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo. | MASTER-f70ce307-0009: A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo. | MASTER-51b8f0ad-0009: A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo. | MASTER-edece80c-0026: A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo.",P2,MASTER-e1169a77-0026: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0009: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0009: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0026: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-e1169a77-0026 | MASTER-f70ce307-0009 | MASTER-51b8f0ad-0009 | MASTER-edece80c-0026,4,"[{""id"":""MASTER-e1169a77-0026"",""pedido"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 474""],""aceitacao"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-f70ce307-0009"",""pedido"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 131""],""aceitacao"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-51b8f0ad-0009"",""pedido"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 173""],""aceitacao"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-edece80c-0026"",""pedido"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 474""],""aceitacao"":""A plataforma deve manter um directório verificado de fornecedores locais, prestadores de serviços, operadores logísticos, consultores, instituições financeiras, centros de formação e parceiros tecnológicos. Cada projecto poderá publicar necessidades de aquisição e competências, enquanto fornecedores poderão apresentar capacidade, certificações, cobertura territorial e referências. O sistema deverá recomendar ligações entre investidores e fornecedores, medir contratos locais, emprego, formação e transferência de tecnologia e impedir que a recomendação seja apresentada como certificação ou garantia da Tempo."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","[ACT12-20261110] Onze fichas fundamentadas (7instituições+4programas/fundos; BNI Capital como produto BNI), pesquisa local/necessidade no mesmo produto, condições/fontes/contactos e gravação/recuperação no mesmo dossier demonstradas. Restam instalação, preparação/revisão/publicação autenticada e consulta real no destino; visual pendente. Outros critérios desta linha não encerrados. | Histórico anterior preservado: Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,"[ACT12-20261110] outputs/funding-directory-20261110/{verification,content-qa,dossier-qa}.json e catalogo-qa.html/11fichas;3API/127asserções,13frontend; fonte benchmark de melhorias investeMoz.docx SHA065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617. | Histórico anterior preservado: outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.",território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
MASTER-e1169a77-0035,"A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência.",portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 485 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 142 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 184 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 485,oportunidades,/api/v1/business-opportunities; /api/v1/business-opportunities/{slug}; /investidor/terra-duat; /investidor/terra-duat/novo; /investidor/terra-duat/{id}; /investidor/terra-duat/{id}/actualizacoes; /investidor/terra-duat/{id}/documentos; /investidor/terra-duat/{id}/documentos/{attachment}; /investidor/terra-duat/{id}/editar; /investidor/terra-duat/{id}/imprimir; /investidor/terra-duat/{id}/solicitar-apoio; /management/opportunities,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-e1169a77-0035: A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência. | MASTER-f70ce307-0018: A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência. | MASTER-51b8f0ad-0018: A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência. | MASTER-edece80c-0035: A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência.",P2,MASTER-e1169a77-0035: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0018: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0018: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0035: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-e1169a77-0035 | MASTER-f70ce307-0018 | MASTER-51b8f0ad-0018 | MASTER-edece80c-0035,4,"[{""id"":""MASTER-e1169a77-0035"",""pedido"":""A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 485""],""aceitacao"":""A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-f70ce307-0018"",""pedido"":""A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 142""],""aceitacao"":""A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-51b8f0ad-0018"",""pedido"":""A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 184""],""aceitacao"":""A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""},{""id"":""MASTER-edece80c-0035"",""pedido"":""A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 485""],""aceitacao"":""A análise de plataformas de promoção de investimento indica quatro modelos complementares. A Invest India e a India Investment Grid combinam inteligência sectorial, projectos pesquisáveis, manifestação de interesse, ligação a promotores, avaliação de localização e acompanhamento do investidor. A Invest Saudi integra promoção, oportunidades, registo do investidor, serviços electrónicos, incentivos e assistência antes, durante e depois da instalação. O Rwanda Development Board articula balcão único, registo do investimento, licenciamento, avaliação ambiental, procedimentos empresariais e acompanhamento pós-investimento com resolução de constrangimentos. A Estónia demonstra o valor da identidade digital, assinatura electrónica, constituição remota de empresas e acesso integrado a serviços públicos. Para alcançar um nível comparável, o InvestMoz deve combinar promoção, transacção assistida, identidade digital, interoperabilidade, acompanhamento pós-investimento e inteligência de mercado numa única experiência."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""oportunidades""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.opportunities: 6 registos; public.opportunity_images: tabela ausente; public.opportunity_documents: tabela ausente; public.opportunity_location_drafts: tabela ausente,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.",Reconciliar contrato/cláusula e provas por categoria; completar apenas falha/variante executável identificada. Response normativo não é completo. Critério individual original preservado; cobertura atual ainda não individualizada.,"OpportunityManagement, OpportunityCanonicalContract/Response, OpportunityReviewMateriality, PortalProfileAccess, OpportunityResources","030000→040000 já instalados; contratos/resources existentes, sessão/MFA, ClamD e worker para ficheiros; gates das seis categorias ON. Variantes modulares/offers continuam separadas.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: oportunidades. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,oportunidades,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/OpportunityManagement.php; app/Services/OpportunityResources.php; resources/js/pages/management/opportunity-draft.tsx — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"OpportunityManagementTest, OpportunityResourcesTest, OpportunityOriginReviewTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
MASTER-e1169a77-0040,"O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação.",portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 521 | portal do investidor\Portal V4\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 178 | portal do investidor\Portal V4\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 220 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 521,Balcão/orientação,/balcao-virtual/contextos; /balcao-virtual/dossiers; /balcao-virtual/dossiers/{id}; /balcao-virtual/dossiers/{id}/documentos; /balcao-virtual/dossiers/{id}/documentos/{document}; /balcao-virtual/dossiers/{id}/documentos/{document}/conferencia; /balcao-virtual/dossiers/{id}/etapas; /balcao-virtual/dossiers/{id}/fontes; /balcao-virtual/dossiers/{id}/orientacao; /balcao-virtual/dossiers/{id}/pedidos; /balcao-virtual/dossiers/{id}/pressupostos; /balcao-virtual/dossiers/{id}/recomendacoes,"VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-e1169a77-0040: O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação. | MASTER-f70ce307-0023: O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação. | MASTER-51b8f0ad-0023: O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação. | MASTER-edece80c-0040: O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação.",P2,MASTER-e1169a77-0040: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-f70ce307-0023: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-51b8f0ad-0023: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0040: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-e1169a77-0040 | MASTER-f70ce307-0023 | MASTER-51b8f0ad-0023 | MASTER-edece80c-0040,4,"[{""id"":""MASTER-e1169a77-0040"",""pedido"":""O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 521""],""aceitacao"":""O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-f70ce307-0023"",""pedido"":""O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v1.docx; SHA f70ce3075523c6278e00dce15b9c7acf2b690679e16959ae5f7d007e754cfc6e; w:p 178""],""aceitacao"":""O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-51b8f0ad-0023"",""pedido"":""O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v2.docx; SHA 51b8f0ad3296d1064a5c12b450874fc72640869f10a164319cd7f3153dd3a086; w:p 220""],""aceitacao"":""O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""},{""id"":""MASTER-edece80c-0040"",""pedido"":""O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 521""],""aceitacao"":""O portal deve disponibilizar um balcão único digital que apresente ao investidor um plano personalizado de instalação, com procedimentos, documentos, entidades, dependências, custos validados, prazos indicativos e estado de cada pedido. O investidor deve preencher os dados comuns uma única vez, autorizar a sua reutilização e acompanhar o processo num painel consolidado. A arquitectura deve adoptar APIs, webhooks e eventos de domínio para receber alterações dos sistemas das entidades competentes, evitando sincronizações manuais e pedidos repetidos de informação."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""Balcão/orientação""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.desk_cases: 1 registos; public.desk_requests: 0 registos; public.desk_institutional_links: 0 registos; public.desk_messages: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Pedido contextual→gravar→submeter→nova sessão→gestor→mensagem/documentos/resultado, reaproveitando A/B. Critério individual original preservado; cobertura atual ainda não individualizada.","VirtualDesk, pedidos/casos, anexos, contexto dossier e acompanhamento","Perfis próprios do Balcão; serviços/campos e decisões externas aplicáveis, sem inventar destinatário/prazo.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: balcão. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,balcão,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",app/Services/VirtualDesk.php; app/Services/Ai/InvestorGuidance.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,InvestorGuidanceTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.,Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
MASTER-e1169a77-0041,"Decisão tecnológica: a arquitectura alvo manterá React no frontend e Laravel no backend, após actualização das versões, dependências, segurança, modularidade, desempenho e cobertura de testes. O PostgreSQL/PostGIS será a base de dados definitiva da nova versão, devido aos requisitos de corredores, polígonos, áreas de influência, proximidade, intersecções, inteligência territorial e relações geoespaciais. O MySQL permanecerá temporariamente como fonte legada durante a migração e não receberá novos domínios funcionais. A transição deverá ser incremental, reconciliável e reversível, com ensaios, critérios de corte, rollback, validação de integridade e desactivação formal das dependências antigas.",portal do investidor\Portal V4\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 522 | portal do investidor\Portal V4\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 522,cartografia/relações,/api/v1/geo/drafts; /api/v1/geo/search; /api/v1/geo/sources; /api/v1/geo/sources/{id}/transitions; /api/v1/geo/territories; /api/v1/geo/territories/{id}; /api/v1/geo/territories/{id}/transitions; /api/v1/geo/territories/{type}/{id}; /api/v1/geo/{collection}; /api/v1/investment/compare; /api/v1/investment/export; /api/v1/investment/favourites/{id},"InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.",outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,Sem evidência suficiente,"Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","MASTER-e1169a77-0041: Decisão tecnológica: a arquitectura alvo manterá React no frontend e Laravel no backend, após actualização das versões, dependências, segurança, modularidade, desempenho e cobertura de testes. O PostgreSQL/PostGIS será a base de dados definitiva da nova versão, devido aos requisitos de corredores, polígonos, áreas de influência, proximidade, intersecções, inteligência territorial e relações geoespaciais. O MySQL permanecerá temporariamente como fonte legada durante a migração e não receberá novos domínios funcionais. A transição deverá ser incremental, reconciliável e reversível, com ensaios, critérios de corte, rollback, validação de integridade e desactivação formal das dependências antigas. | MASTER-edece80c-0041: Decisão tecnológica: a arquitectura alvo manterá React no frontend e Laravel no backend, após actualização das versões, dependências, segurança, modularidade, desempenho e cobertura de testes. O PostgreSQL/PostGIS será a base de dados definitiva da nova versão, devido aos requisitos de corredores, polígonos, áreas de influência, proximidade, intersecções, inteligência territorial e relações geoespaciais. O MySQL permanecerá temporariamente como fonte legada durante a migração e não receberá novos domínios funcionais. A transição deverá ser incremental, reconciliável e reversível, com ensaios, critérios de corte, rollback, validação de integridade e desactivação formal das dependências antigas.",P2,MASTER-e1169a77-0041: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas | MASTER-edece80c-0041: Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas,MASTER-e1169a77-0041 | MASTER-edece80c-0041,2,"[{""id"":""MASTER-e1169a77-0041"",""pedido"":""Decisão tecnológica: a arquitectura alvo manterá React no frontend e Laravel no backend, após actualização das versões, dependências, segurança, modularidade, desempenho e cobertura de testes. O PostgreSQL/PostGIS será a base de dados definitiva da nova versão, devido aos requisitos de corredores, polígonos, áreas de influência, proximidade, intersecções, inteligência territorial e relações geoespaciais. O MySQL permanecerá temporariamente como fonte legada durante a migração e não receberá novos domínios funcionais. A transição deverá ser incremental, reconciliável e reversível, com ensaios, critérios de corte, rollback, validação de integridade e desactivação formal das dependências antigas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v6 programacao.docx; SHA e1169a7743b13ff6c950d3ffd4672a2afea32e81da84885e11154b7d8de9241e; w:p 522""],""aceitacao"":""Decisão tecnológica: a arquitectura alvo manterá React no frontend e Laravel no backend, após actualização das versões, dependências, segurança, modularidade, desempenho e cobertura de testes. O PostgreSQL/PostGIS será a base de dados definitiva da nova versão, devido aos requisitos de corredores, polígonos, áreas de influência, proximidade, intersecções, inteligência territorial e relações geoespaciais. O MySQL permanecerá temporariamente como fonte legada durante a migração e não receberá novos domínios funcionais. A transição deverá ser incremental, reconciliável e reversível, com ensaios, critérios de corte, rollback, validação de integridade e desactivação formal das dependências antigas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""},{""id"":""MASTER-edece80c-0041"",""pedido"":""Decisão tecnológica: a arquitectura alvo manterá React no frontend e Laravel no backend, após actualização das versões, dependências, segurança, modularidade, desempenho e cobertura de testes. O PostgreSQL/PostGIS será a base de dados definitiva da nova versão, devido aos requisitos de corredores, polígonos, áreas de influência, proximidade, intersecções, inteligência territorial e relações geoespaciais. O MySQL permanecerá temporariamente como fonte legada durante a migração e não receberá novos domínios funcionais. A transição deverá ser incremental, reconciliável e reversível, com ensaios, critérios de corte, rollback, validação de integridade e desactivação formal das dependências antigas."",""fontes"":[""portal do investidor\\Portal V4\\upgrade do portal de investimentos v5 programacao.docx; SHA edece80c0519537244f8a8b86456af0aa92de1c526f791bb0ee9b85af7a7e8b2; w:p 522""],""aceitacao"":""Decisão tecnológica: a arquitectura alvo manterá React no frontend e Laravel no backend, após actualização das versões, dependências, segurança, modularidade, desempenho e cobertura de testes. O PostgreSQL/PostGIS será a base de dados definitiva da nova versão, devido aos requisitos de corredores, polígonos, áreas de influência, proximidade, intersecções, inteligência territorial e relações geoespaciais. O MySQL permanecerá temporariamente como fonte legada durante a migração e não receberá novos domínios funcionais. A transição deverá ser incremental, reconciliável e reversível, com ensaios, critérios de corte, rollback, validação de integridade e desactivação formal das dependências antigas."",""estado"":""parcial"",""variantes"":""Todas as ocorrências exatas preservadas nas fontes; variantes de texto têm linhas distintas"",""modulo"":""cartografia/relações""}]",Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Não demonstrado individualmente; localizar critério e executar em QA.,Texto exatamente equivalente no mesmo módulo; sem fusão semântica aproximada,parcial,public.geo_locations: 1990 registos; public.geo_geometries: 0 registos; public.project_locations: 28 registos; public.cluster_projects: 13 registos; public.opportunity_projects: 0 registos; public.opportunity_clusters: 0 registos,"A evidência existente é do domínio ou uma declaração histórica; não identifica a demonstração integral desta cláusula. Não afirmar implementado/parcial apenas por componente, menu ou teste global.","Demonstrar consumidor: pesquisar→selecionar→gravar→nova sessão→renderizar limite correto; conservar pai, código e fonte. Critério individual original preservado; cobertura atual ainda não individualizada.","InvestmentGeography, campos TerritoryFields/ProvinceSelect, geo_locations/geo_geometries e importador autenticado","QA408/581INE; ativo0geometrias;173correspondências por nome/edição/pai, Mandie ambíguo. Publicação é ação separada.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,Reconciliação e prova individual antes de estimar alteração,Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: território. Esforço de código adicional só após lacuna reproduzida.,outputs/investmoz-audit-current-20261012/runtime-active.json; runtime-qa18445.json. Inventário/GET do domínio não demonstra esta cláusula individual.,território,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Verificar individualmente este critério no contrato e percurso aplicável; a matriz inicial conserva texto/fonte sem o promover a aceitação.,"QA de UI quando browser disponível; reutilizar o domínio existente. Dados/decisões específicos no backlog, sem segunda validação de fonte oficial.",resources/js/components/investment-territory.tsx; app/Http/Controllers/InvestmentTerritoryController.php — componentes do domínio encontrados; correspondência integral deste requisito não presumida,"InvestmentTerritoryTest, TerritorialRegistryTest, InvestmentTerritorialTraceabilityTest, InvestmentZoneTest; suite global QA e GET por perfil disponíveis. Evidência do domínio não demonstra integralmente esta cláusula; UI individual pendente.",Não demonstrado individualmente; localizar critério e executar em QA.,,,,"0,5–2 h de análise/prova por cláusula sem correspondência, agrupada por contrato/consumidor; não somar estas faixas como projetos independentes. Implementação indeterminada até localizar lacuna.",,,
@@ -10894,11 +10894,11 @@ AUD-ESTABLISHMENT-01,"Importar empresas licenciadas e empreendimentos turístico
[RECONCILIACAO-43-20261019] Código e critérios confrontados com leitura READ ONLY fresca; PROVA-RECONCILIACAO-43-LEITURA.json, RECONCILIACAO-43-QA-FONTES.json, RECONCILIACAO-43-SCHEMA-QA.json. Não encerra critério funcional por inventário.
[PLANO-P1-P6-20261019] Plano Tempo: 27–46 h disponibilização; P7 e desenvolvimento separados. Inclusão 36–39 expressa para decisão; sem publicação automática. Revisão de proposta d87970e701f0. Roteiro no manual existente; não encerra critério por instalação. [PROACTIVE-SUPPLY-REVIEW-20261102] Reconciliação com prova aceite de28/10/2026: importação privada específica já entregue, com361464 observações administrativas,147165 repetições conservadas e214299 projecções distintas; nenhum destes números é contagem de empresas únicas. Recibo proactive-supply-git-delivery-20261028.json e motores prepare/export/load-proactive-supply.py preservados. Os estados anteriores a essa entrega são históricos, não prova de ausência actual. Acrescentada consulta privada só de leitura das origens/linhas, pendências territoriais, repetições e conflitos, com cobertura explícita, referências recuperáveis e filtros sem acentos. Corrigidas respostas antigas após mudança de contexto; hashes de identidade/recibos privados excluídos da projecção. 9 Feature/138 asserções e seis frontend; PHPStan, tipos, lint/Pint/build aprovados. Onze tabelas QA com contagens/checksums iguais antes/depois. Recibo proactive_supply_review_increment_20261102; sem importação ou alteração no activo.",incrementos futuros,12/10/2026 — reconciliação e HTTP; nova inspeção visual bloqueada,,,Importador específico destes cadastros e reconciliação de entidades/versões ainda por preparar. Importação de artigos do legado e geometrias não substitui esta carga.,Identificar fontes/dados/âmbito/período concretos; não reabrir aceitação oficial.,"Inventariar os ficheiros fornecidos, inspecionar colunas e IDs reais; reutilizar organizações/estabelecimentos existentes por correspondência, serviços de importação privada/hash e hierarquia territorial. Não criar organizações automaticamente com base em nome ou licença.",Leitura integral do exemplar local e inventário código/documental; importação/retrieval deste DOCX não comprova a funcionalidade descrita.,Contrato específico não demonstrado.,,,,24–48 h por formato aprovado; acesso ao ficheiro e identificadores são pré-condições.,,,
-AUD-FUND-01,Catálogo de fundos nacionais e territoriais com elegibilidade explicada e atualização,[Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] Alias documental INV-005; SEG-bf26caee-p157; SEG-bf26caee-p158; SEG-bf26caee-p483; SEG-bf26caee-p636; SEG-bf26caee-p723,INV-005 / incremento posterior ao workflow das seis categorias,"Consumidor específico ainda por delimitar; reutilizar rotas de biblioteca/Balcão/negócios/simulador pertinentes, sem atribuir existência fictícia.","Biblioteca, taxonomias, fontes e filtros comuns. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","[CONCLUSAO-INTEGRAL-20261110] Fontes até ff726e57 na homologação teste-investidor. Não confundir instalação do código com nova concessão, habilitação nominal ou prova visual integral. | Histórico anterior preservado: Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.","segmentacao-processos-reconciliacao-20261011.md; contratos/rotas inventariados atuais; não há prova de percurso completo deste incremento. [FUNDING-EDITOR-20261102] Catálogo e editor locais: rascunhos, prévia vinculada, publicação/retirada com autoridade editorial existente, versões imutáveis, janelas/critério explicado, documentos por versão e interesse privado. Quatro testes/91 asserções e tipos aprovados. Filtros territoriais/sectoriais, ensaios de documentos, fontes reais, visual e disponibilização pendentes; requisito parcial, sem alteração no activo. Manual de 02/11 e funding_editor_increment_20261102. [FUNDING-FILTERS-20261102] Filtros locais por sector, cobertura territorial e estado de janela, com desconhecidos explícitos e cobertura parcial. Nomes/caminhos territoriais e sectores conservados por versão. Descarga verifica versão, checksum, direitos, análise e bytes; prévia obsoleta recusada. Seis testes/204 asserções, PHPStan, tipos, lint sem avisos e compilação aprovados. Recibo funding_filters_increment_20261102 e manual. Faltam fontes reais incorporadas, validação visual, ensaios de concorrência e disponibilização; requisito parcial. [FUNDING-REFERENCES-20261102] Referência oficial FDEL empacotada com fontes/edições/hashes e prévia editorial; prepara rascunho sem publicar. Uma ficha e chamada municipal histórica, repetição sem duplicar ou substituir. Sete testes/235 asserções; PHPStan, tipos e lint aprovados. Recibo funding_references_increment_20261102; manual de 02/11. Ligações sectorial/cartográfica, concorrência, visual, alertas e disponibilização pendentes. Parcial local, sem escrita no activo. [FUNDING-CONCURRENCY-20261102] Ensaio com cinco pares de processos e bloqueios observados no PostgreSQL identificou deadlock 40P01 entre retirada e interesse da mesma pessoa. Bloqueio da conta ajustado a FOR NO KEY UPDATE, conservando serialização e referências de auditoria. Cinco cenários passaram após correcção; sete Feature/235 asserções e PHPStan/Pint aprovados. Dados/versão/interesse e auditoria sem duplicação conservados; recibo funding_concurrency_increment_20261102. Não comprova carga ou todas as intercalações. Visual, vínculos da referência, alertas e disponibilização pendentes. [FUNDING-ALERTS-20261102] ACT-11: versões publicadas de fundos/programas/incentivos do catálogo integradas no motor de alertas existente, com adesão explícita e preferências antigas preservadas. Filtros e desconhecidos explicados, origem/versão/estado conservados, retirada/acesso próprio, cancelamento, lote e reversão transaccional. 36 testes/612 asserções e seis frontend; PHPStan, tipos, lint e compilação aprovados. Recibo funding_alerts_increment_20261102 e manual. Sem canais externos, recolha externa ou instalação no activo; requisito agregado parcial. [FUNDING-ASSESSMENT-CONCURRENCY-20261102] Nove pares concorrentes observados aprovaram referências/versões/interesses, geradores duplicados, preferências idempotentes e ambas as precedências de cancelamento. Conferência de critérios mostra/envia apenas perguntas aplicáveis, preserva respostas locais e reinicia por ficha/versão. Oito frontend, tipos/lint/compilação aprovados; PHP da aplicação sem delta, provas 36 Feature/612 reutilizadas após conferir hashes. Recibo funding_assessment_concurrency_increment_20261102. Visual, vínculos de referência, canais externos e disponibilização continuam pendentes.",Parcial — implementação local em QA,"02/11/2026: concorrência do gerador verificada nos cenários delimitados e perguntas aplicáveis corrigidas. Restam visual, vínculos da referência, canais externos e disponibilização/agendador. Histórico: 02/11/2026: oportunidades, concursos e fundos/apoios do catálogo integrados em alertas locais com prova. Restam canais/outras fontes externas, concorrência específica do gerador, visual, vínculos de referência e disponibilização/agendador. Histórico: 02/11/2026: concorrência demonstrada nos cinco cenários delimitados e impasse corrigido. Restam visual, vínculos ao cadastro da referência, alertas de incentivos e disponibilização. Histórico: 02/11/2026: referência oficial preparada pela interface com prova local; restam vínculos sectorial/cartográfico da referência, concorrência/visual, alertas de incentivos e disponibilização. Histórico: 02/11/2026: filtros e ensaios específicos de documentos implementados/verificados localmente. Restam fontes reais incorporadas, visual, concorrência e disponibilização; integração de incentivos nos alertas não demonstrada. Histórico preservado: 02/11/2026: implementação local parcial com editor e percurso público; restam filtros territoriais/sectoriais, provas específicas de documentos/conflitos, fontes reais e visual/disponibilização. Histórico: Catálogo de fundos com janelas e elegibilidade não implementado; ofertas experimentais não o substituem.","Documentos/entidades/fontes/parâmetros próprios antes de implementação; sem novos módulos nesta auditoria. Fundos com fonte/data, elegibilidade explicada e janela; indeterminado quando parâmetros faltam. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","Fonte, gestor, sectores, cobertura nacional ou territorial, datas/estado e documentos; filtro e explicação por critério; fundos expirados sinalizados; guardar interesse autorizado sem duplicação.",P2,"Código INV-005 é alias deste documento, não renumeração do roteiro/backlog. Conteúdo/regras pendentes não se tornam aprovados pela importação.",SEG-bf26caee-p157; SEG-bf26caee-p158; SEG-bf26caee-p483; SEG-bf26caee-p636; SEG-bf26caee-p723,5,"[{""id"": ""SEG-bf26caee-p157"", ""section"": ""1.5"", ""first_paragraph"": 157, ""last_paragraph"": 157, ""text"": ""Permitir a consulta de negócios similares na zona antes da abertura de um empreendimento, apoiando a análise de viabilidade. As fontes iniciais incluem os ficheiros de cadastro de empreendimentos turísticos de três, quatro e cinco estrelas e de empresas licenciadas já disponibilizados ao projecto. Antes da utilização, estes dados devem ser inventariados, normalizados, deduplicados, georreferenciados e sujeitos a validação de actualidade, cobertura e autorização de uso."", ""requirements"": [""AUD-ESTABLISHMENT-01"", ""AUD-FUND-01"", ""AUD-MARKET-01""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p157"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}, {""id"": ""SEG-bf26caee-p158"", ""section"": ""1.5"", ""first_paragraph"": 158, ""last_paragraph"": 158, ""text"": ""Publicar fundos de financiamento por localização ou com cobertura nacional, conforme a respectiva distribuição geográfica."", ""requirements"": [""AUD-ESTABLISHMENT-01"", ""AUD-FUND-01"", ""AUD-MARKET-01""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p158"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}, {""id"": ""SEG-bf26caee-p483"", ""section"": ""3.2.3"", ""first_paragraph"": 483, ""last_paragraph"": 483, ""text"": ""A pesquisa deve permitir combinar texto, sector, localização, raio, dimensão, classificação, estado, período e fonte, com ordenação e paginação consistentes. Os resultados de negócios similares, fundos e oportunidades devem apresentar data de actualização, cobertura, critérios usados e limitações conhecidas. Sempre que existir correspondência ou recomendação automatizada, o portal deve explicar os factores considerados, permitir correcção dos dados de entrada e evitar classificações baseadas em informação incompleta ou não validada."", ""requirements"": [""AUD-FUND-01"", ""AUD-MARKET-01"", ""AUD-OP-04""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p483"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}, {""id"": ""SEG-bf26caee-p636"", ""section"": ""6"", ""first_paragraph"": 636, ""last_paragraph"": 641, ""text"": ""INV-005 | Fundos compatíveis com explicação da correspondência | Sim | Sem demonstração suficiente | — | Demonstrar catálogo, cobertura, critérios, prazos, actualização e justificação."", ""requirements"": [""AUD-FUND-01""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p636"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}, {""id"": ""SEG-bf26caee-p723"", ""section"": ""6.1"", ""first_paragraph"": 723, ""last_paragraph"": 729, ""text"": ""§1.5 | Fundos nacionais e territoriais | INV-005 | Sim | Sem demonstração suficiente | — | Demonstrar cadastro, fonte, actualização, cobertura, critérios, prazos e correspondência fundamentada."", ""requirements"": [""AUD-FUND-01""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p723"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}]",Consumidor específico não demonstrado.,Contrato específico não demonstrado.,Nenhuma entidade/regra criada para este módulo.,"A recuperação do original da especificação é prova do acervo, não deste percurso.",Pendente de implementação/prova própria.,"Novo ID apenas após pesquisa de correspondência: os requisitos relacionados são componentes a reutilizar, não equivalências. [Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] ",não implementado,Não demonstrada para este requisito específico; nenhum pacote ativado por esta incorporação. COUNTRY02ON preservado.,"Diagnóstico específico anterior de ausência/cobertura conservado; inventário atual não demonstra entrega posterior deste incremento. Nenhuma nova implementação iniciada nesta auditoria.
+AUD-FUND-01,Catálogo de fundos nacionais e territoriais com elegibilidade explicada e atualização,[Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] Alias documental INV-005; SEG-bf26caee-p157; SEG-bf26caee-p158; SEG-bf26caee-p483; SEG-bf26caee-p636; SEG-bf26caee-p723,INV-005 / incremento posterior ao workflow das seis categorias,"Consumidor específico ainda por delimitar; reutilizar rotas de biblioteca/Balcão/negócios/simulador pertinentes, sem atribuir existência fictícia.","Biblioteca, taxonomias, fontes e filtros comuns. Capacidade existente associada ao domínio; correspondência integral desta cláusula só quando demonstrada na prova individual.","[ACT12-20261110] Directório financeiro/conteúdo fornecido em QA; não instalado/publicado. Homologação1c75a30a mantém zero fichas financeiras. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Fontes até ff726e57 na homologação teste-investidor. Não confundir instalação do código com nova concessão, habilitação nominal ou prova visual integral. | Histórico anterior preservado: Ativo investemoz:5432, 295 tabelas, COUNTRY02/030000/040000 instalados; seis categorias e administração habilitadas. Leitura atual não demonstra esta cláusula individual. Legado, percurso integrado, modulares/ofertas e notificações desabilitados.","segmentacao-processos-reconciliacao-20261011.md; contratos/rotas inventariados atuais; não há prova de percurso completo deste incremento. [FUNDING-EDITOR-20261102] Catálogo e editor locais: rascunhos, prévia vinculada, publicação/retirada com autoridade editorial existente, versões imutáveis, janelas/critério explicado, documentos por versão e interesse privado. Quatro testes/91 asserções e tipos aprovados. Filtros territoriais/sectoriais, ensaios de documentos, fontes reais, visual e disponibilização pendentes; requisito parcial, sem alteração no activo. Manual de 02/11 e funding_editor_increment_20261102. [FUNDING-FILTERS-20261102] Filtros locais por sector, cobertura territorial e estado de janela, com desconhecidos explícitos e cobertura parcial. Nomes/caminhos territoriais e sectores conservados por versão. Descarga verifica versão, checksum, direitos, análise e bytes; prévia obsoleta recusada. Seis testes/204 asserções, PHPStan, tipos, lint sem avisos e compilação aprovados. Recibo funding_filters_increment_20261102 e manual. Faltam fontes reais incorporadas, validação visual, ensaios de concorrência e disponibilização; requisito parcial. [FUNDING-REFERENCES-20261102] Referência oficial FDEL empacotada com fontes/edições/hashes e prévia editorial; prepara rascunho sem publicar. Uma ficha e chamada municipal histórica, repetição sem duplicar ou substituir. Sete testes/235 asserções; PHPStan, tipos e lint aprovados. Recibo funding_references_increment_20261102; manual de 02/11. Ligações sectorial/cartográfica, concorrência, visual, alertas e disponibilização pendentes. Parcial local, sem escrita no activo. [FUNDING-CONCURRENCY-20261102] Ensaio com cinco pares de processos e bloqueios observados no PostgreSQL identificou deadlock 40P01 entre retirada e interesse da mesma pessoa. Bloqueio da conta ajustado a FOR NO KEY UPDATE, conservando serialização e referências de auditoria. Cinco cenários passaram após correcção; sete Feature/235 asserções e PHPStan/Pint aprovados. Dados/versão/interesse e auditoria sem duplicação conservados; recibo funding_concurrency_increment_20261102. Não comprova carga ou todas as intercalações. Visual, vínculos da referência, alertas e disponibilização pendentes. [FUNDING-ALERTS-20261102] ACT-11: versões publicadas de fundos/programas/incentivos do catálogo integradas no motor de alertas existente, com adesão explícita e preferências antigas preservadas. Filtros e desconhecidos explicados, origem/versão/estado conservados, retirada/acesso próprio, cancelamento, lote e reversão transaccional. 36 testes/612 asserções e seis frontend; PHPStan, tipos, lint e compilação aprovados. Recibo funding_alerts_increment_20261102 e manual. Sem canais externos, recolha externa ou instalação no activo; requisito agregado parcial. [FUNDING-ASSESSMENT-CONCURRENCY-20261102] Nove pares concorrentes observados aprovaram referências/versões/interesses, geradores duplicados, preferências idempotentes e ambas as precedências de cancelamento. Conferência de critérios mostra/envia apenas perguntas aplicáveis, preserva respostas locais e reinicia por ficha/versão. Oito frontend, tipos/lint/compilação aprovados; PHP da aplicação sem delta, provas 36 Feature/612 reutilizadas após conferir hashes. Recibo funding_assessment_concurrency_increment_20261102. Visual, vínculos de referência, canais externos e disponibilização continuam pendentes.",Parcial — implementação local em QA,"02/11/2026: concorrência do gerador verificada nos cenários delimitados e perguntas aplicáveis corrigidas. Restam visual, vínculos da referência, canais externos e disponibilização/agendador. Histórico: 02/11/2026: oportunidades, concursos e fundos/apoios do catálogo integrados em alertas locais com prova. Restam canais/outras fontes externas, concorrência específica do gerador, visual, vínculos de referência e disponibilização/agendador. Histórico: 02/11/2026: concorrência demonstrada nos cinco cenários delimitados e impasse corrigido. Restam visual, vínculos ao cadastro da referência, alertas de incentivos e disponibilização. Histórico: 02/11/2026: referência oficial preparada pela interface com prova local; restam vínculos sectorial/cartográfico da referência, concorrência/visual, alertas de incentivos e disponibilização. Histórico: 02/11/2026: filtros e ensaios específicos de documentos implementados/verificados localmente. Restam fontes reais incorporadas, visual, concorrência e disponibilização; integração de incentivos nos alertas não demonstrada. Histórico preservado: 02/11/2026: implementação local parcial com editor e percurso público; restam filtros territoriais/sectoriais, provas específicas de documentos/conflitos, fontes reais e visual/disponibilização. Histórico: Catálogo de fundos com janelas e elegibilidade não implementado; ofertas experimentais não o substituem.","Documentos/entidades/fontes/parâmetros próprios antes de implementação; sem novos módulos nesta auditoria. Fundos com fonte/data, elegibilidade explicada e janela; indeterminado quando parâmetros faltam. Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.","Fonte, gestor, sectores, cobertura nacional ou territorial, datas/estado e documentos; filtro e explicação por critério; fundos expirados sinalizados; guardar interesse autorizado sem duplicação.",P2,"Código INV-005 é alias deste documento, não renumeração do roteiro/backlog. Conteúdo/regras pendentes não se tornam aprovados pela importação.",SEG-bf26caee-p157; SEG-bf26caee-p158; SEG-bf26caee-p483; SEG-bf26caee-p636; SEG-bf26caee-p723,5,"[{""id"": ""SEG-bf26caee-p157"", ""section"": ""1.5"", ""first_paragraph"": 157, ""last_paragraph"": 157, ""text"": ""Permitir a consulta de negócios similares na zona antes da abertura de um empreendimento, apoiando a análise de viabilidade. As fontes iniciais incluem os ficheiros de cadastro de empreendimentos turísticos de três, quatro e cinco estrelas e de empresas licenciadas já disponibilizados ao projecto. Antes da utilização, estes dados devem ser inventariados, normalizados, deduplicados, georreferenciados e sujeitos a validação de actualidade, cobertura e autorização de uso."", ""requirements"": [""AUD-ESTABLISHMENT-01"", ""AUD-FUND-01"", ""AUD-MARKET-01""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p157"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}, {""id"": ""SEG-bf26caee-p158"", ""section"": ""1.5"", ""first_paragraph"": 158, ""last_paragraph"": 158, ""text"": ""Publicar fundos de financiamento por localização ou com cobertura nacional, conforme a respectiva distribuição geográfica."", ""requirements"": [""AUD-ESTABLISHMENT-01"", ""AUD-FUND-01"", ""AUD-MARKET-01""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p158"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}, {""id"": ""SEG-bf26caee-p483"", ""section"": ""3.2.3"", ""first_paragraph"": 483, ""last_paragraph"": 483, ""text"": ""A pesquisa deve permitir combinar texto, sector, localização, raio, dimensão, classificação, estado, período e fonte, com ordenação e paginação consistentes. Os resultados de negócios similares, fundos e oportunidades devem apresentar data de actualização, cobertura, critérios usados e limitações conhecidas. Sempre que existir correspondência ou recomendação automatizada, o portal deve explicar os factores considerados, permitir correcção dos dados de entrada e evitar classificações baseadas em informação incompleta ou não validada."", ""requirements"": [""AUD-FUND-01"", ""AUD-MARKET-01"", ""AUD-OP-04""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p483"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}, {""id"": ""SEG-bf26caee-p636"", ""section"": ""6"", ""first_paragraph"": 636, ""last_paragraph"": 641, ""text"": ""INV-005 | Fundos compatíveis com explicação da correspondência | Sim | Sem demonstração suficiente | — | Demonstrar catálogo, cobertura, critérios, prazos, actualização e justificação."", ""requirements"": [""AUD-FUND-01""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p636"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}, {""id"": ""SEG-bf26caee-p723"", ""section"": ""6.1"", ""first_paragraph"": 723, ""last_paragraph"": 729, ""text"": ""§1.5 | Fundos nacionais e territoriais | INV-005 | Sim | Sem demonstração suficiente | — | Demonstrar cadastro, fonte, actualização, cobertura, critérios, prazos e correspondência fundamentada."", ""requirements"": [""AUD-FUND-01""], ""source_sha256"": ""bf26caeee0437a8d292bf29be59247e2862c14e79b5ae465c00322747af72af5"", ""locator"": ""word/document.xml#p723"", ""declared_document_state_is_not_functional_evidence"": true, ""exact_requested_exemplar_confirmed"": true}]",Consumidor específico não demonstrado.,Contrato específico não demonstrado.,Nenhuma entidade/regra criada para este módulo.,"A recuperação do original da especificação é prova do acervo, não deste percurso.",Pendente de implementação/prova própria.,"Novo ID apenas após pesquisa de correspondência: os requisitos relacionados são componentes a reutilizar, não equivalências. [Segmentação bf26caeee043 — identidade confirmada; nome local v1.docx] ",não implementado,Não demonstrada para este requisito específico; nenhum pacote ativado por esta incorporação. COUNTRY02ON preservado.,"Diagnóstico específico anterior de ausência/cobertura conservado; inventário atual não demonstra entrega posterior deste incremento. Nenhuma nova implementação iniciada nesta auditoria.
-[RECONCILIACAO-43-20261019] 15: Implementar fonte/gestor, janela, elegibilidade explicável, estados desconhecido/expirado e interesse idempotente.","[CONCLUSAO-INTEGRAL-20261110] Catálogo/editor/versionamento/critérios e alertas locais já implementados; fontes instaladas até ff726e57. Restam vínculos da referência, canais/fontes externos e observação visual. Confirmar operação do agendador no âmbito configurado sem presumir ausência ou criar destinatários. | Histórico anterior preservado: 02/11/2026: concorrência do gerador verificada nos cenários delimitados e perguntas aplicáveis corrigidas. Restam visual, vínculos da referência, canais externos e disponibilização/agendador. Histórico: 02/11/2026: oportunidades, concursos e fundos/apoios do catálogo integrados em alertas locais com prova. Restam canais/outras fontes externas, concorrência específica do gerador, visual, vínculos de referência e disponibilização/agendador. Histórico: 02/11/2026: concorrência demonstrada nos cinco cenários delimitados e impasse corrigido. Restam visual, vínculos ao cadastro da referência, alertas de incentivos e disponibilização. Histórico: 02/11/2026: referência oficial preparada pela interface com prova local; restam vínculos sectorial/cartográfico da referência, concorrência/visual, alertas de incentivos e disponibilização. Histórico: 02/11/2026: filtros e ensaios específicos de documentos implementados/verificados localmente. Restam fontes reais incorporadas, visual, concorrência e disponibilização; integração de incentivos nos alertas não demonstrada. Histórico preservado: 02/11/2026: implementação local parcial com editor e percurso público; restam filtros territoriais/sectoriais, provas específicas de documentos/conflitos, fontes reais e visual/disponibilização. Histórico: Catálogo de fundos com janelas e elegibilidade não implementado; ofertas experimentais não o substituem.
+[RECONCILIACAO-43-20261019] 15: Implementar fonte/gestor, janela, elegibilidade explicável, estados desconhecido/expirado e interesse idempotente.","[ACT12-20261110] Onze fichas fundamentadas (7instituições+4programas/fundos; BNI Capital como produto BNI), pesquisa local/necessidade no mesmo produto, condições/fontes/contactos e gravação/recuperação no mesmo dossier demonstradas. Restam instalação, preparação/revisão/publicação autenticada e consulta real no destino; visual pendente. Outros critérios desta linha não encerrados. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Catálogo/editor/versionamento/critérios e alertas locais já implementados; fontes instaladas até ff726e57. Restam vínculos da referência, canais/fontes externos e observação visual. Confirmar operação do agendador no âmbito configurado sem presumir ausência ou criar destinatários. | Histórico anterior preservado: 02/11/2026: concorrência do gerador verificada nos cenários delimitados e perguntas aplicáveis corrigidas. Restam visual, vínculos da referência, canais externos e disponibilização/agendador. Histórico: 02/11/2026: oportunidades, concursos e fundos/apoios do catálogo integrados em alertas locais com prova. Restam canais/outras fontes externas, concorrência específica do gerador, visual, vínculos de referência e disponibilização/agendador. Histórico: 02/11/2026: concorrência demonstrada nos cinco cenários delimitados e impasse corrigido. Restam visual, vínculos ao cadastro da referência, alertas de incentivos e disponibilização. Histórico: 02/11/2026: referência oficial preparada pela interface com prova local; restam vínculos sectorial/cartográfico da referência, concorrência/visual, alertas de incentivos e disponibilização. Histórico: 02/11/2026: filtros e ensaios específicos de documentos implementados/verificados localmente. Restam fontes reais incorporadas, visual, concorrência e disponibilização; integração de incentivos nos alertas não demonstrada. Histórico preservado: 02/11/2026: implementação local parcial com editor e percurso público; restam filtros territoriais/sectoriais, provas específicas de documentos/conflitos, fontes reais e visual/disponibilização. Histórico: Catálogo de fundos com janelas e elegibilidade não implementado; ofertas experimentais não o substituem.
-[UTILIZACAO-HOMOLOGACAO-20261019] 15: Desenvolvimento restante + dados — Primeiro fundo documentado e tratamento de elegibilidade/prazo ainda em falta.","Biblioteca, taxonomias, fontes e filtros comuns","Documentos/entidades/fontes/parâmetros próprios antes de implementação; sem novos módulos nesta auditoria. Fundos com fonte/data, elegibilidade explicada e janela; indeterminado quando parâmetros faltam.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"Nova funcionalidade/expansão; preparar execução, não implementar nesta auditoria",Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: incrementos futuros. Esforço de código adicional só após lacuna reproduzida.,"[CONCLUSAO-INTEGRAL-20261110] Instalação ff726e57: outputs/reviewed-install-20261110/verification.json; fontes aceites e recibos anteriores reutilizados. Saldo por percurso no início de visao-consolidada-modulos.md. segmentacao-processos-reconciliacao-20261011.md; contratos/rotas inventariados atuais; não há prova de percurso completo deste incremento. | Homologação teste-investidor 19/10/2026: Fundos=Não demonstrado. Saldo derivado e limites em outputs/investmoz-disponibilizacao-integral-20261019/SALDO-E-ACTUALIZACAO-CONSOLIDADA.md. Não substitui estado/provas do activo; trecho documental encerrado, vínculo dossier aberto. | Proposta integral fdcb31f1b5b9: aplicação activa local completa + R2/DOC01/destino reconciliados; schema/build/recuperação de contexto e reversão de apresentação ensaiados no clone isolado. Não instalado remotamente. Inc. QA territoriais/Inhambane/programas separados. Limites e decisões em outputs/investmoz-disponibilizacao-integral-20261019/PROPOSTA-INTEGRAL-PARA-DECISAO.md. | Execução autorizada fdcb31f1b5b9 concluída em teste-investidor: Fundos=Não demonstrado. 1080 hashes iguais, schema171/88, custódia/scan/recuperação reais. Sem publicação ou papéis novos. Vínculo dossier legítimo pendente; incrementos QA separados. Limites em outputs/investmoz-disponibilizacao-integral-20261019/RESULTADO-DISPONIBILIZACAO-INTEGRAL.md; não encerra critérios globais não demonstrados.
+[UTILIZACAO-HOMOLOGACAO-20261019] 15: Desenvolvimento restante + dados — Primeiro fundo documentado e tratamento de elegibilidade/prazo ainda em falta.","Biblioteca, taxonomias, fontes e filtros comuns","Documentos/entidades/fontes/parâmetros próprios antes de implementação; sem novos módulos nesta auditoria. Fundos com fonte/data, elegibilidade explicada e janela; indeterminado quando parâmetros faltam.",Nenhuma nova decisão identificada para reconciliar/demonstrar esta cláusula. Decisões específicas só após localizar a regra correspondente.,"Nova funcionalidade/expansão; preparar execução, não implementar nesta auditoria",Estimativa partilhada no lote correspondente de visao-consolidada-modulos.md; não somar por linha/cláusula/campo. Grupo: incrementos futuros. Esforço de código adicional só após lacuna reproduzida.,"[ACT12-20261110] outputs/funding-directory-20261110/{verification,content-qa,dossier-qa}.json e catalogo-qa.html/11fichas;3API/127asserções,13frontend; fonte benchmark de melhorias investeMoz.docx SHA065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617. | Histórico anterior preservado: [CONCLUSAO-INTEGRAL-20261110] Instalação ff726e57: outputs/reviewed-install-20261110/verification.json; fontes aceites e recibos anteriores reutilizados. Saldo por percurso no início de visao-consolidada-modulos.md. segmentacao-processos-reconciliacao-20261011.md; contratos/rotas inventariados atuais; não há prova de percurso completo deste incremento. | Homologação teste-investidor 19/10/2026: Fundos=Não demonstrado. Saldo derivado e limites em outputs/investmoz-disponibilizacao-integral-20261019/SALDO-E-ACTUALIZACAO-CONSOLIDADA.md. Não substitui estado/provas do activo; trecho documental encerrado, vínculo dossier aberto. | Proposta integral fdcb31f1b5b9: aplicação activa local completa + R2/DOC01/destino reconciliados; schema/build/recuperação de contexto e reversão de apresentação ensaiados no clone isolado. Não instalado remotamente. Inc. QA territoriais/Inhambane/programas separados. Limites e decisões em outputs/investmoz-disponibilizacao-integral-20261019/PROPOSTA-INTEGRAL-PARA-DECISAO.md. | Execução autorizada fdcb31f1b5b9 concluída em teste-investidor: Fundos=Não demonstrado. 1080 hashes iguais, schema171/88, custódia/scan/recuperação reais. Sem publicação ou papéis novos. Vínculo dossier legítimo pendente; incrementos QA separados. Limites em outputs/investmoz-disponibilizacao-integral-20261019/RESULTADO-DISPONIBILIZACAO-INTEGRAL.md; não encerra critérios globais não demonstrados.
[UTILIZACAO-HOMOLOGACAO-20261019] Leitura nominal de contas/recursos no destino; saldo18/10; prévia29 sem escrita; comparação de hashes QA separados. outputs/investmoz-disponibilizacao-integral-20261019/UTILIZACAO-EFECTIVA-HOMOLOGACAO.md
diff --git a/docs/investmoz/v2/auditoria-portal/visao-consolidada-modulos.md b/docs/investmoz/v2/auditoria-portal/visao-consolidada-modulos.md
index 32161ab9..a5c82c13 100644
--- a/docs/investmoz/v2/auditoria-portal/visao-consolidada-modulos.md
+++ b/docs/investmoz/v2/auditoria-portal/visao-consolidada-modulos.md
@@ -1,3 +1,17 @@
+## 10/11/2026 — ACT-20261029-12: directório financeiro com conteúdo em QA
+
+**Homologação mantém1c75a30a; este conjunto não está instalado nem publicado.** A leitura autenticada do destino confirmou catálogo /fundos HTTP200, schema instalado e zero fichas/versões. O requisito não fica encerrado por essa disponibilidade técnica. APIEX/SWOT mantêm a entrega instalada própria, sem reabertura.
+
+Localizada e reutilizada a lista fornecida em `Relatorios/benchmark de melhorias investeMoz.docx`, SHA256 `065203aacfae766c62cf9c2c272ebacc61ff23bd4ff9e91535939fede87f7617`, quadro de04/10/2026. Doze entradas documentais correspondem a **11fichas:7instituições e4programas/fundos** — BCI,Millennium bim,Absa,Standard Bank,Moza,BNI,Gapi,FECOP,Semeia Negócios,FCID VIII eFAE; **BNI Capital** integra os produtos do BNI, sem duplicar instituição ou presumir personalidade jurídica autónoma. Agregado genérico de linhas BNI não gera fundos fictícios. Referência FDEL anterior conservada, sem a contar novamente nesta entrega.
+
+O cadastro/versionamento/competência editorial existentes passam a conservar natureza factual, identidade estável, contactos com fonte/data, locais físicos (sede/balcão/ponto institucional) e produtos próprios. Moradas não determinam cobertura financeira. Produto tem finalidade, instrumento, condições/montantes, disponibilidade e cobertura próprios; vazios são identificados como por confirmar. Cobertura e necessidade têm de corresponder ao **mesmo produto**, antes da paginaçãoSQL. Critério documentado pode excluir desconhecidos; consulta geral distingue resultados por confirmar de correspondência sustentada. FCID conserva seis províncias documentadas, sem confundir Maputo Província/Cidade; FAE mantém o Vale do Zambeze como âmbito textual com vínculo geográfico por confirmar, sem inventar distritos. A localização institucional do BNI não limita o financiamento a Maputo. Semeia conserva a chamada encerrada; a antiga linha BCI2018 não é reaberta. Condições e janelas históricas não se tornam ofertas actuais pela importação. Fontes indicadas consultadas para âmbito/disponibilidade; falha de recolha da Gapi não revoga o original, cuja data04/10 e disponibilidade por confirmar ficam explícitas.
+
+Demonstrado em QA55441 existente: localização/necessidade → consulta das fichas reais fornecidas → fonte/contacto/condições → escolha privada no mesmo dossier e oportunidade → recuperação. Snapshot preserva versão pública e produto consultados mesmo após retirada/alteração da ficha. Repetição da intenção e recuperação após recarregar não duplicam a escolha/evento; outra oportunidade/actor e dossier encerrado mantêm guardas. Não envia candidatura, contactos ou dados às instituições, não concede crédito nem classifica o investidor automaticamente. Sem pontuação/IA, schema/base/porta nova, novas competências ou alteração de dados activos.
+
+Provas dirigidas: **3casos API/127asserções e13frontend**, PHPStan nível7 sem supressões, tipos/lint/Pint/compilação QA aprovados. Testes transaccionais revertidos; sequências QA podem avançar. `outputs/funding-directory-20261110/verification.json`, `content-qa.json`, `dossier-qa.json`; **catálogo consultável de revisão** `outputs/funding-directory-20261110/catalogo-qa.html` e11fichasHTML ligadas. Renderização estática dos componentes afectados, não conferência visual de navegador nem publicação no destino. Provas anteriores preservadas e reutilizadas.
+
+**Saldo ACT-12:** recorte funcional e conteúdo fornecido demonstrados em QA, preparado para disponibilização pelo fluxo editorial. **Restam instalação do conjunto, preparação/revisão/publicação autenticada das11fichas no destino e confirmação da consulta real pelo investidor**; visual continua pendente com conector indisponível. Não declarar ACT-12 encerrado ou o portal integral. Dados de sede/balcões, condições ou cobertura não documentados conservam o estado por confirmar; não bloqueiam os restantes dados fundamentados. Resíduos L1–L7/restanteL8/L9–L16 e outros módulos mantêm o saldo anterior.
+
## 10/11/2026 — APIEX, SWOT e acesso destacado a Concursos instalados
**Homologação instalada e conferida: `1c75a30a601ef00fc187ddf5a64183446d329e6f`**, https://teste-investidor.tempo.co.mz. Inclui APIEX/SWOT37854d02 e correcção do menu autorizada pela Tempo. **Concursos e anúncios** tem agora grupo próprio no menu horizontal comum, com consulta pública e acompanhamentos para utilizadores autenticados; endereço https://teste-investidor.tempo.co.mz/concursos. O módulo já estava activo e apenas a entrada estava dentro de Descoberta; não foi necessário activá-lo novamente. Um rascunho privado e zero versões publicadas preservados.
diff --git a/resources/js/components/funding-dossier-choice.tsx b/resources/js/components/funding-dossier-choice.tsx
new file mode 100644
index 00000000..6c200ef8
--- /dev/null
+++ b/resources/js/components/funding-dossier-choice.tsx
@@ -0,0 +1,207 @@
+import { Link, router } from '@inertiajs/react';
+import { useRef, useState } from 'react';
+import { profileJson, ProfileValidationError } from '@/lib/profile-json';
+import { createOperationKey } from '@/lib/operation-key';
+import { card, input, button } from '@/pages/investment/shared';
+import type { Programme } from '@/pages/funding/shared';
+
+export type FundingDossier = {
+ id: string;
+ version: number;
+ opportunity: string | null;
+ closed: boolean;
+ href: string;
+};
+export function FundingDossierChoice({
+ record,
+ dossier,
+ selection,
+ needs,
+ destinations,
+}: {
+ record: Programme;
+ dossier: FundingDossier | null;
+ selection: Record;
+ needs: Record;
+ destinations: { id: string; opportunity: string | null; title: string }[];
+}) {
+ const [need, setNeed] = useState(selection.need ?? '');
+ const [product, setProduct] = useState('');
+ const [consent, setConsent] = useState(false);
+ const [busy, setBusy] = useState(false);
+ const [error, setError] = useState('');
+ const [result, setResult] = useState(null);
+ const pending = useRef | null>(null);
+ const running = useRef(false);
+ async function save() {
+ if (!dossier || running.current) return;
+ if (!pending.current)
+ pending.current = {
+ context: dossier.id,
+ opportunity: dossier.opportunity,
+ version: dossier.version,
+ version_id: record.version_id,
+ product: product || null,
+ need,
+ territory: selection.territory,
+ consent,
+ operation_key: createOperationKey(),
+ };
+ running.current = true;
+ setBusy(true);
+ setError('');
+ try {
+ setResult(
+ (await profileJson(
+ `/fundos/${record.id}/dossier`,
+ pending.current,
+ 'POST',
+ )) as FundingDossier,
+ );
+ pending.current = null;
+ } catch (e) {
+ setError(
+ e instanceof Error
+ ? e.message
+ : 'Resultado por confirmar. Repita a mesma intenção.',
+ );
+ if (
+ e instanceof ProfileValidationError &&
+ e.status !== null &&
+ e.status >= 400 &&
+ e.status < 500 &&
+ e.status !== 408
+ )
+ pending.current = null;
+ } finally {
+ running.current = false;
+ setBusy(false);
+ }
+ }
+ return (
+
+
Continuar a preparação no meu dossier
+
+ Conserva a referência, versão, produto, local e necessidade. Não
+ envia candidatura ou dados à instituição.
+
Revisão QA — conteúdo fornecido; sem publicação na homologação. Renderização estática dos componentes; não é conferência visual num navegador. Não envia dados ou candidaturas.