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
| CPT | Registro | Objetivo observado |
|---|---|---|
curso | we-dhedalos/functions/post_types/courses.php | Catalogo de cursos e configuracoes de negocio |
Ciclo (uso em codigo como ciclo) | we-dhedalos/functions/post_types/cycles.php | Janela temporal/oferta do curso |
classes | we-dhedalos/functions/post_types/classes.php | Turmas vinculadas a um ciclo |
students | we-dhedalos/functions/post_types/students.php | Matricula/inscricao de usuario em turma |
presence | we-dhedalos/functions/post_types/presence.php | Presenca por atividade |
partners | we-dhedalos/functions/post_types/partners.php | Cadastro de parceiros/codigos |
dynamic_logs | we-dhedalos/functions/post_types/dynamic_logs.php | Auditoria de mudancas em posts/usuarios |
user_log_action | we-dhedalos/functions/post_types/user_action_log.php | Log de acao do inscrito |
sub_log_action | we-dhedalos/functions/post_types/presence_log.php | Log de presenca/acoes relacionadas |
cancellation_logs | we-dhedalos/functions/post_types/cancellation_logs.php | Log de cancelamentos de matricula |
ciclos_logs | we-dhedalos/functions/post_types/cycle_logs.php | Log de operacoes em ciclos |
pt_mode_logs | we-dhedalos/functions/post_types/participant_mode_logs.php | Log de operacoes no modo participante |
Taxonomias relevantes
| Taxonomia | Associada a | Evidencia |
|---|---|---|
course_categories | curso | we-dhedalos/functions/taxonomies/cptui_register_my_taxes_course_categories.php |
course_supervisors | curso | we-dhedalos/functions/taxonomies/cptui_register_course_supervisors.php |
Observacoes:
course_supervisorsusatermmeta(supervisor_user_id) para ligar termo ao usuario supervisor (salvo emsave_course_supervisors), emwe-dhedalos/functions/taxonomies/cptui_register_course_supervisors.php.- Ha registros comentados de taxonomias
courseseciclosparaclassesemwe-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 emwe-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 emwe-dhedalos/functions/rest/cycles.phpewe-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 emwe-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 emwe-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 emwe-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 emwe-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 emwe-dhedalos/functions/rest/live/enrolls_by_cycle.php.
classes
fk_cycles_classes(relacao turma -> ciclo)
Fonte:we-dhedalos/functions/acfs/group_65d8e4fb5af48.php; uso emwe-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 emwe-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_enrollmentsatualizado emwe-dhedalos/functions/utils/classes_tools.phpewe-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 dewe-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 emwe-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 emwe-dhedalos/functions/rest/classes.php(wp_insert_postempresence).- 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 emwe-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_inputem varioswp_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 emwe-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(classeUserPatchLogTable) - 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.phpewe-dhedalos/functions/rest/registration/update_put.php
${prefix}simplybook_api_requests_log
- Criacao:
we-dhedalos/functions/3rd/log.php(classeSimpleBookLogTable) - 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:
curso->cicloviaciclo.fk_courses_cyclesciclo->classesviaclasses.fk_cycles_classesclasses->studentsviastudents.classwp_users->studentsviastudents.userclasses+wp_users->presenceviapresence.classepresence.user
Relacoes por taxonomia:
curso->course_categories(term relationships)curso->course_supervisors(term relationships)course_supervisors term->wp_usersviatermmeta.supervisor_user_id
Relacoes com tabelas customizadas:
wp_users.ID->${prefix}user_patch_log.user_id${prefix}simplybook_api_requests_log.user_inforecebeget_current_user_id()(relacao logica comwp_users.ID)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.phpwe-dhedalos/functions/rest/duplicated_students.phpwe-dhedalos/functions/rest/live/enrollments.phpwe-dhedalos/functions/rest/cycles.php
Diagrama (Mermaid)
Pendencias
register_post_type('Ciclo', ...)emwe-dhedalos/functions/post_types/cycles.phpusa caixa alta, enquanto consultas eWP_Queryusampost_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_metaedynamic_logs.detailse dinamica (payload JSON serializado/variavel), sem schema fixo no repositorio. - Taxonomias
courseseciclosemwe-dhedalos/functions/taxonomies/courses.phpestao comentadas; confirmar se sao legado desativado. - Prefixo real das tabelas (
${prefix}) depende de configuracao da instalacao WordPress ($wpdb->prefix).