Promote ExecutiveOS as root index.html for Gitea Pages, move Atlas vanilla to atlas-vanilla/
This commit is contained in:
parent
8d92862d8b
commit
7793491202
193
atlas-vanilla/index.html
Normal file
193
atlas-vanilla/index.html
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Atlas AI Wealth</title>
|
||||||
|
<link rel="stylesheet" href="styles.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header class="topbar">
|
||||||
|
<div class="brand"><span class="accent">Atlas</span> AI Wealth</div>
|
||||||
|
<nav class="nav" id="nav">
|
||||||
|
<button data-route="dashboard" class="active">Dashboard</button>
|
||||||
|
<button data-route="portfolio">Portfolio</button>
|
||||||
|
<button data-route="transactions">Transactions</button>
|
||||||
|
<button data-route="cashflow">Cash Flow</button>
|
||||||
|
<button data-route="upload">Upload</button>
|
||||||
|
</nav>
|
||||||
|
<div class="user">demo@atlas.local</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main id="view"></main>
|
||||||
|
|
||||||
|
<!-- Templates -->
|
||||||
|
<template id="tpl-dashboard">
|
||||||
|
<section>
|
||||||
|
<div class="row spread">
|
||||||
|
<h1>Dashboard</h1>
|
||||||
|
<div class="muted mono">Wealth OS — institutional view</div>
|
||||||
|
</div>
|
||||||
|
<div class="kpi-grid">
|
||||||
|
<div class="card kpi"><div class="kpi-label">Net Worth</div><div class="kpi-value" data-k="netWorth"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Portfolio Value</div><div class="kpi-value" data-k="portfolioValue"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Cash</div><div class="kpi-value" data-k="cash"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Performance YTD</div><div class="kpi-value accent" data-k="ytd"></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="kpi-grid kpi-3">
|
||||||
|
<div class="card kpi"><div class="kpi-label">Spending MTD</div><div class="kpi-value" data-k="spendMtd"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Spending YTD</div><div class="kpi-value" data-k="spendYtd"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Passive Income YTD</div><div class="kpi-value accent" data-k="passive"></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="grid-2-1">
|
||||||
|
<div class="card">
|
||||||
|
<div class="kpi-label">Top Positions</div>
|
||||||
|
<table class="data">
|
||||||
|
<thead><tr>
|
||||||
|
<th>Asset</th><th class="r">Qty</th><th class="r">Avg Cost</th>
|
||||||
|
<th class="r">Price</th><th class="r">Market Value</th><th class="r">PnL</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody id="top-positions"></tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="kpi-label">AI Copilot</div>
|
||||||
|
<div class="copilot">
|
||||||
|
<div class="row">
|
||||||
|
<input id="copilot-input" placeholder="Спроси про портфель, расходы, риски…" />
|
||||||
|
<button id="copilot-ask" class="btn-primary">Ask</button>
|
||||||
|
</div>
|
||||||
|
<div class="chips" id="copilot-suggest"></div>
|
||||||
|
<div id="copilot-answer" class="answer"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template id="tpl-portfolio">
|
||||||
|
<section>
|
||||||
|
<h1>Portfolio</h1>
|
||||||
|
<div class="kpi-grid">
|
||||||
|
<div class="card kpi"><div class="kpi-label">Market Value</div><div class="kpi-value" data-k="mv"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Cost Basis</div><div class="kpi-value" data-k="cost"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Unrealized PnL</div><div class="kpi-value accent" data-k="upnl"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Realized PnL</div><div class="kpi-value accent" data-k="rpnl"></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="kpi-grid kpi-3">
|
||||||
|
<div class="card kpi"><div class="kpi-label">TWR YTD</div><div class="kpi-value" data-k="twrYtd"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">TWR Since Inception</div><div class="kpi-value" data-k="twr"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">IRR Since Inception</div><div class="kpi-value" data-k="irr"></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="kpi-grid kpi-3">
|
||||||
|
<div class="card kpi"><div class="kpi-label">Volatility (ann.)</div><div class="kpi-value" data-k="vol"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Sharpe</div><div class="kpi-value" data-k="sharpe"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Max Drawdown</div><div class="kpi-value warn" data-k="dd"></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="grid-2-1">
|
||||||
|
<div class="card">
|
||||||
|
<div class="kpi-label">Holdings</div>
|
||||||
|
<table class="data">
|
||||||
|
<thead><tr>
|
||||||
|
<th>Asset</th><th>Sector</th><th class="r">Qty</th><th class="r">Avg Cost</th>
|
||||||
|
<th class="r">Price</th><th class="r">Market Value</th><th class="r">PnL</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody id="holdings"></tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="kpi-label">Allocation</div>
|
||||||
|
<div id="alloc-bar" class="alloc-bar"></div>
|
||||||
|
<div id="alloc-legend" class="alloc-legend"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template id="tpl-transactions">
|
||||||
|
<section>
|
||||||
|
<h1>Transactions</h1>
|
||||||
|
<div class="card row gap">
|
||||||
|
<input id="tx-search" placeholder="Поиск по описанию…" />
|
||||||
|
<select id="tx-type">
|
||||||
|
<option value="">All types</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="card overflow">
|
||||||
|
<table class="data">
|
||||||
|
<thead><tr>
|
||||||
|
<th>Date</th><th>Type</th><th>Asset</th>
|
||||||
|
<th class="r">Qty</th><th class="r">Amount</th>
|
||||||
|
<th>Category</th><th>Description</th>
|
||||||
|
</tr></thead>
|
||||||
|
<tbody id="tx-rows"></tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template id="tpl-cashflow">
|
||||||
|
<section>
|
||||||
|
<h1>Cash Flow</h1>
|
||||||
|
<div class="kpi-grid kpi-3">
|
||||||
|
<div class="card kpi"><div class="kpi-label">Inflows</div><div class="kpi-value accent" data-k="in"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Outflows</div><div class="kpi-value danger" data-k="out"></div></div>
|
||||||
|
<div class="card kpi"><div class="kpi-label">Net</div><div class="kpi-value" data-k="net"></div></div>
|
||||||
|
</div>
|
||||||
|
<div class="grid-1-1">
|
||||||
|
<div class="card">
|
||||||
|
<div class="kpi-label">Spending by Category</div>
|
||||||
|
<div id="spend-bars"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="kpi-label">Dividends & Coupons by Asset</div>
|
||||||
|
<div id="div-bars"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="kpi-label">Monthly Cash Flow</div>
|
||||||
|
<div id="monthly-chart" class="chart"></div>
|
||||||
|
<div class="legend">
|
||||||
|
<span><i class="dot accent"></i>Inflow</span>
|
||||||
|
<span><i class="dot danger"></i>Outflow</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template id="tpl-upload">
|
||||||
|
<section>
|
||||||
|
<h1>Upload Statement</h1>
|
||||||
|
<div class="card stack">
|
||||||
|
<div class="kpi-label">Брокерский отчет / банковская выписка</div>
|
||||||
|
<input type="file" id="file-input" accept=".xlsx,.csv,.pdf" />
|
||||||
|
<p class="muted small">
|
||||||
|
MVP-демо: реальный парсинг XLSX/CSV/PDF реализован в backend (FastAPI).
|
||||||
|
Здесь кликни <strong>«Load sample data»</strong> чтобы загрузить готовый
|
||||||
|
мок-портфель (Interactive Brokers, 27 транзакций 2024–2026).
|
||||||
|
</p>
|
||||||
|
<div class="row gap">
|
||||||
|
<button class="btn-primary" id="btn-load-sample">Load sample data</button>
|
||||||
|
<button class="btn-ghost" id="btn-reset">Reset data</button>
|
||||||
|
</div>
|
||||||
|
<div id="upload-result"></div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="kpi-label">Supported (TRD §7)</div>
|
||||||
|
<ul class="bullets">
|
||||||
|
<li>XLSX (multi-sheet, custom broker formats, inconsistent headers)</li>
|
||||||
|
<li>CSV</li>
|
||||||
|
<li>PDF statements (Phase 2)</li>
|
||||||
|
</ul>
|
||||||
|
<div class="kpi-label">Auto-detected brokers</div>
|
||||||
|
<ul class="bullets">
|
||||||
|
<li>Interactive Brokers · Freedom · Halyk Finance · Binance · Kaspi · Charles Schwab</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script src="data.js"></script>
|
||||||
|
<script src="app.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1375
index.html
1375
index.html
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user