Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions .github/workflows/update-readme.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Update README with Recent Commits

on:
push:
branches:
- main
- master
paths-ignore:
- 'README.md' # Avoid infinite loop

permissions:
contents: write

jobs:
update-readme:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for all branches and tags

- name: Update README with recent commits
run: |
python3 << 'PYTHON_SCRIPT'
import subprocess

# Get the last 10 commits
commits = subprocess.run(
['git', 'log', '--pretty=format:| %h | %ad | %s | %an |', '--date=format:%d/%m/%Y %H:%M', '-10'],
capture_output=True, text=True
).stdout

# Read README
with open('README.md', 'r', encoding='utf-8') as f:
content = f.read()

# Find the markers
start_marker = '<!-- COMMITS_START -->'
end_marker = '<!-- COMMITS_END -->'

start_idx = content.find(start_marker)
end_idx = content.find(end_marker)

if start_idx != -1 and end_idx != -1:
# Build the new commits section
commits_section = f'''{start_marker}
<!-- Este conteúdo é atualizado automaticamente -->

### 📊 Últimos 10 Commits

| Hash | Data | Mensagem | Autor |
|------|------|----------|-------|
{commits}

{end_marker}'''

# Replace the section
new_content = content[:start_idx] + commits_section + content[end_idx + len(end_marker):]

# Write back
with open('README.md', 'w', encoding='utf-8') as f:
f.write(new_content)

print("README updated successfully!")
else:
print("ERROR: Markers not found in README.md")
exit(1)
PYTHON_SCRIPT

- name: Check for changes
id: check_changes
run: |
git diff --quiet README.md || echo "changed=true" >> $GITHUB_OUTPUT

- name: Commit and push if changed
if: steps.check_changes.outputs.changed == 'true'
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add README.md
git commit -m "docs: atualizar README com commits recentes [skip ci]"
git push
122 changes: 122 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# 🛒 PDV-CSharp (Point of Sale System)

[![.NET](https://img.shields.io/badge/.NET-10.0-512BD4?logo=dotnet)](https://dotnet.microsoft.com/)
[![C#](https://img.shields.io/badge/C%23-12.0-239120?logo=csharp)](https://docs.microsoft.com/en-us/dotnet/csharp/)
[![WPF](https://img.shields.io/badge/WPF-Windows-0078D4?logo=windows)](https://docs.microsoft.com/en-us/dotnet/desktop/wpf/)
[![Update README](https://github.com/DiegoLimaInCode/PDV-CSharp/actions/workflows/update-readme.yml/badge.svg)](https://github.com/DiegoLimaInCode/PDV-CSharp/actions/workflows/update-readme.yml)

Um sistema de Ponto de Venda (PDV) moderno desenvolvido em C# com WPF para Windows.

## 📋 Sobre o Projeto

PDV-CSharp é um sistema completo de ponto de venda desenvolvido com tecnologias .NET modernas, oferecendo uma interface intuitiva e recursos robustos para gerenciamento de vendas em estabelecimentos comerciais.

## 🏗️ Estrutura do Projeto

O projeto está organizado em três camadas principais:

```
PDV-CSharp/
├── PDVCSharp.WPF/ # Camada de apresentação (Interface do usuário)
│ ├── Sections/ # Telas da aplicação
│ │ ├── Login.xaml # Tela de login
│ │ ├── Venda.xaml # Tela de vendas
│ │ └── Abertura.xaml # Tela de abertura de caixa
│ └── MainWindow.xaml # Janela principal
├── PDVCSharp.Domain/ # Camada de domínio (Regras de negócio)
└── PDVCSharp.Data/ # Camada de dados (Acesso a dados)
```

## 🚀 Tecnologias Utilizadas

- **.NET 10.0** - Framework de desenvolvimento
- **C# 12.0** - Linguagem de programação
- **WPF (Windows Presentation Foundation)** - Framework para interface gráfica
- **XAML** - Linguagem de marcação para UI

## 📦 Funcionalidades

- 🔐 **Sistema de Login** - Autenticação de usuários
- 💰 **Gerenciamento de Vendas** - Processamento de transações
- 📊 **Abertura de Caixa** - Controle de fluxo de caixa
- 🖥️ **Interface Moderna** - Design clean e intuitivo

## 💻 Requisitos

- Windows 10 ou superior
- .NET 10.0 SDK ou superior
- Visual Studio 2022 ou superior (recomendado)

## 🔧 Instalação

1. Clone o repositório:
```bash
git clone https://github.com/DiegoLimaInCode/PDV-CSharp.git
```

2. Abra o arquivo `PDVCSharp.slnx` no Visual Studio

3. Restaure os pacotes NuGet:
```bash
dotnet restore
```

4. Compile o projeto:
```bash
dotnet build
```

5. Execute o projeto:
```bash
dotnet run --project PDVCSharp.WPF
```

## 🎯 Como Usar

1. Execute a aplicação
2. Faça login com suas credenciais
3. Abra o caixa para iniciar as operações
4. Realize vendas através da interface de vendas

## 📝 Histórico de Commits Recentes

> 💡 **Atualização Automática**: Esta seção é atualizada automaticamente a cada novo commit!
> Para mais informações sobre como funciona, veja [docs/README-AUTOMATION.md](docs/README-AUTOMATION.md)

<!-- COMMITS_START -->
<!-- Este conteúdo é atualizado automaticamente -->

### 📊 Últimos 10 Commits

| Hash | Data | Mensagem | Autor |
|------|------|----------|-------|
| 0ed9278 | 10/02/2026 14:33 | Initial plan | copilot-swe-agent[bot] |
| 76c7e7a | 10/02/2026 11:20 | Add .gitignore and remove tracked files that should be ignored | diego |

<!-- COMMITS_END -->

## 👨‍💻 Desenvolvedor

**Diego Lima**

- GitHub: [@DiegoLimaInCode](https://github.com/DiegoLimaInCode)

## 📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

## 🤝 Contribuições

Contribuições são bem-vindas! Sinta-se à vontade para:

1. Fazer um Fork do projeto
2. Criar uma branch para sua feature (`git checkout -b feature/AmazingFeature`)
3. Commit suas mudanças (`git commit -m 'Add some AmazingFeature'`)
4. Push para a branch (`git push origin feature/AmazingFeature`)
5. Abrir um Pull Request

---

<div align="center">
Feito com ❤️ por Diego Lima
</div>
117 changes: 117 additions & 0 deletions docs/README-AUTOMATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Sistema de Atualização Automática do README

## 📖 Visão Geral

Este repositório inclui um sistema automatizado que mantém o README.md sempre atualizado com os commits mais recentes. Toda vez que há um push para as branches `main` ou `master`, o GitHub Actions executa um workflow que atualiza a seção de histórico de commits.

## 🔧 Como Funciona

### 1. Workflow do GitHub Actions

O arquivo `.github/workflows/update-readme.yml` define um workflow que:

- **Dispara automaticamente** quando há um push nas branches `main` ou `master`
- **Ignora mudanças** no próprio README.md para evitar loops infinitos
- **Busca os 10 commits mais recentes** usando `git log`
- **Atualiza a seção de commits** no README.md
- **Faz commit e push** das mudanças automaticamente

### 2. Marcadores no README

O README.md contém marcadores especiais que delimitam a seção de commits:

```markdown
<!-- COMMITS_START -->
[Conteúdo atualizado automaticamente]
<!-- COMMITS_END -->
```

O script Python procura por esses marcadores e substitui o conteúdo entre eles com a tabela de commits mais recente.

### 3. Script Python

Um script Python inline é executado pelo workflow para:

- Executar `git log` e formatar os commits
- Ler o README.md atual
- Localizar os marcadores `<!-- COMMITS_START -->` e `<!-- COMMITS_END -->`
- Substituir o conteúdo entre os marcadores
- Salvar o README atualizado

## 📋 Formato da Tabela de Commits

A tabela gerada inclui:

| Coluna | Descrição |
|--------|-----------|
| **Hash** | Hash curto do commit (7 caracteres) |
| **Data** | Data e hora do commit (DD/MM/YYYY HH:MM) |
| **Mensagem** | Mensagem do commit |
| **Autor** | Nome do autor do commit |

## 🔒 Segurança

- O workflow tem permissão `contents: write` apenas para atualizar o README
- O commit automático usa a identidade `github-actions[bot]`
- A diretiva `[skip ci]` evita que o próprio commit de atualização dispare o workflow novamente
- O `paths-ignore` adiciona uma camada extra de proteção contra loops infinitos

## ✨ Personalização

### Alterar o número de commits exibidos

Para mudar de 10 para outro número de commits, edite a linha no workflow:

```python
['git', 'log', '--pretty=format:| %h | %ad | %s | %an |', '--date=format:%d/%m/%Y %H:%M', '-10'],
```

Substitua `-10` pelo número desejado (ex: `-20` para 20 commits).

### Alterar o formato da data

Para mudar o formato da data, modifique a parte `--date=format:%d/%m/%Y %H:%M`:

- `%d/%m/%Y` - Dia/Mês/Ano
- `%H:%M` - Hora:Minuto
- Exemplo para formato americano: `%m/%d/%Y %I:%M %p`

### Adicionar mais colunas

Para adicionar informações adicionais à tabela (como email, hash completo, etc.), modifique o formato em:

```python
'--pretty=format:| %h | %ad | %s | %an |'
```

Placeholders disponíveis:
- `%h` - Hash abreviado
- `%H` - Hash completo
- `%an` - Nome do autor
- `%ae` - Email do autor
- `%s` - Mensagem do commit
- `%ad` - Data do autor
- `%cn` - Nome do committer

## 🚀 Manutenção

### O workflow não está funcionando?

1. Verifique se o workflow tem permissões adequadas em **Settings → Actions → General**
2. Confirme que os marcadores `<!-- COMMITS_START -->` e `<!-- COMMITS_END -->` existem no README.md
3. Verifique os logs do workflow em **Actions** no GitHub

### Desabilitar temporariamente

Para desabilitar o workflow temporariamente, adicione ao início do arquivo `.github/workflows/update-readme.yml`:

```yaml
on:
workflow_dispatch: # Apenas manual
```

## 📝 Notas

- O workflow é executado **após cada push**, não em pull requests
- As atualizações do README são commitadas automaticamente pelo bot do GitHub Actions
- O histórico de commits é sempre baseado na branch onde o push foi feito
Loading