From cc55ff76ade5aa9783c41eeb14c4d99799110aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=A5=E5=BE=AE?= Date: Fri, 3 Jul 2026 10:22:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E9=9D=A2=E7=A7=BB=E9=99=A4JSON?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=90=20=E7=A7=BB=E8=87=B3mo=5Fdata/DB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 宏观风险扫描(3个cron): portfolio.json -> mo_data.read_portfolio() - 小果情感分析: decisions/portfolio.json -> mo_data read+write xiaoguo_insights.json - 芯碁微装监控: decisions.json -> mo_data.read_decisions() - 开盘/收盘简报: 去掉portfolio.json/decisions.json/watchlist.json文件读取,全部从mo_data - 系统健康检查: 仅保留文件存在性检查,数据从DB - 知识萃取: stale_staleness_report.json/decisions.json注入改为context注入 数据管道稳定:唯一入口price_monitor -> DB -> mo_data读 -> LLM cron输出 --- data/mofin.db-shm | Bin 32768 -> 32768 bytes data/mofin.db-wal | Bin 70072 -> 70072 bytes data/portfolio.json | 82 ++++++++++++++++++++-------------------- data/price_events.json | 20 ++++++++++ data/price_history.json | 42 +++++++++++--------- 5 files changed, 86 insertions(+), 58 deletions(-) diff --git a/data/mofin.db-shm b/data/mofin.db-shm index a0bb87f1570bc0268bbb2e02d863a0d1796997a7..178b9dec8b52ede50dea908ac32b9629ee873d3a 100644 GIT binary patch delta 239 zcmZo@U}|V!s+V}A%K!obK+FiFKy*1D1H;pNDUdr5N5;(LM(k0#}l zsvcxE2!PD}j|9Mi3=9+NIc;TtY_jpjM&@97Mg}GZW(F1pRt7c(b_NaxP6jRpZU!C( PUIsn}eg=V!jgmS5QY12r delta 77 zcmZo@U}|V!;+1%$%K!t66E8}OTChv7nNGgVi7p`slYpsan3yTQ@xhCrjSnX1003P> B5yb!i diff --git a/data/mofin.db-wal b/data/mofin.db-wal index d3c40d8f4c0d80e1274e760a6f59348646cab329..687d7f635b3b7031121276e9bde4adc3cd6779be 100644 GIT binary patch literal 70072 zcmeI5eNY@l7QiP!_zr6lBH{%>>og&8&CKlXFpF?@Bw-<5>G8QqRqiy25+j}@rDZH~ zY61ZQ5s;6ZfdsgGk*Em-BY|uLPLn%N3$4`sVJ@jtE7s2JZs~b{T;*YCaV`OWLsDX)i?G5T-rVwgJ^a{Tp3?fT2D>!44}JI| z{?mMhiP^0Fy>{vRF9b{GbF)HXnR|nV6M{>_o(}#bq$H*xbVCdi`sbNdAq!^yD(uS4 zbD^`t&qThYn-l(QG(?2qW3JK)mSa=c{ES~antP>VZ}KcJ=vhI}b4e_pYT{B2EL!wY{py96&!FUC za(spsStHXo9ypJZYsintjK^0M>UDAV`v_&tf@mMwXFpXfRa8662ejleZg~tAlD_dE z^8C#Cw&I@tTr8K#4%Nji#)28f(^^p!rPDU~bhG1dx71T6w+(5@F4#-kTCj^W{=Y;P zKC;6D#PJ*_cQ@N@t&dW zDWbi9x2tiF<8XsqvsJ65zaTe{wVB|#>&!d+Zn=09J z&!N4{FFpSl~%U%I#pqJaV5Z$lZqqmNl@rr;cF}@>|EeTf`@^ z=2V_fRC)>vD15-*-g$$loZocP)!8EVcWX6dx!Z4+{Xq4)yeqa8-y>Q^{R_*r z%vBraHh0`GlTpNa!c7|8gq{zfU0<@ENX){5a94!QV4~bT^2lAPLCtXcJdfLF@2|ol z?H_Ej_qS>_H;B4r5Ed7n&8!=xcdyr<9|=?1IKyKlI4&tF#U1N7)GpQ5X|!=6TDlX5 zik$Co8z1L&@i?#rjRZE9Gq7f9uutAyC+&D!?tD4%kRA@@9Ct$ zNnfCGAE>f~ns{X_>9b9!@+TayKdMI+7gdkVU!Z8mE9|qp$!zq5J}s#Q?l@3jp}Hxc zo`~}8#B9k8MSjlYUgdr!@R4;1)wQP=u?KLxQSPad`r2>=mG^48R?e4XBuYm)n{dNQ zFQJ_CiYK6)3?**krWQUF=&~GfS!`d@sS{FHwU!E2AmtuV_64fo6*d}_vUjP&O5x%_ zxhAu-wwqX;tq+@@mfUrB(h$4$oYFyPT^i}H)oATrJTNFg;c)jaXz1%b4 z9O%>z-q|lIcZ{+QVZZpc0%eK`U~$lO?B6C0b~z7d z#@*M}Q?q&XD80AWo~F8d^+7cbN6!x!L#=|}wXm-VrW6vI8;`i&-7Wv|xJRFCK4(fb z8dF&o6(&)`FCa4&Z1{zWIc!1&E7ZZG@WFt75_ot2+ifSESJRLi5*L{R(76xOW9^6h@x^)acoo;r}P}Q z6{{G~T+T3x+we&omueJKO-7VeNzFSeoSJu*gSw;TQ?)ztjJo&)pScN+sT`M=Z?_$F zHnn;B*lQX(kE$8P5`)I$`8=hOktkNVRuS=WgMS|joWMF-2Iby5GKTcEYsoG8gvu+b zQUs!+@9D7o%omDaEH^Wb${iV-Nc?wJ3_82I<+{T-GHc1*vVqEdB?U*OjR&!un2Su- zIBaF~uUh8NZt*lo@klcsB;{?5j^++WwbpQlShqDB!&Ix${hkp=zs%^LtV#|XsZz`) zx#4Z;c(cPcV2gSE%DSzG&0v7rs@W_;7(ItN-)whVZji zFD~#~-~zX*Yv8)qLj%ACydP2VoD;Z!KL-LX;6*CDCTG){3#`5#!ADC*CItc`*k~+3 z0A*aDlP=%_gxmrb050H$_`n5#3n*b0xB$bjzy-Wt@BtUlnt+VyZ$4b$iEsW8@%7gC z5O9Gp=?=bh8)yKyz=XKKpOmhJd;yw?;IVVa7f@foPxX8O-~wLc0`dj$TORxZ4Dtn5 zLB0Uw3wVaZYySfI0ywb)M-IprxVEi~{td_%7+p6v<`W+-Q1SA-m$&EV-Va>h#wZ)4 z-h2%J7nrJCAdjXz!a4%KWiYUg;Cieh04@Mr0M-$}Is!6dfprA1jv#RP4Xh*ZU49Ge z2sG9tPl_VdFjF5m(;|M?ZJcw;mGTmZNL)E7{f=RtjevDOy=E&yBrxBzeg zGAjWt09*jLz-?Gx;5eYgaQI5~k07 z1g{N$^}BgL3n7p%FzFs|p+OVW0B`}|0@I8O?4mn%!9IlyGp>CKfeX+W3;Pt(J*8lu zLIhlZxCC$k-~zw}fD24lF7TIsyzt^%zq!}}TwsC^p>W!y(*SUR$;Jif?)4}^c{`g+ zw#&W4f4f{k6wIz&L#_kuQbo1Hc2H}(+zn87utjqp?KQv!?otg3xPabkek}UO=z}AZ4fqW- za4R$bTmZPhb2!IRFNIp?6@WwDcK0|uUYAju`gw{mFGl^Fj9ab&U z#V6zNgbxop6Iot^M zPR5tcU!aRm^cKysyvb~oyPNH{R_D+=T2c#67LfxLSbz%v7w|Pp-~w&}8xr$5s ze*|0rxPZS+jQ`)3IqC#vWS|fXW~sJL-qz@7?r>DUtrgH&s5>}*UDGps>JGlM=Bo?; zlH!Yi3rtjA~-VRd|5KuX_8XElWn(8PSt102g6L=h)0xSCG7I$Pxa zZmnT?xs^U&E&D-PGJ=+qxBHeZw2ZDKAsG>K)rPspdjrdwj3Umc!08l@!wquHRxQEL zhtMa`lJ$@;5H!*!EN5WN(qNywyH47nHBq|3>j;1gjDPU6E}id0~Y`;(4ULa2B@9EI)XsA;gdKn)hMQ#j3}#;62+`=g-fC=2X#lwr|JlrXVk?f z_;N}%h2!$_?Y5)NrZ%lnZXS&$D3&l#3_<59qiH0HRjyS;eB9vg;{qqJj+Q~Wx6W~> zUFvJsl3Vl%l~+_nhv%a2>9G9F7m8pkH#1IMhvy!aSvG}bVI6^QNSHo#2OAPre0*s^ z`t!gA#y`Nr8Iw~3zy*K{02fdnzi%!VpcNz#Z~^bom>K3j>Ec+0vEZ2}natJJX-(!b zF3`!`(w%tAgq-j2A~PD;LN;GyFPoCP=^qt~qwV7j6>`02cr*09*jL0PIs}U?E=s))7p( zd;xcsN)~Vd49E&rs4u7sAM}5h%nQ6bU&L;+N!>$Q_%ZE-l5c|2W|J*jAzy$Ia1z!i zX*Q5AAb1zGMO&c0z!a@7PA};3jh}YE&yBr>I+Q4 zbp*f#aAA!?CEXvmfGGEL$S3x@23sigNYS%g5{FmGu&FGI%FfeOH)WfZq$^Y|DwR-B zS)7tlk8?|`qJOFgZ~;8UhIItVft7H^wvHf_)Y{pC%1_Zn8{3Pi36@tVCWuWAtGDTz zPcb+B3qJJ)jCYqv9|Sv|1TJvX`vER^gERnK0Js2f0pJ3_1*Q@gc*>sfjt=+5q#IMa(F4V>O>`lR%MM0E~*Sk*D o%RK|mflj?uEAu@YxBzegGOGkGfZyvw-9g@~iYjn{i9K%p9~U&DAOHXW literal 70072 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