{% extends "online/base.html" %}
{% block title %}Administración{% endblock %}
{% block content %}
PANEL DEL SERVIDOR Gestión auditada de universos, jugadores, moderación, colaboradores, privacidad y comercio.Administración
Estado del servicio
{% if stats.staff_without_mfa %}
#{{ report.id }} {{ report.subject }} — {{ report.username }} — {{ report.priority }}
{% else %}No hay reportes urgentes.
{% endfor %}{{ item.created_at|date_label }} — {{ item.username or "cuenta eliminada" }} — {{ item.endpoint }} — HTTP {{ item.result_status }}
{% else %}No hay actividad registrada.
{% endfor %}Puede ser solo humano, solo IA o mixto. Los jugadores humanos comienzan con el mismo perfil inicial que una IA normal.
| Universo | Estado | Humanos | IA | Granjas | Tipo | Idioma |
|---|---|---|---|---|---|---|
| {{ item.row.name }} | {{ item.row.status }} | {{ item.counts.humans or 0 }} | {{ item.counts.ais or 0 }} | {{ item.counts.farms or 0 }} | {{ UNIVERSE_ACCESS_MODES.get(item.config.access_mode, "Local o anterior") }} | {{ "Mixto" if item.config.language_policy != "single" else LANGUAGES.get(item.config.communication_language or "es", LANGUAGES.es).native_name }} |
UNIVERSO #{{ game.id }}
Editor completo del objeto de reglas. Conserva automáticamente el modo administrado y admite nuevas claves que se incorporen al juego sin tener que ampliar este formulario.
La opción está visible aunque el universo siga activo. Elimina jugadores, IA, planetas y todo su progreso. Antes se crea automáticamente una copia verificada de la base de datos.
{% if purchase_count %}Borrado bloqueado: este universo tiene {{ purchase_count }} compras vinculadas y debe conservarse para mantener pedidos, reembolsos y auditoría.
{% else %} {% endif %}Sin límites artificiales. Puede añadir rivales, granjas y espacio en una sola operación.
| Cuenta | Imperio | Estado | Planetas | Puntos |
|---|---|---|---|---|
| {{ member.username }} | {{ member.empire_name }} | {{ member.status }} | {{ member.planet_count }} | {{ member.score|number }} |
Sin jugadores humanos.
{% endif %}| Imperio | Comandante | Tipo | Planetas | Puntos |
|---|---|---|---|---|
| {{ ai.name }} | {{ ai.commander }} | {{ "Granja" if ai.is_farm_world else "Rival" }} | {{ ai.planet_count }} | {{ ai.score|number }} |
{{ total_players }} cuentas encontradas. Página {{ player_page }} de {{ player_pages }}.
| Usuario | Correo | Estado | Universos | Rol | Última actividad |
|---|---|---|---|---|---|
| {{ item.username }} | {{ item.email }} | {{ ACCOUNT_STATUSES.get(item.status, item.status) }} | {{ item.universe_count }} | {{ ROLE_LABELS.get(item.staff_role, "Jugador") }} | {{ item.last_seen_at|date_label if item.last_seen_at else "Nunca" }} |
CUENTA #{{ player.id }}
Permite advertencias, suspensiones y expulsiones globales o limitadas a un universo, temporales o permanentes. El motivo público explica la decisión al jugador y el interno conserva el contexto del equipo.
{{ sanction.public_reason }}
Aplicada por {{ sanction.creator_name or "sistema" }} el {{ sanction.created_at|date_label }}. {% if sanction.expires_at %}Caduca: {{ sanction.expires_at|date_label }}.{% else %}Sin caducidad.{% endif %} {% if sanction.revoked_at %}Revocada por {{ sanction.revoker_name or "sistema" }}: {{ sanction.revocation_reason }}{% endif %}
{% if not sanction.revoked_at %}{% endif %}No hay medidas registradas.
{% endfor %}Utiliza esta operación solo después de verificar una solicitud de supresión y las obligaciones de conservación. Retira correo, credenciales, segundo factor, sesiones, roles y nombres de imperios; conserva referencias contables pseudónimas.
La administración puede incorporar la cuenta aunque el registro del universo esté cerrado; debe existir espacio físico para el planeta.
{{ membership.empire_name }} — {{ membership.score|number }} puntos — {{ membership.status }}
{% if 'player.moderate' in permissions %}Puede sumar, retirar o fijar una cantidad exacta. Los valores nunca quedan por debajo de cero y toda modificación queda auditada.
Permite reparar estados o conceder contenido. No procesa un pago y todas las acciones quedan auditadas.
Cada formulario parte de los valores reales del planeta y permite cambiar nombre, tamaño, clima, población y ecología.
{% for planet in player_planets %}| Fecha | Acción | Resultado | Universo |
|---|---|---|---|
| {{ item.created_at|date_label }} | {{ item.endpoint }} | HTTP {{ item.result_status }} | {{ item.game_id or "—" }} |
| Pedido | Producto | Importe | Estado |
|---|---|---|---|
| #{{ item.id }} | {{ item.product_name }} | {{ "%.2f"|format(item.amount_cents / 100) }} {{ item.currency }} | {{ item.status }} |
| Expediente | Asunto | Reporta | Señalado | Estado | Prioridad | Responsable |
|---|---|---|---|---|---|---|
| #{{ report.id }} | {{ report.subject }} | {{ report.reporter_username }} | {{ report.target_username or "—" }} | {{ report.status }} | {{ report.priority }} | {{ report.assigned_username or "Sin asignar" }} |
EXPEDIENTE #{{ report.id }}
{{ message.body }}
{{ message.created_at|date_label }}Los roles aportan permisos predeterminados. Los permisos marcados se añaden de forma explícita.
| Cuenta | Correo | Rol | Activo | Segundo factor | Permisos adicionales |
|---|---|---|---|---|---|
| {{ item.username }} | {{ item.email }} | {{ ROLE_LABELS.get(item.role, item.role) }} | {{ "Sí" if item.active else "No" }} | {{ "Activo" if item.totp_enabled else "Pendiente" }} | {{ item.permissions_json }} |
Los colaboradores conservan acceso al panel mientras los jugadores reciben un estado HTTP 503 y el mensaje indicado.
Los archivos omiten contraseñas, secretos de segundo factor y credenciales de PayPal. Se neutralizan fórmulas para una apertura segura en hojas de cálculo.
{{ item.body }}
{{ item.severity }} — {{ item.created_at|date_label }} — {{ "activo" if item.active else "inactivo" }}No hay avisos.
{% endfor %}El secreto se cifra con la clave de pagos del servidor y nunca vuelve a mostrarse. Configurado: {{ "sí" if payment.secret_configured else "no" }}.
| Pedido | Jugador | Producto y destino | Importe | Estado | Acciones |
|---|---|---|---|---|---|
| #{{ item.id }} | {{ item.username }} | {{ item.product_name }} {% if item.planet_id %}Planeta #{{ item.planet_id }} {{ item.target_planet_name or "no disponible" }}{% else %}Imperio #{{ item.empire_id }}{% endif %} | {{ "%.2f"|format(item.amount_cents / 100) }} {{ item.currency }} | {{ item.status }}{% if item.error_message %} {{ item.error_message }}{% endif %} |
Historial de recepción, verificación y procesamiento para investigar entregas, reembolsos y eventos fallidos.
| Evento | Tipo | Recibido | Verificado | Procesado | Error |
|---|---|---|---|---|---|
| {{ item.event_id }} | {{ item.event_type }} | {{ item.received_at|date_label }} | {{ "Sí" if item.verified else "No" }} | {{ "Sí" if item.processed else "No" }} | {{ item.error_message or "—" }} |
| Todavía no se han recibido webhooks. | |||||
{{ item.details or "Sin detalles adicionales." }}
No hay solicitudes.
{% endfor %}Últimas mil acciones coincidentes. Los registros identifican quién hizo qué, sobre qué objeto, cuándo y en qué universo. La exportación completa está en Operaciones.
| Fecha | Responsable | Acción | Objeto | Universo | Resumen |
|---|---|---|---|---|---|
| {{ item.created_at|date_label }} | {{ item.username or "Sistema" }} | {{ item.action }} | {{ item.object_type }} {{ item.object_id }} | {{ item.game_id or "—" }} | {{ item.summary }} |