M1: features/medicos + features/insurance + ComponentCadastroRapido refactor

Modulo 1 da Fase 1 de padronizacao. Novos features/medicos (services
+ composable useMedicos) e features/insurance (idem). 3 cadastros
rapidos (medicos, convenios, ComponentCadastroRapido + Insurance
PlanQuickCreateDialog) migrados pra usar os composables novos —
zero supabase.from() em UI components. TEST_ACCOUNTS extraido pra
src/config/devTestAccounts.js. Topbar ganhou switcher de layout
+ atalhos M1 via novo useTopbarDevMenuExtras. M1.6 MelissaLayout
90 imports deferida pra sessao dedicada (memoria padronizacao_sweep).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-21 04:19:57 -03:00
parent f94a4ae97f
commit 27467bbb68
17 changed files with 901 additions and 223 deletions
+10 -1
View File
@@ -42,6 +42,7 @@ function toggleAjuda() {
}
import { useUserSettingsPersistence } from '@/composables/useUserSettingsPersistence';
import { useTopbarDevMenuExtras } from '@/composables/useTopbarDevMenuExtras';
import { applyThemeEngine } from '@/theme/theme.options';
import { fetchAllNotices } from '@/features/notices/noticeService';
@@ -415,6 +416,14 @@ const planMenuModel = computed(() => {
return [header, subInfo, { separator: true }, ...items];
});
// ─── Extras do menu DEV (layout switcher + atalhos M1) ────────────
const { devExtrasModel } = useTopbarDevMenuExtras();
const combinedDevMenuModel = computed(() => [
...planMenuModel.value,
{ separator: true },
...devExtrasModel.value
]);
async function openPlanMenu(event) {
if (!showPlanDevMenu.value) return;
@@ -598,7 +607,7 @@ onMounted(async () => {
<i class="pi pi-sliders-h" />
</Button>
<Menu ref="planMenu" :model="planMenuModel" popup appendTo="body" :baseZIndex="3000" />
<Menu ref="planMenu" :model="combinedDevMenuModel" popup appendTo="body" :baseZIndex="3000" />
<!-- Notificações -->
<div class="relative">
+10 -1
View File
@@ -106,6 +106,7 @@ import { useNotifications } from '@/composables/useNotifications';
import { useNotificationStore } from '@/stores/notificationStore';
import { useAjuda } from '@/composables/useAjuda';
import { useTopbarPlanMenu } from '@/composables/useTopbarPlanMenu';
import { useTopbarDevMenuExtras } from '@/composables/useTopbarDevMenuExtras';
// Pacientes + eventos do dia.
//
@@ -1819,6 +1820,14 @@ const {
openPlanMenu
} = useTopbarPlanMenu();
// Extras DEV (layout switcher + atalhos M1) que aparecem no MESMO menu do botão sliders.
const { devExtrasModel } = useTopbarDevMenuExtras();
const combinedDevMenuModel = computed(() => [
...planMenuModel.value,
{ separator: true },
...devExtrasModel.value
]);
// Recebíveis derivados de agenda_eventos.{price,billed}: aproximação MVP.
// `billed=true` é o flag de "marcado como pago/cobrado" no agenda — não
// é a fonte de verdade financeira (essa é financial_records.status='paid'),
@@ -3227,7 +3236,7 @@ function onKeydown(e) {
<NotificationDrawer />
<!-- Plan menu DEV popup ancorado no botão da topbar -->
<Menu ref="planMenu" :model="planMenuModel" popup appendTo="body" :baseZIndex="3000" />
<Menu ref="planMenu" :model="combinedDevMenuModel" popup appendTo="body" :baseZIndex="3000" />
</div>
</template>