1---2name: malaysia-hr-admin3description: 马来西亚人力行政语料库引擎 — 52 份 Reference_Texts + 77 张 DuckDB HR 子集表 + 7 数据源定向触发矩阵4---5
6# Malaysia HR & Admin Corpus Engine
7
8## 🔧 环境依赖 (Environment Setup)
9
10**Python 依赖**:`duckdb` —— 脚本首次运行时会自动检测并安装(通过 `pip install duckdb`),无需手动操作。
11
12如果自动安装失败(网络问题/权限不足),手动执行:
13```bash
14pip install -r requirements.txt
15```
16
17## 📁 目录结构与路径解析 (Directory Structure & Path Resolution)
18
19安装后的标准目录结构:
20```
21malaysia-hr-admin/ ← 插件根目录(任何位置均可)
22├── .codebuddy-plugin/plugin.json
23├── agents/malaysia-hr-admin.md
24├── skills/malaysia-hr-admin/SKILL.md ← 本文件
25├── Reference_Texts/ ← 52 份 .txt 语料(~3.8MB)
26│ ├── employment_act_1955.txt
27│ ├── companies_act_2016.txt
28│ └── ... (共 52 份)
29├── Databases/
30│ └── hr.duckdb ← DuckDB 数据库(77 表,~24MB)
31├── scripts/
32│ ├── duckdb_query.py ← SQL 查询引擎
33│ ├── ref_text_search.py ← 语料全文检索
34│ ├── data_verifier.py ← 数据完整性验证
35│ └── pressure_test.py ← 压力测试
36├── avatars/expert.png
37└── requirements.txt ← pip 依赖(仅 duckdb>=0.9.0)
38```
39
40### 路径解析机制
41
42所有 Python 脚本使用**相对于脚本位置的路径解析**,自动定位插件根目录:
43
44```python
45# scripts/duckdb_query.py 中的核心逻辑
46PLUGIN_ROOT = Path(__file__).resolve().parent.parent # scripts/ → 插件根目录
47DB_PATH = PLUGIN_ROOT / "Databases" / "hr.duckdb"
48CORPUS_PATH = PLUGIN_ROOT / "Reference_Texts"
49```
50
51**关键保证**:只要 `Databases/`、`Reference_Texts/`、`scripts/` 三个目录的相对位置不变,插件在任何路径下均可正常运行——无论是默认插件目录还是用户自定义位置。
52
53### 运行前提清单
54
55- [x] Python 3.8+ 已安装(脚本会自动检测)
56- [x] `duckdb` 包可安装(自动 pip install,失败时需手动 `pip install -r requirements.txt`)
57- [x] `Databases/hr.duckdb` 文件存在且完整(24MB,首次解压时确认)
58- [x] `Reference_Texts/` 目录下有 .txt 文件(至少 40+ 份)
59- [ ] 无需网络即可运行核心功能(语料库 + DuckDB 均为离线数据)
60
61---
62
63## 📊 语料库统计 (验证时间: 2026-07-02)
64
65### Reference_Texts — 52 份,3,800+ KB,3,600,000+ 字符
66
67| 文件 | 字符数 | 行数 | 用途 |
68|------|--------|------|------|
69| companies_act_2016.txt | 976,215 | 20,857 | 公司法全文 |
70| mof_economic_2026.txt | 706,337 | 10,736 | 2026 财政预算案 |
71| bnm_annual_report_2025.txt | 501,774 | 8,934 | 央行经济与货币政策年报 |
72| kri_state_of_households_2024.txt | 430,042 | 7,914 | 家庭收入/不平等/消费 |
73| employment_act_1955.txt | 187,903 | 4,377 | 劳动法全文 |
74| pwc_doing_business_2025.txt | 150,533 | 2,640 | 营商环境与公司设立 |
75| pdpa_2010.txt | 149,841 | 3,326 | 个人数据保护法 |
76| msci_esg_methodology.txt | 117,227 | 2,025 | ESG 评级方法论 |
77| mida_codb_2024.txt | 107,476 | 2,368 | 经商成本与人工标准 |
78| mida_companies_act_2016_guide.txt | 16,413 | 271 | 公司法官方指南 |
79| hiring_budget_planner_2026.txt | ~8,000 | ~200 | 招聘预算与人才成本规划 |
80| hr_violations_cases.txt | ~8,000 | ~200 | HR 合规违规案例集 |
81| industrial_relations_act_1967.txt | 7,870 | 175 | 劳资关系法 |
82| domestic_inquiry_procedure.txt | 7,439 | 166 | 国内调查操作手册 |
83| trade_unions_act_1959.txt | 7,071 | 157 | 工会法 |
84| hr_practice_templates.txt | ~6,500 | ~180 | 合同/信函/Onboarding 模板 |
85| retrenchment_termination_guide.txt | 6,248 | 148 | 裁员与解雇指南 |
86| flexible_working_arrangements_guidelines.txt | 5,594 | 128 | 弹性工作制指南 |
87| industrial_court_landmark_cases.txt | 5,547 | 106 | 劳工法庭判例汇编 |
88| osha_1994.txt | 5,323 | 118 | 职业安全与健康法 |
89| lhdn_bik_public_ruling_2019.txt | 5,028 | 120 | BIK 税务裁定 |
90| children_young_persons_employment_act_1966.txt | 4,994 | 106 | 童工与青年工法 |
91| act_446_workers_housing_1990.txt | 4,983 | 130 | 外劳宿舍标准法 |
92| employee_handbook_essentials.txt | 4,971 | 146 | 员工手册要素 |
93| immigration_employment_pass_2026.txt | 4,968 | 116 | 工作准证与移民 |
94| hrdf_act_2001.txt | 4,945 | 118 | 人力资源发展基金 |
95| socso_act_1969.txt | 4,893 | 102 | 社险法 |
96| eis_act_2017.txt | 4,660 | 120 | 就业保险法 |
97| pcb_mtd_income_tax_2026.txt | 4,653 | 106 | PCB/MTD 薪资扣税 |
98| private_employment_agencies_act_1981.txt | 4,754 | 111 | 私人招聘机构法 |
99| anti_sexual_harassment_act_2022.txt | 4,504 | 103 | 反性骚扰法 |
100| workmen_compensation_act_1952.txt | 4,516 | 102 | 工人赔偿法 |
101| malaysia_salary_guide_2026.txt | 4,475 | 107 | 行业薪酬对标 |
102| sabah_sarawak_labour_ordinance.txt | 4,422 | 95 | 东马劳工法令 |
103| payroll_compliance_checklist.txt | 4,265 | 102 | 薪资合规日历 |
104| minimum_wages_order_2026.txt | 4,065 | 89 | 最低工资令 |
105| epf_act_1991.txt | 3,924 | 99 | 公积金法 |
106| minimum_retirement_age_act_2012.txt | 3,910 | 82 | 最低退休年龄法 |
107| foreign_worker_levy_2026.txt | 3,722 | 80 | 外劳人头税 |
108| office_leasing_guide_malaysia.txt | ~5,500 | ~150 | 写字楼租赁与 MSC 楼宇 |
109| business_premise_license_malaysia.txt | ~5,500 | ~150 | 营业场所牌照与 Bomba |
110| statutory_filing_calendar_malaysia.txt | ~6,000 | ~160 | 法定申报日历 |
111| admin_procurement_sop_malaysia.txt | ~5,500 | ~150 | 行政采购与资产 SOP |
112| attendance_leave_management_malaysia.txt | ~5,500 | ~150 | 考勤与假期管理 |
113| performance_discipline_malaysia.txt | ~6,000 | ~160 | 绩效管理与纪律处分 |
114| recruitment_channels_malaysia.txt | ~5,500 | ~150 | 招聘渠道与面试合规 |
115| business_travel_expense_policy_malaysia.txt | ~5,500 | ~150 | 差旅与报销政策 |
116| company_insurance_requirements_malaysia.txt | ~5,000 | ~140 | 公司保险要求 |
117| employee_benefits_benchmark_malaysia.txt | ~5,500 | ~150 | 福利基准与花红行情 |
118| malaysia_workplace_culture_islamic.txt | ~12,000 | ~330 | 伊斯兰用工文化与多元种族敏感度 |
119
120### DuckDB — 77 张表,24MB,784,232 行 (验证时间: 2026-07-01)
121
122| 类别 | 表数 | 行数 | 核心表 |
123|------|------|------|--------|
124| 劳动力与就业 | 18 | ~10,000 | lfs_month, lfs_qtr_state, employment_sector |
125| 生产力 | 4 | ~2,600 | productivity_annual, productivity_qtr |
126| 人口 | 15 | ~650,000 | population_district(319K), population_state(263K) |
127| 家庭收入与消费 | 24 | ~33,000 | hh_income_state, hies_state_percentile(19K) |
128| 教育 | 5 | ~18,800 | enrolment_school_district, teachers_district |
129| 医疗健康 | 6 | ~50,000 | pekab40_screenings_state(42K), hospital_beds |
130| 基础设施 | 3 | ~1,400 | electricity_access, water_access |
131| 退休金 | 1 | 74 | epf_dividend |
132
133### 📌 数据时效性 (Data Timeliness)
134
135| 数据源 | 更新频率 | 典型滞后 | 注意事项 |
136|--------|---------|---------|---------|
137| DuckDB (data.gov.my) | 年度/季度 | 3-12 个月 | LFS 数据可能滞后 3-6 月,人口数据滞后 12 月 |
138| Reference_Texts 法律 | 法案修订后 | 即时 | 关注 AGC 官网 (lom.agc.gov.my) 确认最新版本 |
139| Reference_Texts 报告 | 年度 | 6-12 个月 | 薪资指南/预算案每年更新 |
140| JTK/PERKESO/EPF 定向搜索 | 实时 | 0-30 天 | 最低工资/缴纳率为最新官方公布 |
141
142---
143
144## 🚨🚨🚨 语料库优先 — 双轮暴力检索铁律 (CORPUS-FIRST MANDATE)
145
146> **底线原则:质量压倒一切。Token 成本不是你需要考虑的事情——Agent 的质量越高,消耗的资源越多是天经地义的。负责人要的是质量,不是性价比。宁可多查三遍也不能漏掉一行数据。**
147
148### ⚡ 强制检索流程(每条回答必须按序执行,不可跳步)
149
150```
151┌──────────────────────────────────────────────────────────────────┐
152│ STEP 0: 接收用户问题 │
153│ ↓ │
154│ ╔══════════════════════════════════════════════════════════════╗ │
155│ ║ PASS 1 — DuckDB 第一轮:宽搜 (Broad Scan) ║ │
156│ ║ → duckdb_query.py --search "<核心关键词>" ║ │
157│ ║ → duckdb_query.py --list-tables(列出全部 77 张表) ║ │
158│ ║ → 目的:找出所有相关表和字段,建立全局视图 ║ │
159│ ║ → 【必须执行,不可跳过】 ║ │
160│ ╚══════════════════════════════════════════════════════════════╝ │
161│ ↓ │
162│ ╔══════════════════════════════════════════════════════════════╗ │
163│ ║ PASS 2 — DuckDB 第二轮:深查 (Deep Query) ║ │
164│ ║ → 对 PASS 1 命中的每个相关表,执行精确 SQL 查询 ║ │
165│ ║ → duckdb_query.py --sql "SELECT * FROM <命中表> WHERE ..." ║ │
166│ ║ → duckdb_query.py --sample <命中表>(表格太多时分批抽样) ║ │
167│ ║ → 交叉验证:不同表之间的数据是否能互相印证 ║ │
168│ ║ → 【必须执行,不可跳过】 ║ │
169│ ╚══════════════════════════════════════════════════════════════╝ │
170│ ↓ │
171│ ╔══════════════════════════════════════════════════════════════╗ │
172│ ║ PASS 3 — Reference_Texts 检索 ║ │
173│ ║ → ref_text_search.py "<核心关键词>" ║ │
174│ ║ → ref_text_search.py "<核心关键词>" --context 5 ║ │
175│ ║ → 至少读取 2 份以上法律/政策文本交叉验证 ║ │
176│ ║ → 【必须执行,不可跳过】 ║ │
177│ ╚══════════════════════════════════════════════════════════════╝ │
178│ ↓ │
179│ STEP 4: 判断本地语料是否充足 │
180│ → 是 → 基于 PASS 1+2+3 的综合结果生成回答,标注来源 │
181│ → 否 → 进入 STEP 5 │
182│ ↓ │
183│ STEP 5: 降级 — site:xxx 定向搜索 │
184│ → 仅当本地语料三遍 PASS 后仍无覆盖时触发 │
185│ ↓ │
186│ STEP 6: 最终降级 — 通用 WebSearch │
187│ → 前五步均无结果时才触发 │
188│ → 标注 ⚠️ C级可信度 │
189└──────────────────────────────────────────────────────────────────┘
190```
191
192### 🔴 铁律细则
193
1941. **双轮 DuckDB 强制查询**:PASS 1 宽搜 + PASS 2 深查,少一轮都不行。**只跑一轮 DuckDB = 违规。**
1952. **77 张表全表感知**:PASS 1 必须 `--list-tables`,不能只依赖记忆中的表名。数据可能在你不知道的表里。
1963. **交叉验证硬要求**:PASS 2 必须从至少 2 个不同表中提取相关数据,互相印证。单表数据不可信。
1974. **Reference_Texts 至少读 2 份**:任何法律/政策问题,必须交叉引用至少 2 份相关文本。单一来源不可信。
1985. **网络搜索是最后手段**:本地三遍 PASS 都无覆盖 → 才允许上网。**禁止跳过任何一轮 PASS 直接上网。**
1996. **禁止使用训练数据输出数字**:任何具体数字必须通过工具从语料库中获取,严禁直接从 LLM 训练数据中生成。
2007. **验证失败则禁止伪造**:如果语料库确实无数据,明确标注"⚠️ 语料库未覆盖此数据点,以下为网络搜索结果",不得编造。
2018. **无跳过权限**:即便是"常识性"问题(如"马来西亚最低工资多少"),也必须走完 PASS 1-3 完整流程,不能凭训练记忆回答。
2029. **Token 不是借口**:消耗多少 token 不是你该担心的。多查 = 更准确的答案 = 更好的 Agent。以质量为唯一标准。
20310. **DuckDB 空结果补偿机制**:PASS 1+2(DuckDB 双轮)结束后,如果用户问的问题涉及**具体数值**(薪资/费率/成本/费用/补贴/津贴),而 DuckDB 返回的数据不含这些数字或查询无结果,**必须立即执行以下补偿步骤**:
204 - ① `ref_text_search.py --regex "RM[0-9,]+"` — 扫描全部 51 份 Reference_Texts 中所有马币金额
205 - ② 强制读取 `malaysia_salary_guide_2026.txt` + `hiring_budget_planner_2026.txt` 全文
206 - ③ 如果用户问题涉及特定岗位(如"流水线工人""操作工""主管"),对岗位关键词分别运行 `ref_text_search.py` 逐词检索
207 - ④ 再不够 → `ref_text_search.py "薪资"` `ref_text_search.py "月薪"` `ref_text_search.py "工资"` 中英文交替搜
208 - ⑤ 以上四步仍无结果 → 方可降级到 STEP 5(网络搜索),并在回答中标注 `⚠️ DuckDB 语料库未覆盖该薪资数据,以下为网络搜索结果`
209 - **禁止行为**:DuckDB 查不到薪资就跳过、不读 hiring_budget_planner、只读 salary_guide 不交叉验证、不跑 regex 就直接说"库中没有"。
210
211---
212
213## 语料库工具
214
215### duckdb_query.py — DuckDB 查询
216
217```bash
218python scripts/duckdb_query.py --list-tables
219python scripts/duckdb_query.py --schema lfs_month
220python scripts/duckdb_query.py --sql "SELECT * FROM lfs_month ORDER BY date DESC LIMIT 5"
221python scripts/duckdb_query.py --search "unemployment"
222python scripts/duckdb_query.py --sample hh_income_state
223```
224
225### ref_text_search.py — 法律与报告文本检索
226
227```bash
228python scripts/ref_text_search.py "overtime" --files employment_act_1955.txt
229python scripts/ref_text_search.py "minimum wage" --context 3
230python scripts/ref_text_search.py --list-files
231python scripts/ref_text_search.py --regex "RM[0-9,]+"
232```
233
234### data_verifier.py — 反幻觉防火墙
235
236```bash
237python scripts/data_verifier.py --metric "minimum wage" --value "1700"
238python scripts/data_verifier.py --metric "EPF employee contribution" --value "11"
239python scripts/data_verifier.py --metric "unemployment rate" --value "3.3" --year "2025"
240```
241
242---
243
244## Reference_Texts 强制读取规则
245
246| 触发主题 | 必须读取的文件 |
247|---------|--------------|
248| 劳工法/加班/假期/解雇/最低工资/产假/合同/试用期 | `employment_act_1955.txt` (187,903 chars, 第1-18章) |
249| 劳资纠纷/工会集体谈判/罢工/Industrial Court | `industrial_relations_act_1967.txt` |
250| 工会注册/成员/罢工条件/秘密投票 | `trade_unions_act_1959.txt` |
251| 职业安全/工作场所安全/DOSH/OSH Committee/SHO | `osha_1994.txt` |
252| SOCSO/工伤赔偿/残疾抚恤/PERKESO | `socso_act_1969.txt` |
253| EPF/公积金/缴纳率/退休储蓄 | `epf_act_1991.txt` |
254| 就业保险/EIS 失业金/裁员赔偿 | `eis_act_2017.txt` |
255| 最低工资/法定最低薪金 | `minimum_wages_order_2026.txt` |
256| 外劳宿舍/工人住宿标准/Act 446/JTK 认证 | `act_446_workers_housing_1990.txt` |
257| 职场性骚扰/反骚扰法庭/投诉程序 | `anti_sexual_harassment_act_2022.txt` |
258| 退休年龄/强制退休 | `minimum_retirement_age_act_2012.txt` |
259| 工人赔偿/非SOCSO雇员工伤 | `workmen_compensation_act_1952.txt` |
260| 童工/青年工/最低工作年龄 | `children_young_persons_employment_act_1966.txt` |
261| 私人招聘机构/猎头执照 | `private_employment_agencies_act_1981.txt` |
262| 国内调查/纪律处分/解雇流程 | `domestic_inquiry_procedure.txt` |
263| 弹性工作制/居家办公/混合办公 | `flexible_working_arrangements_guidelines.txt` |
264| 裁员/集体解雇/Form PK/遣散费 | `retrenchment_termination_guide.txt` |
265| 就业准证/工作签证/外籍专业人士 | `immigration_employment_pass_2026.txt` |
266| 外劳人头税/levy 费率 | `foreign_worker_levy_2026.txt` |
267| PCB/MTD 薪资扣税/E Form | `pcb_mtd_income_tax_2026.txt` |
268| BIK 福利税/公司车/住宿报税 | `lhdn_bik_public_ruling_2019.txt` |
269| 薪资合规日历/月度年度 HR 死线 | `payroll_compliance_checklist.txt` |
270| 行业薪资标准/薪酬报告 | `malaysia_salary_guide_2026.txt` |
271| 招聘预算/产线人力成本/工厂薪资规划/具体岗位工资 | `hiring_budget_planner_2026.txt` |
272| 伊斯兰文化/斋月/祈祷时间/清真餐饮/头巾着装/种族敏感/多元宗教/公共假期安排/Surau | `malaysia_workplace_culture_islamic.txt` |
273| HRDF/培训基金/PSMB 缴纳 | `hrdf_act_2001.txt` |
274| 员工手册/聘用合同标准 | `employee_handbook_essentials.txt` |
275| 判例/constructive dismissal/LIFO | `industrial_court_landmark_cases.txt` |
276| 东马劳工法/Sabah/Sarawak | `sabah_sarawak_labour_ordinance.txt` |
277| 个人数据/PDPA/隐私 | `pdpa_2010.txt` (149,841 chars) |
278| 公司注册/董事/秘书/清算 | `companies_act_2016.txt` (976,215 chars, 第1-10部) |
279| 公司设立流程 | `mida_companies_act_2016_guide.txt` |
280| 人工成本/薪资/水电费 | `mida_codb_2024.txt` (107,476 chars, Part A-F) |
281| 家庭收入/财富分配 | `kri_state_of_households_2024.txt` (430,042 chars) |
282| 营商环境/税务/雇佣 | `pwc_doing_business_2025.txt` (150,533 chars) |
283| ESG 社会/劳工权益 | `msci_esg_methodology.txt` (117,227 chars) |
284| 宏观经济/就业/劳动力 | `bnm_annual_report_2025.txt` (501,774 chars) |
285| 预算/财政/劳动力政策 | `mof_economic_2026.txt` (706,337 chars) |
286
287### 📖 大文本章节结构参考
288
289**companies_act_2016.txt** (976,215 chars, 20,857 lines)
290| 部 (Division) | 内容 |
291|----------------|------|
292| Division 1 | Preliminary (Section 1-4) |
293| Division 2 | Formation of Companies (Section 5-8) |
294| Division 3 | Constitution of Companies (Section 9-15) |
295| Division 4 | Directors and Officers (Section 16-30) |
296| Division 5 | Company Secretary (Section 31-36) |
297| Division 6 | Registered Office and Registers (Section 37-48) |
298| Division 7 | Shares and Debentures (Section 49-64) |
299| Division 8 | Meetings (Section 65-76) |
300| Division 9 | Accounts and Audit (Section 77-92) |
301| Division 10 | Winding Up (Section 93-end) |
302
303**employment_act_1955.txt** (187,903 chars, 4,377 lines)
304| 章节 | 内容 | 关键条款 |
305|------|------|---------|
306| Part I | Preliminary | Section 2: 定义 (Employee ≤ RM 4,000 → ALL employees) |
307| Part II | Contract of Service | Section 7-11: 合同/终止/通知期 |
308| Part III | Payment of Wages | Section 19-25: 薪资周期/扣款 |
309| Part IV | Deductions | Section 24-25: 合法扣款项 |
310| Part V | Women Employment | Section 34-36: 夜班/地下工作限制 |
311| Part VI | Maternity Protection | Section 37-44: 98天产假/津贴 |
312| Part VII | Rest Days & Hours | Section 59-60I: 每周1天休息/45小时 |
313| Part VIII | Holidays & Annual Leave | Section 60D-60F: 11天公假/8-16天年假 |
314| Part IX | Sick Leave | Section 60F: 14-22天病假/60天住院 |
315| Part X | Termination & DI | Section 12-14: 通知期/解雇/不当行为 |
316| Part XI | Domestic Inquiry | Section 14(1): 正当调查义务 |
317| Part XII | Employment of Foreign Workers | Section 60K: 外劳雇前批准 |
318| Part XIIA | Flexible Working | Section 60P-60Q: 弹性工作申请权 |
319| Part XIII | Sexual Harassment | Section 81A-81H: 投诉与调查程序 |
320
321**bnm_annual_report_2025.txt** (501,774 chars, 8,934 lines)
322| 章节 | 页码 | 内容 |
323|------|------|------|
324| Foreword | p.2-3 | 经济增长 5.2%, OPR 调整至 2.75% |
325| Promoting Monetary Stability | p.11-18 | 货币政策/通胀/利率/汇率 |
326| Promoting Financial Stability | p.25-32 | 金融稳定/银行体系/信贷风险 |
327| Inclusive Financial System | p.36-53 | 金融包容性/SME 融资 |
328| Payment and Remittance | p.69-80 | 支付系统/汇款/数字支付 |
329| Greener Financial System | p.106-118 | 绿色金融/气候风险 |
330| Labour Market | 各章节贯穿 | 就业/失业/劳动力参与 |
331
332---
333
334## DuckDB HR 数据库表索引 (77 张)
335
336### 劳动力与就业
337| 表名 | 粒度 | 关键字段 |
338|------|------|---------|
339| `employment_sector` | 行业 | sector, employment |
340| `lfs_month` | 月度 | unemployment_rate, labour_force, employed |
341| `lfs_month_sa` | 月度(季调) | 同上 |
342| `lfs_month_duration` | 月度 | unemployment_duration |
343| `lfs_month_status` | 月度 | employment_status |
344| `lfs_month_youth` | 月度 | youth_unemployment |
345| `lfs_qtr` | 季度 | labour_force, employed, unemployed |
346| `lfs_qtr_state` | 季度×州 | state, unemployment_rate |
347| `lfs_qtr_sru_age` | 季度×年龄 | age_group, unemployment |
348| `lfs_qtr_sru_sex` | 季度×性别 | sex, unemployment |
349| `lfs_qtr_tru_age` | 季度×年龄 | age_group, time_related_underemployment |
350| `lfs_qtr_tru_sex` | 季度×性别 | sex, time_related_underemployment |
351| `lfs_year` | 年度 | 同上(年度汇总) |
352| `lfs_year_sex` | 年度×性别 | sex, annual_data |
353| `lfs_state_sex` | 州×性别 | state, sex, labour_force |
354| `lfs_district` | 区 | district, labour_indicators |
355| `lfs_dun` | 州选区 | dun, labour_indicators |
356| `lfs_parlimen` | 国会选区 | parlimen, labour_indicators |
357
358### 生产力
359| 表名 | 粒度 | 关键字段 |
360|------|------|---------|
361| `productivity_annual` | 年度×行业 | sector, productivity_value |
362| `productivity_annual_priority` | 年度×重点行业 | priority_sector, productivity |
363| `productivity_qtr` | 季度×行业 | sector, productivity_value |
364| `productivity_lookup` | — | 行业代码映射 |
365
366### 人口
367| 表名 | 粒度 | 关键字段 |
368|------|------|---------|
369| `population_malaysia` | 年度 | total, male, female, age_groups |
370| `population_state` | 年度×州 | state, population |
371| `population_district` | 区 | district, population |
372| `population_dun` | 州选区 | dun, population |
373| `population_parlimen` | 国会选区 | parlimen, population |
374| `births` | 月度 | births, sex |
375| `births_annual` | 年度 | total_births |
376| `births_annual_sex_ethnic` | 年度×性别×族裔 | sex, ethnic, births |
377| `births_annual_sex_ethnic_state` | 年度×州×性别×族裔 | state, sex, ethnic, births |
378| `births_annual_state` | 年度×州 | state, births |
379| `births_district_sex` | 区×性别 | district, sex, births |
380| `fertility` | 年度 | tfr, asfr |
381| `fertility_state` | 年度×州 | state, tfr |
382| `parliament_sex` | 国会选区×性别 | sex, population |
383| `local_authority_sex` | 地方政府×性别 | sex, population |
384
385### 家庭收入与消费
386| 表名 | 粒度 | 关键字段 |
387|------|------|---------|
388| `hh_income` | 年度 | mean, median, income_groups |
389| `hh_income_state` | 年度×州 | state, mean, median |
390| `hh_income_district` | 区 | district, income |
391| `hh_income_dun` | 州选区 | dun, income |
392| `hh_income_parlimen` | 国会选区 | parlimen, income |
393| `hh_expenditure_dun` | 州选区 | dun, expenditure |
394| `hh_expenditure_parlimen` | 国会选区 | parlimen, expenditure |
395| `hies_district` | 区 | district, income, expenditure |
396| `hies_state` | 州 | state, income, expenditure |
397| `hies_malaysia_percentile` | 分位数 | percentile, income |
398| `hies_state_percentile` | 州×分位数 | state, percentile, income |
399| `hh_inequality` | 年度 | gini_coefficient |
400| `hh_inequality_state` | 州 | state, gini |
401| `hh_inequality_district` | 区 | district, gini |
402| `hh_inequality_dun` | 州选区 | dun, gini |
403| `hh_inequality_parlimen` | 国会选区 | parlimen, gini |
404| `hh_poverty` | 年度 | poverty_rate |
405| `hh_poverty_state` | 州 | state, poverty_rate |
406| `hh_poverty_district` | 区 | district, poverty_rate |
407| `hh_poverty_dun` | 州选区 | dun, poverty_rate |
408| `hh_poverty_parlimen` | 国会选区 | parlimen, poverty_rate |
409| `hh_profile` | 年度 | household_size, composition |
410| `hh_profile_state` | 州 | state, household_indicators |
411| `hh_access_amenities` | 年度 | water, electricity, internet |
412| `cpi_lowincome` | 月度 | low_income_cpi |
413
414### 教育
415| 表名 | 粒度 | 关键字段 |
416|------|------|---------|
417| `schools_district` | 区 | district, school_count |
418| `teachers_district` | 区 | district, teacher_count |
419| `enrolment_school_district` | 区 | district, enrolment |
420| `completion_school_state` | 州 | state, completion_rate |
421| `lecturers_uni` | 大学 | university, lecturer_count |
422
423### 医疗健康
424| 表名 | 粒度 | 关键字段 |
425|------|------|---------|
426| `healthcare_staff` | 年度 | staff_type, count |
427| `hospital_beds` | 年度 | bed_type, count |
428| `nutrition_children_sex` | 年度×性别 | sex, nutrition_status |
429| `nutrition_children_strata` | 年度×城乡 | strata, nutrition_status |
430| `pekab40_screenings` | 年度 | screening_count |
431| `pekab40_screenings_state` | 年度×州 | state, screening_count |
432
433### 基础设施与福利
434| 表名 | 粒度 | 关键字段 |
435|------|------|---------|
436| `electricity_access` | 年度 | access_rate |
437| `water_access` | 年度 | access_rate |
438| `sanitation_access` | 年度 | access_rate |
439
440### 退休金
441| 表名 | 粒度 | 关键字段 |
442|------|------|---------|
443| `epf_dividend` | 年度 | dividend_rate |
444
445---
446
447## 定向搜索触发矩阵
448
449| 数据源 | 触发词 | 搜索模板 |
450|--------|--------|---------|
451| JTK (劳工局) | 劳工法/加班/解雇/最低工资 | `site:jtksm.mohr.gov.my "<keyword>"` |
452| PERKESO | SOCSO/工伤保险 | `site:perkeso.gov.my "<keyword>"` |
453| EPF | EPF/公积金/缴纳率 | `site:kwsp.gov.my "<keyword>"` |
454| IMMI (移民局) | 外劳/工作准证/PLKS | `site:imi.gov.my "foreign worker <keyword>"` |
455| SSM | 注册公司/公司秘书 | `site:ssm.com.my "<keyword>"` |
456| DOSM | 失业率/薪资/人口 | `site:dosm.gov.my "<keyword>"` |
457| PDPA | 数据保护 | `site:pdp.gov.my "<keyword>"` |
458| LHDN (内陆税收局) | PCB/所得税/BIK/tax clearance | `site:hasil.gov.my "<keyword>"` |
459| Bomba (消防局) | 消防安全/Fire Certificate | `site:bomba.gov.my "<keyword>"` |
460
461---
462
463## 来源占比标注
464
465每次回答末尾必须输出:
466
467```
468📊 来源占比:语料库 XX% | 定向搜索 XX% | 通用搜索 XX% | 推理 XX%
469```
470
471## 结构化引用链接格式
472
473```
474---
475📚 来源引用:
4761. [A/Reference_Texts] Employment Act 1955 — Section 60I (加班费计算)
4772. [A/DuckDB] lfs_month (date=2025-12) — 失业率 3.3%
4783. [B/site:jtksm.mohr.gov.my] Minimum Wages Order 2025 — https://...
479```
480
481---
482
483## 语料库更新逻辑
484
485语料库更新时机:
486- 法律修订 → 更新对应 Reference_Texts
487- data.gov.my 新数据 → 重新运行 `data_sync.py`(适配 HR 表子集)
488- DuckDB 重新构建 → `build_duckdb.py`(仅 HR 相关 77 表)