<div align="center">

# 📊 dsh-fund-research
- **1024 स्टोर चैनल**: एक बार `npm i -g dsh1024`, फिर `dsh1024 plugin --profile web add dsh-fund-research` ([deepseek1024.com](https://deepseek1024.com) इंस्टॉल रैंकिंग में गिना जाता है)।

**DeepSeek Harness पर चीनी सार्वजनिक म्यूचुअल फंडों के लिए नियतिवादी शोध रिपोर्ट।**

*हर रिपोर्ट का हर प्रमुख आँकड़ा हैश किए गए स्रोत स्नैपशॉट तक जाता है — अंतराल घोषित किए जाते हैं, कभी गढ़े नहीं जाते। केवल शोध; निवेश सलाह नहीं।*

[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
[![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-fund-research)
[![DSH plugin](https://img.shields.io/badge/dsh--plugin-🧩-green)](https://github.com/topics/dsh-plugin)
[![dsh-doctor](https://raw.githubusercontent.com/PerryLink/dsh-plugin-doctor/main/badges/PerryLink__dsh-fund-research.svg)](https://github.com/PerryLink/dsh-plugin-doctor#verified-徽章)
[![DSH Market](https://raw.githubusercontent.com/2BingLing/dsh-market/master/assets/readme/badge-listed-en.svg)](https://dsh.market/)
[![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
[![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-fund-research/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-fund-research/actions)
[![npm version](https://img.shields.io/npm/v/dsh-fund-research)](https://www.npmjs.com/package/dsh-fund-research)
[![npm downloads](https://img.shields.io/npm/dm/dsh-fund-research)](https://www.npmjs.com/package/dsh-fund-research)
[![dshfind](https://dshfind.com/api/badge/PerryLink/dsh-fund-research?metric=downloads&lang=hi)](https://dshfind.com/hi/plugins/PerryLink/dsh-fund-research?ref=badge)

[English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md)

```sh
dsh plugin --profile <name> add dsh-fund-research
```


</div>

---


**📖 इकोसिस्टम नॉलेज बेस** — मापे गए आँकड़े, मार्केटिंग नहीं: [डेवलपमेंट गाइड · चयन डेटा · रखरखाव मानदंड](https://perrylink.github.io/dsh-plugin-guide/)।

<!-- star-cta -->
## Install & uninstall

```sh
dsh plugin --profile web add dsh-fund-research     # स्थापित करें (npm या tarball)
dsh plugin --profile web remove dsh-fund-research  # हटाएँ
```

स्थापित करने के बाद प्रोफ़ाइल पुनः आरंभ करें (बंडल सक्रियण restart-आधारित है)। शिप किए गए प्रोफ़ाइल `dsh-base` के माध्यम से स्टोरेज स्टैक (`dsh-storage` + `dsh-storage-json` + `dsh-storage-domain`) बनाते हैं; बंडल पैच केवल प्लगइन पंक्ति माउंट करता है।

## ⭐ 如果它帮到了你

यह प्लगइन [DSH प्लगइन परिवार](https://github.com/PerryLink) का हिस्सा है (95 प्लगइन, सभी Apache-2.0)। अगर यह उपयोगी लगे, तो **एक स्टार दें** — इससे कोई सुविधा अनलॉक नहीं होती, पर अगला व्यक्ति इसे खोज में आसानी से पा लेता है।

*English:* part of a 95 plugin family for DeepSeek Harness. If it is useful, **a star helps the next person find it** — nothing is gated behind it.

## What is dsh-fund-research?

DeepSeek Harness पर चीनी सार्वजनिक म्यूचुअल फंडों के लिए नियतिवादी शोध रिपोर्ट।

हर रिपोर्ट का हर प्रमुख आँकड़ा हैश किए गए स्रोत स्नैपशॉट तक जाता है — अंतराल घोषित किए जाते हैं, कभी गढ़े नहीं जाते। केवल शोध; निवेश सलाह नहीं।

![dsh-fund-research कार्यप्रवाह आरेख: प्रश्न → सीलबंद स्रोत → रिपोर्ट।](docs/assets/dsh-fund-research-flow.svg)

*कार्यप्रवाह: प्रश्न → सीलबंद स्रोत → रिपोर्ट। नीचे के उदाहरण वास्तविक कमांड सतह का उपयोग करते हैं।*


*वही रन, एनिमेटेड।*

## Compatibility

| घटक | संस्करण |
|---|---|
| DeepSeek Harness | `dsh-v0.2.1-rc.2` (peer रेंज alpha.2 लाइन को स्वीकार करती है: `>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0`)। इस लाइन पर `Session.append` का तीसरा पैरामीटर केवल सरफ़ेस प्रकारों के लिए `SurfaceIntent` है, इसलिए `fund-research/*` ऑडिट इवेंट अब भी दर्ज नहीं होते (टूल परिणाम तथा सील किया स्नैपशॉट/रिपोर्ट ही ऑडिट ट्रेल हैं)। 2026-09-25 को सत्यापित (दोहरा typecheck + 176 टेस्ट)। |
| Node.js | `^22.19.0 \|\| >=24.0.0` |
| पैकेज प्रबंधक | `pnpm@11.7.0` |
| प्लेटफ़ॉर्म | Windows / macOS / Linux (केवल होस्ट प्लगइन) |
| डेटा स्रोत | Tiantian Fund / Eastmoney सार्वजनिक एंडपॉइंट (बिना key, बिना login) |

## What you get

- **`fund_research` टूल** — एक फंड कोड अंदर, एक संस्करणित Markdown शोध रिपोर्ट बाहर: अवलोकन, प्रदर्शन विघटन, होल्डिंग्स प्रवेश, सरलीकृत शैली आरोपण, प्रबंधक प्रोफ़ाइल, जोखिम और अंतराल घोषणाएँ, अस्वीकरण, और एक **संख्या-अनुरेखण परिशिष्ट** जो हर प्रमुख आँकड़े को उसके स्नैपशॉट JSON पथ और सत्यापन फैसले से जोड़ता है। `fund-reports/{code}/{YYYYMMDD-HHmmss}/` में `report.md` + `manifest.json` + `snapshot.json` के रूप में सील किया जाता है। `background: true` इसे `fund-report` बैकग्राउंड जॉब के रूप में चलाता है।
- **`fund_snapshot` टूल** — एक हल्का स्नैपशॉट कार्ड (नवीनतम NAV, प्रकाशित चरण रिटर्न, स्केल, प्रबंधक, टॉप-3 होल्डिंग्स) फंड के दिन-निर्देशिका में सील होता है।
- **नियतिवादी मेट्रिक्स, शून्य मॉडल अंकगणित** — अवधि/वार्षिकीकृत रिटर्न, अस्थिरता, अधिकतम ड्रॉडाउन, Sharpe; टॉप-N सांद्रता, HHI, उद्योग वितरण, त्रैमासिक होल्डिंग्स तुलना; आकार-मूल्य शैली बैंड; प्रबंधक कार्यकाल और साथियों से तुलना। सब कुछ सील किए गए स्नैपशॉट पर शुद्ध फ़ंक्शन।
- **अनुरेखण एक प्रथम श्रेणी सुविधा** — सील करने से पहले, हर प्रमुख आँकड़े की सील किए गए `snapshot.json` के विरुद्ध जाँच होती है — वैकल्पिक [`dsh-data-quality`](https://github.com/topics/dsh-plugin) सेवा के माध्यम से जब वह स्थापित हो, अन्यथा अंतर्निहित समरूपी फ़ॉलबैक जाँचकर्ता (`builtin-fallback`) से। परिशिष्ट तालिका मूल्य ↔ पथ ↔ फैसला दर्ज करती है।
- **ईमानदार अंतराल** — एक असफल या अवक्रमित डेटा स्रोत प्रभावित अनुभाग में स्पष्ट डेटा अंतराल घोषणा उत्पन्न करता है। प्लगइन कभी भी किसी अंतराल को गढ़े हुए आँकड़े से नहीं भरता।
- **ऑफ़लाइन मोड** — `offline: true` (config या टूल तर्क) सब कुछ स्टोरेज-डोमेन स्नैपशॉट परत या डिस्क पर नवीनतम संस्करण स्नैपशॉट से परोसता है, शून्य बाहरी अनुरोधों के साथ। परीक्षण और पुनरुत्पादन के लिए आदर्श।
- **asOf कटऑफ़** — `asOfDate` (ISO `YYYY-MM-DD`) NAV शृंखला को उस तिथि या उससे पहले के डेटा तक सीमित करता है और स्नैपशॉट व रिपोर्ट में कटऑफ़ अंकित करता है; अमान्य या भविष्य की तिथियाँ स्पष्ट रूप से विफल होती हैं।
- **चेकपॉइंट रिज़्यूम** — `<reportRoot>/.run-state.json` प्रत्येक पाइपलाइन चरण को टाइमस्टैम्प और इनपुट फ़िंगरप्रिंट के साथ रिकॉर्ड करता है; `resume: true` पहले अधूरे चरण से जारी रखता है, सील किए हुए आर्टिफ़ैक्ट का पुनः उपयोग करता है, और बेमेल फ़िंगरप्रिंट को अस्वीकार करता है।
- **स्रोत खोज रिकॉर्ड** — हर अधिग्रहण एक कोड-जनित `sources-discovery.json` (एंडपॉइंट सूची, प्राथमिक/फ़ॉलबैक समाधान, प्रति-स्रोत कवरेज और अंतराल, अवक्रमण कारण) सील करता है और उसे परिशिष्ट में 数据源与缺口声明 के रूप में जोड़ता है।
- **बहु-फंड फ़ैन-आउट** — `codes` कोड का सरणी स्वीकार करता है; प्रत्येक फंड पाइपलाइन को स्वतंत्र रूप से चलाता है, विफलता अलगाव के साथ (विफलताएँ सारांश अंतराल बन जाती हैं), और परिणाम एक सारांश कार्ड होता है (code / asOf / सील हैश / निर्णय / विफलता कारण)।
- **ट्रैकिंग बहीखाता** — हर सफल सील `<reportRoot>/.tracking.jsonl` में एक नियतात्मक पंक्ति जोड़ता है; `includeComparison: true` एक नियतात्मक 与上次对比 अनुभाग (NAV रेंज / स्केल / शीर्ष होल्डिंग्स) रेंडर करता है, पूर्व रिकॉर्ड न होने पर अंतराल घोषणा के साथ।
- **केवल-पठन समीक्षा** — सील के बाद, एक `fund-review` जॉब सील किए हुए आर्टिफ़ैक्ट की समीक्षा करता है (अंतराल-घोषणा पूर्णता, ट्रेसेबिलिटी तालिका की संगति, अस्वीकरण) और `review-note.md` लिखता है; jobs सेवा न होने पर सुचारू रूप से छोड़ देता है (run-state में दर्ज)।
- **प्रति-स्रोत गुणवत्ता संकेत** — हर स्रोत नियतात्मक गुणवत्ता मेटाडेटा (`requested`/`succeeded`/`fieldsPresent`/`parseWarnings`/`degraded`) रखता है, जो परिशिष्ट और टूल मानों में दिखाया जाता है ताकि डाउनस्ट्रीम निम्न-गुणवत्ता स्रोत का भार घटा सके (कभी कठोर रूप से फ़िल्टर न करे)।
- **वॉक-फ़ॉरवर्ड स्थिरता सारांश** — `includeWalkForward: true` एक 样本外稳定性摘要 अनुभाग जोड़ता है: स्लाइडिंग-विंडो रिटर्न/Sharpe संकेत स्थायित्व और माध्य/मानक विचलन, स्पष्ट रूप से केवल सांख्यिकीय विवरण के रूप में, पूर्वानुमान नहीं।
- **सत्र ऑडिट इवेंट (host पर निर्भर)** — जब host रेपो-बाहरी इवेंट प्रकार स्वीकार करता है, तब `fund-research/snapshot` और `fund-research/report` केवल-लॉग इवेंट कोड, संस्करण निर्देशिका, मैनिफ़ेस्ट हैश और अंतराल सूची रखते हैं (मॉडल-दृश्य ⟺ लॉग किया गया); `0.1.2-alpha.1`–`0.1.5-alpha.1` hosts पर ज्ञात-प्रकार कैटलॉग बिल्ड-जनित इन-रेपो सूची है, इसलिए द्वार कुछ नहीं जोड़ता और टूल परिणाम तथा सीलबंद कलाकृतियाँ ही ऑडिट पथ हैं।
- **पद्धति स्किल** — एक बंडलित `fund-research` स्किल मॉडल को मेट्रिक परिभाषाएँ (口径), अंतराल-संचालन और अनुपालन शब्दावली सिखाता है। गणना कोड में ही रहती है।

## Quick start

```sh
dsh plugin --profile web add github:PerryLink/dsh-fund-research
```

```text
> 用 fund_research 出一份 161725 的研究报告
```

एजेंट `fund_research({ code: "161725" })` कहता है; कुछ पल बाद workspace में यह होता है:

```text
fund-reports/161725/20260819-153012/
├── snapshot.json    # कच्चे निकाले गए डेटा + गणना मेट्रिक्स + प्रति-स्रोत sha256
├── report.md        # अनुरेखण परिशिष्ट के साथ शोध रिपोर्ट
└── manifest.json    # स्नैपशॉट/रिपोर्ट हैश, पैरामीटर, सत्यापन इंजन, अंतराल
```

`report.md` के परिशिष्ट में हर आँकड़ा `snapshot.json` के विरुद्ध `verified` / `mismatch` / `not-found` / `unverifiable` फैसला रखता है — दस्तावेज़ित口径 के साथ `raw.*` से इनमें से कोई भी पुनर्गणना करके प्लगइन की ही ऑडिट करें।

### उदाहरण

ये वास्तविक प्रवेश बिंदु हैं; इंस्टॉल के बाद एक चलाएँ।

#### विस्तृत उदाहरण

**कमांड**

~~~sh
fund_research({ code: "161725", sections: ["overview", "disclaimer"] })
~~~

**आउटपुट**

~~~text
招商中证白酒指数(LOF)A（161725）研究报告已封存 — 仅供研究参考，不构成投资建议
版本目录 20261019-124928；报告 fund-reports/161725/20261019-124928/report.md
manifest fund-reports/161725/20261019-124928/manifest.json（报告 sha256 f74b1446d544…）
数字回溯表核查（builtin-fallback）：verified 5 / mismatch 0 / not-found 0 / unverifiable 0
采集方式：快照复用（offline）；章节：overview、disclaimer
~~~

*स्रोत `README.md:99-113,149-161; test/tools.spec.ts:150-171; src/tools/research.ts:121-130`*

#### विफलता शाखा

**इनपुट**

~~~text
{"code":"161725","asOfDate":"2024-02-30"}
~~~

**आउटपुट**

~~~text
isError=true; error.message=asOfDate must be a real calendar date, got "2024-02-30"
~~~

*स्रोत `plugins/dsh-fund-research/src/sources/snapshot.ts:167 (parseAsOfDate); plugins/dsh-fund-research/README.md:173 (invalid dates fail loudly); exercised through plugins/dsh-fund-research/test/harness.ts`*

#### संक्षिप्त उदाहरण

- `fund_snapshot`

## Configuration

सभी कुंजियाँ वैकल्पिक हैं (डिफ़ॉल्ट दिखाए गए); अमान्य मान लोड होते समय ज़ोर से विफल होते हैं।

| Key | Default | Description |
|---|---|---|
| `enabled` | `true` | मुख्य स्विच; `false` कुछ भी माउंट नहीं करता। |
| `promptSection` | `false` | संपूर्ण डिप्लॉयमेंट के system prompt में संक्षिप्त फंड-रिसर्च भूमिका विवरण जोड़ता है। डिफ़ॉल्ट रूप से बंद; `true` प्रोफ़ाइल के हर सत्र पर लागू होता है। |
| `eastmoneyBaseUrl` | `https://fund.eastmoney.com` | Tiantian Fund pingzhongdata होस्ट। |
| `f10BaseUrl` | `https://fundf10.eastmoney.com` | Tiantian Fund F10 होस्ट (होल्डिंग्स + प्रबंधक पृष्ठ)। |
| `quoteBaseUrl` | `https://push2.eastmoney.com` | प्रति-स्टॉक मूल्यांकन स्नैपशॉट हेतु Eastmoney कोट होस्ट। |
| `quoteFallbackBaseUrl` | `https://push2delay.eastmoney.com` | प्राथमिक होस्ट विफल होने पर प्रति-स्टॉक आज़माया जाने वाला वैकल्पिक कोट होस्ट (Eastmoney का अपना विलंबित-कोट होस्ट); `''` इसे बंद करता है। |
| `requestIntervalMs` | `1000` | बाहरी अनुरोधों के बीच न्यूनतम अंतर (विनम्र संग्रह)। |
| `timeoutMs` | `15000` | प्रति-अनुरोध समय-सीमा। |
| `retries` | `2` | एक्सपोनेंशियल बैकऑफ़ के साथ प्रति-अनुरोध पुनर्प्रयास। |
| `cacheTtlHours` | `12` | स्टोरेज-डोमेन स्नैपशॉट पुनःउपयोग विंडो। |
| `riskFreeRate` | `0.02` | Sharpe अनुपात हेतु वार्षिक जोखिम-मुक्त दर। |
| `offline` | `false` | कभी अनुरोध न भेजें; केवल स्नैपशॉट परत पढ़ें। |
| `reportRoot` | `fund-reports` | कार्यक्षेत्र-सापेक्ष (या निरपेक्ष) रिपोर्ट ट्री रूट। |
| `styleQuotes` | `true` | शैली आरोपण हेतु प्रति-स्टॉक मूल्यांकन कोट प्राप्त करें। |

## Tools & surfaces

### `fund_research`

| तर्क | प्रकार | विवरण |
|---|---|---|
| `code` | string | छह-अंकीय फंड कोड, उदा. `"161725"` (एकल फंड)। `codes` के साथ परस्पर अनन्य। |
| `codes` | string[] | कई छह-अंकीय कोड: प्रति-फंड विफलता अलगाव के साथ फ़ैन-आउट (सारांश लौटाता है)। `code` के साथ परस्पर अनन्य। |
| `sections` | string[] | रेंडर करने के लिए अनुभाग (`overview`/`performance`/`holdings`/`style`/`manager`/`benchmark`/`risk`/`disclaimer`)। डिफ़ॉल्ट: सभी। |
| `offline` | boolean | केवल स्नैपशॉट परत पढ़ें (कोई नेटवर्क नहीं)। डिफ़ॉल्ट: प्लगइन config। |
| `asOfDate` | string | ISO 8601 कटऑफ़ (`YYYY-MM-DD`): केवल उस तिथि या उससे पहले का डेटा उपयोग होता है (NAV शृंखला छोटी की गई)। खाली = कोई कटऑफ़ नहीं; भविष्य की तिथियाँ स्पष्ट रूप से विफल होती हैं। |
| `resume` | boolean | `.run-state.json` में दर्ज रन को पहले अधूरे चरण से जारी रखें (सील किए हुए आर्टिफ़ैक्ट का पुनः उपयोग); बेमेल फ़िंगरप्रिंट को अस्वीकार करता है। डिफ़ॉल्ट: `false`। |
| `includeComparison` | boolean | पिछले `.tracking.jsonl` रिकॉर्ड के विरुद्ध एक नियतात्मक 与上次对比 अनुभाग रेंडर करें; अनुपस्थित साक्ष्य अंतराल के रूप में घोषित। डिफ़ॉल्ट: `false`। |
| `includeWalkForward` | boolean | एक नियतात्मक 样本外稳定性摘要 अनुभाग रेंडर करें: स्लाइडिंग-विंडो रिटर्न/Sharpe संकेत स्थायित्व और माध्य/मानक विचलन। केवल सांख्यिकीय विवरण, पूर्वानुमान नहीं। डिफ़ॉल्ट: `false`। |
| `background` | boolean | `fund-report` बैकग्राउंड जॉब के रूप में चलाएँ; `{ kind: "background", jobId }` लौटाता है। डिफ़ॉल्ट: `false`। |

### `fund_snapshot`

| तर्क | प्रकार | विवरण |
|---|---|---|
| `code` (आवश्यक) | string | छह-अंकीय फंड कोड। |
| `offline` | boolean | केवल स्नैपशॉट परत पढ़ें। डिफ़ॉल्ट: प्लगइन config। |
| `asOfDate` | string | ISO 8601 कटऑफ़ (`YYYY-MM-DD`): केवल उस तिथि या उससे पहले का डेटा उपयोग होता है। खाली = कोई कटऑफ़ नहीं; भविष्य की तिथियाँ स्पष्ट रूप से विफल होती हैं। |

### रिपोर्ट अनुभाग

概览 अवलोकन · 业绩拆解 प्रदर्शन विघटन · 持仓穿透 होल्डिंग्स प्रवेश · 风格归因 शैली आरोपण (सरलीकृत) · 经理画像 प्रबंधक प्रोफ़ाइल · 风险与缺口声明 जोखिम और अंतराल · 免责声明 अस्वीकरण · 附录：数字回溯表 अनुरेखण परिशिष्ट।

## Permissions & data

- **पढ़ता है** Tiantian Fund / Eastmoney सार्वजनिक एंडपॉइंट (`fund.eastmoney.com/pingzhongdata/*.js`, `fundf10.eastmoney.com` F10 पृष्ठ, `push2.eastmoney.com` कोट) ब्राउज़र User-Agent और कॉन्फ़िगर करने योग्य विनम्र गति के साथ। बिना key, बिना login, बिना भुगतान API, बिना एंटी-क्रॉलर बाईपास।
- **लिखता है** केवल सत्र workspace के अंदर कॉन्फ़िगर किए गए रिपोर्ट रूट के अंतर्गत, साथ ही `dsh_fund_research` स्टोरेज डोमेन (प्रति फंड नवीनतम स्नैपशॉट)।
- **कभी नहीं** दूरस्थ JavaScript का मूल्यांकन करता (pingzhongdata ब्लॉक स्कैन किया जाता है, कभी निष्पादित नहीं), कभी credentials संग्रहीत नहीं करता, कभी ट्रेड नहीं करता।
- सत्र इवेंट केवल-लॉग ऑडिट रिकॉर्ड हैं जो `src/events.ts` के अनुकूली द्वार से गुजरते हैं: वे तभी जोड़ते हैं जब host रेपो-बाहरी प्रकार स्वीकार करता है — उसका ज्ञात-प्रकार समुच्चय शब्दावली को कवर करता है, या उसका `Session.append` एक `ignorable` लिफ़ाफ़ा लेता है। `0.1.2-alpha.1` से आगे (जिसमें `0.1.5-alpha.1` भी है) दोनों में से कोई भी लागू नहीं होता: `KNOWN_SESSION_EVENT_TYPES` बिल्ड-जनित इन-रेपो कैटलॉग है जो रचना से ही रेपो-बाहरी इवेंट को बाहर रखता है, और `Session.append` में `ignorable` विकल्प नहीं है, इसलिए द्वार कुछ नहीं जोड़ता — टूल परिणाम और सीलबंद कलाकृतियाँ ही पुनर्निर्माण-योग्य ऑडिट पथ बने रहते हैं, और विफल append कभी टूल परिणाम नहीं बदलता।
0.1.5-alpha.1 (2026-09-09 को अनुकूलित): नई बेसलाइन पर द्वार पुनः सत्यापित — कैटलॉग अभी भी रेपो-बाहरी इवेंट को बाहर रखता है और `Session.append` अभी भी `ignorable` लिफ़ाफ़ा स्टैम्प नहीं कर सकता, इसलिए द्वार व्यवहार अपरिवर्तित है।
0.1.5-rc.1 (2026-09-10 को अनुकूलित): निर्भरता पिन प्रकाशित 0.1.5-rc.1 लाइन पर चले जाते हैं; कोई seam परिवर्तन इस plugin के व्यवहार को प्रभावित नहीं करता।
0.1.5-rc.2 (2026-09-11 को अनुकूलित): निर्भरता पिन प्रकाशित 0.1.5-rc.2 लाइन पर चले जाते हैं; कोई seam परिवर्तन इस plugin के व्यवहार को प्रभावित नहीं करता।
- फंड-रिसर्च भूमिका विवरण **वैकल्पिक** है (`promptSection: true`) और सक्षम होने पर पूरे डिप्लॉयमेंट पर लागू होता है: प्रोफ़ाइल के हर उस सत्र पर जिसे फंड टूल दिखते हैं, उन सत्रों पर भी जो उन्हें कभी नहीं चलाते।

## Security boundaries

- फंड कोड किसी पथ या URL को छूने से पहले ठीक छह अंकों के रूप में मान्य किए जाते हैं; रिपोर्ट रूट सत्र workspace के अंदर हल होता है।
- स्रोत पेलोड अधिग्रहण पर हैश (SHA-256) किए जाते हैं; सील किया गया मैनिफ़ेस्ट चलानों के बीच मौन अपस्ट्रीम संपादन का पता लगाता है।
- सत्यापन कभी सीलिंग को रोकता नहीं: एक टूटी हुई वैकल्पिक `dsh-data-quality` सेवा अंतर्निहित जाँचकर्ता में अवक्रमित होती है, और उपयोग किया गया इंजन मैनिफ़ेस्ट और परिशिष्ट में दर्ज होता है।
- रिपोर्टिंग नीति के लिए देखें [SECURITY.md](SECURITY.md)।

## Known limitations

- **अपस्ट्रीम संरचना बहाव।** पार्सर डिज़ाइन से सख्त हैं: यदि Tiantian Fund `var Data_*` आकार या F10 तालिका लेआउट बदलता है, तो प्रभावित स्रोत फ़ील्ड का नाम देते हुए `SourceParseError` फेंकता है, और अनुभाग घोषित अंतराल तक अवक्रमित होता है (मुख्य pingzhongdata ब्लॉक की विफलता रन को ज़ोर से रोकती है)। यह जानबूझकर है — मौन गलत पार्सिंग घोषित अंतराल से बदतर है।
- **शैली आरोपण 估算口径 है (अनुमानित)।** निश्चित आकार बैंड (≥1000亿 / 300–1000亿 / <300亿) और PE बैंड, साथ ही होल्डिंग्स के भीतर पंचक — कोई पूर्ण-बाज़ार वितरण परामर्श नहीं लिया जाता। रिपोर्ट इसे लेबल करती है।
- **होल्डिंग्स त्रैमासिक प्रकटीकरण डेटा हैं** (प्रकाशन अंतराल के साथ); F10 पृष्ठ नवीनतम दो तिमाहियों को रखता है।
- **प्रति कॉल एक फंड; कोई पोर्टफोलियो विश्लेषण नहीं, कोई PDF वार्षिक रिपोर्ट नहीं, कोई रीयल-टाइम कोट नहीं** (`fundgz.1234567.com.cn` रीयल-टाइम एंडपॉइंट मृत है और जानबूझकर उपयोग नहीं किया जाता)।
- Web UI की "deliverables" पंक्ति उत्परिवर्तन-टूल कॉल कार्ड से खिलाई जाती है; इस प्लगइन के उत्पादित फ़ाइलें कॉल कार्ड के अनुसरण-स्थान (फंड की रिपोर्ट निर्देशिका) के माध्यम से दिखती हैं, प्रति-फ़ाइल पंक्तियों के रूप में नहीं।

## Development

```sh
pnpm install
pnpm run typecheck && pnpm run typecheck:ci && pnpm run typecheck:checkout   # प्रकार, सहित। CI-सख्त
pnpm test                                     # वास्तविक seams पर 176 परीक्षण
pnpm run test:e2e                              # वैकल्पिक वास्तविक-नेटवर्क E2E (LIVE_E2E=1)
pnpm run build && pnpm run verify:artifacts   # tsdown + tsc घोषणाएँ
pnpm run verify:self-contained                # रिपॉजिटरी के बाहर कोई निर्भरता स्पेक नहीं
node scripts/check-readme-sync.mjs            # पाँच-भाषा README गेट
node scripts/check-endpoints.mjs              # M3 एंडपॉइंट-लाइवनेस प्रोब (4 eastmoney होस्ट)
pnpm pack                                     # tarball
```

परीक्षण 0.1.7-rc.2 peers के वास्तविक `Context`/`SessionStore`/`ToolRuntime`/`LocalJobRegistry`/स्टोरेज seam का उपयोग करते हैं; नेटवर्क केवल fetch सीमा पर सहेजे गए वास्तविक-प्रतिक्रिया फिक्स्चर (`fixtures/`, फंड 161725) द्वारा प्रतिस्थापित होता है। `.tmp/` के कलेक्टर स्क्रिप्ट से फिक्स्चर ताज़ा करें।

## Topics

`dsh` · `dsh-plugin` · `deepseek-harness` · `cordis` · `fund-research` · `mutual-fund` · `investment-research` · `finance` · `research-report`

## Contributors

- **PerryLink** — अनुरक्षक: संग्रह/मेट्रिक्स/रिपोर्ट-सील पाइपलाइन, endpoint-जीवंतता जाँच, CI व रिलीज़, और पाँच-भाषा दस्तावेज़।
- **dsh-fund-research contributors** — आधारभूत निर्माण की सामूहिक लेखक पहचान (प्लगइन अनुबंध, कॉन्फ़िग स्कीमा, टूल्स, टेस्ट, पैकेजिंग)।

अभी कोई बाहरी योगदानकर्ता नहीं — 0 सामुदायिक PRs/issues मर्ज किए गए। यहाँ सूचीबद्ध होने के लिए `.github/ISSUE_TEMPLATE/` के फ़ॉर्म से issue खोलें या `main` पर pull request दें।

## PerryLink DSH Plugin Family

यह प्रोजेक्ट [PerryLink](https://github.com/PerryLink) के DeepSeek Harness प्लगइन परिवार का हिस्सा है। पूरी सूची नीचे संक्षिप्त रखी गई है ताकि हर README की पहली स्क्रीन छोटी रहे; हर पंक्ति और उसकी स्थिति देखने के लिए इसे खोलें।

<details>
<summary>सभी प्लगइन खोलें</summary>

| प्लगइन | स्थिति |
|---|---|
| **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** |  |
| **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** |  |
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** |  |
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** |  |
| **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** |  |
| **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** |  |
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** |  |
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** |  |
| **[dsh-click](https://github.com/PerryLink/dsh-click)** |  |
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** |  |
| **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** |  |
| **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** |  |
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** |  |
| **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** |  |
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** |  |
| **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** |  |
| **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** |  |
| **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** |  |
| **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** |  |
| **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** |  |
| **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** |  |
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** |  |
| **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** |  |
| **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** |  |
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** |  |
| **[dsh-github](https://github.com/PerryLink/dsh-github)** |  |
| **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** |  |
| **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** |  |
| **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** |  |
| **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** |  |
| **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** |  |
| **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** |  |
| **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** |  |
| **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** |  |
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** |  |
| **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** |  |
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** |  |
| **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** |  |
| **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** |  |
| **[dsh-library](https://github.com/PerryLink/dsh-library)** |  |
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** |  |
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** |  |
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** |  |
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** |  |
| **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** |  |
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** |  |
| **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** |  |
| **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** |  |
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** |  |
| **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** |  |
| **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** |  |
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** |  |
| **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** |  |
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** |  |
| **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** |  |
| **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** |  |
| **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** |  |
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** |  |
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** |  |
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** |  |
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** |  |
| **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** |  |
| **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** |  |
| **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** |  |
| **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** |  |
| **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** |  |
| **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** |  |
| **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** |  |
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** |  |
| **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** |  |
| **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** |  |
| **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** |  |
| **[dsh-score](https://github.com/PerryLink/dsh-score)** |  |
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** |  |
| **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** |  |
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** |  |
| **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** |  |
| **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** |  |
| **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** |  |
| **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** |  |
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** |  |
| **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** |  |
| **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** |  |
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** |  |
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** |  |
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** |  |
| **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** |  |
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | 🧊 फ़्रोज़न — रिपॉज़िटरी README देखें |
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | 🧊 फ़्रोज़न — रिपॉज़िटरी README देखें |
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | 🧊 फ़्रोज़न — रिपॉज़िटरी README देखें |
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | 🧊 फ़्रोज़न — रिपॉज़िटरी README देखें |
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 🧊 फ़्रोज़न — रिपॉज़िटरी README देखें |
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | 🚫 सेवानिवृत्त — रिपॉज़िटरी README देखें |
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 🚫 सेवानिवृत्त — रिपॉज़िटरी README देखें |
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | 🚫 सेवानिवृत्त — रिपॉज़िटरी README देखें |

</details>
