## Pré-requisitos

* Instalar o Pandoc - \\\\dypevm03\\downloads\\desktop team\\pandoc-1.19.2.1-windows.msi;
* Instalar o Miktex - \\\\dypevm03\\downloads\\desktop team\\basic-miktex-2.9.6236-x64.exe;
* Instalar o node.js - choco install nodejs -y
* Instalar o mermaid de linha de comando - npm install -g mermaid.cli
* Estar com a pasta c:\\infra\\ atualizada pelo SVN;
* Estar com a pasta c:\\dype\\source\\desktop.release\\Gestor\\ atualizada pelo SVN;


## Estrutura

* Dentro da pasta c:\\dype\\source\\desktop.release\\Gestor\\ uma pasta Docs\\Manuais.
* O script c:\\infra\\_desktop\\suporte\\BuildManuais.ps1 irá criar/atualizar nas soluções do Freshdesk uma categoria com o nome _Gestor - Manuais_.
* Depois de criar a categoria, o script irá varrer as pastas dentro da pasta Docs\\Manuais criando pastas com o mesmo nome do Freshdesk dentro da categoria _Gestor - Manuais_.
* E da mesma forma, para cada pasta, irá criar um artigo para cada arquivo com a extensão _.markdown_ dentro das pastas.
* A visibilidade das pastas é definida pelo nome. Pastas começando com _Documentação Interna_ serão visíveis apenas para agentes enquanto que todas as outras serão públicas para qualquer pessoa na internet visualizar.
* Não é possível utilizar subpastas pois o freshdesk só permite um nível.

Veja na imagem a seguir a estrutura de pastas e um arquivo _.markdown_ de exemplo.

1. O caminho da estrutura da pasta VERSÃO\\Docs\\Manuais\\;
2. A pasta de arquivos que irá virar uma pasta de artigos no Freshdesk;
3. Um arquivo _.markdown_ que irá virar um artigo no Freshdesk (podemos ter diversos arquivos em cada pasta);
4. Um arquivo de imagem que é utilizado dentro do _.markdown_ e vira uma imagem embutida no artigo do Freshdesk;

--

![Estrutura de pastas e arquivos](Estrutrura de pastas e arquivos.png)\

E na imagem a seguir o resultado no freshdesk. Colocamos os marcadores em azul, para não confundir com os marcadores em amarelo da imagem de exemplo.

1. A categoria criada com o número da versão correto;
2. A pasta criada com o mesmo nome da pasta que está dentro do Docs\\Manuais;
3. O título do artigo sendo o nome do arquivo _.markdown_;
4. A imagem que está dentro da mesma pasta e referenciada dentro do arquivo _.markdown_;

![Resultado no Freshdesk](Resultado no Freshdesk.png)\


## Como Atualizar os Artigos no Freshdesk

Basta executar o script c:\\infra\\_desktop\\suporte\\BuildManuais.ps1.
É importante fazer commit no SVN de todas as alterações nos arquivos _.markdown_ ou imagens.


## Problemas e Soluções

* Problema: Os acentos não aparecem no artigo no freshdesk;
* Solução: O arquivo _.markdown_ tem que ser editado no formato UTF8;

* Problema: As barras \\ não aparecem no artigo no freshdesk;
* Solução: Dentro do _.markdown_ as barras são indicadores de comandos para o pandoc. Para aparecer uma barra no texto, devemos usar duas barras no _.markdown_ desta forma \\\\;

* Problema: Minha alteração num artigo desapareceu do freshdesk;
* Solução: Não altere artigos desta estrutura diretamente no freshdesk, eles são sobrescritos a cada execução do BuildManuais.ps1;

* Problema: Apaguei um _.markdown_ do SVN mas o artigo não sumiu do freshdesk;
* A exclusão de artigos não é automática. Remova manualmente do freshdesk ou remova toda a categoria para ser recriada. O problema disso é que os links publicados se perdem pois tudo ganha um novo ID;

## TODO

* Criar um job manual ou com um período grande como uma semana no Jenkins para fazer update e executar o script de atualização;
** Isso fará com que o commit dos _.markdown_ e imagens seja obrigatório e também remove a necessidade da instalação do Pandoc e Miktex localmente no PC;
* Escrever uma explicação sobre o merge entre as pastas docs em diferentes versões;
* Criar uma forma de criar links dinâmicos entre soluções sem saber o link real da solução;
** Creio que terá que ser uma solução em duas passadas dentro do próprio BuildManuais.ps1, uma para criar tudo e outra para trocar um texto LINK-xxx para a url correta usando o Get-FreshdeskSolution;