Pular para o conteúdo principal

Modelo de Dados

Escopo e fontes

Este documento descreve o modelo de dados a partir de evidencias no repositorio:

  • Registros de CPT: we-dhedalos/functions/post_types/*.php
  • Registros de taxonomia: we-dhedalos/functions/taxonomies/*.php
  • Campos ACF por post type: we-dhedalos/functions/acfs/group_*.php
  • Uso real de relacionamentos e metadados: we-dhedalos/functions/rest/*.php, we-dhedalos/functions/utils/*.php
  • Tabelas customizadas: we-dhedalos/functions/3rd/log.php, we-dhedalos/functions/utils/user_patch_log.php, we-dhedalos/functions/utils/log_user.php

Base de dados observada:

  • Tabelas WP nativas (wp_posts, wp_postmeta, wp_users, wp_usermeta, wp_terms, wp_term_taxonomy, wp_term_relationships, wp_termmeta)
  • Entidades de dominio em CPT
  • Tabelas customizadas de log

CPTs existentes

CPTRegistroObjetivo observado
cursowe-dhedalos/functions/post_types/courses.phpCatalogo de cursos e configuracoes de negocio
Ciclo (uso em codigo como ciclo)we-dhedalos/functions/post_types/cycles.phpJanela temporal/oferta do curso
classeswe-dhedalos/functions/post_types/classes.phpTurmas vinculadas a um ciclo
studentswe-dhedalos/functions/post_types/students.phpMatricula/inscricao de usuario em turma
presencewe-dhedalos/functions/post_types/presence.phpPresenca por atividade
partnerswe-dhedalos/functions/post_types/partners.phpCadastro de parceiros/codigos
dynamic_logswe-dhedalos/functions/post_types/dynamic_logs.phpAuditoria de mudancas em posts/usuarios
user_log_actionwe-dhedalos/functions/post_types/user_action_log.phpLog de acao do inscrito
sub_log_actionwe-dhedalos/functions/post_types/presence_log.phpLog de presenca/acoes relacionadas
cancellation_logswe-dhedalos/functions/post_types/cancellation_logs.phpLog de cancelamentos de matricula
ciclos_logswe-dhedalos/functions/post_types/cycle_logs.phpLog de operacoes em ciclos
pt_mode_logswe-dhedalos/functions/post_types/participant_mode_logs.phpLog de operacoes no modo participante

Taxonomias relevantes

TaxonomiaAssociada aEvidencia
course_categoriescursowe-dhedalos/functions/taxonomies/cptui_register_my_taxes_course_categories.php
course_supervisorscursowe-dhedalos/functions/taxonomies/cptui_register_course_supervisors.php

Observacoes:

  • course_supervisors usa termmeta (supervisor_user_id) para ligar termo ao usuario supervisor (salvo em save_course_supervisors), em we-dhedalos/functions/taxonomies/cptui_register_course_supervisors.php.
  • Ha registros comentados de taxonomias courses e ciclos para classes em we-dhedalos/functions/taxonomies/courses.php (nao ativos no estado atual do codigo).

Meta keys relevantes por CPT

curso

Campos principais (ACF e uso em runtime):

  • enable_calendar, enable_room, is_group_meetings_enabled, group_limit, is_re_enroll_enabled, enable_strategic_activities, enable_certificacao_progressiva, block_enrollments_same_period
    Fonte: we-dhedalos/functions/acfs/group_663b721c7c208.php; uso em we-dhedalos/functions/utils/classes_tools.php.
  • Recuperação de aula ao vivo: is_recovery_enabled, recovery_hours, recovery_videos[*].video_id
    Fonte: we-dhedalos/functions/acfs/group_663b721c7c208.php, we-dhedalos/functions/acfs/group_68810c2e9d8f1.php; uso em we-dhedalos/functions/rest/cycles.php e we-dhedalos/functions/rest/classes.php.
  • logo, logo_home, logo_b, color, evaluate_course, group_template_id, tracking_id
    Fonte: we-dhedalos/functions/acfs/group_65d8960c419ce.php, we-dhedalos/functions/acfs/group_6716ad049f8c4.php; uso em we-dhedalos/functions/rest/courses.php, we-dhedalos/functions/rest/live/enrolls_by_cycle.php, we-dhedalos/functions/rest/course/inactive_group.php.
  • Campos de progressiva de configuracao no curso: carga_horaria_certificacao_progressiva, carga_horaria_ao_vivo, carga_horaria_mentoria, carga_horaria_login_hub, carga_horaria_whatsapp
    Fonte: we-dhedalos/functions/acfs/group_6667cf1e12abc.php; uso em we-dhedalos/functions/utils/update_carga_horaria_total_certificacao_progressiva.php.

ciclo / Ciclo

  • fk_courses_cycles (relacao ciclo -> curso)
    Fonte: we-dhedalos/functions/acfs/group_65d8e31f1147e.php; uso extensivo em we-dhedalos/functions/rest/cycles.php, we-dhedalos/functions/rest/courses.php, we-dhedalos/functions/utils/classes_tools.php.
  • start_date, end_date, activities, collective_meetings, individual_meetings, collective_meetings_required, required_activities, presences_minimum
    Fonte: we-dhedalos/functions/acfs/group_65d89840aae50.php; uso em we-dhedalos/functions/rest/classes.php, we-dhedalos/functions/utils/course_completed.php.
  • enrollment_start_date, enrollment_end_date
    Fonte: we-dhedalos/functions/acfs/group_66bb98c672859.php; uso em we-dhedalos/functions/rest/live/enrolls_by_cycle.php.

classes

  • fk_cycles_classes (relacao turma -> ciclo)
    Fonte: we-dhedalos/functions/acfs/group_65d8e4fb5af48.php; uso em we-dhedalos/functions/rest/classes.php, we-dhedalos/functions/rest/courses.php, we-dhedalos/functions/utils/classes_tools.php.
  • facilitator, turno
    Fonte: we-dhedalos/functions/acfs/group_64ede81b7423f.php; uso em we-dhedalos/functions/rest/classes.php, we-dhedalos/functions/rest/class_room.php.
  • enable_calendar, enable_room, group_link, user_limit, total_users, vacancies_class, total_enrollments
    Fonte: we-dhedalos/functions/acfs/group_662bf6328d87e.php, we-dhedalos/functions/acfs/group_66bca87cee3a9.php; total_enrollments atualizado em we-dhedalos/functions/utils/classes_tools.php e we-dhedalos/functions/rest/course/enroll.php.

students

  • Relacao e identidade da matricula: user, class
    Fonte: we-dhedalos/functions/acfs/group_659f0af7b4b33.php; uso em queries SQL de we-dhedalos/functions/utils/classes_tools.php, we-dhedalos/functions/rest/duplicated_students.php.
  • Ciclo de vida do cancelamento: is_enroll_canceled, enrollment_canceled_message, cancel_description, cancel_date, canceled_by, is_cancel_requested, cancel_request_date, cancel_requested_by
    Fonte: we-dhedalos/functions/acfs/group_674dc4d034c67.php, we-dhedalos/functions/acfs/group_6702a012d9e3f.php; uso em we-dhedalos/functions/rest/classes.php, we-dhedalos/functions/rest/course/enroll.php, we-dhedalos/functions/utils/auto_cancel_enrollments_cron.php.
  • Campos complementares de matricula: is_user_in_group_link, is_user_realocated, is_re_enroll, enroll_meta, ali_code
    Fonte: we-dhedalos/functions/rest/course/enroll.php, we-dhedalos/functions/rest/course/group_link.php, we-dhedalos/functions/post_types/students_custom.php.
  • Campos de progressiva refletidos na matricula: is_progressiva, carga_horaria_total_certificacao_progressiva, carga_horaria_ao_vivo, carga_horaria_mentoria, carga_horaria_login_hub, carga_horaria_whatsapp, login_hub, acesso_whatsapp
    Fonte: we-dhedalos/functions/rest/course/enroll.php, we-dhedalos/functions/post_types/students_custom.php.

presence

  • user, class, activity
    Fonte: we-dhedalos/functions/acfs/group_65a045a900b7a.php; escrita em we-dhedalos/functions/rest/classes.php (wp_insert_post em presence).
  • Metadados de recuperação: recovery_presence, reason
    Fonte: we-dhedalos/functions/rest/classes.php (set_recovery_presence).

partners

  • description, limit
    Fonte: we-dhedalos/functions/acfs/group_66ed9312d543d.php; uso em we-dhedalos/functions/post_types/partners.php.

CPTs de log

  • dynamic_logs: post_type, post_id, post_title, user_id, user_name, user_email, user_ip, action, details, timestamp
    Fonte: we-dhedalos/functions/post_types/dynamic_logs.php (meta_input em varios wp_insert_post).
  • user_log_action: subscriber_cpf, subscriber_id, action
    Fonte: we-dhedalos/functions/post_types/user_action_log.php.
  • sub_log_action: user_id, user_type, user_ip, student_cpf, student_id, class_id, activity, description, action
    Fonte: we-dhedalos/functions/post_types/presence_log.php.
  • cancellation_logs: student_id, student_cpf, class_id, requester_id, requester_cpf, action, description
    Fonte: we-dhedalos/functions/post_types/cancellation_logs.php; grupo ACF em we-dhedalos/functions/acfs/group_6706a3f9cc912.php.
  • ciclos_logs: user_id, user_cpf, cycle_id, cycle_name, action, details
    Fonte: we-dhedalos/functions/post_types/cycle_logs.php.
  • pt_mode_logs: supervisor_id, supervisor_cpf, participant_id, participant_cpf, action
    Fonte: we-dhedalos/functions/post_types/participant_mode_logs.php.

Tabelas customizadas

${prefix}user_patch_log

  • Criacao: we-dhedalos/functions/utils/user_patch_log.php (classe UserPatchLogTable)
  • Trigger inicial: we-dhedalos/functions/utils/create_patch_log_table.php (after_switch_theme)
  • Colunas: id, user_id, received, created_at
  • Uso: we-dhedalos/functions/rest/registration/update_patch.php e we-dhedalos/functions/rest/registration/update_put.php

${prefix}simplybook_api_requests_log

  • Criacao: we-dhedalos/functions/3rd/log.php (classe SimpleBookLogTable)
  • Uso: we-dhedalos/functions/3rd/simplybook.php
  • Colunas: id, endpoint, http_method, request_params, response, timestamp, user_info, origin, ip_address, user_agent

${prefix}user_logs

  • Criacao: we-dhedalos/functions/utils/log_user.php (after_setup_theme)
  • Colunas: id, message, created_at
  • Uso: log de exclusao de usuario no mesmo arquivo (delete_user)

Relacoes de fato (sem FK fisica)

Relacoes centrais de negocio:

  1. curso -> ciclo via ciclo.fk_courses_cycles
  2. ciclo -> classes via classes.fk_cycles_classes
  3. classes -> students via students.class
  4. wp_users -> students via students.user
  5. classes + wp_users -> presence via presence.class e presence.user

Relacoes por taxonomia:

  1. curso -> course_categories (term relationships)
  2. curso -> course_supervisors (term relationships)
  3. course_supervisors term -> wp_users via termmeta.supervisor_user_id

Relacoes com tabelas customizadas:

  1. wp_users.ID -> ${prefix}user_patch_log.user_id
  2. ${prefix}simplybook_api_requests_log.user_info recebe get_current_user_id() (relacao logica com wp_users.ID)
  3. wp_users.ID -> wp_usermeta.modal_recovery_showed (controle de exibicao de recuperacao expirada)

Evidencia de joins SQL da cadeia principal:

  • we-dhedalos/functions/utils/classes_tools.php
  • we-dhedalos/functions/rest/duplicated_students.php
  • we-dhedalos/functions/rest/live/enrollments.php
  • we-dhedalos/functions/rest/cycles.php

Diagrama (Mermaid)

Pendencias

  • register_post_type('Ciclo', ...) em we-dhedalos/functions/post_types/cycles.php usa caixa alta, enquanto consultas e WP_Query usam post_type = 'ciclo' em varios arquivos (we-dhedalos/functions/utils/classes_tools.php, we-dhedalos/functions/rest/courses.php, we-dhedalos/functions/rest/cycles.php). Confirmar comportamento final em runtime.
  • A estrutura interna de students.enroll_meta e dynamic_logs.details e dinamica (payload JSON serializado/variavel), sem schema fixo no repositorio.
  • Taxonomias courses e ciclos em we-dhedalos/functions/taxonomies/courses.php estao comentadas; confirmar se sao legado desativado.
  • Prefixo real das tabelas (${prefix}) depende de configuracao da instalacao WordPress ($wpdb->prefix).