# migrations

dir: sysdb
filename: 00001-collections.sqlite.sql
hash: 38352d725ad1c16074fac420b22b4633
sql:
CREATE TABLE collections (
    id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    topic TEXT NOT NULL,
    UNIQUE (name)
);

CREATE TABLE collection_metadata (
    collection_id TEXT REFERENCES collections(id) ON DELETE CASCADE,
    key TEXT NOT NULL,
    str_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (collection_id, key)
);


dir: sysdb
filename: 00002-segments.sqlite.sql
hash: 2913cb6a503055a95f625448037e8912
sql:
CREATE TABLE segments (
    id TEXT PRIMARY KEY,
    type TEXT NOT NULL,
    scope TEXT NOT NULL,
    topic TEXT,
    collection TEXT REFERENCES collection(id)
);

CREATE TABLE segment_metadata (
    segment_id TEXT  REFERENCES segments(id) ON DELETE CASCADE,
    key TEXT NOT NULL,
    str_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (segment_id, key)
);


dir: sysdb
filename: 00004-tenants-databases.sqlite.sql
hash: 048867ce8fcdefe4023c7110e4433591
sql:
CREATE TABLE IF NOT EXISTS tenants (
    id TEXT PRIMARY KEY,
    UNIQUE (id)
);

CREATE TABLE IF NOT EXISTS databases (
    id TEXT PRIMARY KEY, -- unique globally
    name TEXT NOT NULL, -- unique per tenant
    tenant_id TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
    UNIQUE (tenant_id, name) -- Ensure that a tenant has only one database with a given name
);

CREATE TABLE IF NOT EXISTS collections_tmp (
    id TEXT PRIMARY KEY, -- unique globally
    name TEXT NOT NULL, -- unique per database
    topic TEXT NOT NULL,
    dimension INTEGER,
    database_id TEXT NOT NULL REFERENCES databases(id) ON DELETE CASCADE,
    UNIQUE (name, database_id)
);

-- Create default tenant and database
INSERT OR REPLACE INTO tenants (id) VALUES ('default_tenant'); -- The default tenant id is 'default_tenant' others are UUIDs
INSERT OR REPLACE INTO databases (id, name, tenant_id) VALUES ('00000000-0000-0000-0000-000000000000', 'default_database', 'default_tenant');

INSERT OR REPLACE INTO collections_tmp (id, name, topic, dimension, database_id)
    SELECT id, name, topic, dimension, '00000000-0000-0000-0000-000000000000' FROM collections;
DROP TABLE collections;
ALTER TABLE collections_tmp RENAME TO collections;


dir: sysdb
filename: 00005-remove-topic.sqlite.sql
hash: b1367c826b8fba5f96f27befdc1d42d2
sql:
-- Remove the topic column from the Collections and Segments tables

ALTER TABLE collections DROP COLUMN topic;
ALTER TABLE segments DROP COLUMN topic;


dir: sysdb
filename: 00006-collection-segment-metadata.sqlite.sql
hash: 4eea7468935bf25d4604a0fed2366116
sql:
-- SQLite does not support adding check with alter table, as a result, adding a check
-- involve creating a new table and copying the data over. It is over kill with adding
-- a boolean type column. The application write to the table needs to ensure the data
-- integrity.
ALTER TABLE collection_metadata ADD COLUMN bool_value INTEGER;
ALTER TABLE segment_metadata ADD COLUMN bool_value INTEGER;


dir: sysdb
filename: 00007-collection-config.sqlite.sql
hash: 1c7e63bba346a42a18b6ab7f1c989bed
sql:
-- Stores collection configuration dictionaries.
ALTER TABLE collections ADD COLUMN config_json_str TEXT;


dir: sysdb
filename: 00008-maintenance-log.sqlite.sql
hash: 0a0e7e93111a01789addf64961c6127c
sql:
-- Records when database maintenance operations are performed.
-- At time of creation, this table is only used to record vacuum operations.
CREATE TABLE maintenance_log (
  id INT PRIMARY KEY,
  timestamp INT NOT NULL,
  operation TEXT NOT NULL
);


dir: sysdb
filename: 00009-segment-collection-not-null.sqlite.sql
hash: 054355aef9e63702bf54ea29e61563f1
sql:
-- This makes segments.collection non-nullable.
CREATE TABLE segments_temp (
    id TEXT PRIMARY KEY,
    type TEXT NOT NULL,
    scope TEXT NOT NULL,
    collection TEXT REFERENCES collection(id) NOT NULL
);

INSERT INTO segments_temp SELECT * FROM segments;
DROP TABLE segments;
ALTER TABLE segments_temp RENAME TO segments;


dir: sysdb
filename: 00010-collection-schema.sqlite.sql
hash: 5c3a5ac4b79df76799b4721827ed5e1d
sql:
-- Stores collection schema as stringified json
ALTER TABLE collections ADD COLUMN schema_str TEXT;


dir: metadb
filename: 00001-embedding-metadata.sqlite.sql
hash: 2b4cf52c4bb2676e21d6860a4409f856
sql:
CREATE TABLE embeddings (
    id INTEGER PRIMARY KEY,
    segment_id TEXT NOT NULL,
    embedding_id TEXT NOT NULL,
    seq_id BLOB NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE (segment_id, embedding_id)
);

CREATE TABLE embedding_metadata (
    id INTEGER REFERENCES embeddings(id),
    key TEXT NOT NULL,
    string_value TEXT,
    int_value INTEGER,
    float_value REAL,
    PRIMARY KEY (id, key)
);

CREATE TABLE max_seq_id (
    segment_id TEXT PRIMARY KEY,
    seq_id BLOB NOT NULL
);

CREATE VIRTUAL TABLE embedding_fulltext USING fts5(id, string_value);


dir: metadb
filename: 00002-embedding-metadata.sqlite.sql
hash: 12a570f7121b3a8ce750a2a7c36da20f
sql:
-- SQLite does not support adding check with alter table, as a result, adding a check
-- involve creating a new table and copying the data over. It is over kill with adding
-- a boolean type column. The application write to the table needs to ensure the data
-- integrity.
ALTER TABLE embedding_metadata ADD COLUMN bool_value INTEGER


dir: metadb
filename: 00003-full-text-tokenize.sqlite.sql
hash: f97ad6334aeaa8f419f01110b648b97a
sql:
CREATE VIRTUAL TABLE embedding_fulltext_search USING fts5(string_value, tokenize='trigram');
INSERT INTO embedding_fulltext_search (rowid, string_value) SELECT rowid, string_value FROM embedding_metadata;
DROP TABLE embedding_fulltext;


dir: metadb
filename: 00004-metadata-indices.sqlite.sql
hash: fb36603a45ee2cd0254cef3ef86585e8
sql:
CREATE INDEX IF NOT EXISTS embedding_metadata_int_value ON embedding_metadata (key, int_value) WHERE int_value IS NOT NULL;
CREATE INDEX IF NOT EXISTS embedding_metadata_float_value ON embedding_metadata (key, float_value) WHERE float_value IS NOT NULL;
CREATE INDEX IF NOT EXISTS embedding_metadata_string_value ON embedding_metadata (key, string_value) WHERE string_value IS NOT NULL;


dir: metadb
filename: 00005-max-seq-id-int.sqlite.sql
hash: 0e9de46758761b373ce682925edcc326
sql:
ALTER TABLE max_seq_id ADD COLUMN int_seq_id INTEGER;

-- Convert 8 byte wide big-endian integer as blob to native 64 bit integer.
-- Adapted from https://stackoverflow.com/a/70296198.
UPDATE max_seq_id SET int_seq_id = (
  SELECT (
       (instr('123456789ABCDEF', substr(hex(seq_id), -1 , 1)) <<  0)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -2 , 1)) <<  4)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -3 , 1)) <<  8)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -4 , 1)) << 12)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -5 , 1)) << 16)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -6 , 1)) << 20)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -7 , 1)) << 24)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -8 , 1)) << 28)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -9 , 1)) << 32)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -10, 1)) << 36)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -11, 1)) << 40)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -12, 1)) << 44)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -13, 1)) << 48)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -14, 1)) << 52)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -15, 1)) << 56)
     | (instr('123456789ABCDEF', substr(hex(seq_id), -16, 1)) << 60)
    )
);

ALTER TABLE max_seq_id DROP COLUMN seq_id;
ALTER TABLE max_seq_id RENAME COLUMN int_seq_id TO seq_id;


dir: metadb
filename: 00006-metadata-array-support.sqlite.sql
hash: e026f01ea92c1baa1493f4ad5ca7cfe7
sql:
-- Separate table for exploded array metadata values.
-- Each array element gets its own row, enabling efficient $contains queries.
-- The existing embedding_metadata table (with its PRIMARY KEY (id, key))
-- remains untouched and continues to store scalar metadata values.

CREATE TABLE IF NOT EXISTS embedding_metadata_array (
    id INTEGER NOT NULL REFERENCES embeddings(id),
    key TEXT NOT NULL,
    string_value TEXT,
    int_value INTEGER,
    float_value REAL,
    bool_value INTEGER
);

CREATE INDEX IF NOT EXISTS embedding_metadata_array_id_key
    ON embedding_metadata_array (id, key);
CREATE INDEX IF NOT EXISTS embedding_metadata_array_key_string
    ON embedding_metadata_array (key, string_value) WHERE string_value IS NOT NULL;
CREATE INDEX IF NOT EXISTS embedding_metadata_array_key_int
    ON embedding_metadata_array (key, int_value) WHERE int_value IS NOT NULL;
CREATE INDEX IF NOT EXISTS embedding_metadata_array_key_float
    ON embedding_metadata_array (key, float_value) WHERE float_value IS NOT NULL;


dir: embeddings_queue
filename: 00001-embeddings.sqlite.sql
hash: d3755dfd232be8e8301f4d7fcfb3a486
sql:
CREATE TABLE embeddings_queue (
    seq_id INTEGER PRIMARY KEY,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    operation INTEGER NOT NULL,
    topic TEXT NOT NULL,
    id TEXT NOT NULL,
    vector BLOB,
    encoding TEXT,
    metadata TEXT
);


# collections

id: d3939d30-29e1-409f-ab6a-975bb300ec4c
name: investment_knowledge
database_id: 00000000-0000-0000-0000-000000000000
config_json_str: {}
schema_str:
{"defaults":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}},"float_list":{"vector_index":{"enabled":false,"config":{"space":"l2","hnsw":{"ef_construction":100,"max_neighbors":16,"ef_search":100,"num_threads":22,"batch_size":100,"sync_threshold":1000,"resize_factor":1.2}}}},"sparse_vector":{"sparse_vector_index":{"enabled":false,"config":{"embedding_function":{"type":"unknown"},"bm25":false}}},"int":{"int_inverted_index":{"enabled":true,"config":{}}},"float":{"float_inverted_index":{"enabled":true,"config":{}}},"bool":{"bool_inverted_index":{"enabled":true,"config":{}}}},"keys":{"source":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"category":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}},"#embedding":{"float_list":{"vector_index":{"enabled":true,"config":{"space":"l2","source_key":"#document","hnsw":{"ef_construction":100,"max_neighbors":16,"ef_search":100,"num_threads":22,"batch_size":100,"sync_threshold":1000,"resize_factor":1.2}}}}},"#document":{"string":{"fts_index":{"enabled":true,"config":{}},"string_inverted_index":{"enabled":false,"config":{}}}},"knowledge_type":{"string":{"fts_index":{"enabled":false,"config":{}},"string_inverted_index":{"enabled":true,"config":{}}}}}}


# embedding_metadata

key: chroma:document
string_value:
# 半导体材料企业分析规则


## 规则1：利润质量判断


条件：

如果：

净利润增速 > 营收增速


结论：

说明企业可能存在：

- 产品结构升级
- 高毛利产品占比提升
- 成本改善


验证：

检查：

- 毛利率趋势
- 高端产品收入占比
- 经营现金流



---

# 规则2：判断国产替代真实性


条件：

企业宣称国产替代。


不能直接认为成功。


需要满足：

研发

↓

客户认证

↓

订单

↓

收入贡献



验证：

观察：

- 客户验证情况
- 销售收入
- 市占率



---

# 规则3：判断半导体材料护城河


条件：

企业产品需要：

- 高纯度
- 高一致性
- 长认证周期


结论：

具备较强竞争壁垒。


验证：

查看：

- 产品纯度等级
- 龙头客户
- 认证周期
- 良率



---

# 规则4：危险材料企业风险评估


条件：

产品属于：

危险化学品。


结论：

需要给予安全风险折价。


验证：

检查：

- 安全事故
- 环保处罚
- 自动化水平
- 安全投入



---


key: chroma:document
string_value:
危险化学品。


结论：

需要给予安全风险折价。


验证：

检查：

- 安全事故
- 环保处罚
- 自动化水平
- 安全投入



---

# 规则5：成长空间判断


条件：

新产品收入占比较低。


不能简单认为没有价值。


需要判断：

是否存在：

- 技术突破
- 客户验证
- 放量可能


验证：

观察：

收入是否：

百万级

↓

千万级

↓

亿元级


key: chroma:document
string_value:
### 规则编号：RULE_P01_CFO_QUALITY

#### 分析主题：净利润现金含量与“虚盈实亏”诊断

- **触发指标**：`经营现金净流量占营收比`、`销售收现率(销售现金流/营收)`、`归母净利润`、`每股经营现金流`、`每股净资产`、`归母净利润同比增长率`
- **诊断逻辑与阈值**：
  1. **警告（虚盈实亏/纸面富贵）**：
     - **条件**：若 `归母净利润同比增长率 > 0`（账面净利润增长），但 `经营现金净流量占营收比 < 0.08`（低于 8%）或 `销售收现率(销售现金流/营收) < 0.8`（低于 80%）。
     - **风险判定**：公司账面利润看似增长，但实际现金回款极差，大量利润沦为“应收账款”或纸面数字，流动性变现能力低下。
  2. **优质（现金奶牛/议价力强）**：
     - **条件**：若 `销售收现率(销售现金流/营收) > 1.0` 且 `经营现金净流量占营收比 > 0.15`。
     - **判定**：公司销售回款能力极强，盈利质量高，对下游具备较强的商业话语权。


key: chroma:document
string_value:
## 二、 运营效率与存货/应收防雷（周转率与周转天数风险）

### 规则编号：RULE_T01_AR_RISK

#### 分析主题：应收账款回款危机与“赊销冲业绩”风险

- **触发指标**：`应收账款周转天数`、`应收账款周转率`、`营业总收入同比增长率`、`归母净利润同比增长率`
- **诊断逻辑与阈值**：
  1. **周转恶化预警**：
     - **条件**：若 `应收账款周转天数` 同比显著增加（如较上年同期增加 $> 30$ 天），或 `应收账款周转率` 持续下降。
     - **风险判定**：公司下游客户打款周期拉长，需密切关注未来大额坏账准备计提的爆发风险。
  2. **赊销暴雷风险**：
     - **条件**：若 `营业总收入同比增长率 > 15%`，但 `应收账款周转天数` 同比拉长 $> 40\%$。
     - **风险判定**：公司可能在通过大幅放宽信用期限（赊销）来强行刺激销量拉动营收增长，业绩含金量极低。

### 规则编号：RULE_T02_INV_RISK

#### 分析主题：存货滞销与毛利率背离诊断（隐蔽成本）


key: chroma:document
string_value:
### 规则编号：RULE_T02_INV_RISK

#### 分析主题：存货滞销与毛利率背离诊断（隐蔽成本）

- **触发指标**：`存货周转天数`、`存货周转率`、`销售毛利率`
- **诊断逻辑与阈值**：
  1. **滞销与跌价减值风险**：
     - **条件**：若 `存货周转天数` 呈连续上升趋势（或大幅高于同行业均值）。
     - **判定**：产品面临滞销或更新换代淘汰风险，后续需密切关注存货跌价准备对利润的侵蚀。
  2. **经典财务造假背离项**：
     - **条件**：若 `存货周转天数` 显著增加（周转变慢，产品滞销），但 `销售毛利率` 却逆势大幅上升。
     - **高风险预警**：严重违背商业逻辑！公司极有可能少转了生产成本（将本应计入损益表的营业成本留在存货资产中），以此虚增毛利和存货资产。

## 三、 偿债能力与杠杆风险（流动性与负债风险）

### 规则编号：RULE_S01_DEBT_RISK

#### 分析主题：资产负债率与流动性压迫风险


key: chroma:document
string_value:
### 规则编号：RULE_S01_DEBT_RISK

#### 分析主题：资产负债率与流动性压迫风险

- **触发指标**：`资产负债率`、`流动比率`、`速动比率`、`权益乘数`、`现金流量比率`
- **诊断逻辑与阈值**：
  1. **流动性断裂预警**：
     - **条件**：若 `流动比率 < 1.0` 且 `速动比率 < 0.7`。
     - **风险判定**：公司短期变现偿债能力极弱，若无新的融资打入，面临短期债务违约或流动性断裂风险。
  2. **高杠杆压迫**：
     - **条件**：若 `资产负债率 > 70%`（或 `权益乘数 > 3.5`）且 `现金流量比率 < 0.1`。
     - **风险判定**：公司债务负担沉重，且经营活动产生的现金流无法有效覆盖负债，抗风险能力差。

## 四、 ROE 杜邦分析与盈利驱动力（DuPont Analysis）

### 规则编号：RULE_D01_ROE_DRIVERS

#### 分析主题：ROE 质量与三要素驱动力拆解


key: chroma:document
string_value:
- **触发指标**：`加权净资产收益率(ROE)`、`扣非加权净资产收益率(ROE)`、`销售净利率`、`总资产周转率`、`权益乘数`
- **诊断逻辑与阈值**：
  1. **扣非背离风险（依赖非经常损益）**：
     - **条件**：若 `加权净资产收益率(ROE)` 较高，但 `扣非加权净资产收益率(ROE)` 极低（两者差值 $> 3\%$）。
     - **判定**：公司的 ROE 主要依赖“非经常性损益”（如卖资产、政府补贴、投资收益），核心主营业务盈利能力低下。
  2. **高风险杠杆驱动型**：
     - **条件**：若 ROE 上升，但 `销售净利率` 和 `总资产周转率` 持平或下降，仅靠 `权益乘数` 升高驱动。
     - **风险判定**：高杠杆举债驱动的 ROE 扩张，不具备可持续性，财务风险剧增。
  3. **优质效率/议价驱动型**：
     - **条件**：若 ROE 上升主要由 `总资产周转率` 或 `销售净利率` 驱动。


key: chroma:document
string_value:
3. **优质效率/议价驱动型**：
     - **条件**：若 ROE 上升主要由 `总资产周转率` 或 `销售净利率` 驱动。
     - **判定**：公司通过提高运营效率或提升产品附加值/议价权来实现 ROE 增长，属于高质量增长。


key: chroma:document
string_value:
## 五、 收入增长与合同负债（成长可持续性）

### 规则编号：RULE_G01_REVENUE_QUALITY

#### 分析主题：业绩增长含金量与预收款（蓄水池）检验

- **触发指标**：`营业总收入同比增长率`、`归母净利润同比增长率`、`扣非归母净利润同比增长率`、`预收款及合同负债占营收比`
- **诊断逻辑与阈值**：
  1. **利润增速质量校验**：
     - **条件**：若 `归母净利润同比增长率 > 营业总收入同比增长率`。
     - **分析**：利润增速快于收入增速，需结合 `扣非归母净利润同比增长率` 交叉验证是“降本增效/毛利提升（优质）”还是“少计提费用/依赖非经常损益（劣质）”。
  2. **蓄水池池水干涸预警**：
     - **条件**：若 `营业总收入同比增长率` 保持增长，但 `预收款及合同负债占营收比` 同比连续下滑 $> 30\%$。
     - **预警**：公司“业绩蓄水池”（未确认的订单或预收款）正在枯竭，未来几个季度的营收增速大概率会出现失速或下滑。


key: chroma:document
string_value:
# 半导体材料行业分析框架


## 行业特点

半导体材料属于高技术壁垒行业。

核心竞争因素：

- 纯度
- 一致性
- 良率
- 客户认证


---

# 核心商业模式


半导体材料企业成长路径：

研发

↓

客户验证

↓

小批量供应

↓

进入量产线

↓

扩大份额



---

# 主要材料类型


## 前驱体材料

应用：

ALD/CVD薄膜沉积


评价指标：

- 纯度等级
- 金属杂质
- 稳定性
- 客户认证



## 电子特气

应用：

- 刻蚀
- 清洗
- 外延


关键指标：

- 气体纯度
- 供应稳定性
- 安全体系



## 光刻胶

评价：

- 分辨率
- 缺陷率
- 工艺匹配度


进入先进制程需要长期验证。



---

# 行业护城河


半导体材料不是普通化工。

竞争优势来自：

1. 长期工艺积累

2. 客户认证周期

3. 高纯制造能力

4. 安全生产体系



---

# 行业风险


## 技术路线变化

新材料可能替代旧材料。


## 安全风险

部分材料：

- 易燃
- 易爆
- 有毒


key: chroma:document
string_value:
# 南大光电（300346.SZ）投资案例

## 基本信息

公司：
江苏南大光电材料股份有限公司

股票代码：
300346.SZ

行业：
半导体材料

主营方向：

- 半导体前驱体材料
- 电子特气
- 光刻胶及配套材料


---

# 财务数据

## 2025年度

营业收入：

25.85亿元

同比增长：

9.93%


归母净利润：

3.20亿元

同比增长：

18%


扣非净利润：

2.54亿元

同比增长：

31.49%


经营现金流：

7.33亿元

同比增长：

16.76%



## 2026年Q1

营业收入：

6.62亿元

同比增长：

5.45%


归母净利润：

1.24亿元

同比增长：

29.97%


扣非净利润：

同比增长：

38.61%



---

# 业务结构


## 1. 先进前驱体材料

2025收入：

7.14亿元


占总收入：

27.61%


增长：

23.46%


毛利率：

50.88%


主要产品：


key: chroma:document
string_value:
2025收入：

7.14亿元


占总收入：

27.61%


增长：

23.46%


毛利率：

50.88%


主要产品：

- DIPAS
- BDEAS
- TDMAT
- 三甲基镓
- 三甲基铝


应用：

- ALD薄膜沉积
- CVD薄膜沉积
- LED
- 5G射频芯片
- 存储芯片



---

## 2. 电子特气

2025收入：

15.36亿元


收入占比：

59.39%


毛利率：

36.74%


产品：

- 高纯磷烷
- 砷烷
- 安全源
- NF3
- SF6


应用：

- IC制造
- LED制造
- 刻蚀
- 腔体清洗



---

## 3. 光刻胶

主要产品：

ArF光刻胶


技术：

193nm


应用：

90nm-14nm先进制程


2025进展：

- 三款ArF光刻胶通过客户验证
- 获得订单
- 光刻胶收入突破2000万元


---

# 技术壁垒


## 高纯材料能力

MO源纯度：

6N以上


核心能力：

- 合成
- 纯化
- 分析检测
- 安全储运


---


key: chroma:document
string_value:
---

# 技术壁垒


## 高纯材料能力

MO源纯度：

6N以上


核心能力：

- 合成
- 纯化
- 分析检测
- 安全储运


---

## 光刻胶能力

覆盖：

- 单体
- 树脂
- 光敏剂
- 成品


形成完整研发体系。



---

# 重大事件


2025年：

现金2.30亿元收购全椒南大核心团队股份


2026年：

现金7760万元收购乌兰察布南大员工合伙股份


公司参与：

- 国家863计划
- 集成电路02专项



---

# 核心竞争优势


1. 半导体材料国产替代受益者

2. 客户认证周期形成壁垒

3. 高纯材料工艺积累

4. 高端材料产品突破


---

# 后续跟踪指标


重点关注：

1. ArF光刻胶收入是否突破亿元级

2. 前驱体毛利率变化

3. 高K三甲基铝渗透情况

4. 海外客户认证进展

5. 安全生产情况


# embeddings_queue

created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: c6f42424-dd81-425b-9378-bde6905e51dc
encoding: FLOAT32
metadata:
{"chroma:document":"# 半导体材料企业分析规则\n\n\n## 规则1：利润质量判断\n\n\n条件：\n\n如果：\n\n净利润增速 > 营收增速\n\n\n结论：\n\n说明企业可能存在：\n\n- 产品结构升级\n- 高毛利产品占比提升\n- 成本改善\n\n\n验证：\n\n检查：\n\n- 毛利率趋势\n- 高端产品收入占比\n- 经营现金流\n\n\n\n---\n\n# 规则2：判断国产替代真实性\n\n\n条件：\n\n企业宣称国产替代。\n\n\n不能直接认为成功。\n\n\n需要满足：\n\n研发\n\n↓\n\n客户认证\n\n↓\n\n订单\n\n↓\n\n收入贡献\n\n\n\n验证：\n\n观察：\n\n- 客户验证情况\n- 销售收入\n- 市占率\n\n\n\n---\n\n# 规则3：判断半导体材料护城河\n\n\n条件：\n\n企业产品需要：\n\n- 高纯度\n- 高一致性\n- 长认证周期\n\n\n结论：\n\n具备较强竞争壁垒。\n\n\n验证：\n\n查看：\n\n- 产品纯度等级\n- 龙头客户\n- 认证周期\n- 良率\n\n\n\n---\n\n# 规则4：危险材料企业风险评估\n\n\n条件：\n\n产品属于：\n\n危险化学品。\n\n\n结论：\n\n需要给予安全风险折价。\n\n\n验证：\n\n检查：\n\n- 安全事故\n- 环保处罚\n- 自动化水平\n- 安全投入\n\n\n\n---","knowledge_type":"analysis_logic","source":"knowledge/rules/semiconductor_material_rules.md","category":"rule"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: e296124e-a315-4403-9007-47904a5d2ee6
encoding: FLOAT32
metadata:
{"source":"knowledge/rules/semiconductor_material_rules.md","category":"rule","chroma:document":"危险化学品。\n\n\n结论：\n\n需要给予安全风险折价。\n\n\n验证：\n\n检查：\n\n- 安全事故\n- 环保处罚\n- 自动化水平\n- 安全投入\n\n\n\n---\n\n# 规则5：成长空间判断\n\n\n条件：\n\n新产品收入占比较低。\n\n\n不能简单认为没有价值。\n\n\n需要判断：\n\n是否存在：\n\n- 技术突破\n- 客户验证\n- 放量可能\n\n\n验证：\n\n观察：\n\n收入是否：\n\n百万级\n\n↓\n\n千万级\n\n↓\n\n亿元级","knowledge_type":"analysis_logic"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: c1266c94-b7da-48de-a7ea-4ab288a01a3a
encoding: FLOAT32
metadata:
{"knowledge_type":"analysis_logic","source":"knowledge/rules/pandas_chinese_field_rules.md","category":"rule","chroma:document":"## 一、 盈利质量与现金流验证（现金流与利润质量）\n\n### 规则编号：RULE_P01_CFO_QUALITY\n\n#### 分析主题：净利润现金含量与“虚盈实亏”诊断"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: 4f1bdb85-8ddc-48ef-a568-ffab8be7b752
encoding: FLOAT32
metadata:
{"knowledge_type":"analysis_logic","chroma:document":"### 规则编号：RULE_P01_CFO_QUALITY\n\n#### 分析主题：净利润现金含量与“虚盈实亏”诊断\n\n- **触发指标**：`经营现金净流量占营收比`、`销售收现率(销售现金流/营收)`、`归母净利润`、`每股经营现金流`、`每股净资产`、`归母净利润同比增长率`\n- **诊断逻辑与阈值**：\n  1. **警告（虚盈实亏/纸面富贵）**：\n     - **条件**：若 `归母净利润同比增长率 > 0`（账面净利润增长），但 `经营现金净流量占营收比 < 0.08`（低于 8%）或 `销售收现率(销售现金流/营收) < 0.8`（低于 80%）。\n     - **风险判定**：公司账面利润看似增长，但实际现金回款极差，大量利润沦为“应收账款”或纸面数字，流动性变现能力低下。\n  2. **优质（现金奶牛/议价力强）**：\n     - **条件**：若 `销售收现率(销售现金流/营收) > 1.0` 且 `经营现金净流量占营收比 > 0.15`。\n     - **判定**：公司销售回款能力极强，盈利质量高，对下游具备较强的商业话语权。","source":"knowledge/rules/pandas_chinese_field_rules.md","category":"rule"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: 760b8e84-148b-4fac-b293-e1f84f0c700c
encoding: FLOAT32
metadata:
{"knowledge_type":"analysis_logic","chroma:document":"## 二、 运营效率与存货/应收防雷（周转率与周转天数风险）\n\n### 规则编号：RULE_T01_AR_RISK\n\n#### 分析主题：应收账款回款危机与“赊销冲业绩”风险\n\n- **触发指标**：`应收账款周转天数`、`应收账款周转率`、`营业总收入同比增长率`、`归母净利润同比增长率`\n- **诊断逻辑与阈值**：\n  1. **周转恶化预警**：\n     - **条件**：若 `应收账款周转天数` 同比显著增加（如较上年同期增加 $> 30$ 天），或 `应收账款周转率` 持续下降。\n     - **风险判定**：公司下游客户打款周期拉长，需密切关注未来大额坏账准备计提的爆发风险。\n  2. **赊销暴雷风险**：\n     - **条件**：若 `营业总收入同比增长率 > 15%`，但 `应收账款周转天数` 同比拉长 $> 40\\%$。\n     - **风险判定**：公司可能在通过大幅放宽信用期限（赊销）来强行刺激销量拉动营收增长，业绩含金量极低。\n\n### 规则编号：RULE_T02_INV_RISK\n\n#### 分析主题：存货滞销与毛利率背离诊断（隐蔽成本）","category":"rule","source":"knowledge/rules/pandas_chinese_field_rules.md"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: 626439d9-61bd-4c0c-bea3-880be895d4f5
encoding: FLOAT32
metadata:
{"category":"rule","source":"knowledge/rules/pandas_chinese_field_rules.md","chroma:document":"### 规则编号：RULE_T02_INV_RISK\n\n#### 分析主题：存货滞销与毛利率背离诊断（隐蔽成本）\n\n- **触发指标**：`存货周转天数`、`存货周转率`、`销售毛利率`\n- **诊断逻辑与阈值**：\n  1. **滞销与跌价减值风险**：\n     - **条件**：若 `存货周转天数` 呈连续上升趋势（或大幅高于同行业均值）。\n     - **判定**：产品面临滞销或更新换代淘汰风险，后续需密切关注存货跌价准备对利润的侵蚀。\n  2. **经典财务造假背离项**：\n     - **条件**：若 `存货周转天数` 显著增加（周转变慢，产品滞销），但 `销售毛利率` 却逆势大幅上升。\n     - **高风险预警**：严重违背商业逻辑！公司极有可能少转了生产成本（将本应计入损益表的营业成本留在存货资产中），以此虚增毛利和存货资产。\n\n## 三、 偿债能力与杠杆风险（流动性与负债风险）\n\n### 规则编号：RULE_S01_DEBT_RISK\n\n#### 分析主题：资产负债率与流动性压迫风险","knowledge_type":"analysis_logic"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: 21c4e617-f49c-40f3-bfb7-9f9d6e4b981b
encoding: FLOAT32
metadata:
{"source":"knowledge/rules/pandas_chinese_field_rules.md","chroma:document":"### 规则编号：RULE_S01_DEBT_RISK\n\n#### 分析主题：资产负债率与流动性压迫风险\n\n- **触发指标**：`资产负债率`、`流动比率`、`速动比率`、`权益乘数`、`现金流量比率`\n- **诊断逻辑与阈值**：\n  1. **流动性断裂预警**：\n     - **条件**：若 `流动比率 < 1.0` 且 `速动比率 < 0.7`。\n     - **风险判定**：公司短期变现偿债能力极弱，若无新的融资打入，面临短期债务违约或流动性断裂风险。\n  2. **高杠杆压迫**：\n     - **条件**：若 `资产负债率 > 70%`（或 `权益乘数 > 3.5`）且 `现金流量比率 < 0.1`。\n     - **风险判定**：公司债务负担沉重，且经营活动产生的现金流无法有效覆盖负债，抗风险能力差。\n\n## 四、 ROE 杜邦分析与盈利驱动力（DuPont Analysis）\n\n### 规则编号：RULE_D01_ROE_DRIVERS\n\n#### 分析主题：ROE 质量与三要素驱动力拆解","category":"rule","knowledge_type":"analysis_logic"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: d1db60b7-70e7-4ecd-8877-5b6f00fc00c5
encoding: FLOAT32
metadata:
{"category":"rule","source":"knowledge/rules/pandas_chinese_field_rules.md","knowledge_type":"analysis_logic","chroma:document":"- **触发指标**：`加权净资产收益率(ROE)`、`扣非加权净资产收益率(ROE)`、`销售净利率`、`总资产周转率`、`权益乘数`\n- **诊断逻辑与阈值**：\n  1. **扣非背离风险（依赖非经常损益）**：\n     - **条件**：若 `加权净资产收益率(ROE)` 较高，但 `扣非加权净资产收益率(ROE)` 极低（两者差值 $> 3\\%$）。\n     - **判定**：公司的 ROE 主要依赖“非经常性损益”（如卖资产、政府补贴、投资收益），核心主营业务盈利能力低下。\n  2. **高风险杠杆驱动型**：\n     - **条件**：若 ROE 上升，但 `销售净利率` 和 `总资产周转率` 持平或下降，仅靠 `权益乘数` 升高驱动。\n     - **风险判定**：高杠杆举债驱动的 ROE 扩张，不具备可持续性，财务风险剧增。\n  3. **优质效率/议价驱动型**：\n     - **条件**：若 ROE 上升主要由 `总资产周转率` 或 `销售净利率` 驱动。"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: c909417a-d86b-4a07-b5e9-7b5f43cd9213
encoding: FLOAT32
metadata:
{"knowledge_type":"analysis_logic","category":"rule","chroma:document":"3. **优质效率/议价驱动型**：\n     - **条件**：若 ROE 上升主要由 `总资产周转率` 或 `销售净利率` 驱动。\n     - **判定**：公司通过提高运营效率或提升产品附加值/议价权来实现 ROE 增长，属于高质量增长。","source":"knowledge/rules/pandas_chinese_field_rules.md"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: 001749c6-de35-4493-89af-f5c22d4f64b0
encoding: FLOAT32
metadata:
{"source":"knowledge/rules/pandas_chinese_field_rules.md","knowledge_type":"analysis_logic","chroma:document":"## 五、 收入增长与合同负债（成长可持续性）\n\n### 规则编号：RULE_G01_REVENUE_QUALITY\n\n#### 分析主题：业绩增长含金量与预收款（蓄水池）检验\n\n- **触发指标**：`营业总收入同比增长率`、`归母净利润同比增长率`、`扣非归母净利润同比增长率`、`预收款及合同负债占营收比`\n- **诊断逻辑与阈值**：\n  1. **利润增速质量校验**：\n     - **条件**：若 `归母净利润同比增长率 > 营业总收入同比增长率`。\n     - **分析**：利润增速快于收入增速，需结合 `扣非归母净利润同比增长率` 交叉验证是“降本增效/毛利提升（优质）”还是“少计提费用/依赖非经常损益（劣质）”。\n  2. **蓄水池池水干涸预警**：\n     - **条件**：若 `营业总收入同比增长率` 保持增长，但 `预收款及合同负债占营收比` 同比连续下滑 $> 30\\%$。\n     - **预警**：公司“业绩蓄水池”（未确认的订单或预收款）正在枯竭，未来几个季度的营收增速大概率会出现失速或下滑。","category":"rule"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: f57fd2ac-fb0c-499a-9e81-d4f43a3c42ba
encoding: FLOAT32
metadata:
{"knowledge_type":"industry_logic","chroma:document":"# 半导体材料行业分析框架\n\n\n## 行业特点\n\n半导体材料属于高技术壁垒行业。\n\n核心竞争因素：\n\n- 纯度\n- 一致性\n- 良率\n- 客户认证\n\n\n---\n\n# 核心商业模式\n\n\n半导体材料企业成长路径：\n\n研发\n\n↓\n\n客户验证\n\n↓\n\n小批量供应\n\n↓\n\n进入量产线\n\n↓\n\n扩大份额\n\n\n\n---\n\n# 主要材料类型\n\n\n## 前驱体材料\n\n应用：\n\nALD/CVD薄膜沉积\n\n\n评价指标：\n\n- 纯度等级\n- 金属杂质\n- 稳定性\n- 客户认证\n\n\n\n## 电子特气\n\n应用：\n\n- 刻蚀\n- 清洗\n- 外延\n\n\n关键指标：\n\n- 气体纯度\n- 供应稳定性\n- 安全体系\n\n\n\n## 光刻胶\n\n评价：\n\n- 分辨率\n- 缺陷率\n- 工艺匹配度\n\n\n进入先进制程需要长期验证。\n\n\n\n---\n\n# 行业护城河\n\n\n半导体材料不是普通化工。\n\n竞争优势来自：\n\n1. 长期工艺积累\n\n2. 客户认证周期\n\n3. 高纯制造能力\n\n4. 安全生产体系\n\n\n\n---\n\n# 行业风险\n\n\n## 技术路线变化\n\n新材料可能替代旧材料。\n\n\n## 安全风险\n\n部分材料：\n\n- 易燃\n- 易爆\n- 有毒","source":"knowledge/industry/semiconductor_material.md","category":"industry"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: 7d4709b6-d09e-4fee-b9ed-f32dca7b4339
encoding: FLOAT32
metadata:
{"knowledge_type":"industry_logic","category":"industry","source":"knowledge/industry/semiconductor_material.md","chroma:document":"---\n\n# 行业风险\n\n\n## 技术路线变化\n\n新材料可能替代旧材料。\n\n\n## 安全风险\n\n部分材料：\n\n- 易燃\n- 易爆\n- 有毒\n\n\n事故可能导致：\n\n- 停产\n- 客户流失\n- 估值下降"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: 52ca1e34-4ea3-46c7-b0fe-10594fe3c774
encoding: FLOAT32
metadata:
{"category":"company_case","source":"knowledge/company_cases/nanda_optical.md","knowledge_type":"company_fact","chroma:document":"# 南大光电（300346.SZ）投资案例\n\n## 基本信息\n\n公司：\n江苏南大光电材料股份有限公司\n\n股票代码：\n300346.SZ\n\n行业：\n半导体材料\n\n主营方向：\n\n- 半导体前驱体材料\n- 电子特气\n- 光刻胶及配套材料\n\n\n---\n\n# 财务数据\n\n## 2025年度\n\n营业收入：\n\n25.85亿元\n\n同比增长：\n\n9.93%\n\n\n归母净利润：\n\n3.20亿元\n\n同比增长：\n\n18%\n\n\n扣非净利润：\n\n2.54亿元\n\n同比增长：\n\n31.49%\n\n\n经营现金流：\n\n7.33亿元\n\n同比增长：\n\n16.76%\n\n\n\n## 2026年Q1\n\n营业收入：\n\n6.62亿元\n\n同比增长：\n\n5.45%\n\n\n归母净利润：\n\n1.24亿元\n\n同比增长：\n\n29.97%\n\n\n扣非净利润：\n\n同比增长：\n\n38.61%\n\n\n\n---\n\n# 业务结构\n\n\n## 1. 先进前驱体材料\n\n2025收入：\n\n7.14亿元\n\n\n占总收入：\n\n27.61%\n\n\n增长：\n\n23.46%\n\n\n毛利率：\n\n50.88%\n\n\n主要产品："}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: 614f3cc0-5245-4c6f-a726-5eb2e2da106f
encoding: FLOAT32
metadata:
{"chroma:document":"2025收入：\n\n7.14亿元\n\n\n占总收入：\n\n27.61%\n\n\n增长：\n\n23.46%\n\n\n毛利率：\n\n50.88%\n\n\n主要产品：\n\n- DIPAS\n- BDEAS\n- TDMAT\n- 三甲基镓\n- 三甲基铝\n\n\n应用：\n\n- ALD薄膜沉积\n- CVD薄膜沉积\n- LED\n- 5G射频芯片\n- 存储芯片\n\n\n\n---\n\n## 2. 电子特气\n\n2025收入：\n\n15.36亿元\n\n\n收入占比：\n\n59.39%\n\n\n毛利率：\n\n36.74%\n\n\n产品：\n\n- 高纯磷烷\n- 砷烷\n- 安全源\n- NF3\n- SF6\n\n\n应用：\n\n- IC制造\n- LED制造\n- 刻蚀\n- 腔体清洗\n\n\n\n---\n\n## 3. 光刻胶\n\n主要产品：\n\nArF光刻胶\n\n\n技术：\n\n193nm\n\n\n应用：\n\n90nm-14nm先进制程\n\n\n2025进展：\n\n- 三款ArF光刻胶通过客户验证\n- 获得订单\n- 光刻胶收入突破2000万元\n\n\n---\n\n# 技术壁垒\n\n\n## 高纯材料能力\n\nMO源纯度：\n\n6N以上\n\n\n核心能力：\n\n- 合成\n- 纯化\n- 分析检测\n- 安全储运\n\n\n---","source":"knowledge/company_cases/nanda_optical.md","knowledge_type":"company_fact","category":"company_case"}


created_at: 2026-08-07 08:29:09
topic: persistent://default/default/d3939d30-29e1-409f-ab6a-975bb300ec4c
id: af8246da-fd24-4fd8-8cb1-4a9609d4cfd9
encoding: FLOAT32
metadata:
{"chroma:document":"---\n\n# 技术壁垒\n\n\n## 高纯材料能力\n\nMO源纯度：\n\n6N以上\n\n\n核心能力：\n\n- 合成\n- 纯化\n- 分析检测\n- 安全储运\n\n\n---\n\n## 光刻胶能力\n\n覆盖：\n\n- 单体\n- 树脂\n- 光敏剂\n- 成品\n\n\n形成完整研发体系。\n\n\n\n---\n\n# 重大事件\n\n\n2025年：\n\n现金2.30亿元收购全椒南大核心团队股份\n\n\n2026年：\n\n现金7760万元收购乌兰察布南大员工合伙股份\n\n\n公司参与：\n\n- 国家863计划\n- 集成电路02专项\n\n\n\n---\n\n# 核心竞争优势\n\n\n1. 半导体材料国产替代受益者\n\n2. 客户认证周期形成壁垒\n\n3. 高纯材料工艺积累\n\n4. 高端材料产品突破\n\n\n---\n\n# 后续跟踪指标\n\n\n重点关注：\n\n1. ArF光刻胶收入是否突破亿元级\n\n2. 前驱体毛利率变化\n\n3. 高K三甲基铝渗透情况\n\n4. 海外客户认证进展\n\n5. 安全生产情况","category":"company_case","knowledge_type":"company_fact","source":"knowledge/company_cases/nanda_optical.md"}


