# CRM do hotel/espaço — Estrutura e pipeline comercial

## Estrutura do CRM

O CRM da camada Web (hotel/espaço) organiza-se em:

- **Leads**: contactos comerciais (nome, empresa, origem, estado).
- **Oportunidades**: negócios em curso, ligados a um lead, com estágio no pipeline, valor, proposta e/ou sessão Quest associadas.
- **Propostas**: registos de proposta enviada/visualizada/aceite, ligados a uma oportunidade.
- **Sessões Quest**: registos que espelham o resultado de uma sessão no headset (recomendação, CTA, próxima ação, prioridade de follow-up, artefactos).
- **Follow-ups**: tarefas de próximo passo (ligadas a oportunidade e opcionalmente à sessão Quest).

Cada **oportunidade** relaciona de forma clara:
- **Lead** (LeadId)
- **Proposta** (ProposalRecordId), quando existir
- **Sessão Quest** (SessionRecordId), quando já tiver havido apresentação no headset
- **Estágio actual do pipeline** (Stage)
- **Prioridade comercial** (CommercialPriority)
- **Próxima ação sugerida** (SuggestedNextAction)

## Pipeline comercial

O pipeline comercial na Web segue estágios simples e mockados:

1. **New Lead** — Lead novo, ainda não qualificado.
2. **Contacted** — Contacto estabelecido.
3. **Proposal Sent** — Proposta enviada (aguarda visualização/sessão).
4. **Quest Session Done** — Sessão de apresentação no headset realizada; resultado disponível para follow-up.
5. **Follow-up** — Em acompanhamento pós-sessão ou pós-proposta.
6. **Ready to Close** — Pronta para fechamento (alta intenção comercial).
7. **Won** — Fechada ganha.
8. **Lost** — Fechada perdida.

A implementação é simples e mockada: a vista **OpportunityPipelineView** mostra, por estágio, a contagem e os títulos das oportunidades. Não há backend real nem transições automáticas.

## Papel das sessões Quest no processo comercial

1. **Antes da sessão**: a oportunidade pode estar em Contacted ou Proposal Sent; a próxima ação é frequentemente "Agendar sessão Quest".
2. **Após a sessão**: o **SessionRecord** é preenchido (na ponte futura) com dados do outcome/export/handoff da Quest: SessionId, RecommendedProposalId, SelectedProposalId, FinalDecisionState, ConfirmedCTA, SuggestedNextAction, FollowUpPriority, e flags (HasExportPayload, HasHandoffReport, HasShareableSummary, HasQualityAssessment, HasImprovementPlan). O campo **LastSessionTimestamp** regista quando ocorreu a última sessão.
3. **Na Web**: o comercial vê a relação **Oportunidade ↔ Sessão Quest** (vista **OpportunitySessionRelationView**): sessão associada, recomendação, CTA confirmado, próxima ação sugerida, prioridade de follow-up. Com base nisso, cria ou completa follow-ups e avança o estágio da oportunidade (Ready to Close, Won, Lost).

A camada Web **não** altera o runtime Quest nem a QuestPresentationSession; usa apenas o **SessionRecord** como ponte conceitual para exibir e planear o follow-up.

A **ponte Quest → CRM** (etapa 66) permite aplicar o resultado de uma sessão Quest à oportunidade: **QuestSessionSnapshot** (DTO), **QuestSessionToCRMMapper** (snapshot → SessionRecord + sugestão de estágio + indicadores) e **ApplyQuestSessionToOpportunity** no serviço mock. Ver **Docs/Web/WEB_QUEST_BRIDGE.md**.

## Indicadores simples

O CRM expõe indicadores úteis (serviço **ICRMIndicatorsService** / **CRMIndicatorsService**), sem lógica excessiva:

- **Sessão pronta para follow-up**: sessão com SuggestedNextAction e estado Interested ou NeedsFollowUp.
- **Alta intenção comercial**: oportunidade em Ready to Close ou sessão com FinalDecisionState ReadyToClose.
- **Proposta em risco**: proposta enviada e oportunidade em FollowUp (ainda sem fechamento).
- **Pronta para fechamento**: oportunidade em estágio ReadyToClose.

Estes aparecem na faixa **Indicadores** (CRMMetricsStripView) do dashboard CRM.
