# Visão geral da camada Web

Este documento descreve a **camada Web** do produto, voltada ao hotel/espaço (CRM e operação comercial), em separado da camada **Quest** (experiência imersiva do cliente).

## Três pontas do sistema

| Ponta | Foco |
|-------|------|
| **Quest** | Experiência do cliente no headset; decisão; sinais comerciais |
| **Web Hotel/Espaço** | CRM, pipeline, proposta, follow-up, sessão Quest associada |
| **Web Produtor/Prestador** | Recebimento do pedido (handoff), escopo operacional, requisitos, status (ver **Docs/Web/WEB_PRODUCER.md**) |

## Separação Quest vs Web

| Aspecto | Quest | Web Hotel/Espaço |
|--------|--------|-------------------|
| **Foco** | Experiência do cliente no headset; apresentação imersiva de propostas | CRM, pipeline comercial, leads, oportunidades, follow-up |
| **Utilizador principal** | Cliente / decisor na experiência VR | Equipa do hotel/espaço; comercial; operação |
| **Contexto** | Sessão de apresentação Quest (roteiro guiado, hotspots, fechamento, outcome, export, handoff) | Gestão de leads, oportunidades, propostas e tarefas de follow-up |
| **Localização no projeto** | `Assets/Presentation/Quest/`, `Assets/Core/` (tipos Quest), cenas Bootstrap, Main, QuestPresentation | `Assets/Web/` (estrutura isolada) |
| **Integração futura** | A Web consumirá resultados da sessão Quest (export, handoff) para alimentar o CRM | A Web associa sessões Quest a oportunidades e propostas; não altera o runtime Quest |

A camada Quest **não depende** da camada Web. A camada Web pode, no futuro, consumir dados gerados na Quest (por exemplo payload de export ou handoff) através de uma ponte controlada (ex.: API, fila, ou mapeamento de SessionRecord).

## Função da Web do hotel/espaço

- **CRM comercial**: registo de leads, oportunidades de venda e propostas.
- **Pipeline**: etapas de oportunidade (prospecção, qualificação, proposta, negociação, fechamento).
- **Sessões Quest associadas**: cada sessão de apresentação no headset pode ser registada e ligada a uma oportunidade/proposta para follow-up.
- **Tarefas de follow-up**: próximos passos sugeridos a partir do resultado da sessão Quest (decisão, CTA, prioridade).

A Web **não substitui** nem refaz a lógica da apresentação Quest; apenas oferece uma vista de gestão comercial e operacional sobre o que aconteceu (ou vai acontecer) na Quest.

## Relação entre sessão Quest e operação comercial

1. **Na Quest**: o cliente vive a apresentação (guided tour, hotspots, closing); a sessão gera outcome, export payload, handoff report, shareable summary, quality assessment.
2. **Ponte futura**: um `SessionRecord` na Web pode ser preenchido com os dados da sessão Quest (SessionId, RecommendedProposalId, SelectedProposalId, FinalDecisionState, ConfirmedCTA, SuggestedNextAction, FollowUpPriority, flags HasExportPayload, HasHandoffReport, etc.).
3. **Na Web**: o comercial vê a lista de sessões, associa a uma oportunidade, consulta o resultado e cria follow-ups.

A ponte real Quest → Web **não está implementada**: o SessionRecord é preenchido por mocks; em etapas futuras um serviço receberá o payload da Quest e criará/actualizará o registo.

## Escopo actual da camada Web (após etapa 65)

- Documentação em `Docs/Web/` (incl. **WEB_CRM_PIPELINE.md** para estrutura do CRM e pipeline).
- Estrutura em `Assets/Web/` (Core, Domain, Application, Presentation).
- Modelos: WebLead, SalesOpportunity (com CommercialPriority, SuggestedNextAction), ProposalRecord, SessionRecord (com HasImprovementPlan, LastSessionTimestamp), FollowUpTask.
- Pipeline comercial: estágios New Lead → Contacted → Proposal Sent → Quest Session Done → Follow-up → Ready to Close → Won / Lost.
- Views: LeadListView, OpportunityBoardView, OpportunityPipelineView, OpportunitySessionRelationView, ProposalRecordView, SessionRecordView, FollowUpTaskView, CRMMetricsStripView.
- **HotelCRMDashboardController**: dashboard CRM com pipeline, indicadores, relação oportunidade–sessão Quest, leads, oportunidades, propostas, sessões e follow-ups (conteúdo scrollável).
- **Ponte Quest → CRM**: QuestSessionSnapshot (DTO), QuestSessionToCRMMapper (snapshot → SessionRecord + estágio + indicadores), ApplyQuestSessionToOpportunity (mock). Acção "Aplicar resultado da sessão Quest (mock)" no dashboard. Adaptador **QuestOutcomeToSnapshotAdapter** (Bridge) para converter tipos Quest em snapshot quando houver fluxo real. Ver **Docs/Web/WEB_QUEST_BRIDGE.md**.
- Indicadores simples e derivados da sessão: "sessão pronta para follow-up", "alta intenção comercial", "proposta em risco", "pronta para fechamento", "precisa follow-up", "sessão pouco conclusiva", "precisa revisar proposta" (ICRMIndicatorsService + mapper).
- Dados mock em memória (oportunidades em vários estágios, sessões com artefactos, follow-ups pendentes e concluídos).
- **Painel Produtor/Prestador** (etapa 67): estrutura em **Assets/Web/Producer/** (Core, Domain, Application, Presentation); modelos ProducerOrder, ProducerRequirementItem, ProducerExecutionNote, ProducerStatusUpdate; enums ProducerOrderStatus, ProducerRequirementType; UI mock (Pedidos, Escopo/Origem, Requisitos, Status, Observações); cena ProducerDashboard. Handoff Hotel → Produtor conceptual; sem backend real. Ver **Docs/Web/WEB_PRODUCER.md**.

## O que ainda não está implementado

- Backend real, base de dados real, autenticação real.
- Integração CRM externa.
- Integração real com o runtime Quest (a ligação é apenas conceptual via campos em SessionRecord).
- Camada Web Produtor/Prestador (ficará para etapas posteriores).
