Purge for Mac: Free, Open-Source Mac Cleaner
免費開源的 Mac 清理工具,可清理快取、Xcode 垃圾與應用殘留。優先放入廢紙簍,無遙測。可用 Homebrew 安裝,或下載以用於 macOS 13+。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Robot que descarga el reporte "Cronograma de Trabajo (Órdenes de Servicio)" de ScordSoft, lo limpia, calcula los tableros y guarda en Supabase solo lo que cambió. El portal (Vercel) lee esos tableros ya listos.
GitHub Actions (8:00 a 0:00, cada 20 min)
→ robot entra a ScordSoft → 1 Excel (todas las filiales, por Registro, mes anterior + mes en curso)
→ limpieza y tableros en memoria
→ Supabase (solo órdenes nuevas o cambiadas + tableros que cambiaron)
↓
Portal Mi Fibra (Vercel) ← /api/instalaciones, /api/averias, /api/indicadores, /api/ordenes
Todo funciona en planes gratuitos: GitHub Actions (repositorio público = minutos ilimitados), Supabase Free y Vercel.
| Hora de Lima | Qué hace |
|---|---|
| 8:00, 8:20, 8:40 … 23:40 y 0:00 | Descarga el reporte del periodo y actualiza el portal (49 veces al día) |
Turnos de hasta ~5 h 30 min encadenados: al terminar, cada turno lanza el siguiente, que arranca apenas el anterior termina. Fuera de horario el turno espera dormido, así el de las 8:00 ya está despierto. El cron de GitHub (que se atrasa o se salta corridas) queda solo de respaldo.
| Tipo de actualización | Qué pide a ScordSoft | Cuándo |
|---|---|---|
| Completa | Mes anterior + mes en curso (~14 min) | La primera de cada turno y luego una por hora |
| Rápida | Solo el mes en curso (~la mitad) | Las demás marcas; se junta con la última completa |
Un solo reporte por corrida, igual que a mano: Filial SELECCIONE (todas) · Registro · del 1 del mes anterior al último día del mes en curso (p. ej. 01/09/2026 – 31/10/2026). Si ScordSoft devolviera una sola filial, el robot pide las demás en la misma sesión.
Las órdenes que ya no están en el reporte (por ejemplo, las del mes que sale del periodo al empezar un mes nuevo) se borran de la base: Supabase siempre contiene solo el periodo.
El plan gratuito tiene muy poco disco por segundo. Si cada corrida reescribe o relee las ~400 mil órdenes del periodo, se agota el presupuesto de E/S y el portal deja de responder ("Supabase 504 / statement timeout"). Por eso:
.estado/) y solo escribe lo que cambió.tableros; no hay cálculos pesados en cada visita.| Archivo | Qué hace |
|---|---|
sync/descargar.py | Robot (Playwright): login, filtros del reporte, Procesar y descarga del Excel. |
sync/procesar.py | Lee el Excel y conserva solo columnas operativas (sin nombres, documentos, direcciones ni teléfonos). |
sync/main.py | Orquesta una corrida y calcula todos los tableros. |
sync/resumen.py | Indicadores de la portada y del Dashboard. |
sync/averias.py, sync/instalaciones.py | Tableros de Averías y TC, e Instalaciones. |
sync/cajas.py | Cajas de planta cercanas a cada alta (mapas de Google My Maps). |
sync/subir.py | Escribe en Supabase solo lo que cambió y borra lo que salió del periodo. |
api/ | Funciones de Vercel que leen Supabase. |
public/ | Páginas del portal. |
db/ | SQL de la base. |
.github/workflows/sincronizar.yml | Horario del robot. |
GitHub → Settings → Secrets and variables → Actions
| Tipo | Nombre | Valor |
|---|---|---|
| Secret | SCORDSOFT_USUARIO, SCORDSOFT_CLAVE | usuario de servicio de ScordSoft |
| Secret | SCORDSOFT_TOTP_SECRETO | solo si usa app autenticadora |
| Secret | SUPABASE_URL, SUPABASE_SERVICE_KEY | Project URL y service_role key de Supabase |
Los IDs de los mapas de cajas no van en el código (el repo es público): están en Supabase, tabla ajustes,
clave robot:cajas_mapas ({"mapas": ["id1", "id2", …]}). Opcionalmente, la variable CAJAS_MAPAS tiene prioridad.
Vercel → Settings → Environment Variables: SUPABASE_URL, SUPABASE_SERVICE_KEY, PORTAL_TOKEN (clave del portal)
y MASTER_TOKEN (clave master para editar agendas).
Actions → Sincronizar ScordSoft → Run workflow:
una: una actualización ahora.turno: actualiza cada 20 min durante ~5 h 30 min.reescribir: reescribe todas las órdenes (solo si se cambió la limpieza en procesar.py; mejor de noche).pip install -r requirements.txt
python -m sync.main --excel reporte.xlsx --sin-subir # solo procesa y calcula
python -m sync.main --excel reporte.xlsx # procesa y guarda en Supabase
sync/descargar.py.COLUMNAS en sync/procesar.py.