
documentation-generator
by jokken79
Sistema de Gestión de Vacaciones Pagadas (有給休暇管理システム) - FastAPI + SQLite + JS | 78 tests | JWT Auth (admin/admin123) | Dashboard Premium
SKILL.md
name: documentation-generator description: Generador automático de documentación - API docs, README, guías de usuario y documentación técnica
Documentation Generator Skill
Skill especializado en generación automática de documentación técnica, guías de usuario, API docs y documentación de arquitectura.
Tipos de Documentación
1. Documentación de API (OpenAPI)
# Generación automática desde código FastAPI
openapi: 3.0.3
info:
title: YuKyuDATA API
description: API para gestión de vacaciones pagadas (有給休暇)
version: 1.0.0
contact:
name: YuKyu Support
email: support@yukyu.example.com
servers:
- url: http://localhost:8000
description: Desarrollo local
- url: https://api.yukyu.example.com
description: Producción
paths:
/api/employees:
get:
summary: Obtener lista de empleados
description: |
Retorna lista de empleados con datos de vacaciones.
Soporta filtrado por año fiscal.
operationId: getEmployees
parameters:
- name: year
in: query
description: Año fiscal (ej. 2025)
schema:
type: integer
example: 2025
responses:
'200':
description: Lista de empleados
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Employee'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
Employee:
type: object
properties:
employee_num:
type: string
description: Número de empleado
example: "001"
name:
type: string
description: Nombre completo
example: "田中太郎"
granted:
type: number
description: Días otorgados
example: 20
used:
type: number
description: Días usados
example: 10
balance:
type: number
description: Días restantes
example: 10
year:
type: integer
description: Año fiscal
example: 2025
2. README Template
# YuKyuDATA - Sistema de Gestión de Vacaciones 有給休暇管理
Sistema integral de gestión de vacaciones pagadas conforme a la ley laboral japonesa.
## Características Principales
- **Cumplimiento Legal**: Labor Standards Act Article 39
- **Obligación 5 Días**: Verificación automática de uso mínimo
- **LIFO Deduction**: Deducción optimizada para proteger días antiguos
- **Reportes**: Libro anual conforme a normativa (年次有給休暇管理簿)
## Quick Start
```bash
# Instalar dependencias
pip install -r requirements.txt
# Iniciar servidor
python -m uvicorn main:app --reload
# Acceder
open http://localhost:8000
Documentación
Stack Tecnológico
| Componente | Tecnología |
|---|---|
| Backend | FastAPI (Python) |
| Frontend | Vanilla JS + CSS |
| Database | SQLite / PostgreSQL |
| Charts | Chart.js, ApexCharts |
Licencia
MIT License - Ver LICENSE
### 3. Guía de Usuario
```markdown
# Guía de Usuario - YuKyuDATA
## 1. Dashboard
### KPIs Principales
- **Total Empleados**: Número de empleados activos
- **Tasa de Uso**: Porcentaje de vacaciones consumidas
- **Días Promedio**: Media de días usados por empleado
- **Compliance**: Estado de cumplimiento 5 días
### Navegación
1. Click en el menú lateral para cambiar vistas
2. Use el selector de año para cambiar período
3. El botón "Sync" actualiza datos desde Excel
## 2. Gestión de Solicitudes
### Crear Solicitud
1. Ir a "Solicitudes"
2. Click "Nueva Solicitud"
3. Completar formulario:
- Fecha inicio
- Fecha fin
- Tipo (día completo, medio día, por horas)
4. Click "Enviar"
### Aprobar Solicitud (Managers)
1. Ver solicitudes pendientes
2. Click en solicitud
3. Revisar detalles
4. Click "Aprobar" o "Rechazar"
## 3. Compliance
### Verificación 5 Días
- Los empleados con 10+ días **deben** usar mínimo 5 días/año
- El sistema muestra alertas:
- 🟢 Conforme: Usó 5+ días
- 🟡 En Riesgo: Usó <5 días, quedan meses
- 🔴 No Conforme: Usó <5 días, fin de año
### Días Próximos a Expirar
- Los días expiran 2 años después de otorgamiento
- El sistema alerta 3 meses antes de expiración
## 4. Exportar Datos
### Formatos Disponibles
- Excel (.xlsx)
- CSV
- PDF (reportes)
### Tipos de Exportación
1. **Lista de Empleados**: Datos actuales
2. **Solicitudes Aprobadas**: Historial
3. **Libro Anual**: Formato legal (年次有給休暇管理簿)
4. Documentación Técnica
# Arquitectura Técnica - YuKyuDATA
## Diagrama de Componentes
┌────────────────────────────────────────────────────────────┐ │ Frontend (SPA) │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │Dashboard│ │Employees│ │Requests │ │Analytics│ │ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ │ │ │ │ │ └──────────┴──────────┴──────────┘ │ │ │ │ │ DataService │ │ │ │ └─────────────────────────┼────────────────────────────────────┘ │ HTTP/REST ┌─────────────────────────┼────────────────────────────────────┐ │ FastAPI Backend │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │Auth │ │Employees│ │Leave │ │Analytics│ │ │ │Middleware│ │Routes │ │Routes │ │Routes │ │ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ │ │ │ │ │ └──────────┴──────────┴──────────┘ │ │ │ │ │ ┌──────────┴──────────┐ │ │ │ Service Layer │ │ │ │ fiscal_year.py │ │ │ │ excel_service.py │ │ │ └──────────┬──────────┘ │ │ │ │ │ ┌──────────┴──────────┐ │ │ │ Data Access │ │ │ │ database.py │ │ │ └──────────┬──────────┘ │ │ │ │ └─────────────────────────┼────────────────────────────────────┘ │ ┌─────────────────────────┼────────────────────────────────────┐ │ Data Layer │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ SQLite │ │ Excel │ │ │ │ yukyu.db │ │ 有給休暇管理.xlsm │ │ │ └─────────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────┘
## Flujo de Datos
### Sincronización Excel → DB
1. Usuario click "Sync"
2. `excel_service.parse_excel_file()` lee Excel
3. Detección automática de headers
4. Mapeo de columnas japonés → inglés
5. `database.save_employees()` guarda en SQLite
6. Frontend recibe confirmación
### Solicitud de Vacaciones
1. Usuario envía formulario
2. Validación en frontend (fechas, días)
3. POST `/api/leave-requests`
4. Validación en backend (balance)
5. Crear registro en `leave_requests`
6. Manager aprueba
7. `apply_lifo_deduction()` deduce días
8. Actualizar `employees.used`
9. Emitir evento para audit log
## Base de Datos
### Esquema ER
┌─────────────────┐ ┌─────────────────┐ │ employees │ │ leave_requests │ ├─────────────────┤ ├─────────────────┤ │ PK id │ │ PK id │ │ employee_num │◄──────│ employee_num │ │ name │ │ start_date │ │ granted │ │ end_date │ │ used │ │ days_requested │ │ balance │ │ status │ │ year │ │ approved_by │ └─────────────────┘ └─────────────────┘ │ │ 1:1 ▼ ┌─────────────────┐ │ genzai │ ├─────────────────┤ │ PK id │ │ employee_num │ │ dispatch_name │ │ hourly_wage │ │ hire_date │ └─────────────────┘
### Índices
```sql
CREATE INDEX idx_emp_year ON employees(year);
CREATE INDEX idx_emp_num ON employees(employee_num);
CREATE INDEX idx_lr_status ON leave_requests(status);
CREATE INDEX idx_genzai_status ON genzai(status);
### 5. Docstrings Automáticos
```python
def generate_docstring(function_code: str) -> str:
"""
Genera docstring para una función Python.
Args:
function_code: Código fuente de la función
Returns:
Docstring en formato Google style
Example:
>>> code = "def add(a: int, b: int) -> int:\n return a + b"
>>> print(generate_docstring(code))
'''
Add two integers.
Args:
a: First integer
b: Second integer
Returns:
Sum of a and b
'''
"""
# Parse function signature
# Analyze parameters and return type
# Generate description from function name
# Format as Google-style docstring
pass
# Ejemplo de output
def calculate_granted_days(seniority_years: float) -> int:
"""
Calculate vacation days granted based on employee seniority.
Implements Japanese Labor Standards Act Article 39 grant table.
Args:
seniority_years: Years of continuous employment (e.g., 0.5 for 6 months)
Returns:
Number of vacation days granted (10-20 days)
Raises:
ValueError: If seniority_years is negative
Examples:
>>> calculate_granted_days(0.5)
10
>>> calculate_granted_days(6.5)
20
Note:
- Minimum: 10 days at 6 months
- Maximum: 20 days at 6.5+ years
- Requires 80% attendance rate
"""
Generación de Diagramas
Mermaid.js
# Workflow de Solicitud
```mermaid
sequenceDiagram
participant E as Empleado
participant F as Frontend
participant B as Backend
participant D as Database
E->>F: Crear solicitud
F->>F: Validar fechas
F->>B: POST /leave-requests
B->>D: Check balance
D-->>B: Balance OK
B->>D: Create request
D-->>B: Request ID
B-->>F: 201 Created
F-->>E: Solicitud enviada
stateDiagram-v2
[*] --> PENDING: Crear
PENDING --> APPROVED: Aprobar
PENDING --> REJECTED: Rechazar
PENDING --> CANCELLED: Cancelar
APPROVED --> REVERTED: Revertir
REJECTED --> [*]
CANCELLED --> [*]
REVERTED --> [*]
## Templates de Documentación
### Changelog
```markdown
# Changelog
## [1.0.0] - 2026-01-09
### Added
- Sistema completo de gestión de vacaciones
- Verificación de cumplimiento 5 días
- Deducción LIFO automática
- Dashboard con KPIs
- Exportación a Excel/CSV
### Changed
- Migración de Flask a FastAPI
- Nuevo diseño con glassmorphism
### Fixed
- Cálculo correcto de carry-over
- Bug en año fiscal japonés
### Security
- Implementación de JWT
- Rate limiting 100 req/min
- XSS prevention
Contributing Guide
# Contributing Guide
## Getting Started
1. Fork el repositorio
2. Clone tu fork
3. Crear branch: `git checkout -b feature/nombre`
4. Instalar: `pip install -r requirements-dev.txt`
## Development
### Estilo de Código
- Python: PEP 8, Black formatter
- JavaScript: ESLint, Prettier
- CSS: BEM naming, variables CSS
### Tests
```bash
# Antes de commit
pytest tests/ -v
npx jest
Commit Messages
<type>(<scope>): <description>
Types: feat, fix, docs, style, refactor, test, chore
Scope: api, frontend, db, auth, compliance
Pull Request
- Update CHANGELOG.md
- Asegurar tests pasan
- Describir cambios
- Link a issue si aplica
## Comandos de Generación
```bash
# API Docs (OpenAPI)
python -c "from main import app; import json; print(json.dumps(app.openapi()))" > openapi.json
# Docstrings coverage
pip install interrogate
interrogate -v . --fail-under 80
# README badges
[]()
[]()
# Generate HTML docs
pip install pdoc
pdoc --html --output-dir docs/ .
Principio Guía: "Documenta para tu yo del futuro. Si no está documentado, no existe."
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon