- Added `list_nav_history` method in `CoreReadOnlyRepository` to retrieve historical NAV data for products over a specified number of days. - Introduced `get_nav_history` endpoint in `product_service` to return historical NAV sequences, improving product data accessibility. - Updated `products.py` to include new API endpoint for fetching NAV history, ensuring compliance with access control. - Enhanced `ready.py` to include a health check for the new functionality, ensuring system readiness. - Updated documentation to reflect the new testing baseline of 833 passed tests, indicating improved stability and functionality across the application. This update significantly enhances the product API by providing access to historical NAV data, improving user insights into product performance.
210 lines
7.9 KiB
HTML
210 lines
7.9 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>JinRong 交互课程 · 导览中心</title>
|
||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600&display=swap" rel="stylesheet">
|
||
<style>
|
||
:root {
|
||
--bg: #F7F3ED;
|
||
--bg-card: #FFFCF7;
|
||
--ink: #2C2419;
|
||
--muted: #6B5E52;
|
||
--border: #E8DFD3;
|
||
--accent: #C45C3E;
|
||
--accent-hover: #A84D34;
|
||
--shadow: 0 4px 24px rgba(44, 36, 25, 0.08);
|
||
--radius: 14px;
|
||
}
|
||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||
body {
|
||
font-family: 'DM Sans', system-ui, sans-serif;
|
||
background: var(--bg);
|
||
color: var(--ink);
|
||
line-height: 1.65;
|
||
min-height: 100vh;
|
||
}
|
||
.wrap {
|
||
max-width: 920px;
|
||
margin: 0 auto;
|
||
padding: 3rem 1.5rem 4rem;
|
||
}
|
||
header {
|
||
text-align: center;
|
||
margin-bottom: 2.5rem;
|
||
}
|
||
h1 {
|
||
font-family: 'Bricolage Grotesque', sans-serif;
|
||
font-size: clamp(1.75rem, 4vw, 2.35rem);
|
||
font-weight: 800;
|
||
letter-spacing: -0.03em;
|
||
margin-bottom: 0.75rem;
|
||
}
|
||
.lead {
|
||
color: var(--muted);
|
||
font-size: 1.05rem;
|
||
max-width: 36em;
|
||
margin: 0 auto;
|
||
}
|
||
.section-label {
|
||
font-size: 0.75rem;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.12em;
|
||
color: var(--muted);
|
||
margin: 2rem 0 1rem;
|
||
padding-bottom: 0.5rem;
|
||
border-bottom: 1px dashed var(--border);
|
||
}
|
||
.grid {
|
||
display: grid;
|
||
gap: 1rem;
|
||
}
|
||
@media (min-width: 640px) {
|
||
.grid { grid-template-columns: 1fr 1fr; }
|
||
}
|
||
a.card {
|
||
display: block;
|
||
text-decoration: none;
|
||
color: inherit;
|
||
background: var(--bg-card);
|
||
border: 1px solid var(--border);
|
||
border-radius: var(--radius);
|
||
padding: 1.25rem 1.35rem;
|
||
box-shadow: var(--shadow);
|
||
transition: transform 0.2s, border-color 0.2s, box-shadow 0.2s;
|
||
}
|
||
a.card:hover {
|
||
transform: translateY(-2px);
|
||
border-color: var(--accent);
|
||
box-shadow: 0 8px 32px rgba(196, 92, 62, 0.12);
|
||
}
|
||
.card-accent {
|
||
display: inline-block;
|
||
width: 10px;
|
||
height: 10px;
|
||
border-radius: 50%;
|
||
margin-right: 0.5rem;
|
||
vertical-align: middle;
|
||
}
|
||
.card h2 {
|
||
font-family: 'Bricolage Grotesque', sans-serif;
|
||
font-size: 1.1rem;
|
||
font-weight: 700;
|
||
margin-bottom: 0.4rem;
|
||
}
|
||
.card p {
|
||
font-size: 0.9rem;
|
||
color: var(--muted);
|
||
}
|
||
.card .tag {
|
||
display: inline-block;
|
||
margin-top: 0.65rem;
|
||
font-size: 0.72rem;
|
||
padding: 0.15rem 0.5rem;
|
||
border-radius: 999px;
|
||
background: #F0EAE2;
|
||
color: var(--muted);
|
||
}
|
||
footer {
|
||
margin-top: 3rem;
|
||
text-align: center;
|
||
font-size: 0.85rem;
|
||
color: var(--muted);
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="wrap">
|
||
<header>
|
||
<h1>JinRong 交互课程</h1>
|
||
<p class="lead">面向 vibe coder 的仓库导览:滚动式模块、代码白话对照、动效与测验。直接用浏览器打开各课程 <code>index.html</code>,无需安装。</p>
|
||
</header>
|
||
|
||
<p class="section-label">总览 · 答辩</p>
|
||
<div class="grid">
|
||
<a class="card" href="jinrong-overview/index.html">
|
||
<span class="card-accent" style="background:#2A7B9B"></span>
|
||
<h2>JinRong 项目现状</h2>
|
||
<p>四角色、JWT 双通道、数据从哪来、merger 做到哪——含<strong>模块 8 答辩动线</strong>(825 pytest 基线)。</p>
|
||
<span class="tag">8 模块 · 入门首选</span>
|
||
</a>
|
||
<a class="card" href="../答辩/答辩知识点清单.md">
|
||
<span class="card-accent" style="background:#C45C3E"></span>
|
||
<h2>答辩知识点清单(Markdown)</h2>
|
||
<p>总架构、数据流、分 Agent 亮点、Demo 动线、诚实边界、Q&A 锚点——与交互课同步。</p>
|
||
<span class="tag">docs/答辩 · 可打印提纲</span>
|
||
</a>
|
||
<a class="card" href="../答辩/DEMO-SOP-答辩全流程.md">
|
||
<span class="card-accent" style="background:#1F6280"></span>
|
||
<h2>答辩 Demo 全流程 SOP</h2>
|
||
<p>给人看的逐步演示:6~25 分钟三档路线、四角色账号、每步<strong>亮点+口述句</strong>;链问数/风控分册。</p>
|
||
<span class="tag">Markdown · 答辩主脚本</span>
|
||
</a>
|
||
</div>
|
||
|
||
<p class="section-label">架构治理 · ADR 与不变量</p>
|
||
<div class="grid">
|
||
<a class="card" href="jinrong-architecture-governance/index.html">
|
||
<span class="card-accent" style="background:#1F6280"></span>
|
||
<h2>架构治理课(四 Agent 映射)</h2>
|
||
<p>Richards/Ford 四要素、<strong>ADR</strong>、不变量 vs 降级、<strong>fitness function</strong> 阀门——用本仓库四 Agent + 共用模块当例题。</p>
|
||
<span class="tag">8 模块 · 指挥 AI 改架构前必读</span>
|
||
</a>
|
||
</div>
|
||
|
||
<p class="section-label">模块深潜(7 门)</p>
|
||
<div class="grid">
|
||
<a class="card" href="jinrong-module-customer/index.html">
|
||
<span class="card-accent" style="background:#2D8B55"></span>
|
||
<h2>客户财富 Agent 深潜</h2>
|
||
<p>客户 SSE 对话、14 节点 LangGraph、口吻护栏、两套 RAG、合规 vs 一期拒答。</p>
|
||
<span class="tag">customer_service · 7 模块</span>
|
||
</a>
|
||
<a class="card" href="jinrong-module-advisor/index.html">
|
||
<span class="card-accent" style="background:#8B6B4A"></span>
|
||
<h2>代理人助手 Agent 深潜</h2>
|
||
<p>理财师顾问线、名下客户查询、G-01 归属;T-20 未做 · Neo4j 是同步脚本非 Tool。</p>
|
||
<span class="tag">advisor · agent_service · 4 模块</span>
|
||
</a>
|
||
<a class="card" href="jinrong-module-analyst/index.html">
|
||
<span class="card-accent" style="background:#6B5B95"></span>
|
||
<h2>数据分析 Agent 深潜</h2>
|
||
<p>问数 NL2SQL、D-06 模板/结果缓存、dashboard、问数红线、口径种子排障。</p>
|
||
<span class="tag">analyst · /api/analyst · 5 模块</span>
|
||
</a>
|
||
<a class="card" href="jinrong-module-risk/index.html">
|
||
<span class="card-accent" style="background:#B84A4A"></span>
|
||
<h2>风控监测 Agent 深潜</h2>
|
||
<p>预警台账、AML 只读 Tool、模拟交易、写侧并发(模块 7)、cron/空台账演示边界。</p>
|
||
<span class="tag">risk · X-Agent-Type: risk · 7 模块</span>
|
||
</a>
|
||
<a class="card" href="jinrong-module-platform/index.html">
|
||
<span class="card-accent" style="background:#E06B56"></span>
|
||
<h2>代销平台 API 深潜</h2>
|
||
<p>v0.1 路由、适当性 canonical、空壳 API、行情 Phase B 草案。</p>
|
||
<span class="tag">get_platform_auth_context · 4 模块</span>
|
||
</a>
|
||
<a class="card" href="jinrong-module-frontend/index.html">
|
||
<span class="card-accent" style="background:#132B3A"></span>
|
||
<h2>前端 web 深潜</h2>
|
||
<p>四角色 HashRouter、Chat 鉴权差异、useAsyncSequence 竞态、问数标签、未接线清单。</p>
|
||
<span class="tag">web/ · React · 4 模块</span>
|
||
</a>
|
||
<a class="card" href="jinrong-module-shared/index.html">
|
||
<span class="card-accent" style="background:#5A9DB8"></span>
|
||
<h2>共用底座与鉴权 深潜</h2>
|
||
<p>JWT 双栈 deps/gateway、Redis 会话、审计只 INSERT、6380 fail-open。</p>
|
||
<span class="tag">deps · memory_service · 4 模块</span>
|
||
</a>
|
||
</div>
|
||
|
||
<footer>
|
||
<p>构建:<code>python docs/course/build_all.py</code> 或各目录下 <code>bash build.sh</code></p>
|
||
</footer>
|
||
</div>
|
||
</body>
|
||
</html>
|