git mv preserves history. fusion_accounting/ retains only __manifest__.py, __init__.py, CLAUDE.md, and docs/ — the meta-module shell. All Python, data, views, security, services, static, tests, wizards, report move to fusion_accounting_ai/. Manifest data list updated; security.xml move to _core deferred to Task 12. Made-with: Cursor
79 lines
4.2 KiB
XML
79 lines
4.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<templates xml:space="preserve">
|
|
<t t-name="fusion_accounting.Dashboard">
|
|
<div class="o_action fusion_accounting_dashboard">
|
|
<div class="fusion_dashboard_header d-flex justify-content-between align-items-center px-3 py-2">
|
|
<h4 class="mb-0"><i class="fa fa-bolt me-2"/>Fusion AI</h4>
|
|
<button class="btn btn-outline-secondary btn-sm" t-on-click="loadDashboard">
|
|
<i class="fa fa-refresh me-1"/>Refresh
|
|
</button>
|
|
</div>
|
|
|
|
<t t-if="state.loading">
|
|
<div class="text-center p-5">
|
|
<i class="fa fa-spinner fa-spin fa-2x"/>
|
|
<p class="mt-2 text-muted">Loading dashboard...</p>
|
|
</div>
|
|
</t>
|
|
|
|
<t t-else="">
|
|
<div class="fusion_main_layout d-flex">
|
|
|
|
<!-- LEFT: Cards + Needs Attention -->
|
|
<div class="fusion_left_panel d-flex flex-column p-3 gap-3">
|
|
|
|
<div class="fusion_health_cards">
|
|
<t t-foreach="cards" t-as="card" t-key="card.domain">
|
|
<FusionHealthCard
|
|
title="card.title"
|
|
metric="card.metric"
|
|
subtext="card.subtext"
|
|
status="card.status"
|
|
domain="card.domain"
|
|
onCardClick.bind="onAttentionClick"/>
|
|
</t>
|
|
</div>
|
|
|
|
<!-- Needs Attention -->
|
|
<div class="fusion_attention_panel flex-grow-1 d-flex flex-column">
|
|
<div class="d-flex align-items-center gap-2 mb-2">
|
|
<i class="fa fa-bell text-warning"/>
|
|
<span class="fw-semibold small">Needs Attention</span>
|
|
<t t-if="state.data and state.data.needs_attention">
|
|
<span class="badge bg-warning text-dark" t-esc="state.data.needs_attention.length"/>
|
|
</t>
|
|
</div>
|
|
<div class="fusion_attention_list flex-grow-1 overflow-auto">
|
|
<t t-if="state.data and state.data.needs_attention and state.data.needs_attention.length">
|
|
<t t-foreach="state.data.needs_attention" t-as="item" t-key="item_index">
|
|
<div class="fusion_attention_item d-flex align-items-start gap-2 p-2 rounded cursor-pointer"
|
|
t-on-click="() => this.onAttentionClick(item.domain, item.prompt)">
|
|
<div t-attf-class="fusion_attn_dot fusion_attn_{{item.severity || 'warning'}}"/>
|
|
<div class="flex-grow-1 small">
|
|
<div class="fw-semibold" t-esc="item.title"/>
|
|
<div class="text-muted" style="font-size: 0.75rem;" t-esc="item.action"/>
|
|
</div>
|
|
<i class="fa fa-chevron-right text-muted mt-1" style="font-size: 0.6rem;"/>
|
|
</div>
|
|
</t>
|
|
</t>
|
|
<t t-else="">
|
|
<div class="text-center text-muted small py-3">
|
|
<i class="fa fa-check-circle fa-2x mb-2 d-block text-success"/>
|
|
All clear! No items need attention.
|
|
</div>
|
|
</t>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- RIGHT: Chat -->
|
|
<div class="fusion_right_panel">
|
|
<FusionChatPanel sessionId="state.chatSessionId"/>
|
|
</div>
|
|
</div>
|
|
</t>
|
|
</div>
|
|
</t>
|
|
</templates>
|