diff --git a/apps/docs/content/docs/de/execution/api.mdx b/apps/docs/content/docs/de/execution/api.mdx index 459a235e2f..fbfa995e60 100644 --- a/apps/docs/content/docs/de/execution/api.mdx +++ b/apps/docs/content/docs/de/execution/api.mdx @@ -27,14 +27,16 @@ Alle API-Antworten enthalten Informationen über Ihre Workflow-Ausführungslimit "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, // Max sync workflow executions per minute - "remaining": 58, // Remaining sync workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 60, // Sustained rate limit per minute + "maxBurst": 120, // Maximum burst capacity + "remaining": 118, // Current tokens available (up to maxBurst) + "resetAt": "..." // When tokens next refill }, "async": { - "limit": 60, // Max async workflow executions per minute - "remaining": 59, // Remaining async workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 200, // Sustained rate limit per minute + "maxBurst": 400, // Maximum burst capacity + "remaining": 398, // Current tokens available + "resetAt": "..." // When tokens next refill } }, "usage": { @@ -46,7 +48,7 @@ Alle API-Antworten enthalten Informationen über Ihre Workflow-Ausführungslimit } ``` -**Hinweis:** Die Ratenbegrenzungen in der Antwort beziehen sich auf Workflow-Ausführungen. Die Ratenbegrenzungen für den Aufruf dieses API-Endpunkts befinden sich in den Antwort-Headern (`X-RateLimit-*`). +**Hinweis:** Ratenbegrenzungen verwenden einen Token-Bucket-Algorithmus. `remaining` kann `requestsPerMinute` bis zu `maxBurst` überschreiten, wenn du dein volles Kontingent in letzter Zeit nicht genutzt hast, was Burst-Traffic ermöglicht. Die Ratenbegrenzungen im Antworttext gelten für Workflow-Ausführungen. Die Ratenbegrenzungen für den Aufruf dieses API-Endpunkts befinden sich in den Antwort-Headern (`X-RateLimit-*`). ### Logs abfragen @@ -110,13 +112,15 @@ Fragen Sie Workflow-Ausführungsprotokolle mit umfangreichen Filteroptionen ab. "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -190,13 +194,15 @@ Rufen Sie detaillierte Informationen zu einem bestimmten Logeintrag ab. "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -482,19 +488,27 @@ Fehlgeschlagene Webhook-Zustellungen werden mit exponentiellem Backoff und Jitte ## Rate-Limiting -Die API implementiert Rate-Limiting, um eine faire Nutzung zu gewährleisten: +Die API verwendet einen **Token-Bucket-Algorithmus** für die Ratenbegrenzung, der eine faire Nutzung ermöglicht und gleichzeitig Burst-Traffic zulässt: -- **Kostenloser Plan**: 10 Anfragen pro Minute -- **Pro-Plan**: 30 Anfragen pro Minute -- **Team-Plan**: 60 Anfragen pro Minute -- **Enterprise-Plan**: Individuelle Limits +| Plan | Anfragen/Minute | Burst-Kapazität | +|------|-----------------|----------------| +| Free | 10 | 20 | +| Pro | 30 | 60 | +| Team | 60 | 120 | +| Enterprise | 120 | 240 | -Rate-Limit-Informationen sind in den Antwort-Headern enthalten: -- `X-RateLimit-Limit`: Maximale Anfragen pro Zeitfenster -- `X-RateLimit-Remaining`: Verbleibende Anfragen im aktuellen Zeitfenster -- `X-RateLimit-Reset`: ISO-Zeitstempel, wann das Zeitfenster zurückgesetzt wird +**Wie es funktioniert:** +- Tokens werden mit der Rate `requestsPerMinute` aufgefüllt +- Du kannst im Leerlauf bis zu `maxBurst` Tokens ansammeln +- Jede Anfrage verbraucht 1 Token +- Die Burst-Kapazität ermöglicht die Bewältigung von Verkehrsspitzen -## Beispiel: Abfragen neuer Logs +Informationen zur Ratenbegrenzung sind in den Antwort-Headern enthalten: +- `X-RateLimit-Limit`: Anfragen pro Minute (Auffüllrate) +- `X-RateLimit-Remaining`: Aktuell verfügbare Tokens +- `X-RateLimit-Reset`: ISO-Zeitstempel, wann Tokens als nächstes aufgefüllt werden + +## Beispiel: Abfragen nach neuen Logs ```javascript let cursor = null; @@ -541,7 +555,7 @@ async function pollLogs() { setInterval(pollLogs, 30000); ``` -## Beispiel: Verarbeiten von Webhooks +## Beispiel: Verarbeitung von Webhooks ```javascript import express from 'express'; diff --git a/apps/docs/content/docs/de/execution/costs.mdx b/apps/docs/content/docs/de/execution/costs.mdx index 8604cdb111..9c3ea167f4 100644 --- a/apps/docs/content/docs/de/execution/costs.mdx +++ b/apps/docs/content/docs/de/execution/costs.mdx @@ -147,8 +147,20 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt { "success": true, "rateLimit": { - "sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" }, - "async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" }, + "sync": { + "isLimited": false, + "requestsPerMinute": 25, + "maxBurst": 50, + "remaining": 50, + "resetAt": "2025-09-08T22:51:55.999Z" + }, + "async": { + "isLimited": false, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 400, + "resetAt": "2025-09-08T22:51:56.155Z" + }, "authType": "api" }, "usage": { @@ -159,49 +171,54 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt } ``` +**Rate-Limit-Felder:** +- `requestsPerMinute`: Dauerhafte Rate-Begrenzung (Tokens werden mit dieser Rate aufgefüllt) +- `maxBurst`: Maximale Tokens, die Sie ansammeln können (Burst-Kapazität) +- `remaining`: Aktuell verfügbare Tokens (können bis zu `maxBurst` sein) + **Antwortfelder:** -- `currentPeriodCost` zeigt die Nutzung im aktuellen Abrechnungszeitraum -- `limit` wird aus individuellen Limits (Free/Pro) oder gebündelten Organisationslimits (Team/Enterprise) abgeleitet +- `currentPeriodCost` spiegelt die Nutzung in der aktuellen Abrechnungsperiode wider +- `limit` wird von individuellen Limits (Free/Pro) oder gepoolten Organisationslimits (Team/Enterprise) abgeleitet - `plan` ist der aktive Plan mit der höchsten Priorität, der mit Ihrem Benutzer verknüpft ist ## Plan-Limits Verschiedene Abonnementpläne haben unterschiedliche Nutzungslimits: -| Plan | Monatliches Nutzungslimit | Ratengrenze (pro Minute) | +| Plan | Monatliches Nutzungslimit | Rate-Limits (pro Minute) | |------|-------------------|-------------------------| | **Free** | $10 | 5 sync, 10 async | | **Pro** | $100 | 10 sync, 50 async | -| **Team** | $500 (gebündelt) | 50 sync, 100 async | +| **Team** | $500 (gepoolt) | 50 sync, 100 async | | **Enterprise** | Individuell | Individuell | ## Abrechnungsmodell -Sim verwendet ein **Basisabonnement + Überschreitung** Abrechnungsmodell: +Sim verwendet ein **Basisabonnement + Mehrverbrauch**-Abrechnungsmodell: ### Wie es funktioniert -**Pro Plan ($20/Monat):** +**Pro-Plan ($20/Monat):** - Monatliches Abonnement beinhaltet $20 Nutzung - Nutzung unter $20 → Keine zusätzlichen Kosten -- Nutzung über $20 → Zahlung der Überschreitung am Monatsende -- Beispiel: $35 Nutzung = $20 (Abonnement) + $15 (Überschreitung) +- Nutzung über $20 → Zahlen Sie den Mehrverbrauch am Monatsende +- Beispiel: $35 Nutzung = $20 (Abonnement) + $15 (Mehrverbrauch) -**Team Plan ($40/Benutzer/Monat):** -- Gebündelte Nutzung für alle Teammitglieder -- Überschreitung wird aus der Gesamtnutzung des Teams berechnet +**Team-Plan ($40/Benutzer/Monat):** +- Gepoolte Nutzung für alle Teammitglieder +- Mehrverbrauch wird aus der Gesamtnutzung des Teams berechnet - Organisationsinhaber erhält eine Rechnung -**Enterprise Pläne:** -- Fester monatlicher Preis, keine Überschreitungen +**Enterprise-Pläne:** +- Fester monatlicher Preis, kein Mehrverbrauch - Individuelle Nutzungslimits gemäß Vereinbarung -### Schwellenwertabrechnung +### Schwellenwert-Abrechnung -Wenn die nicht abgerechnete Überschreitung $50 erreicht, berechnet Sim automatisch den gesamten nicht abgerechneten Betrag. +Wenn der nicht abgerechnete Mehrverbrauch $50 erreicht, berechnet Sim automatisch den gesamten nicht abgerechneten Betrag. **Beispiel:** -- Tag 10: $70 Überschreitung → Sofortige Abrechnung von $70 +- Tag 10: $70 Mehrverbrauch → Sofortige Abrechnung von $70 - Tag 15: Zusätzliche $35 Nutzung ($105 insgesamt) → Bereits abgerechnet, keine Aktion - Tag 20: Weitere $50 Nutzung ($155 insgesamt, $85 nicht abgerechnet) → Sofortige Abrechnung von $85 diff --git a/apps/docs/content/docs/es/execution/api.mdx b/apps/docs/content/docs/es/execution/api.mdx index 35007d87bc..a08eca485e 100644 --- a/apps/docs/content/docs/es/execution/api.mdx +++ b/apps/docs/content/docs/es/execution/api.mdx @@ -27,14 +27,16 @@ Todas las respuestas de la API incluyen información sobre tus límites de ejecu "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, // Max sync workflow executions per minute - "remaining": 58, // Remaining sync workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 60, // Sustained rate limit per minute + "maxBurst": 120, // Maximum burst capacity + "remaining": 118, // Current tokens available (up to maxBurst) + "resetAt": "..." // When tokens next refill }, "async": { - "limit": 60, // Max async workflow executions per minute - "remaining": 59, // Remaining async workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 200, // Sustained rate limit per minute + "maxBurst": 400, // Maximum burst capacity + "remaining": 398, // Current tokens available + "resetAt": "..." // When tokens next refill } }, "usage": { @@ -46,7 +48,7 @@ Todas las respuestas de la API incluyen información sobre tus límites de ejecu } ``` -**Nota:** Los límites de tasa en el cuerpo de la respuesta son para ejecuciones de flujos de trabajo. Los límites de tasa para llamar a este endpoint de la API están en los encabezados de respuesta (`X-RateLimit-*`). +**Nota:** Los límites de tasa utilizan un algoritmo de cubo de tokens. `remaining` puede exceder `requestsPerMinute` hasta `maxBurst` cuando no has usado tu asignación completa recientemente, permitiendo tráfico en ráfagas. Los límites de tasa en el cuerpo de la respuesta son para ejecuciones de flujo de trabajo. Los límites de tasa para llamar a este punto final de la API están en los encabezados de respuesta (`X-RateLimit-*`). ### Consultar registros @@ -110,13 +112,15 @@ Consulta los registros de ejecución de flujos de trabajo con amplias opciones d "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -190,13 +194,15 @@ Recupera información detallada sobre una entrada de registro específica. "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -482,19 +488,27 @@ Las entregas de webhook fallidas se reintentan con retroceso exponencial y fluct ## Limitación de tasa -La API implementa limitación de tasa para asegurar un uso justo: +La API utiliza un **algoritmo de cubo de tokens** para limitar la tasa, proporcionando un uso justo mientras permite tráfico en ráfagas: -- **Plan gratuito**: 10 solicitudes por minuto -- **Plan Pro**: 30 solicitudes por minuto -- **Plan Team**: 60 solicitudes por minuto -- **Plan Enterprise**: Límites personalizados +| Plan | Solicitudes/Minuto | Capacidad de ráfaga | +|------|-----------------|----------------| +| Free | 10 | 20 | +| Pro | 30 | 60 | +| Team | 60 | 120 | +| Enterprise | 120 | 240 | -La información de límite de tasa se incluye en las cabeceras de respuesta: -- `X-RateLimit-Limit`: Solicitudes máximas por ventana -- `X-RateLimit-Remaining`: Solicitudes restantes en la ventana actual -- `X-RateLimit-Reset`: Marca de tiempo ISO cuando la ventana se reinicia +**Cómo funciona:** +- Los tokens se recargan a una tasa de `requestsPerMinute` +- Puedes acumular hasta `maxBurst` tokens cuando estás inactivo +- Cada solicitud consume 1 token +- La capacidad de ráfaga permite manejar picos de tráfico -## Ejemplo: Sondeo de nuevos registros +La información del límite de tasa se incluye en los encabezados de respuesta: +- `X-RateLimit-Limit`: Solicitudes por minuto (tasa de recarga) +- `X-RateLimit-Remaining`: Tokens disponibles actualmente +- `X-RateLimit-Reset`: Marca de tiempo ISO cuando los tokens se recargan nuevamente + +## Ejemplo: Sondeo para nuevos registros ```javascript let cursor = null; diff --git a/apps/docs/content/docs/es/execution/costs.mdx b/apps/docs/content/docs/es/execution/costs.mdx index 52c0a8155e..4da110213d 100644 --- a/apps/docs/content/docs/es/execution/costs.mdx +++ b/apps/docs/content/docs/es/execution/costs.mdx @@ -147,8 +147,20 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt { "success": true, "rateLimit": { - "sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" }, - "async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" }, + "sync": { + "isLimited": false, + "requestsPerMinute": 25, + "maxBurst": 50, + "remaining": 50, + "resetAt": "2025-09-08T22:51:55.999Z" + }, + "async": { + "isLimited": false, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 400, + "resetAt": "2025-09-08T22:51:56.155Z" + }, "authType": "api" }, "usage": { @@ -159,6 +171,11 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt } ``` +**Campos de límite de tasa:** +- `requestsPerMinute`: Límite de tasa sostenida (los tokens se recargan a esta velocidad) +- `maxBurst`: Máximo de tokens que puedes acumular (capacidad de ráfaga) +- `remaining`: Tokens disponibles actualmente (puede ser hasta `maxBurst`) + **Campos de respuesta:** - `currentPeriodCost` refleja el uso en el período de facturación actual - `limit` se deriva de límites individuales (Gratuito/Pro) o límites agrupados de la organización (Equipo/Empresa) @@ -170,38 +187,38 @@ Los diferentes planes de suscripción tienen diferentes límites de uso: | Plan | Límite de uso mensual | Límites de tasa (por minuto) | |------|-------------------|-------------------------| -| **Gratuito** | $10 | 5 sinc, 10 asinc | -| **Pro** | $100 | 10 sinc, 50 asinc | -| **Equipo** | $500 (agrupado) | 50 sinc, 100 asinc | +| **Gratuito** | $10 | 5 sincrónico, 10 asincrónico | +| **Pro** | $100 | 10 sincrónico, 50 asincrónico | +| **Equipo** | $500 (agrupado) | 50 sincrónico, 100 asincrónico | | **Empresa** | Personalizado | Personalizado | ## Modelo de facturación -Sim utiliza un modelo de facturación de **suscripción base + exceso**: +Sim utiliza un modelo de facturación de **suscripción base + excedente**: ### Cómo funciona **Plan Pro ($20/mes):** - La suscripción mensual incluye $20 de uso - Uso por debajo de $20 → Sin cargos adicionales -- Uso por encima de $20 → Pagas el exceso al final del mes -- Ejemplo: $35 de uso = $20 (suscripción) + $15 (exceso) +- Uso por encima de $20 → Pagas el excedente al final del mes +- Ejemplo: $35 de uso = $20 (suscripción) + $15 (excedente) -**Plan de equipo ($40/usuario/mes):** +**Plan de Equipo ($40/usuario/mes):** - Uso agrupado entre todos los miembros del equipo -- Exceso calculado del uso total del equipo +- Excedente calculado del uso total del equipo - El propietario de la organización recibe una sola factura -**Planes empresariales:** -- Precio mensual fijo, sin excesos +**Planes Empresariales:** +- Precio mensual fijo, sin excedentes - Límites de uso personalizados según el acuerdo ### Facturación por umbral -Cuando el exceso no facturado alcanza los $50, Sim factura automáticamente el monto total no facturado. +Cuando el excedente no facturado alcanza los $50, Sim factura automáticamente el monto total no facturado. **Ejemplo:** -- Día 10: $70 de exceso → Factura inmediata de $70 +- Día 10: $70 de excedente → Factura inmediata de $70 - Día 15: $35 adicionales de uso ($105 en total) → Ya facturado, sin acción - Día 20: Otros $50 de uso ($155 en total, $85 no facturados) → Factura inmediata de $85 @@ -209,8 +226,8 @@ Esto distribuye los cargos por exceso a lo largo del mes en lugar de una gran fa ## Mejores prácticas para la gestión de costos -1. **Monitorear regularmente**: Revisa tu panel de uso frecuentemente para evitar sorpresas -2. **Establecer presupuestos**: Usa los límites del plan como guías para tu gasto +1. **Monitorear regularmente**: Revisa tu panel de uso con frecuencia para evitar sorpresas +2. **Establecer presupuestos**: Utiliza los límites del plan como guías para tu gasto 3. **Optimizar flujos de trabajo**: Revisa las ejecuciones de alto costo y optimiza los prompts o la selección de modelos 4. **Usar modelos apropiados**: Ajusta la complejidad del modelo a los requisitos de la tarea 5. **Agrupar tareas similares**: Combina múltiples solicitudes cuando sea posible para reducir la sobrecarga diff --git a/apps/docs/content/docs/fr/execution/api.mdx b/apps/docs/content/docs/fr/execution/api.mdx index 5be2b7a29f..669e41acfa 100644 --- a/apps/docs/content/docs/fr/execution/api.mdx +++ b/apps/docs/content/docs/fr/execution/api.mdx @@ -27,14 +27,16 @@ Toutes les réponses API incluent des informations sur vos limites d'exécution "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, // Max sync workflow executions per minute - "remaining": 58, // Remaining sync workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 60, // Sustained rate limit per minute + "maxBurst": 120, // Maximum burst capacity + "remaining": 118, // Current tokens available (up to maxBurst) + "resetAt": "..." // When tokens next refill }, "async": { - "limit": 60, // Max async workflow executions per minute - "remaining": 59, // Remaining async workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 200, // Sustained rate limit per minute + "maxBurst": 400, // Maximum burst capacity + "remaining": 398, // Current tokens available + "resetAt": "..." // When tokens next refill } }, "usage": { @@ -46,7 +48,7 @@ Toutes les réponses API incluent des informations sur vos limites d'exécution } ``` -**Remarque :** Les limites de débit dans le corps de la réponse concernent les exécutions de workflow. Les limites de débit pour l'appel de ce point de terminaison API se trouvent dans les en-têtes de réponse (`X-RateLimit-*`). +**Remarque :** les limites de débit utilisent un algorithme de seau à jetons. `remaining` peut dépasser `requestsPerMinute` jusqu'à `maxBurst` lorsque vous n'avez pas utilisé récemment votre allocation complète, permettant ainsi un trafic en rafale. Les limites de débit dans le corps de la réponse concernent les exécutions de workflow. Les limites de débit pour appeler ce point de terminaison API se trouvent dans les en-têtes de réponse (`X-RateLimit-*`). ### Interrogation des journaux @@ -110,13 +112,15 @@ Interrogez les journaux d'exécution des workflows avec de nombreuses options de "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -190,13 +194,15 @@ Récupérer des informations détaillées sur une entrée de journal spécifique "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -482,19 +488,27 @@ Les livraisons de webhook échouées sont réessayées avec un backoff exponenti ## Limitation de débit -L'API implémente une limitation de débit pour garantir une utilisation équitable : +L'API utilise un **algorithme de seau à jetons** pour limiter le débit, offrant une utilisation équitable tout en permettant des pics de trafic : -- **Plan gratuit** : 10 requêtes par minute -- **Plan Pro** : 30 requêtes par minute -- **Plan Équipe** : 60 requêtes par minute -- **Plan Entreprise** : Limites personnalisées +| Forfait | Requêtes/minute | Capacité de rafale | +|------|-----------------|----------------| +| Gratuit | 10 | 20 | +| Pro | 30 | 60 | +| Équipe | 60 | 120 | +| Entreprise | 120 | 240 | -Les informations de limitation de débit sont incluses dans les en-têtes de réponse : -- `X-RateLimit-Limit` : Nombre maximum de requêtes par fenêtre -- `X-RateLimit-Remaining` : Requêtes restantes dans la fenêtre actuelle -- `X-RateLimit-Reset` : Horodatage ISO indiquant quand la fenêtre se réinitialise +**Comment ça fonctionne :** +- Les jetons se rechargent au rythme de `requestsPerMinute` +- Vous pouvez accumuler jusqu'à `maxBurst` jetons en période d'inactivité +- Chaque requête consomme 1 jeton +- La capacité de rafale permet de gérer les pics de trafic -## Exemple : Polling pour nouveaux logs +Les informations sur les limites de débit sont incluses dans les en-têtes de réponse : +- `X-RateLimit-Limit` : requêtes par minute (taux de recharge) +- `X-RateLimit-Remaining` : jetons actuellement disponibles +- `X-RateLimit-Reset` : horodatage ISO indiquant quand les jetons seront rechargés + +## Exemple : interrogation pour de nouveaux journaux ```javascript let cursor = null; @@ -541,7 +555,7 @@ async function pollLogs() { setInterval(pollLogs, 30000); ``` -## Exemple : Traitement des webhooks +## Exemple : traitement des webhooks ```javascript import express from 'express'; diff --git a/apps/docs/content/docs/fr/execution/costs.mdx b/apps/docs/content/docs/fr/execution/costs.mdx index 42473ff8cc..db517860ce 100644 --- a/apps/docs/content/docs/fr/execution/costs.mdx +++ b/apps/docs/content/docs/fr/execution/costs.mdx @@ -147,8 +147,20 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt { "success": true, "rateLimit": { - "sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" }, - "async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" }, + "sync": { + "isLimited": false, + "requestsPerMinute": 25, + "maxBurst": 50, + "remaining": 50, + "resetAt": "2025-09-08T22:51:55.999Z" + }, + "async": { + "isLimited": false, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 400, + "resetAt": "2025-09-08T22:51:56.155Z" + }, "authType": "api" }, "usage": { @@ -159,6 +171,11 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt } ``` +**Champs de limite de débit :** +- `requestsPerMinute` : limite de débit soutenu (les jetons se rechargent à ce rythme) +- `maxBurst` : nombre maximum de jetons que vous pouvez accumuler (capacité de rafale) +- `remaining` : jetons actuellement disponibles (peut aller jusqu'à `maxBurst`) + **Champs de réponse :** - `currentPeriodCost` reflète l'utilisation dans la période de facturation actuelle - `limit` est dérivé des limites individuelles (Gratuit/Pro) ou des limites mutualisées de l'organisation (Équipe/Entreprise) @@ -188,7 +205,7 @@ Sim utilise un modèle de facturation **abonnement de base + dépassement** : - Exemple : 35 $ d'utilisation = 20 $ (abonnement) + 15 $ (dépassement) **Forfait Équipe (40 $/siège/mois) :** -- Utilisation mutualisée entre tous les membres de l'équipe +- Utilisation mutualisée pour tous les membres de l'équipe - Dépassement calculé à partir de l'utilisation totale de l'équipe - Le propriétaire de l'organisation reçoit une seule facture diff --git a/apps/docs/content/docs/ja/execution/api.mdx b/apps/docs/content/docs/ja/execution/api.mdx index b90c325d93..ce3c0b54a1 100644 --- a/apps/docs/content/docs/ja/execution/api.mdx +++ b/apps/docs/content/docs/ja/execution/api.mdx @@ -27,14 +27,16 @@ SimダッシュボードのユーザーセッティングからAPIキーを生 "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, // Max sync workflow executions per minute - "remaining": 58, // Remaining sync workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 60, // Sustained rate limit per minute + "maxBurst": 120, // Maximum burst capacity + "remaining": 118, // Current tokens available (up to maxBurst) + "resetAt": "..." // When tokens next refill }, "async": { - "limit": 60, // Max async workflow executions per minute - "remaining": 59, // Remaining async workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 200, // Sustained rate limit per minute + "maxBurst": 400, // Maximum burst capacity + "remaining": 398, // Current tokens available + "resetAt": "..." // When tokens next refill } }, "usage": { @@ -46,7 +48,7 @@ SimダッシュボードのユーザーセッティングからAPIキーを生 } ``` -**注意:** レスポンス本文のレート制限はワークフロー実行に関するものです。このAPIエンドポイントを呼び出すためのレート制限はレスポンスヘッダー(`X-RateLimit-*`)にあります。 +**注意:** レート制限はトークンバケットアルゴリズムを使用しています。最近の割り当てを完全に使用していない場合、`remaining`は`requestsPerMinute`を超えて`maxBurst`まで達することができ、バーストトラフィックを許可します。レスポンスボディのレート制限はワークフロー実行のためのものです。このAPIエンドポイントを呼び出すためのレート制限はレスポンスヘッダー(`X-RateLimit-*`)にあります。 ### ログの照会 @@ -110,13 +112,15 @@ SimダッシュボードのユーザーセッティングからAPIキーを生 "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -190,13 +194,15 @@ SimダッシュボードのユーザーセッティングからAPIキーを生 "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -482,17 +488,25 @@ Webhookシークレットを設定した場合、署名を検証してWebhookが ## レート制限 -APIは公平な使用を確保するためにレート制限を実装しています: +APIは**トークンバケットアルゴリズム**をレート制限に使用し、バーストトラフィックを許可しながら公平な使用を提供します: -- **無料プラン**: 1分あたり10リクエスト -- **プロプラン**: 1分あたり30リクエスト -- **チームプラン**: 1分あたり60リクエスト -- **エンタープライズプラン**: カスタム制限 +| プラン | リクエスト/分 | バースト容量 | +|------|-----------------|----------------| +| 無料 | 10 | 20 | +| プロ | 30 | 60 | +| チーム | 60 | 120 | +| エンタープライズ | 120 | 240 | + +**仕組み:** +- トークンは`requestsPerMinute`のレートで補充されます +- アイドル状態のとき、最大`maxBurst`トークンまで蓄積できます +- 各リクエストは1トークンを消費します +- バースト容量によりトラフィックスパイクの処理が可能になります レート制限情報はレスポンスヘッダーに含まれています: -- `X-RateLimit-Limit`: ウィンドウあたりの最大リクエスト数 -- `X-RateLimit-Remaining`: 現在のウィンドウで残っているリクエスト数 -- `X-RateLimit-Reset`: ウィンドウがリセットされるISOタイムスタンプ +- `X-RateLimit-Limit`:1分あたりのリクエスト数(補充レート) +- `X-RateLimit-Remaining`:現在利用可能なトークン +- `X-RateLimit-Reset`:トークンが次に補充されるISOタイムスタンプ ## 例:新しいログのポーリング @@ -541,7 +555,7 @@ async function pollLogs() { setInterval(pollLogs, 30000); ``` -## 例:Webhookの処理 +## 例:ウェブフックの処理 ```javascript import express from 'express'; diff --git a/apps/docs/content/docs/ja/execution/costs.mdx b/apps/docs/content/docs/ja/execution/costs.mdx index 5738fb5bd2..2e915bdb88 100644 --- a/apps/docs/content/docs/ja/execution/costs.mdx +++ b/apps/docs/content/docs/ja/execution/costs.mdx @@ -147,8 +147,20 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt { "success": true, "rateLimit": { - "sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" }, - "async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" }, + "sync": { + "isLimited": false, + "requestsPerMinute": 25, + "maxBurst": 50, + "remaining": 50, + "resetAt": "2025-09-08T22:51:55.999Z" + }, + "async": { + "isLimited": false, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 400, + "resetAt": "2025-09-08T22:51:56.155Z" + }, "authType": "api" }, "usage": { @@ -159,35 +171,40 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt } ``` +**レート制限フィールド:** +- `requestsPerMinute`:持続的なレート制限(トークンはこの速度で補充されます) +- `maxBurst`:蓄積できる最大トークン数(バースト容量) +- `remaining`:現在利用可能なトークン(最大で`maxBurst`まで) + **レスポンスフィールド:** -- `currentPeriodCost` は現在の請求期間の使用状況を反映します -- `limit` は個別の制限(無料/プロ)または組織のプール制限(チーム/エンタープライズ)から導出されます -- `plan` はユーザーに関連付けられた最優先のアクティブなプランです +- `currentPeriodCost`は現在の請求期間の使用状況を反映します +- `limit`は個別の制限(無料/プロ)または組織のプール制限(チーム/エンタープライズ)から派生します +- `plan`はユーザーに関連付けられた最優先のアクティブなプランです ## プラン制限 -異なるサブスクリプションプランには異なる使用制限があります: +サブスクリプションプランによって使用制限が異なります: | プラン | 月間使用制限 | レート制限(分あたり) | |------|-------------------|-------------------------| -| **無料** | $10 | 5 同期、10 非同期 | -| **プロ** | $100 | 10 同期、50 非同期 | -| **チーム** | $500(プール) | 50 同期、100 非同期 | +| **無料** | $10 | 5同期、10非同期 | +| **プロ** | $100 | 10同期、50非同期 | +| **チーム** | $500(プール) | 50同期、100非同期 | | **エンタープライズ** | カスタム | カスタム | ## 課金モデル -Simは**基本サブスクリプション + 超過分**の課金モデルを使用しています: +Simは**基本サブスクリプション+超過分**の課金モデルを使用しています: ### 仕組み **プロプラン(月額$20):** - 月額サブスクリプションには$20分の使用量が含まれます - 使用量が$20未満 → 追加料金なし -- 使用量が$20を超える → 月末に超過分を支払う +- 使用量が$20を超える → 月末に超過分を支払い - 例:$35の使用量 = $20(サブスクリプション)+ $15(超過分) -**チームプラン(月額$40/シート):** +**チームプラン(席あたり月額$40):** - チームメンバー全体でプールされた使用量 - チーム全体の使用量から超過分を計算 - 組織のオーナーが一括で請求を受ける @@ -209,10 +226,10 @@ Simは**基本サブスクリプション + 超過分**の課金モデルを使 ## コスト管理のベストプラクティス -1. **定期的な監視**: 予想外の事態を避けるため、使用状況ダッシュボードを頻繁に確認する +1. **定期的な監視**: 予期せぬ事態を避けるため、使用状況ダッシュボードを頻繁に確認する 2. **予算の設定**: プランの制限を支出のガードレールとして使用する 3. **ワークフローの最適化**: コストの高い実行を見直し、プロンプトやモデル選択を最適化する -4. **適切なモデルの使用**: タスクの要件に合わせてモデルの複雑さを調整する +4. **適切なモデルの使用**: タスクの要件にモデルの複雑さを合わせる 5. **類似タスクのバッチ処理**: 可能な場合は複数のリクエストを組み合わせてオーバーヘッドを削減する ## 次のステップ diff --git a/apps/docs/content/docs/zh/execution/api.mdx b/apps/docs/content/docs/zh/execution/api.mdx index 3df09d944a..b1b8e5f355 100644 --- a/apps/docs/content/docs/zh/execution/api.mdx +++ b/apps/docs/content/docs/zh/execution/api.mdx @@ -27,14 +27,16 @@ curl -H "x-api-key: YOUR_API_KEY" \ "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, // Max sync workflow executions per minute - "remaining": 58, // Remaining sync workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 60, // Sustained rate limit per minute + "maxBurst": 120, // Maximum burst capacity + "remaining": 118, // Current tokens available (up to maxBurst) + "resetAt": "..." // When tokens next refill }, "async": { - "limit": 60, // Max async workflow executions per minute - "remaining": 59, // Remaining async workflow executions - "resetAt": "..." // When the window resets + "requestsPerMinute": 200, // Sustained rate limit per minute + "maxBurst": 400, // Maximum burst capacity + "remaining": 398, // Current tokens available + "resetAt": "..." // When tokens next refill } }, "usage": { @@ -46,7 +48,7 @@ curl -H "x-api-key: YOUR_API_KEY" \ } ``` -**注意:** 响应正文中的速率限制是针对工作流执行的。调用此 API 端点的速率限制在响应标头中(`X-RateLimit-*`)。 +**注意:** 速率限制使用令牌桶算法。`remaining` 可以超过 `requestsPerMinute` 达到 `maxBurst`,当您最近未使用全部配额时,允许突发流量。响应正文中的速率限制适用于工作流执行。调用此 API 端点的速率限制在响应头中(`X-RateLimit-*`)。 ### 查询日志 @@ -110,13 +112,15 @@ curl -H "x-api-key: YOUR_API_KEY" \ "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -190,13 +194,15 @@ curl -H "x-api-key: YOUR_API_KEY" \ "limits": { "workflowExecutionRateLimit": { "sync": { - "limit": 60, - "remaining": 58, + "requestsPerMinute": 60, + "maxBurst": 120, + "remaining": 118, "resetAt": "2025-01-01T12:35:56.789Z" }, "async": { - "limit": 60, - "remaining": 59, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 398, "resetAt": "2025-01-01T12:35:56.789Z" } }, @@ -482,17 +488,25 @@ curl -H "x-api-key: YOUR_API_KEY" \ ## 速率限制 -API 实现了速率限制以确保公平使用: +该 API 使用 **令牌桶算法** 进行速率限制,在提供公平使用的同时允许突发流量: -- **免费计划**:每分钟 10 次请求 -- **专业计划**:每分钟 30 次请求 -- **团队计划**:每分钟 60 次请求 -- **企业计划**:自定义限制 +| 计划 | 请求/分钟 | 突发容量 | +|------|-----------|----------| +| 免费 | 10 | 20 | +| 专业版 | 30 | 60 | +| 团队版 | 60 | 120 | +| 企业版 | 120 | 240 | -速率限制信息包含在响应标头中: -- `X-RateLimit-Limit`:每个窗口的最大请求数 -- `X-RateLimit-Remaining`:当前窗口中剩余的请求数 -- `X-RateLimit-Reset`:窗口重置时的 ISO 时间戳 +**工作原理:** +- 令牌以 `requestsPerMinute` 的速率补充 +- 空闲时最多可累积 `maxBurst` 个令牌 +- 每个请求消耗 1 个令牌 +- 突发容量允许处理流量高峰 + +速率限制信息包含在响应头中: +- `X-RateLimit-Limit`:每分钟请求数(补充速率) +- `X-RateLimit-Remaining`:当前可用令牌数 +- `X-RateLimit-Reset`:令牌下次补充的 ISO 时间戳 ## 示例:轮询新日志 @@ -541,7 +555,7 @@ async function pollLogs() { setInterval(pollLogs, 30000); ``` -## 示例:处理 Webhook +## 示例:处理 Webhooks ```javascript import express from 'express'; diff --git a/apps/docs/content/docs/zh/execution/costs.mdx b/apps/docs/content/docs/zh/execution/costs.mdx index c0b8210cd3..fa1dd29156 100644 --- a/apps/docs/content/docs/zh/execution/costs.mdx +++ b/apps/docs/content/docs/zh/execution/costs.mdx @@ -147,8 +147,20 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt { "success": true, "rateLimit": { - "sync": { "isLimited": false, "limit": 10, "remaining": 10, "resetAt": "2025-09-08T22:51:55.999Z" }, - "async": { "isLimited": false, "limit": 50, "remaining": 50, "resetAt": "2025-09-08T22:51:56.155Z" }, + "sync": { + "isLimited": false, + "requestsPerMinute": 25, + "maxBurst": 50, + "remaining": 50, + "resetAt": "2025-09-08T22:51:55.999Z" + }, + "async": { + "isLimited": false, + "requestsPerMinute": 200, + "maxBurst": 400, + "remaining": 400, + "resetAt": "2025-09-08T22:51:56.155Z" + }, "authType": "api" }, "usage": { @@ -159,6 +171,11 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt } ``` +**速率限制字段:** +- `requestsPerMinute`:持续速率限制(令牌以此速率补充) +- `maxBurst`:您可以累积的最大令牌数(突发容量) +- `remaining`:当前可用令牌数(最多可达 `maxBurst`) + **响应字段:** - `currentPeriodCost` 反映当前计费周期的使用情况 - `limit` 来源于个人限制(免费/专业)或组织池限制(团队/企业) @@ -170,9 +187,9 @@ curl -X GET -H "X-API-Key: YOUR_API_KEY" -H "Content-Type: application/json" htt | 计划 | 每月使用限制 | 速率限制(每分钟) | |------|-------------------|-------------------------| -| **免费** | $10 | 5 同步, 10 异步 | -| **专业** | $100 | 10 同步, 50 异步 | -| **团队** | $500(共享) | 50 同步, 100 异步 | +| **免费** | $10 | 5 同步,10 异步 | +| **专业** | $100 | 10 同步,50 异步 | +| **团队** | $500(共享) | 50 同步,100 异步 | | **企业** | 自定义 | 自定义 | ## 计费模式 @@ -187,9 +204,9 @@ Sim 使用 **基础订阅 + 超额** 的计费模式: - 使用超过 $20 → 月底支付超额部分 - 示例:$35 使用 = $20(订阅)+ $15(超额) -**团队计划($40/人/月):** -- 团队成员共享使用额度 -- 超额部分根据团队总使用量计算 +**团队计划($40/每席位/月):** +- 团队成员之间共享使用额度 +- 超额费用根据团队总使用量计算 - 组织所有者收到一张账单 **企业计划:** @@ -198,20 +215,20 @@ Sim 使用 **基础订阅 + 超额** 的计费模式: ### 阈值计费 -当未结算的超额费用达到 $50 时,Sim 会自动结算全部未结算金额。 +当未计费的超额费用达到 $50 时,Sim 会自动计费全额未计费金额。 **示例:** -- 第 10 天:$70 超额 → 立即结算 $70 -- 第 15 天:额外使用 $35(总计 $105)→ 已结算,无需操作 -- 第 20 天:再使用 $50(总计 $155,未结算 $85)→ 立即结算 $85 +- 第 10 天:$70 超额 → 立即计费 $70 +- 第 15 天:额外使用 $35(总计 $105)→ 已计费,无需操作 +- 第 20 天:再使用 $50(总计 $155,未计费 $85)→ 立即计费 $85 -这将把大量的超额费用分散到整个月,而不是在周期结束时收到一张大账单。 +这会将大量的超额费用分散到整个月,而不是在周期结束时收到一张大账单。 ## 成本管理最佳实践 1. **定期监控**:经常检查您的使用仪表板,避免意外情况 2. **设定预算**:使用计划限制作为支出控制的护栏 -3. **优化工作流程**:审查高成本的执行情况,优化提示或模型选择 +3. **优化工作流程**:审查高成本的执行操作,优化提示或模型选择 4. **使用合适的模型**:根据任务需求匹配模型复杂度 5. **批量处理相似任务**:尽可能合并多个请求以减少开销 diff --git a/apps/docs/i18n.lock b/apps/docs/i18n.lock index a87b84f197..fbcbb04c77 100644 --- a/apps/docs/i18n.lock +++ b/apps/docs/i18n.lock @@ -4578,25 +4578,26 @@ checksums: content/32: 7b5e2207a0d93fd434b92f2f290a8dd5 content/33: f950b8f58af1973a3e00393d860bce02 content/34: d5ff07fec9455183e1d93f7ddf1dab1b - content/35: 405286ad5695582bf752b48aeeef3928 - content/36: 7bb928aba33a4013ad5f08487da5bbf9 - content/37: dbbf313837f13ddfa4a8843d71cb9cc4 - content/38: cf10560ae6defb8ee5da344fc6509f6e - content/39: c5dc6e5de6e45b17ee1f5eb567a18e2f - content/40: 332dab0588fb35dabb64b674ba6120eb - content/41: 714b3f99b0a8686bbb3434deb1f682b3 - content/42: ba18ac99184b17d7e49bd1abdc814437 - content/43: bed2b629274d55c38bd637e6a28dbc4a - content/44: 71487ae6f6fb1034d1787456de442e6d - content/45: 137d9874cf5ec8d09bd447f224cc7a7c - content/46: 6b5b4c3b2f98b8fc7dd908fef2605ce8 - content/47: 3af6812662546ce647a55939241fd88e - content/48: 6a4d7f0ccb8c28303251d1ef7b3dcca7 - content/49: 5dce779f77cc2b0abf12802a833df499 - content/50: aa47ff01b631252f024eaaae0c773e42 - content/51: 1266d1c7582bb617cdef56857be34f30 - content/52: c2cef2688104adaf6641092f43d4969a - content/53: 089fc64b4589b2eaa371de7e04c4aed9 + content/35: 5d2d85e082d9fdd3859fb5c788d5f9a3 + content/36: 23a7de9c5adb6e07c28c23a9d4e03dc2 + content/37: 7bb928aba33a4013ad5f08487da5bbf9 + content/38: dbbf313837f13ddfa4a8843d71cb9cc4 + content/39: cf10560ae6defb8ee5da344fc6509f6e + content/40: c5dc6e5de6e45b17ee1f5eb567a18e2f + content/41: 332dab0588fb35dabb64b674ba6120eb + content/42: 714b3f99b0a8686bbb3434deb1f682b3 + content/43: ba18ac99184b17d7e49bd1abdc814437 + content/44: bed2b629274d55c38bd637e6a28dbc4a + content/45: 71487ae6f6fb1034d1787456de442e6d + content/46: 137d9874cf5ec8d09bd447f224cc7a7c + content/47: 6b5b4c3b2f98b8fc7dd908fef2605ce8 + content/48: 3af6812662546ce647a55939241fd88e + content/49: 6a4d7f0ccb8c28303251d1ef7b3dcca7 + content/50: 5dce779f77cc2b0abf12802a833df499 + content/51: aa47ff01b631252f024eaaae0c773e42 + content/52: 1266d1c7582bb617cdef56857be34f30 + content/53: c2cef2688104adaf6641092f43d4969a + content/54: 089fc64b4589b2eaa371de7e04c4aed9 722959335ba76c9d0097860e2ad5a952: meta/title: 1f5b53b9904ec41d49c1e726e3d56b40 content/0: c2b41859d63a751682f0d9aec488e581 @@ -4638,8 +4639,8 @@ checksums: content/5: a29eaf87ca102db3f76a230f3651e767 content/6: de14c379db04a8dec394bce98e250254 content/7: 342e6c2c1e62d359bb47afe2be506c9a - content/8: fda5abcc2ed8a952f1d71fdf5e9df3f0 - content/9: 25390578c4e18022ac486438a39695f5 + content/8: 87ae5ed07aa69cb7816ffbadb4abf3f7 + content/9: 5f75d4e4c56a5e56fd4b51aaaadc12ca content/10: 841c6cfb0d4eb481cdb81dd170220ea0 content/11: 5fedb9fbc9445df0bf90a6d47710b1a6 content/12: c0ac34bbe27e2ff5272773e755641b5b @@ -4648,14 +4649,14 @@ checksums: content/15: 7f611a62b68373a068eb5dee13e53416 content/16: b05fe494158f2a347ced83b8d91a1445 content/17: 7c3a4621fd5a0e235fa98d2d3b76c12f - content/18: a192e0ca07a6cad306fa96b9942b7db4 + content/18: 8afd31ae50ad8c39689c25d9ffd530bc content/19: 3304a33dfb626c6e2267c062e8956a9d content/20: 6f09faac9d13188e039a75ddccebc214 content/21: a450f2a3dc78405c47859dd35084e385 content/22: c0ac34bbe27e2ff5272773e755641b5b content/23: 747141da074489515b6173c29d273403 content/24: 620d49f6fa198176bf6e59685e246e2c - content/25: fbea753ec4fb70bb0f2b61005fd3db18 + content/25: b83b4c7d69d3cee9bc6873fe3da4bdc3 content/26: 3304a33dfb626c6e2267c062e8956a9d content/27: 59c0fe74307c15d310aa16b09e835ddd content/28: 53b824557984ddecb9b8c3e695967bc9 @@ -4708,13 +4709,14 @@ checksums: content/75: c13873edfa750ce6caa155ef2f3f1883 content/76: 0bc07e36a42f7e25d5426b6a9deaac02 content/77: 017c829dd54fde20fa9fac7712342236 - content/78: ceba97287cca68b1291142a38175d6d8 - content/79: 02072ea1e956490139dbe8bbb0bc3e16 - content/80: 44871834b9cb423a9978843c08623979 - content/81: 0b22ed8a7e64005c666505c48e09f715 - content/82: 494dcadaea5e62eddd599700511ecee5 - content/83: 8332b16a0bf7a4c862f5104e9ffeb98d - content/84: 90e2f984a874a8f954ddfd127ec8178a + content/78: 6a8e85d2a7c36c724f752b93471122ea + content/79: b8e19306e2311b611318f8f89bb67971 + content/80: 9ddcf8728a2fb2f293894bef4ddc98b4 + content/81: 836487497de0b58afd0abff2ae5f044a + content/82: 0b22ed8a7e64005c666505c48e09f715 + content/83: 494dcadaea5e62eddd599700511ecee5 + content/84: 8332b16a0bf7a4c862f5104e9ffeb98d + content/85: 90e2f984a874a8f954ddfd127ec8178a 0e322683b6d10e9fa8c9a17ff15a5fb1: meta/title: a912b3c7fb996fefccb182cf5c4a3fbc content/0: e1f8d4b13687e7d73b5b5fbb4cb6142d