Inventario Tecnico do Repositorio
Introducao ao documento
Este documento descreve o inventario tecnico do repositorio dhedalos-app-laravel-schedule-manager com base exclusiva em evidencias do codigo-fonte e configuracoes versionadas.
Versionamento
- Versao do documento: 1.0.0
- Ultima atualizacao: 2026-03-17
- Responsavel: GitHub Copilot
Referencial teorico
- C4 Model (Context/Container/Component)
- OpenAPI Specification 3.0.3
- Documentacao Laravel 11 (routing, queue, cache, mail)
Proposito do repo
Aplicacao Laravel com painel administrativo web e API HTTP para agendamentos, com envio de e-mails e rotinas de exportacao em CSV para S3.
- Evidencia: README.md:4
- Evidencia: routes/web.php:35
- Evidencia: routes/api.php:26
- Evidencia: app/Http/Controllers/ExportAppointmentsController.php:91
Entrypoints
- HTTP web via grupo de rotas web e area administrativa em /admin.
- Evidencia: app/Providers/RouteServiceProvider.php:34
- Evidencia: routes/web.php:35
- HTTP API prefixada por /api e definicoes em routes/api.php.
- Evidencia: app/Providers/RouteServiceProvider.php:30
- Evidencia: app/Providers/RouteServiceProvider.php:31
- Evidencia: routes/api.php:26
- Inicializacao de container de runtime com migrate e cache de config/rota/view/event.
- Evidencia: docker/entrypoint.sh:6
- Evidencia: docker/entrypoint.sh:7
- Evidencia: docker/entrypoint.sh:10
Principais pastas e responsabilidades
- app/: controllers, middleware, models e providers de dominio.
- Evidencia: composer.json:35
- routes/: definicao de endpoints web e api.
- Evidencia: app/Providers/RouteServiceProvider.php:32
- Evidencia: app/Providers/RouteServiceProvider.php:35
- database/migrations/: schema relacional e tabelas de cache/jobs/api_keys.
- Evidencia: database/migrations/2024_03_28_140814_create_appointments_table.php:14
- Evidencia: database/migrations/2024_04_18_161748_create_jobs_table.php:14
- Evidencia: database/migrations/2024_04_24_014638_create_cache_table.php:14
- docker/ e Dockerfile: build, runtime e bootstrap operacional.
- Evidencia: Dockerfile:1
- Evidencia: docker/entrypoint.sh:3
- helm/ e kubernetes/: artefatos de deploy usados no pipeline.
- Evidencia: .github/workflows/ci-cd-pipeline.yaml:76
- Evidencia: .github/workflows/ci-cd-pipeline.yaml:77
Integracoes externas (URL, SDK, credenciais por env)
- S3 para upload do CSV exportado.
- Evidencia: app/Http/Controllers/ExportAppointmentsController.php:92
- Evidencia: config/filesystems.php:45
- E-mail SMTP (ou mailers alternativos Laravel).
- Evidencia: config/mail.php:13
- Evidencia: config/mail.php:31
- Evidencia: app/Http/Controllers/MailController.php:43
- Redis para cache/fila/Horizon.
- Evidencia: docker-compose.yml:42
- Evidencia: config/queue.php:65
- Evidencia: config/horizon.php:184
- Registro de imagem Docker e deploy Helm no CI/CD.
- Evidencia: .github/workflows/ci-cd-pipeline.yaml:33
- Evidencia: .github/workflows/ci-cd-pipeline.yaml:76
Jobs, cron, queues e workers
- Existe tabela jobs e configuracao de filas para database/redis/sqs/sync.
- Evidencia: database/migrations/2024_04_18_161748_create_jobs_table.php:14
- Evidencia: config/queue.php:31
- Horizon esta habilitado com supervisor redis e gate viewHorizon.
- Evidencia: composer.json:15
- Evidencia: config/horizon.php:182
- Evidencia: app/Providers/HorizonServiceProvider.php:31
- Nao ha agendamento explicito ativo no Console Kernel.
- Evidencia: app/Console/Kernel.php:15
Storage e caches
- Filesystem default local com disco s3 configurado.
- Evidencia: config/filesystems.php:16
- Evidencia: config/filesystems.php:45
- Cache default por variavel CACHE_DRIVER e store file/database/redis.
- Evidencia: config/cache.php:16
- Evidencia: config/cache.php:37
- Evidencia: config/cache.php:63
- API de agendamentos utiliza cache de slots por chave composta.
- Evidencia: app/Http/Controllers/AppointmentController.php:581
- Evidencia: app/Http/Controllers/AppointmentController.php:602
Variaveis de ambiente encontradas
- Aplicacao: APP_ENV, APP_DEBUG, APP_URL.
- Evidencia: .env.example:2
- Evidencia: .env.example:4
- Evidencia: .env.example:5
- Banco: DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD.
- Evidencia: .env.example:10
- Evidencia: .env.example:11
- Evidencia: .env.example:15
- Fila/cache/storage: QUEUE_CONNECTION, CACHE_DRIVER, FILESYSTEM_DRIVER.
- Evidencia: .env.example:18
- Evidencia: .env.example:19
- Evidencia: .env.example:20
- Redis: REDIS_HOST, REDIS_PASSWORD, REDIS_PORT.
- Evidencia: .env.example:26
- Evidencia: .env.example:27
- Evidencia: .env.example:28
- Mail: MAIL_MAILER, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD.
- Evidencia: .env.example:30
- Evidencia: .env.example:31
- Evidencia: .env.example:34
- AWS: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_BUCKET.
- Evidencia: .env.example:39
- Evidencia: .env.example:40
- Evidencia: .env.example:42
Comandos de run, test e build
- Run local: docker-compose up -d --build.
- Evidencia: README.md:50
- Build frontend: npm run build.
- Evidencia: package.json:6
- Evidencia: README.md:69
- Testes: suites Unit/Feature em phpunit.xml.
- Evidencia: phpunit.xml:8
- Evidencia: phpunit.xml:11
Achados x Evidencias
| Achado | Evidencia |
|---|---|
| API protegida por API key em parte das rotas | routes/api.php:26; app/Http/Kernel.php:70; app/Http/Middleware/ApiKeyMiddleware.php:22 |
| Endpoints administrativos em /api/v1 com auth:api | routes/api.php:55 |
| Dominio de agendamento usa tipos individual/collective/group/block | app/Models/AppointmentType.php:23; database/seeders/AppointmentTypeSeeder.php:25 |
| Exportacao de agendamentos envia arquivo para S3 | app/Http/Controllers/ExportAppointmentsController.php:91; app/Http/Controllers/ExportAppointmentsController.php:92 |
| Pipeline faz build/push e deploy Helm por branch | .github/workflows/ci-cd-pipeline.yaml:40; .github/workflows/ci-cd-pipeline.yaml:74; .github/workflows/ci-cd-pipeline.yaml:136 |
Pendencias
- A rota v1
appointments/date/{id}aponta para updateDate, mas o metodo nao foi identificado em AppointmentsApiController.- Evidencia: routes/api.php:76
- Evidencia: app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php:12
- Existe referencia a relacao services em AppointmentsApiController, mas o model Appointment nao define services().
- Evidencia: app/Http/Controllers/Api/V1/Admin/AppointmentsApiController.php:18
- Evidencia: app/Models/Appointment.php:34
- O parametro client na rota de slots nao e utilizado na assinatura dos metodos de AppointmentController.
- Evidencia: routes/api.php:30
- Evidencia: app/Http/Controllers/AppointmentController.php:577