feat(投顾): 方案交付落点、可视化图表与推荐依据的大模型增强
交付落点
- 新增 GET /api/v1/users/me/advisor-contents(客户读**自己**已发布方案):
「发送给客户」原先只改数据状态、客户端没有任何页面或接口能读到它
- 客户端新增「我的投顾方案」页与导航入口
可视化(投顾结果区与客户页**共用** common/advisor-plan-view.js,避免两处漂移)
- 净值折线图(带坐标轴与网格)、组合业绩等权合成曲线(含区间收益与最大回撤)、
资产配置环形图与图例、组合构成条
- 修 num(null)=0 的假 0:Number(null)/Number('') 会得 0,导致「没数据」被渲染成 0.00%;
现一律显示「--」。同理管理费/起投未维护时按没数据处理,不显示 0
- 涨跌口径为「涨红跌绿」(A 股习惯),由 CSS 变量 --plan-up / --plan-down 集中定义
推荐依据接入大模型(可选,失败即回退)
- 新增 AdvisorReasonService:**只改文案,不参与选品**(候选池与排序在它之前已固定)
- 输入只允许是已算出的真实参数(风险等级、排序得分、区间收益、最大回撤、期限与流动性)
- 命中收益承诺词(保本/保证收益/稳赚/无风险…)整条丢弃并回退规则文案
- 未启用 / 缺密钥 / 超时 / 解析失败一律回退,推荐主流程不因模型不可用而失败
- 前端标注来源(AI 生成 / 规则生成)
数据与权限
- 客户角色补齐:绑 customer 角色、补建缺失的账户与交易段权限码(9060-9065)
- 净值全量同步(20 只产品),行情同步脚本按 --codes 分块(全量一次会被超时终止)
测试
- 新增 tests/unit/service/test_advisor_reason_service.py(10 项,专测三条合规边界)
- 前端模块自检纳入 service-request-module;补「两处共用同一渲染」回归测试
This commit is contained in:
@@ -1,66 +1,115 @@
|
||||
@echo off
|
||||
chcp 936 >nul
|
||||
setlocal
|
||||
title 金融 Agent 平台 · 后端服务(API)
|
||||
setlocal EnableDelayedExpansion
|
||||
title ???? Agent ?? ?? ??????(API)
|
||||
|
||||
rem ============================================================
|
||||
rem 双击本文件启动后端 API(FastAPI + uvicorn,127.0.0.1:8000)。
|
||||
rem 只起接口与前端页面;Agent Worker(客服对话/知识向量同步/
|
||||
rem 风控扫描)不含在内,需要时请另外启动。
|
||||
rem PROJ 自动取本文件所在目录(项目根),仓库复制到哪都能跑。
|
||||
rem 可选参数:启动后端.bat 8100 指定端口(默认 8000)
|
||||
rem ?????????????? API??FastAPI + uvicorn??127.0.0.1:8000????
|
||||
rem ????????????棻Agent Worker????????/?????????/
|
||||
rem ?????裩????????????????????????
|
||||
rem PROJ ????????????????????????????????????????
|
||||
rem ???????????????.bat 8100 ?????????? 8000??
|
||||
rem
|
||||
rem ??????????? start.ps1 ??????£???
|
||||
rem 1) ????????? .venv
|
||||
rem 2) ???? conda ???? jr_py313
|
||||
rem 3) py -3.13 ?????
|
||||
rem 4) PATH ??? python????? 3.11+??
|
||||
rem ?????? import fastapi/sqlalchemy/asyncmy/pydantic?????????
|
||||
rem ????????汾????????????????????
|
||||
rem ============================================================
|
||||
|
||||
set "PROJ=%~dp0"
|
||||
set "HOST=127.0.0.1"
|
||||
set "PORT=%~1"
|
||||
if "%PORT%"=="" set "PORT=8000"
|
||||
set "PY=%PROJ%.venv\Scripts\python.exe"
|
||||
set "PY="
|
||||
|
||||
echo ============================================================
|
||||
echo 金融 Agent 平台 · 后端服务
|
||||
echo ============================================================
|
||||
echo.
|
||||
rem ---------- 1) ????????? / conda ??????????? exe ·????----------
|
||||
for %%C in (
|
||||
"%PROJ%.venv\Scripts\python.exe"
|
||||
"D:\conda\envs\jr_py313\python.exe"
|
||||
"%USERPROFILE%\miniconda3\envs\jr_py313\python.exe"
|
||||
"%USERPROFILE%\anaconda3\envs\jr_py313\python.exe"
|
||||
) do (
|
||||
if not defined PY (
|
||||
if exist %%C (
|
||||
%%C -c "import fastapi, sqlalchemy, asyncmy, pydantic" >nul 2>&1
|
||||
if !errorlevel!==0 set "PY=%%~C"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
if not exist "%PY%" (
|
||||
echo [错误] 找不到虚拟环境解释器:
|
||||
echo %PY%
|
||||
echo.
|
||||
echo 请先在项目根执行一次环境安装:
|
||||
echo py -3.13 -m venv .venv
|
||||
echo .venv\Scripts\python.exe -m pip install -e .
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
rem ---------- 2) py -3.13 ??????????????? exe ·????----------
|
||||
if not defined PY (
|
||||
for /f "delims=" %%X in ('py -3.13 -c "import sys;print(sys.executable)" 2^>nul') do (
|
||||
set "PY=%%X"
|
||||
)
|
||||
if defined PY (
|
||||
"!PY!" -c "import fastapi, sqlalchemy, asyncmy, pydantic" >nul 2>&1
|
||||
if not !errorlevel!==0 set "PY="
|
||||
)
|
||||
)
|
||||
|
||||
rem ---------- 3) PATH ??? python?????????? exe ·????У?? >=3.11??----------
|
||||
if not defined PY (
|
||||
for /f "delims=" %%X in ('python -c "import sys;print(sys.executable)" 2^>nul') do (
|
||||
set "PY=%%X"
|
||||
)
|
||||
if defined PY (
|
||||
"!PY!" -c "import sys;v=sys.version_info;assert (v[0],v[1])>=(3,11);import fastapi, sqlalchemy, asyncmy, pydantic" >nul 2>&1
|
||||
if not !errorlevel!==0 set "PY="
|
||||
)
|
||||
)
|
||||
|
||||
if not defined PY (
|
||||
echo [????] ??????????б?????? Python ??????
|
||||
echo ??? 3.11+ ????? fastapi / sqlalchemy / asyncmy / pydantic??
|
||||
echo.
|
||||
echo ??????????????????????????У???
|
||||
echo py -3.13 -m venv .venv
|
||||
echo .venv\Scripts\python.exe -m pip install -e .
|
||||
echo.
|
||||
echo ??????? conda ???? jr_py313???????????????λ??????
|
||||
echo D:\conda\envs\jr_py313\python.exe
|
||||
echo %USERPROFILE%\miniconda3\envs\jr_py313\python.exe
|
||||
echo %USERPROFILE%\anaconda3\envs\jr_py313\python.exe
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%PROJ%app\main.py" (
|
||||
echo [错误] 未找到 app\main.py,本 .bat 必须放在项目根目录。
|
||||
echo 当前 PROJ = %PROJ%
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
echo [????] δ??? app\main.py???? .bat ????????????????
|
||||
echo ??? PROJ = %PROJ%
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
cd /d "%PROJ%"
|
||||
|
||||
echo 项目目录 : %PROJ%
|
||||
echo 解释器 : %PY%
|
||||
echo 监听地址 : http://%HOST%:%PORT%
|
||||
echo 前端入口 : http://%HOST%:%PORT%/portal/
|
||||
echo 健康检查 : http://%HOST%:%PORT%/health
|
||||
echo ============================================================
|
||||
echo ???? Agent ?? ?? ??????
|
||||
echo ============================================================
|
||||
echo.
|
||||
echo 提示:请确认 MySQL(127.0.0.1:3306) 已启动。
|
||||
echo 按 Ctrl+C 可停止服务。
|
||||
echo ????? : %PROJ%
|
||||
echo ?????? : !PY!
|
||||
echo ??????? : http://%HOST%:%PORT%
|
||||
echo ?????? : http://%HOST%:%PORT%/portal/
|
||||
echo ??????? : http://%HOST%:%PORT%/health
|
||||
echo.
|
||||
echo ?????????? MySQL(127.0.0.1:3306) ???????
|
||||
echo ?? Ctrl+C ????????
|
||||
echo ============================================================
|
||||
echo.
|
||||
|
||||
"%PY%" -m uvicorn app.main:app --host %HOST% --port %PORT% --log-level info
|
||||
"!PY!" -m uvicorn app.main:app --host %HOST% --port %PORT% --log-level info
|
||||
|
||||
set "RC=%ERRORLEVEL%"
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo 服务已退出(退出码 %RC%)。
|
||||
echo ???????????????? %RC%????
|
||||
echo ============================================================
|
||||
pause
|
||||
endlocal
|
||||
|
||||
Reference in New Issue
Block a user