{"id":31600255,"url":"https://github.com/lamp-lucas/foton_contacts","last_synced_at":"2026-05-09T16:47:07.460Z","repository":{"id":316148862,"uuid":"1062175185","full_name":"LAMP-LUCAS/foton_contacts","owner":"LAMP-LUCAS","description":"Plugin para Redmine que gerencia pessoas, empresas e vínculos com foco em projetos da indústria AEC. Totalmente integrado, responsivo e parte do ecossistema Livre e OpenSource Mundo AEC.","archived":false,"fork":false,"pushed_at":"2025-09-30T00:05:19.000Z","size":332,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-30T02:23:02.167Z","etag":null,"topics":["aec-industry","construction-tech","contacts-management","crm","csv-import","data-visualization","foton","issue-linking","mundo-aec","open-source","project-management","redmine-plugin","ruby-on-rails","team-collaboration","user-profile","vcard"],"latest_commit_sha":null,"homepage":"https://www.mundoaec.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LAMP-LUCAS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-22T23:02:23.000Z","updated_at":"2025-09-24T16:56:00.000Z","dependencies_parsed_at":"2025-09-23T01:16:03.747Z","dependency_job_id":"e568a952-f469-475e-b0cc-020032f12a15","html_url":"https://github.com/LAMP-LUCAS/foton_contacts","commit_stats":null,"previous_names":["lamp-lucas/foton_contacts"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LAMP-LUCAS/foton_contacts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LAMP-LUCAS%2Ffoton_contacts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LAMP-LUCAS%2Ffoton_contacts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LAMP-LUCAS%2Ffoton_contacts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LAMP-LUCAS%2Ffoton_contacts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LAMP-LUCAS","download_url":"https://codeload.github.com/LAMP-LUCAS/foton_contacts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LAMP-LUCAS%2Ffoton_contacts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278572004,"owners_count":26008686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aec-industry","construction-tech","contacts-management","crm","csv-import","data-visualization","foton","issue-linking","mundo-aec","open-source","project-management","redmine-plugin","ruby-on-rails","team-collaboration","user-profile","vcard"],"created_at":"2025-10-06T06:55:05.203Z","updated_at":"2025-11-11T18:15:50.937Z","avatar_url":"https://github.com/LAMP-LUCAS.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📇 Plugin de Contatos para Redmine — Mundo AEC\n\n\u003e Gestão de pessoas, empresas e vínculos profissionais com inteligência, fluidez e integração total ao Redmine.  \n\u003e Parte do ecossistema **Livre e OpenSource** que está transformando a indústria da construção civil brasileira.\n\n---\n\n### 🚀 Visão Geral\n\nO **Plugin de Contatos para Redmine** é uma solução completa para gestão de stakeholders na indústria AEC (Arquitetura, Engenharia e Construção). Ele centraliza dados de pessoas e empresas, mapeia o histórico de vínculos profissionais e, mais importante, **integra essas informações diretamente às tarefas e projetos do Redmine**.\n\nCom uma interface moderna e reativa construída com **Hotwire**, o plugin transforma dados de contato em insights acionáveis, permitindo uma visão 360º dos relacionamentos que impulsionam seus projetos.\n\n---\n\n### 🧩 Funcionalidades Principais\n\n- **Cadastro Detalhado e Flexível:** Gerencie contatos do tipo \"Pessoa\" e \"Empresa\" com a capacidade de adicionar múltiplos e-mails, telefones e endereços para cada um, mantendo um registro completo e centralizado.\n- **Vínculos Profissionais:** Associe pessoas a múltiplas empresas com cargos, datas e histórico de carreira.\n- **Grupos Dinâmicos:** Crie e gerencie grupos de contatos para segmentação e comunicação.\n- **Integração Profunda com Tarefas:**\n    - Vincule múltiplos contatos e grupos diretamente a qualquer tarefa do Redmine.\n    - Atribua **funções** específicas aos contatos em uma tarefa (ex: \"Aprovador\", \"Fornecedor\", \"Cliente\").\n    - Busque e adicione contatos a uma tarefa de forma rápida, sem sair da tela da tarefa.\n- **Visualização Analítica e Histórica (BI):**\n    - Utilize o **Dashboard de Análises** para uma visão gerencial completa com métricas que evoluem ao longo do tempo.\n    - Identifique contatos de risco com o **Índice de Risco Preditivo (IRPA)**, agora aprimorado com um **Fator de Instabilidade** baseado no histórico de mudanças do contato.\n    - Monitore a saúde de suas parcerias com análises precisas de **turnover** e **coesão de equipe**, calculadas a partir do histórico de vínculos.\n    - Visualize a alocação da equipe com o **Mapa de Calor de Carga de Trabalho (Workload)** para otimizar a distribuição de tarefas.\n- **Importação e Exportação:** Importe contatos de arquivos CSV e exporte para vCard e CSV.\n\nPara uma lista exaustiva de todas as funcionalidades e um manual detalhado, consulte nosso **[Roadmap e Manual de Funcionalidades](docs/ROADMAP.md)**.\n\n---\n\n### 🏛️ Arquitetura e Filosofia de Design\n\nA interface do plugin é construída com o **framework Hotwire (Turbo + Stimulus)**, garantindo uma experiência de usuário fluida, rápida e moderna, que se integra de forma nativa ao Redmine. A filosofia é de \"HTML-over-the-wire\", minimizando a complexidade no frontend. O design visual é aprimorado com **Bootstrap 5** para componentes e **CSS Grid** para layouts complexos, assegurando uma estética moderna e responsiva.\n\n- **Navegação Acelerada com Turbo Drive:** Interações rápidas, sem recarregamento de página.\n- **Componentes Reativos com Turbo Frames e Streams:** Modais, abas e listas são atualizados dinamicamente, proporcionando uma experiência de SPA (Single Page Application).\n- **Interatividade com Stimulus:** Controladores JavaScript leves para funcionalidades como busca, formulários dinâmicos e feedback visual.\n\nPara aprofundar em nossos conceitos de UI/UX e arquitetura, leia o **[Relatório de Arquitetura de Views](docs/views_architecture.md)**.\n\n---\n\n### ⚡ Requisitos de Ambiente\n\nO plugin foi desenhado para funcionar em um ambiente Redmine moderno que utilize **Hotwire** e **importmap-rails**.\n\nSe o seu Redmine ainda não está configurado para usar `importmap`, será necessário adaptar o carregamento de JavaScript. O plugin injeta um *hook* (`javascript_include_tag('application', type: 'module')`) que depende dessa configuração.\n\n**Nota:** As instruções detalhadas de instalação do Hotwire foram removidas por estarem desatualizadas. A recomendação é seguir a documentação oficial do `hotwire-rails` para configurar seu ambiente Redmine adequadamente.\n\n---\n\n### ⚙️ Instalação e Configuração\n\nO processo de instalação é simples:\n\n1.  **Clone o repositório** para a pasta de plugins do seu Redmine:\n    ```bash\n    git clone https://github.com/LAMP-LUCAS/foton_contacts plugins/foton_contacts\n    ```\n\n2.  **Instale as dependências** (gems). A partir do diretório raiz do seu Redmine, execute:\n    ```bash\n    bundle install\n    ```\n\n3.  **Execute as migrações** do banco de dados:\n    ```bash\n    bundle exec rake redmine:plugins:migrate RAILS_ENV=production\n    ```\n\n4.  **Reinicie o servidor** do Redmine para carregar o plugin.\n\n#### Configuração Pós-Instalação\n\nAcesse: **Administração → Configurações → Contatos**\n\nConfigure:\n\n- Campos personalizados\n- Permissões por função\n- Mapeamento de campos para CSV/vCard\n- Visibilidade padrão (global, privada, por projeto)\n\n---\n\n### 🤝 Contribua com o projeto\n\nEste plugin é **Livre e OpenSource**. Toda contribuição é bem-vinda!\n\n- **Veja o que precisa ser feito:** Nosso **[Plano de Trabalho (Workplan)](docs/workplan.md)** está sempre atualizado com as próximas tarefas.\n- **Siga as diretrizes:** Leia as [diretrizes de contribuição](CONTRIBUTING.md) e use mensagens de commit convencionais.\n- **Participe da comunidade:** [Mundo AEC](https://mundoaec.com/)\n\n---\n\n### 📬 Contato\n\nDúvidas, sugestões ou parcerias?  \n📧 contato@mundoaec.com  \n🌐 [mundoaec.com](https://mundoaec.com/)  \n🐙 [github.com/LAMP-LUCAS](https://github.com/LAMP-LUCAS/foton_contacts)\n\n---\n\n\u003e Feito com ♥ por quem acredita que o futuro da construção é aberto, integrado e acessível.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flamp-lucas%2Ffoton_contacts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flamp-lucas%2Ffoton_contacts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flamp-lucas%2Ffoton_contacts/lists"}