@huicai/cli 2026.712.80880 → 2026.721.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/bin/huicai.js +83 -0
- package/package.json +2 -2
- package/skills/ab-testing/SKILL.md +58 -0
- package/skills/ab-testing/scripts/__pycache__/ab_test.cpython-312.pyc +0 -0
- package/skills/ab-testing/scripts/ab_test.py +71 -0
- package/skills/academic-writing/SKILL.md +54 -0
- package/skills/accounting-ops/SKILL.md +68 -0
- package/skills/accounting-ops/scripts/__pycache__/acct_tools.cpython-312.pyc +0 -0
- package/skills/accounting-ops/scripts/acct_tools.py +89 -0
- package/skills/ai-agent/SKILL.md +85 -0
- package/skills/ai-agent/references/tool-design-checklist.md +51 -0
- package/skills/ai-aiops/SKILL.md +73 -0
- package/skills/ai-aiops/references/aiops-rollout-checklist.md +36 -0
- package/skills/ai-coding/SKILL.md +89 -0
- package/skills/ai-coding/references/task-brief-template.md +48 -0
- package/skills/ai-compliance/SKILL.md +74 -0
- package/skills/ai-compliance/references/genai-compliance-checklist.md +40 -0
- package/skills/ai-eval/SKILL.md +80 -0
- package/skills/ai-eval/scripts/eval-runner.py +150 -0
- package/skills/ai-llm-app/SKILL.md +90 -0
- package/skills/ai-llm-app/references/llm-integration-checklist.md +39 -0
- package/skills/ai-mlops/SKILL.md +72 -0
- package/skills/ai-mlops/scripts/token-cost-calc.py +108 -0
- package/skills/ai-multimodal/SKILL.md +86 -0
- package/skills/ai-multimodal/scripts/field-validate.py +182 -0
- package/skills/ai-prompt/SKILL.md +75 -0
- package/skills/ai-prompt/references/prompt-template.md +46 -0
- package/skills/ai-rag/SKILL.md +76 -0
- package/skills/ai-rag/scripts/chunk-inspect.py +129 -0
- package/skills/anomaly-detection/SKILL.md +54 -0
- package/skills/anomaly-detection/scripts/__pycache__/anomaly.cpython-312.pyc +0 -0
- package/skills/anomaly-detection/scripts/anomaly.py +99 -0
- package/skills/api-integration/SKILL.md +74 -0
- package/skills/api-integration/references/signing-recipes.md +141 -0
- package/skills/arch-design/SKILL.md +57 -0
- package/skills/arch-distributed/SKILL.md +81 -0
- package/skills/arch-distributed/references/idempotency-review.md +43 -0
- package/skills/arch-multitenant/SKILL.md +73 -0
- package/skills/arch-multitenant/references/tenant-isolation-checklist.md +34 -0
- package/skills/audit-assist/SKILL.md +63 -0
- package/skills/audit-assist/scripts/__pycache__/audit_sampling.cpython-312.pyc +0 -0
- package/skills/audit-assist/scripts/audit_sampling.py +93 -0
- package/skills/audit-chain/SKILL.md +60 -0
- package/skills/banking-credit/SKILL.md +59 -0
- package/skills/banking-credit/scripts/__pycache__/credit_metrics.cpython-312.pyc +0 -0
- package/skills/banking-credit/scripts/credit_metrics.py +53 -0
- package/skills/brand-design/SKILL.md +56 -0
- package/skills/business-plan/SKILL.md +56 -0
- package/skills/capital-ops/SKILL.md +52 -0
- package/skills/cicd-pipeline/SKILL.md +85 -0
- package/skills/cicd-pipeline/references/pipeline-review-checklist.md +39 -0
- package/skills/content-creation/SKILL.md +56 -0
- package/skills/corporate-governance/SKILL.md +56 -0
- package/skills/crawl-chain/SKILL.md +61 -0
- package/skills/customer-service/SKILL.md +51 -0
- package/skills/data-analysis/SKILL.md +46 -0
- package/skills/data-analysis/scripts/cjk_font.py +56 -0
- package/skills/data-chain/SKILL.md +54 -0
- package/skills/data-governance/SKILL.md +54 -0
- package/skills/data-report-pro/SKILL.md +65 -0
- package/skills/data-report-pro/scripts/__pycache__/bigdata.cpython-312.pyc +0 -0
- package/skills/data-report-pro/scripts/bigdata.py +79 -0
- package/skills/data-streaming/SKILL.md +87 -0
- package/skills/data-streaming/references/job-checklist.md +36 -0
- package/skills/data-wrangling/SKILL.md +52 -0
- package/skills/data-wrangling/scripts/__pycache__/join_tools.cpython-312.pyc +0 -0
- package/skills/data-wrangling/scripts/join_tools.py +99 -0
- package/skills/db-es/SKILL.md +68 -0
- package/skills/db-es/scripts/es-health.sh +72 -0
- package/skills/db-migration/SKILL.md +72 -0
- package/skills/db-migration/scripts/checksum-mysql.sql +46 -0
- package/skills/db-migration/scripts/checksum-postgres.sql +39 -0
- package/skills/db-migration/scripts/compare-reports.py +98 -0
- package/skills/db-mysql/SKILL.md +78 -0
- package/skills/db-mysql/scripts/mysql-health.sql +80 -0
- package/skills/db-postgres/SKILL.md +86 -0
- package/skills/db-postgres/scripts/pg-health.sql +67 -0
- package/skills/db-redis/SKILL.md +83 -0
- package/skills/db-redis/scripts/redis-health.sh +92 -0
- package/skills/dev-cpp/SKILL.md +94 -0
- package/skills/dev-cpp/references/cmake-sanitizer-snippets.md +56 -0
- package/skills/dev-cross-platform/SKILL.md +73 -0
- package/skills/dev-cross-platform/references/capability-matrix-template.md +39 -0
- package/skills/dev-csharp/SKILL.md +96 -0
- package/skills/dev-csharp/references/review-checklist.md +37 -0
- package/skills/dev-frontend/SKILL.md +91 -0
- package/skills/dev-frontend/scripts/bundle-budget.py +106 -0
- package/skills/dev-go/SKILL.md +88 -0
- package/skills/dev-go/scripts/go-triage.sh +54 -0
- package/skills/dev-harmony/SKILL.md +64 -0
- package/skills/dev-harmony/references/harmony-checklist.md +40 -0
- package/skills/dev-java/SKILL.md +77 -0
- package/skills/dev-java/scripts/jvm-triage.sh +84 -0
- package/skills/dev-mobile/SKILL.md +82 -0
- package/skills/dev-mobile/references/store-compliance-checklist.md +33 -0
- package/skills/dev-node/SKILL.md +82 -0
- package/skills/dev-node/scripts/node-triage.sh +78 -0
- package/skills/dev-php/SKILL.md +86 -0
- package/skills/dev-php/scripts/fpm-calc.py +48 -0
- package/skills/dev-python/SKILL.md +81 -0
- package/skills/dev-python/scripts/venv-doctor.sh +75 -0
- package/skills/dev-rust/SKILL.md +84 -0
- package/skills/dev-rust/references/cargo-ci-snippets.md +50 -0
- package/skills/dev-toolchain/SKILL.md +78 -0
- package/skills/dev-toolchain/scripts/secret-scan.sh +83 -0
- package/skills/doc-chain/SKILL.md +58 -0
- package/skills/doc-compare/SKILL.md +44 -0
- package/skills/doc-compare/scripts/compare.py +93 -0
- package/skills/docx-author/SKILL.md +39 -0
- package/skills/docx-author/scripts/docx_doc.py +161 -0
- package/skills/ecommerce-ops/SKILL.md +54 -0
- package/skills/ecommerce-ops/scripts/__pycache__/gmv_decompose.cpython-312.pyc +0 -0
- package/skills/ecommerce-ops/scripts/gmv_decompose.py +61 -0
- package/skills/education-training/SKILL.md +53 -0
- package/skills/ehs-safety/SKILL.md +63 -0
- package/skills/email-writing/SKILL.md +52 -0
- package/skills/eng-ai/SKILL.md +74 -0
- package/skills/eng-ai/references/ai-feature-checklist.md +36 -0
- package/skills/eng-architecture/SKILL.md +85 -0
- package/skills/eng-architecture/scripts/capacity-calc.py +100 -0
- package/skills/eng-automation/SKILL.md +84 -0
- package/skills/eng-automation/references/automation-inventory.md +38 -0
- package/skills/eng-automation/references/routine-presets.md +73 -0
- package/skills/eng-collaboration/SKILL.md +76 -0
- package/skills/eng-collaboration/references/collab-templates.md +43 -0
- package/skills/eng-complex-env/SKILL.md +84 -0
- package/skills/eng-complex-env/references/env-dossier-template.md +52 -0
- package/skills/eng-complex-env/scripts/env-recon.sh +152 -0
- package/skills/eng-data-platform/SKILL.md +81 -0
- package/skills/eng-data-platform/references/table-spec-template.md +39 -0
- package/skills/eng-database/SKILL.md +79 -0
- package/skills/eng-database/references/schema-review-checklist.md +37 -0
- package/skills/eng-develop/SKILL.md +76 -0
- package/skills/eng-develop/references/dod-checklist.md +43 -0
- package/skills/eng-docs/SKILL.md +71 -0
- package/skills/eng-docs/references/runbook-template.md +57 -0
- package/skills/eng-efficiency/SKILL.md +75 -0
- package/skills/eng-efficiency/scripts/dora-calc.py +104 -0
- package/skills/eng-infra/SKILL.md +81 -0
- package/skills/eng-infra/references/production-readiness.md +46 -0
- package/skills/eng-integration/SKILL.md +82 -0
- package/skills/eng-integration/references/integration-dossier-template.md +38 -0
- package/skills/eng-legacy/SKILL.md +81 -0
- package/skills/eng-legacy/references/modernization-workbook.md +46 -0
- package/skills/eng-observability/SKILL.md +78 -0
- package/skills/eng-observability/scripts/slo-calc.py +82 -0
- package/skills/eng-ops/SKILL.md +74 -0
- package/skills/eng-ops/references/postmortem-template.md +67 -0
- package/skills/eng-performance/SKILL.md +73 -0
- package/skills/eng-performance/scripts/perf-baseline.py +110 -0
- package/skills/eng-planning/SKILL.md +79 -0
- package/skills/eng-planning/scripts/schedule-calc.py +101 -0
- package/skills/eng-quality/SKILL.md +74 -0
- package/skills/eng-quality/references/test-plan-templates.md +46 -0
- package/skills/eng-release/SKILL.md +78 -0
- package/skills/eng-release/references/release-plan-template.md +36 -0
- package/skills/eng-reliability/SKILL.md +72 -0
- package/skills/eng-reliability/references/resilience-review.md +43 -0
- package/skills/eng-requirements/SKILL.md +86 -0
- package/skills/eng-requirements/references/story-templates.md +47 -0
- package/skills/eng-research/SKILL.md +73 -0
- package/skills/eng-research/references/research-templates.md +42 -0
- package/skills/eng-security/SKILL.md +73 -0
- package/skills/eng-security/references/security-review-checklist.md +33 -0
- package/skills/eng-ux/SKILL.md +85 -0
- package/skills/eng-ux/references/ux-review-checklist.md +36 -0
- package/skills/engineering-chain/SKILL.md +101 -0
- package/skills/engineering-chain/references/eng-health-review.md +37 -0
- package/skills/env-offline/SKILL.md +81 -0
- package/skills/env-offline/scripts/bundle-manifest.sh +94 -0
- package/skills/env-private-deploy/SKILL.md +72 -0
- package/skills/env-private-deploy/references/delivery-templates.md +35 -0
- package/skills/env-xinchuang/SKILL.md +73 -0
- package/skills/env-xinchuang/references/adaptation-matrix-template.md +41 -0
- package/skills/equipment-tpm/SKILL.md +56 -0
- package/skills/equipment-tpm/scripts/oee.py +58 -0
- package/skills/esg-report/SKILL.md +58 -0
- package/skills/esg-report/scripts/carbon_calc.py +61 -0
- package/skills/event-management/SKILL.md +51 -0
- package/skills/excel-analysis-chain/SKILL.md +73 -0
- package/skills/file-ingest/SKILL.md +51 -0
- package/skills/file-ingest/scripts/__pycache__/file_toolkit.cpython-312.pyc +0 -0
- package/skills/file-ingest/scripts/file_toolkit.py +404 -0
- package/skills/finance-analysis/SKILL.md +60 -0
- package/skills/finance-analysis/references/ratios.md +54 -0
- package/skills/finance-analysis/scripts/fin_ratios.py +132 -0
- package/skills/finance-chain/SKILL.md +59 -0
- package/skills/financial-modeling/SKILL.md +58 -0
- package/skills/financial-modeling/scripts/fin_model.py +123 -0
- package/skills/foreign-trade/SKILL.md +54 -0
- package/skills/funnel-cohort/SKILL.md +53 -0
- package/skills/funnel-cohort/scripts/__pycache__/funnel.cpython-312.pyc +0 -0
- package/skills/funnel-cohort/scripts/funnel.py +105 -0
- package/skills/gov-document/SKILL.md +57 -0
- package/skills/hr-chain/SKILL.md +51 -0
- package/skills/hr-operations/SKILL.md +53 -0
- package/skills/info-disclosure/SKILL.md +56 -0
- package/skills/infra-gateway/SKILL.md +85 -0
- package/skills/infra-gateway/references/golive-checklist.md +36 -0
- package/skills/infra-k8s/SKILL.md +78 -0
- package/skills/infra-k8s/scripts/k8s-triage.sh +84 -0
- package/skills/infra-mq/SKILL.md +87 -0
- package/skills/infra-mq/references/mq-review-checklist.md +36 -0
- package/skills/insurance-advisory/SKILL.md +57 -0
- package/skills/internal-audit/SKILL.md +66 -0
- package/skills/ip-management/SKILL.md +54 -0
- package/skills/ipo-listing/SKILL.md +60 -0
- package/skills/it-audit/SKILL.md +56 -0
- package/skills/itsm-ops/SKILL.md +55 -0
- package/skills/knowledge-sop/SKILL.md +51 -0
- package/skills/legal-chain/SKILL.md +55 -0
- package/skills/legal-contract/SKILL.md +58 -0
- package/skills/legal-contract/references/contract-checklists.md +59 -0
- package/skills/litigation-support/SKILL.md +53 -0
- package/skills/logistics-warehouse/SKILL.md +53 -0
- package/skills/logistics-warehouse/scripts/freight_check.py +71 -0
- package/skills/long-doc-analysis/SKILL.md +52 -0
- package/skills/management-accounting/SKILL.md +57 -0
- package/skills/management-accounting/scripts/__pycache__/costing.cpython-312.pyc +0 -0
- package/skills/management-accounting/scripts/costing.py +90 -0
- package/skills/manufacturing-chain/SKILL.md +57 -0
- package/skills/manufacturing-quality/SKILL.md +57 -0
- package/skills/manufacturing-quality/scripts/__pycache__/spc.cpython-312.pyc +0 -0
- package/skills/manufacturing-quality/scripts/spc.py +86 -0
- package/skills/marketing-analytics/SKILL.md +59 -0
- package/skills/marketing-analytics/scripts/__pycache__/rfm.cpython-312.pyc +0 -0
- package/skills/marketing-analytics/scripts/rfm.py +60 -0
- package/skills/marketing-chain/SKILL.md +57 -0
- package/skills/meeting-minutes/SKILL.md +55 -0
- package/skills/metrics-system/SKILL.md +55 -0
- package/skills/negotiation-prep/SKILL.md +56 -0
- package/skills/obs-prometheus/SKILL.md +74 -0
- package/skills/obs-prometheus/references/promql-cheatsheet.md +78 -0
- package/skills/office-automation/SKILL.md +54 -0
- package/skills/okr-review/SKILL.md +44 -0
- package/skills/ops-fleet/SKILL.md +69 -0
- package/skills/ops-fleet/scripts/batch-exec-guard.sh +119 -0
- package/skills/ops-linux/SKILL.md +69 -0
- package/skills/ops-linux/scripts/quick-triage.sh +138 -0
- package/skills/optimization-solver/SKILL.md +53 -0
- package/skills/optimization-solver/scripts/__pycache__/solver.cpython-312.pyc +0 -0
- package/skills/optimization-solver/scripts/solver.py +107 -0
- package/skills/pdf-toolkit/SKILL.md +43 -0
- package/skills/pdf-toolkit/scripts/pdf_ops.py +137 -0
- package/skills/pivot-crosstab/SKILL.md +44 -0
- package/skills/pivot-crosstab/scripts/__pycache__/pivot_tools.cpython-312.pyc +0 -0
- package/skills/pivot-crosstab/scripts/pivot_tools.py +90 -0
- package/skills/policy-analysis/SKILL.md +47 -0
- package/skills/portfolio-analysis/SKILL.md +56 -0
- package/skills/portfolio-analysis/scripts/__pycache__/portfolio.cpython-312.pyc +0 -0
- package/skills/portfolio-analysis/scripts/portfolio.py +78 -0
- package/skills/ppt-chain/SKILL.md +61 -0
- package/skills/pptx-author/SKILL.md +48 -0
- package/skills/pptx-author/scripts/pptx_deck.py +193 -0
- package/skills/pr-comms/SKILL.md +58 -0
- package/skills/pr-comms/references/pr-templates.md +54 -0
- package/skills/procurement-supply/SKILL.md +47 -0
- package/skills/procurement-supply/scripts/__pycache__/supply.cpython-312.pyc +0 -0
- package/skills/procurement-supply/scripts/supply.py +71 -0
- package/skills/product-design/SKILL.md +66 -0
- package/skills/product-design/references/prd-framework.md +60 -0
- package/skills/production-planning/SKILL.md +56 -0
- package/skills/production-planning/scripts/__pycache__/mrp_capacity.cpython-312.pyc +0 -0
- package/skills/production-planning/scripts/mrp_capacity.py +70 -0
- package/skills/project-management/SKILL.md +53 -0
- package/skills/project-management/scripts/__pycache__/cpm.cpython-312.pyc +0 -0
- package/skills/project-management/scripts/cpm.py +84 -0
- package/skills/project-proposal/SKILL.md +54 -0
- package/skills/project-proposal/scripts/budget_sheet.py +90 -0
- package/skills/qa-api-automation/SKILL.md +67 -0
- package/skills/qa-api-automation/references/three-layer-skeleton.md +61 -0
- package/skills/qa-mobile-automation/SKILL.md +70 -0
- package/skills/qa-mobile-automation/references/device-matrix-template.md +34 -0
- package/skills/qa-ui-automation/SKILL.md +80 -0
- package/skills/qa-ui-automation/references/stability-conventions.md +41 -0
- package/skills/quant-analysis/SKILL.md +60 -0
- package/skills/quant-analysis/scripts/__pycache__/quant.cpython-312.pyc +0 -0
- package/skills/quant-analysis/scripts/quant.py +102 -0
- package/skills/real-estate-property/SKILL.md +51 -0
- package/skills/real-estate-property/scripts/__pycache__/property_calc.cpython-312.pyc +0 -0
- package/skills/real-estate-property/scripts/property_calc.py +106 -0
- package/skills/regression-forecast/SKILL.md +52 -0
- package/skills/regression-forecast/scripts/__pycache__/regress.cpython-312.pyc +0 -0
- package/skills/regression-forecast/scripts/regress.py +106 -0
- package/skills/retail-store-ops/SKILL.md +57 -0
- package/skills/retail-store-ops/scripts/store_ops.py +57 -0
- package/skills/risk-compliance/SKILL.md +51 -0
- package/skills/sec-auth/SKILL.md +89 -0
- package/skills/sec-auth/references/auth-review-checklist.md +38 -0
- package/skills/sec-compliance/SKILL.md +74 -0
- package/skills/sec-compliance/references/dengbao-checklist.md +43 -0
- package/skills/securities-chain/SKILL.md +69 -0
- package/skills/securities-research/SKILL.md +58 -0
- package/skills/securities-research/scripts/__pycache__/valuation.cpython-312.pyc +0 -0
- package/skills/securities-research/scripts/valuation.py +93 -0
- package/skills/slides-html/SKILL.md +50 -0
- package/skills/slides-html/scripts/template.html +117 -0
- package/skills/statistical-testing/SKILL.md +51 -0
- package/skills/statistical-testing/scripts/__pycache__/stat_tests.cpython-312.pyc +0 -0
- package/skills/statistical-testing/scripts/stat_tests.py +131 -0
- package/skills/strategy-planning/SKILL.md +53 -0
- package/skills/supply-chain/SKILL.md +53 -0
- package/skills/tax-compliance/SKILL.md +57 -0
- package/skills/tax-compliance/scripts/tax_calc.py +90 -0
- package/skills/tech-research/SKILL.md +55 -0
- package/skills/tech-research/references/research-framework.md +50 -0
- package/skills/tender-bidding/SKILL.md +65 -0
- package/skills/tender-bidding/references/bid-checklist.md +44 -0
- package/skills/translation-pro/SKILL.md +44 -0
- package/skills/treasury-mgmt/SKILL.md +56 -0
- package/skills/treasury-mgmt/scripts/__pycache__/cashflow_forecast.cpython-312.pyc +0 -0
- package/skills/treasury-mgmt/scripts/cashflow_forecast.py +51 -0
- package/skills/web-scraping/SKILL.md +81 -0
- package/skills/web-search/SKILL.md +67 -0
- package/skills/xlsx-analysis/SKILL.md +96 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_toolkit.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/xlsx_style.py +71 -0
- package/skills/xlsx-analysis/scripts/xlsx_toolkit.py +335 -0
- package/src/agent.js +1 -1
- package/src/api.js +1 -1
- package/src/codeindex.js +1 -1
- package/src/commands.js +1 -1
- package/src/config.js +1 -1
- package/src/context.js +1 -1
- package/src/device.js +1 -1
- package/src/doccache.js +1 -0
- package/src/doctor.js +1 -1
- package/src/executors.js +1 -1
- package/src/input.js +1 -1
- package/src/permissions.js +1 -1
- package/src/pyruntime.js +1 -0
- package/src/repl.js +1 -1
- package/src/scan.js +1 -1
- package/src/session.js +1 -1
- package/src/tools.js +1 -1
- package/src/tui/app.js +1 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# 复杂环境进场侦察脚本(eng-complex-env 侦察清单的可执行版)。
|
|
3
|
+
# 只读、零依赖、POSIX sh:目标机只有 busybox 也能跑;工具缺失自动降级并如实报告。
|
|
4
|
+
# 用法:sh env-recon.sh [-u 探测URL] [-H host:port,host:port] [-o 输出文件]
|
|
5
|
+
# -u 出网/带宽探测目标(默认跳过出网测试——离线环境不制造报错)
|
|
6
|
+
# -H 逗号分隔的内网连通性探测点(如 db 主机:3306,redis:6379)
|
|
7
|
+
# -o 报告落盘路径(默认仅 stdout)
|
|
8
|
+
# 产出:环境档案底稿(进 eng-complex-env 环境档案,供方案评审附件)。
|
|
9
|
+
|
|
10
|
+
URL=""; HOSTS=""; OUT=""
|
|
11
|
+
while [ $# -gt 0 ]; do
|
|
12
|
+
case "$1" in
|
|
13
|
+
-u) URL="$2"; shift 2;;
|
|
14
|
+
-H) HOSTS="$2"; shift 2;;
|
|
15
|
+
-o) OUT="$2"; shift 2;;
|
|
16
|
+
*) echo "未知参数: $1 (用 -u/-H/-o)"; exit 2;;
|
|
17
|
+
esac
|
|
18
|
+
done
|
|
19
|
+
|
|
20
|
+
R="" # 红灯汇总
|
|
21
|
+
Y="" # 黄灯汇总
|
|
22
|
+
have() { command -v "$1" >/dev/null 2>&1; }
|
|
23
|
+
say() { if [ -n "$OUT" ]; then echo "$@" >> "$OUT"; fi; echo "$@"; }
|
|
24
|
+
[ -n "$OUT" ] && : > "$OUT"
|
|
25
|
+
|
|
26
|
+
say "==================== 环境侦察报告 ===================="
|
|
27
|
+
say "生成时间: $(date '+%Y-%m-%d %H:%M:%S') (时区 $(date '+%Z%z' 2>/dev/null))"
|
|
28
|
+
say "主机: $(hostname 2>/dev/null || uname -n)"
|
|
29
|
+
|
|
30
|
+
say ""
|
|
31
|
+
say "---- [1/7] 系统与硬件 ----"
|
|
32
|
+
say "内核: $(uname -srm 2>/dev/null)"
|
|
33
|
+
if [ -r /etc/os-release ]; then
|
|
34
|
+
say "发行版: $(. /etc/os-release 2>/dev/null; echo "${PRETTY_NAME:-$NAME $VERSION_ID}")"
|
|
35
|
+
else
|
|
36
|
+
say "发行版: 未知(/etc/os-release 不可读)——老系统或精简镜像"
|
|
37
|
+
fi
|
|
38
|
+
CORES=$( (nproc 2>/dev/null) || (sysctl -n hw.ncpu 2>/dev/null) || grep -c ^processor /proc/cpuinfo 2>/dev/null || echo "?")
|
|
39
|
+
say "CPU 核数: $CORES 架构: $(uname -m 2>/dev/null)"
|
|
40
|
+
if [ -r /proc/meminfo ]; then
|
|
41
|
+
MEMT=$(awk '/MemTotal/{printf "%.1fG",$2/1048576}' /proc/meminfo)
|
|
42
|
+
MEMA=$(awk '/MemAvailable/{printf "%.1fG",$2/1048576}' /proc/meminfo)
|
|
43
|
+
say "内存: 总 $MEMT / 可用 ${MEMA:-?}(看 available 不看 free)"
|
|
44
|
+
else
|
|
45
|
+
say "内存: /proc/meminfo 不可读(非 Linux? $(uname -s))"
|
|
46
|
+
fi
|
|
47
|
+
# 容器检测
|
|
48
|
+
if [ -f /.dockerenv ] || grep -qsE 'docker|kubepods|containerd' /proc/1/cgroup 2>/dev/null; then
|
|
49
|
+
say "容器环境: 是(资源限额看 cgroup 不看 free/top —— ops-linux cgroup 假象)"
|
|
50
|
+
for f in /sys/fs/cgroup/memory.max /sys/fs/cgroup/memory/memory.limit_in_bytes; do
|
|
51
|
+
[ -r "$f" ] && say " cgroup 内存上限: $(cat "$f" 2>/dev/null)"
|
|
52
|
+
done
|
|
53
|
+
else
|
|
54
|
+
say "容器环境: 否(或检测不出)"
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
say ""
|
|
58
|
+
say "---- [2/7] 权限 ----"
|
|
59
|
+
say "当前用户: $(id 2>/dev/null || whoami)"
|
|
60
|
+
if [ "$(id -u 2>/dev/null)" = "0" ]; then say "root: 是"
|
|
61
|
+
elif have sudo && sudo -n true 2>/dev/null; then say "root: 否,但 sudo 免密可用"
|
|
62
|
+
elif have sudo; then say "root: 否;sudo 存在但需密码/审批"; Y="$Y|sudo需密码"
|
|
63
|
+
else say "root: 否且无 sudo —— 方案按最低权限设计(eng-complex-env 低权限节)"; Y="$Y|无sudo"; fi
|
|
64
|
+
TW=/tmp/.recon_w_$$; if ( : > "$TW" ) 2>/dev/null; then say "/tmp 可写: 是"; rm -f "$TW"; else say "/tmp 可写: 否"; R="$R|/tmp不可写"; fi
|
|
65
|
+
say "HOME 磁盘余量: $(df -h "$HOME" 2>/dev/null | awk 'NR==2{print $4" 可用("$5" 已用)"}')"
|
|
66
|
+
|
|
67
|
+
say ""
|
|
68
|
+
say "---- [3/7] 工具清单(方案依赖的工具现场没有=白设计) ----"
|
|
69
|
+
FOUND=""; MISS=""
|
|
70
|
+
for t in bash curl wget python3 python java node docker podman kubectl git rsync tar gzip unzip zip ss netstat lsof jq openssl systemctl crontab screen tmux sha256sum shasum; do
|
|
71
|
+
if have "$t"; then FOUND="$FOUND $t"; else MISS="$MISS $t"; fi
|
|
72
|
+
done
|
|
73
|
+
say "有:$FOUND"
|
|
74
|
+
say "无:$MISS"
|
|
75
|
+
have python3 || have python || { Y="$Y|无python"; }
|
|
76
|
+
have curl || have wget || { Y="$Y|无curl/wget"; }
|
|
77
|
+
have sha256sum || have shasum || have openssl || { Y="$Y|无校验和工具"; }
|
|
78
|
+
have screen || have tmux || say "提示: 无 screen/tmux —— 长任务用 nohup+日志落盘(eng-complex-env 长任务纪律)"
|
|
79
|
+
|
|
80
|
+
say ""
|
|
81
|
+
say "---- [4/7] 网络 ----"
|
|
82
|
+
say "代理环境变量: $(env 2>/dev/null | grep -iE '^(http|https|no)_proxy=' | tr '\n' ' ' || true)"
|
|
83
|
+
[ -z "$(env 2>/dev/null | grep -iE '^https?_proxy=')" ] && say " (未设代理)"
|
|
84
|
+
if [ -r /etc/resolv.conf ]; then
|
|
85
|
+
say "DNS: $(grep -E '^nameserver' /etc/resolv.conf 2>/dev/null | awk '{print $2}' | tr '\n' ' ')"
|
|
86
|
+
NDOTS=$(grep -oE 'ndots:[0-9]+' /etc/resolv.conf 2>/dev/null)
|
|
87
|
+
[ -n "$NDOTS" ] && say " options $NDOTS (K8s 内注意 ndots 坑, infra-k8s)"
|
|
88
|
+
fi
|
|
89
|
+
if have ip; then say "默认路由: $(ip route 2>/dev/null | grep '^default' | head -1)"
|
|
90
|
+
elif have route; then say "默认路由: $(route -n 2>/dev/null | awk '$1=="0.0.0.0"{print $2; exit}')"; fi
|
|
91
|
+
# 内网连通性探测(-H)
|
|
92
|
+
if [ -n "$HOSTS" ]; then
|
|
93
|
+
say "内网连通性:"
|
|
94
|
+
OLDIFS=$IFS; IFS=','
|
|
95
|
+
for hp in $HOSTS; do
|
|
96
|
+
h=${hp%:*}; p=${hp##*:}
|
|
97
|
+
if have nc && nc -z -w 3 "$h" "$p" 2>/dev/null; then say " $h:$p 通"
|
|
98
|
+
elif have python3 && python3 -c "import socket,sys;s=socket.socket();s.settimeout(3);sys.exit(0 if s.connect_ex(('$h',int('$p')))==0 else 1)" 2>/dev/null; then say " $h:$p 通(python 探测)"
|
|
99
|
+
elif ( exec 3<>"/dev/tcp/$h/$p" ) 2>/dev/null; then say " $h:$p 通(/dev/tcp)"; exec 3>&- 2>/dev/null
|
|
100
|
+
else say " $h:$p 不通或无探测工具"; R="$R|$h:$p不通"; fi
|
|
101
|
+
done
|
|
102
|
+
IFS=$OLDIFS
|
|
103
|
+
fi
|
|
104
|
+
# 出网与带宽(-u,显式给了才测——离线环境不制造报错)
|
|
105
|
+
if [ -n "$URL" ]; then
|
|
106
|
+
if have curl; then
|
|
107
|
+
SPEED=$(curl -o /dev/null -m 20 -s -w '%{speed_download}' "$URL" 2>/dev/null)
|
|
108
|
+
if [ -n "$SPEED" ] && [ "${SPEED%%.*}" -gt 0 ] 2>/dev/null; then
|
|
109
|
+
KBS=$(( ${SPEED%%.*} / 1024 ))
|
|
110
|
+
say "出网带宽实测($URL): 约 ${KBS} KB/s"
|
|
111
|
+
say " 换算: 100MB 传输约 $(( 102400 / (KBS>0?KBS:1) ))s —— 超时按载荷缩放(eng-complex-env 铁律)"
|
|
112
|
+
[ "$KBS" -lt 200 ] && Y="$Y|带宽仅${KBS}KB/s"
|
|
113
|
+
else say "出网: $URL 不可达(离线/白名单?)"; Y="$Y|出网不可达"; fi
|
|
114
|
+
else say "出网: 无 curl,跳过"; fi
|
|
115
|
+
else
|
|
116
|
+
say "出网: 未指定 -u,跳过(离线环境这是常态,不算异常)"
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
say ""
|
|
120
|
+
say "---- [5/7] 资源与限制 ----"
|
|
121
|
+
say "磁盘(标红>85%):"
|
|
122
|
+
df -h 2>/dev/null | awk 'NR==1 || /^\/dev|overlay/' | while read -r line; do
|
|
123
|
+
pct=$(echo "$line" | awk '{gsub("%","",$5); print $5}')
|
|
124
|
+
case "$pct" in [0-9]*) [ "$pct" -gt 85 ] 2>/dev/null && line="$line <== 高水位"; esac
|
|
125
|
+
say " $line"
|
|
126
|
+
done
|
|
127
|
+
say "inode: $(df -i / 2>/dev/null | awk 'NR==2{print $5" 已用"}')"
|
|
128
|
+
say "文件句柄上限(ulimit -n): $(ulimit -n 2>/dev/null)"
|
|
129
|
+
U=$(ulimit -n 2>/dev/null); case "$U" in [0-9]*) [ "$U" -le 1024 ] 2>/dev/null && Y="$Y|句柄上限仅$U";; esac
|
|
130
|
+
say "最大用户进程(ulimit -u): $(ulimit -u 2>/dev/null)"
|
|
131
|
+
|
|
132
|
+
say ""
|
|
133
|
+
say "---- [6/7] 时钟与安全上下文 ----"
|
|
134
|
+
say "本机时间: $(date '+%F %T %Z')"
|
|
135
|
+
if have chronyc; then say "NTP(chrony): $(chronyc tracking 2>/dev/null | grep -E 'System time|Leap' | tr '\n' ';')"
|
|
136
|
+
elif have ntpq; then say "NTP(ntpq): $(ntpq -p 2>/dev/null | head -3 | tr '\n' ';')"
|
|
137
|
+
elif have timedatectl; then say "NTP: $(timedatectl 2>/dev/null | grep -iE 'synchronized|NTP' | tr '\n' ';')"
|
|
138
|
+
else say "NTP: 无对时工具可查 —— 内网务必确认对时方案(env-offline 内网 NTP)"; Y="$Y|对时不可查"; fi
|
|
139
|
+
have getenforce && say "SELinux: $(getenforce 2>/dev/null)"
|
|
140
|
+
[ "$(getenforce 2>/dev/null)" = "Enforcing" ] && Y="$Y|SELinux强制"
|
|
141
|
+
have ufw && say "ufw: $(ufw status 2>/dev/null | head -1)"
|
|
142
|
+
have firewall-cmd && say "firewalld: $(firewall-cmd --state 2>/dev/null)"
|
|
143
|
+
|
|
144
|
+
say ""
|
|
145
|
+
say "---- [7/7] 侦察结论 ----"
|
|
146
|
+
[ -n "$R" ] && say "红灯: $(echo "$R" | sed 's/^|//;s/|/、/g')"
|
|
147
|
+
[ -n "$Y" ] && say "黄灯: $(echo "$Y" | sed 's/^|//;s/|/、/g')"
|
|
148
|
+
[ -z "$R$Y" ] && say "未见明显受限项(仍需人工确认: 变更窗口/审批链/数据出域规则——脚本测不出制度)"
|
|
149
|
+
say "下一步: 本报告并入环境档案(eng-complex-env);方案评审时逐条对照'工具清单/带宽/权限'设计降级路径。"
|
|
150
|
+
say "======================================================"
|
|
151
|
+
[ -n "$OUT" ] && echo "(报告已落盘: $OUT)"
|
|
152
|
+
exit 0
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eng-data-platform
|
|
3
|
+
description: 数据工程链(数仓分层 ODS/DWD/DWS/ADS→维度建模与 SCD→批流选型判据→管道幂等与增量口径→调度 DAG 治理与基线告警→数据质量六维规则→血缘与下线流程→存储成本→数据服务化出仓)。工程链数据平台深耕:建数仓、写 ETL 管道、调度失败恢复、数据延迟或质量事故时载入。业务口径与指标体系走 data-chain/data-governance。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 数据工程链
|
|
8
|
+
|
|
9
|
+
engineering-chain 的数据平台子链。分工:本链管**生产数据的工程**(管道/建模/调度/质量工程/成本);
|
|
10
|
+
业务口径、指标定义、分析方法走 **data-chain**(data-governance 裁决口径)。
|
|
11
|
+
|
|
12
|
+
## 数仓分层
|
|
13
|
+
|
|
14
|
+
| 层 | 职责 | 纪律 |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| ODS | 源系统原样落地 | 不清洗不改写;保留抽取时间/批次号审计字段;源系统 schema 变更在此隔离 |
|
|
17
|
+
| DWD | 清洗后明细 | 一事实一表;清洗规则代码化可追溯;**业务逻辑从这层开始,不许在 ODS 上直接算报表** |
|
|
18
|
+
| DWS | 轻度汇总宽表 | 面向复用的公共汇总(日粒度×核心维度);避免"一人一张宽表" |
|
|
19
|
+
| ADS | 应用层 | 面向具体看板/接口;可牺牲范式换查询性能 |
|
|
20
|
+
|
|
21
|
+
**跨层引用禁止**(ADS 直查 ODS=绕过清洗的裸数据进报表);同层横向引用要登记依赖(调度 DAG 依据)。
|
|
22
|
+
|
|
23
|
+
## 维度建模
|
|
24
|
+
|
|
25
|
+
- 星型优先(雪花只在维表过大时);事实表三类判据:事务型(一事件一行,默认)/周期快照(每日余额/库存)/累积快照(跟踪流程周期:下单→支付→发货各时点);
|
|
26
|
+
- 缓慢变化维:SCD1 覆盖(不要历史)/SCD2 拉链(要历史,加生效起止+当前标记)——**"客户改名后历史报表按新名还是旧名"这类问题,建模期就要问业务**;
|
|
27
|
+
- 一致性维度:全仓一份日期/组织/商品维,各业务域共用——维度不一致=跨域报表对不上的根源;
|
|
28
|
+
- 代理键 vs 业务自然键:维表用代理键,业务键做唯一索引(业务键会变、会重用)。
|
|
29
|
+
|
|
30
|
+
## 批流选型判据
|
|
31
|
+
|
|
32
|
+
T+1 批处理=默认(成本最低、可重跑、好对账);分钟级新鲜度=微批;
|
|
33
|
+
真流式(秒级)判据:**业务动作依赖实时结果**(风控拦截/实时推荐)才上——"老板想早点看到"通常微批就满足;
|
|
34
|
+
Lambda 双跑(批流并行)的批流对账成本先认账再上;能用一套引擎批流一体就不养两套。
|
|
35
|
+
真流式工程深耕(水位线/状态 TTL/反压/倾斜/savepoint/流批对账)载 **data-streaming**。
|
|
36
|
+
|
|
37
|
+
## 管道工程纪律
|
|
38
|
+
|
|
39
|
+
- **幂等**:重跑任意区间结果一致——分区覆盖写(INSERT OVERWRITE 分区)优于追加写;去重键明确;
|
|
40
|
+
- 增量口径:水位字段(更新时间/自增 ID)+**迟到数据窗口**(回看 N 天重算,窗口大小写进表注释);
|
|
41
|
+
- 分区裁剪:大表必分区(按日期),查询必带分区条件(全表扫描告警);
|
|
42
|
+
- 小文件治理:落盘合并策略,小文件数进巡检指标(NameNode/元数据的隐形杀手);
|
|
43
|
+
- 中间表落盘:复杂管道分段物化,失败从断点重跑而不是从头(与 data-report-pro 中间表纪律同拍)。
|
|
44
|
+
|
|
45
|
+
## 调度治理
|
|
46
|
+
|
|
47
|
+
- **DAG 依赖显式化**:上下游用依赖声明,禁止"错峰时间差,他应该跑完了"(隐式依赖=月初必炸);
|
|
48
|
+
- 基线告警:核心产出表定 SLA(如"D+1 09:00 就绪"),基线预测破线提前告警,值班表跟上(eng-ops oncall 同构);
|
|
49
|
+
- 补数流程:补数工具自动列出下游影响清单并级联重跑;**补数也是变更**(通知下游,留痕);
|
|
50
|
+
- 失败处理:可重试的自动重试(幂等是前提),重试 3 次仍败才叫人;任务超时值=历史 P99×1.5,不设超时=僵尸任务。
|
|
51
|
+
|
|
52
|
+
## 数据质量六维(规则挂表,工程化执行)
|
|
53
|
+
|
|
54
|
+
完整性(行数波动/非空率)、唯一性(主键重复)、及时性(就绪时间 vs SLA)、一致性(跨表勾稽:明细汇总=总表)、
|
|
55
|
+
准确性(与源系统抽样比对)、有效性(值域/格式)。
|
|
56
|
+
规则纪律:新核心表上线**必带质量规则**(准入);规则失败分级(阻断下游 vs 告警放行,按表等级);
|
|
57
|
+
**质量事故=线上事故**同级处置(eng-ops 流程):止血(拦截下游)→修复→补数→复盘回写规则——每次事故换一条规则,规则库就是免疫系统(与 data-chain 同拍)。
|
|
58
|
+
|
|
59
|
+
## 血缘与元数据
|
|
60
|
+
|
|
61
|
+
表级血缘自动解析(SQL 解析),字段级按需;每表四件套:注释/Owner/分层标记/保留策略;
|
|
62
|
+
**下线流程**:血缘引用清零→公告期(2 周)→改名停写(反悔窗口)→删除;无主表季度认领,认不出的走下线;
|
|
63
|
+
口径登记与指标字典对接 data-governance(工程侧保证"表是谁、从哪来",业务侧保证"数是什么意思")。
|
|
64
|
+
|
|
65
|
+
## 存储与成本
|
|
66
|
+
|
|
67
|
+
列存格式(Parquet/ORC)+压缩为默认;生命周期分层(热/温/冷/归档,按分区自动降级);
|
|
68
|
+
成本分摊到团队(标签同 eng-infra FinOps);月度 TOP 表容量与访问热度交叉:大而冷的先治理(归档或降采样)。
|
|
69
|
+
|
|
70
|
+
## 数据服务化(出仓三通道)
|
|
71
|
+
|
|
72
|
+
API 服务(高频点查,加缓存与限流)/文件导出(批量,走审批)/反向 ETL(回写业务库,幂等与冲突策略先定);
|
|
73
|
+
**出仓即脱敏审计**:按 data-governance 数据分级执行脱敏,出仓记录可追溯(谁、何时、取了什么)。
|
|
74
|
+
|
|
75
|
+
**作业包**:`references/table-spec-template.md`(表规格卡(分层/SLA/增量口径/SCD)+质量规则六维表+管道与下线检查)。
|
|
76
|
+
|
|
77
|
+
## 使用纪律
|
|
78
|
+
|
|
79
|
+
schema 变更走 expand-contract(同 eng-database:先加后删,兼容下游两个周期);
|
|
80
|
+
禁止无 Owner 的表上生产;每次数据事故三回写:质量规则+基线告警阈值+补数手册。
|
|
81
|
+
**数据平台的信用=报表口径可复算+就绪时间可预期,两者都靠工程纪律不靠加班。**
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# 数据表规格与管道检查单(eng-data-platform 落笔件:新表/新管道上线用)
|
|
2
|
+
|
|
3
|
+
## 1. 表规格卡(一表一卡,登记进元数据)
|
|
4
|
+
|
|
5
|
+
| 项 | 内容 |
|
|
6
|
+
|---|---|
|
|
7
|
+
| 表名/分层 | __(ODS/DWD/DWS/ADS——跨层引用禁止) |
|
|
8
|
+
| Owner/口径依据 | __ / 指标字典条目 __(data-governance) |
|
|
9
|
+
| 主键/去重键 | __;事实表类型: □事务 □周期快照 □累积快照 |
|
|
10
|
+
| 分区/生命周期 | 按 __ 分区;热 __ 温 __ 冷 __ 归档 __ |
|
|
11
|
+
| 上游依赖 | 表:__(DAG 显式声明,禁时间差隐式依赖) |
|
|
12
|
+
| SLA | D+__ __:__ 前就绪;基线告警已挂: □ |
|
|
13
|
+
| 增量口径 | 水位字段 __;迟到窗口回看 __ 天(写进表注释) |
|
|
14
|
+
| SCD 策略(维表) | □SCD1 覆盖 □SCD2 拉链——"改名后历史按新还是旧"业务确认:__ |
|
|
15
|
+
|
|
16
|
+
## 2. 质量规则六维(新核心表必带,规则失败分级)
|
|
17
|
+
|
|
18
|
+
| 维度 | 规则 | 阈值 | 失败动作(阻断/告警) |
|
|
19
|
+
|---|---|---|---|
|
|
20
|
+
| 完整性 | 行数环比波动 | ±__% | |
|
|
21
|
+
| 唯一性 | 主键重复数 | =0 | 阻断 |
|
|
22
|
+
| 及时性 | 就绪时间 vs SLA | | |
|
|
23
|
+
| 一致性 | 与 __ 表勾稽:__ | 差异=0 | |
|
|
24
|
+
| 准确性 | 与源抽样比对 __ 条 | | |
|
|
25
|
+
| 有效性 | 值域/格式:__ | | |
|
|
26
|
+
|
|
27
|
+
## 3. 管道上线检查
|
|
28
|
+
|
|
29
|
+
- [ ] 幂等:重跑任意区间结果一致(分区覆盖写;INSERT OVERWRITE)
|
|
30
|
+
- [ ] 断点续跑:分段落盘,失败从断点起
|
|
31
|
+
- [ ] 分区裁剪:查询必带分区条件;小文件合并策略
|
|
32
|
+
- [ ] 补数流程:下游影响清单可自动列出;补数=变更(通知+留痕)
|
|
33
|
+
- [ ] 任务超时=历史 P99×1.5;重试幂等前提下自动重试 ≤3
|
|
34
|
+
- [ ] 血缘已解析可查;(流作业另过 data-streaming 作业检查单)
|
|
35
|
+
|
|
36
|
+
## 4. 下线流程(反向也要有单)
|
|
37
|
+
|
|
38
|
+
- [ ] 血缘引用清零 → 公告期 2 周 → 改名停写(反悔窗口) → 删除
|
|
39
|
+
- [ ] 无主表季度认领记录:__
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eng-database
|
|
3
|
+
description: 数据库链(存储选型判据(OLTP/KV/文档/时序/搜索/图/向量/OLAP)→schema 与主键设计→索引设计纪律→事务隔离与死锁三防→连接池公式→分库分表三板斧前置→expand-contract 变更迁移→高可用与容量水位)。工程链数据层深耕:建库建表、慢 SQL 治理、分表评估、数据库变更上线、连接池打满时载入。慢查询执行计划细则由 sql-tuning 承接。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 数据库链
|
|
8
|
+
|
|
9
|
+
engineering-chain 的数据层子链。总则:**先用默认(关系型),数据形态与实测证据出现后再分化**;
|
|
10
|
+
生产库的每一条 DDL/DML 都是变更(eng-release/eng-ops 流程管辖)。
|
|
11
|
+
|
|
12
|
+
## 存储选型判据表
|
|
13
|
+
|
|
14
|
+
| 类型 | 启用信号 | 警示 |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| 关系型(默认) | 事务、关联查询、约束完整性 | 90% 的业务到最后还是它;引擎深耕载 **db-mysql**/**db-postgres** |
|
|
17
|
+
| KV 缓存 | 热点读、会话、计数器 | 是加速层不是事实源;键设计/三防/分布式锁载 **db-redis** |
|
|
18
|
+
| 文档型 | schema 多变、按聚合整读整写 | 跨文档事务与关联弱;"灵活"=约束债后置 |
|
|
19
|
+
| 时序 | 写多改少、按时间窗聚合、要降采样 | 高基数标签会炸内存 |
|
|
20
|
+
| 搜索引擎 | 分词、相关性排序、多维过滤 | 近实时非实时;不是事实源;专项(mapping/分片/ILM)载 **db-es** |
|
|
21
|
+
| 图 | 多跳关系查询(3 跳以上) | 两跳以内关系型 JOIN 足够 |
|
|
22
|
+
| 向量 | 语义检索/RAG | 召回≠精确,要配重排与兜底 |
|
|
23
|
+
| OLAP 列存 | 大宽表聚合扫描、报表 | 点查与高频更新弱;与 OLTP 分开(HTAP 宣传打七折听) |
|
|
24
|
+
|
|
25
|
+
多存储纪律:每多一种存储,备份/监控/值班/升级成本+1;**引入新存储=同时提交它的运维接管方案**(eng-infra/eng-ops)。
|
|
26
|
+
|
|
27
|
+
## schema 设计
|
|
28
|
+
|
|
29
|
+
- 三范式起步;反范式判据:读写比悬殊+JOIN 成本实测高+接受一致性维护成本(冗余字段要写清同步机制);
|
|
30
|
+
- 字段纪律:能 NOT NULL 就 NOT NULL(NULL 是三值逻辑坑源);金额 DECIMAL 禁浮点;时间统一 UTC 存储+时区在展示层;枚举字段注释写全值域;预留字段是反模式(要加走变更);
|
|
31
|
+
- 主键判据:单库自增够用;分布式用雪花/UUIDv7(**时间有序**,随机 UUIDv4 会把 B+ 树写碎);业务字段(手机号/身份证)禁做主键(会变、会重、有隐私);
|
|
32
|
+
- 软删除的代价明说:唯一索引要带删除标记、所有查询要带过滤、数据只增不减——不是默认选项,按表评估。
|
|
33
|
+
|
|
34
|
+
## 索引设计纪律
|
|
35
|
+
|
|
36
|
+
- 最左前缀:联合索引列序=等值条件在前、范围在后、排序字段随后;
|
|
37
|
+
- 选择性:区分度<10% 的列单独建索引基本无效(性别/状态);低区分度列放联合索引末位或不放;
|
|
38
|
+
- 覆盖索引:高频查询让索引携带所需列,免回表;
|
|
39
|
+
- **写放大警告**:每加一个索引,写入慢一分,索引数>6 的表先审老索引再加新的(无用索引月度清理,看使用统计);
|
|
40
|
+
- **上线前 EXPLAIN 是纪律**:新查询/改查询必看执行计划(全表扫/文件排序/临时表三红灯),慢查治理走 sql-tuning。
|
|
41
|
+
|
|
42
|
+
## 事务与隔离
|
|
43
|
+
|
|
44
|
+
- 默认隔离级别行为差异要背:MySQL(可重复读,间隙锁)与 PG(读已提交)不同,跨库迁移必查;
|
|
45
|
+
- **长事务危害清单**:锁持有放大、MVCC 版本膨胀、复制延迟——事务内禁止 RPC/HTTP 调用,>5s 事务告警;
|
|
46
|
+
- 死锁三防:固定加锁顺序(按主键升序)、小事务、冲突高的操作改队列串行;死锁日志常开,出现即分析不积攒;
|
|
47
|
+
- 幂等设计:唯一约束兜底 + 重试逻辑配合(网络超时后的重试是重复写入第一来源)。
|
|
48
|
+
|
|
49
|
+
## 连接池
|
|
50
|
+
|
|
51
|
+
- 参考公式:池大小 ≈ 核数×2 + 有效磁盘数——**不是越大越好**,几百个连接互相踩踏比排队更慢;
|
|
52
|
+
- 超时三层齐配:获取连接超时、语句超时、事务超时(只配一层=其余两层裸奔);
|
|
53
|
+
- 池满排查序:先查慢查询占坑(sql-tuning)再查池配置,扩池治标,慢查治本。
|
|
54
|
+
|
|
55
|
+
## 分库分表(最后的手段)
|
|
56
|
+
|
|
57
|
+
- **三板斧用尽再谈**:索引与 SQL 优化 → 读写分离(注意复制延迟的读己之写问题) → 归档冷热分离(历史数据挪走,常客是它);
|
|
58
|
+
- 量级参考:单表 5000 万行/10GB 只是"开始评估"的信号,不是"必须拆"的红线——以实测性能为准;
|
|
59
|
+
- 分片键判据:最高频查询维度(用户系统用 userId);跨片查询与热点(大客户单片过热)先想好;
|
|
60
|
+
- 拆分代价清单(评审必读):全局唯一 ID、跨片事务(最终一致+对账)、跨片 JOIN(反范式或异构索引)、扩容再平衡、运维复杂度全面上升。
|
|
61
|
+
|
|
62
|
+
## 变更迁移(expand-contract)
|
|
63
|
+
|
|
64
|
+
五步:**加**新结构(兼容旧代码)→**双写**→**回填**(分批限流+校验脚本)→**切读**→**收缩**(下一版本才删旧结构);
|
|
65
|
+
配套纪律:变更脚本可重入(重跑不炸)+回滚脚本配对提交;大表 DDL 用 online 方案(锁表评估写进变更单);
|
|
66
|
+
**发布协同红线见 eng-release:代码可回滚的前提是 schema 兼容上一版**。生产库禁止裸 DML:走工单+复核+前置快照(eng-ops 四眼原则)。
|
|
67
|
+
换库/搬迁/分表数据搬运(六步法/三层校验/异构坑清单)载 **db-migration**。
|
|
68
|
+
|
|
69
|
+
## 高可用与容量
|
|
70
|
+
|
|
71
|
+
主从延迟持续监控(读写分离的读一致性依据);故障切换季度演练(自动切换也要演,脑裂预案要有);
|
|
72
|
+
备份恢复见 eng-ops 3-2-1 与演练纪律;容量水位:磁盘 70% 扩容立项、连接数/QPS 峰值月报(eng-ops 水位报告)。
|
|
73
|
+
|
|
74
|
+
**作业包**:`references/schema-review-checklist.md`(新表四件套/字段与索引纪律勾选/DDL 上线检查(算法确认+清长事务+演练计时)/慢查登记行)。
|
|
75
|
+
|
|
76
|
+
## 使用纪律
|
|
77
|
+
|
|
78
|
+
ORM 生成的 SQL 抽查 EXPLAIN(ORM 不是免检金牌);新表上线四件套:注释齐全/索引评审/归档策略/Owner;
|
|
79
|
+
每次慢查/死锁/容量事故回写模式库。**数据库的债最贵:代码可以重写,数据错了是真丢。**
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# 建表与变更评审单(eng-database 落笔件:新表/加索引/DDL 上线逐项勾)
|
|
2
|
+
|
|
3
|
+
## 1. 新表四件套
|
|
4
|
+
|
|
5
|
+
- [ ] 表与字段注释齐全(枚举写全值域);Owner:__
|
|
6
|
+
- [ ] 归档策略:保留 __;冷数据去向 __(建表时就想,别等 5000 万行)
|
|
7
|
+
- [ ] 索引评审(见下) - [ ] 预估容量:日增 __ 行×__B(capacity-calc storage 算过)
|
|
8
|
+
|
|
9
|
+
## 2. 字段纪律速查
|
|
10
|
+
|
|
11
|
+
- [ ] 能 NOT NULL 则 NOT NULL;金额 DECIMAL 禁浮点;时间 UTC 存储
|
|
12
|
+
- [ ] 主键:自增/雪花/UUIDv7(时间有序);业务字段不做主键
|
|
13
|
+
- [ ] 软删除?→ 唯一索引带删除标记+全查询带过滤的代价已认
|
|
14
|
+
- [ ] 无预留字段(要加走变更);字符集 utf8mb4 统一
|
|
15
|
+
|
|
16
|
+
## 3. 索引评审
|
|
17
|
+
|
|
18
|
+
- [ ] 联合索引列序:等值在前范围在后;最左前缀可复用
|
|
19
|
+
- [ ] 选择性:区分度<10% 的列不单独建
|
|
20
|
+
- [ ] 该表索引总数 __(>6 先审老索引再加新)
|
|
21
|
+
- [ ] 高频查询覆盖索引评估;**每条新查询 EXPLAIN 过**(全表扫/文件排序/临时表三红灯)
|
|
22
|
+
|
|
23
|
+
## 4. DDL 上线检查(变更窗口执行)
|
|
24
|
+
|
|
25
|
+
- [ ] 算法确认:INSTANT/INPLACE/COPY(db-mysql 三算法)或 CONCURRENTLY(db-postgres)
|
|
26
|
+
- [ ] 执行前清长事务(metadata lock 连环塞预防;mysql-health.sql 第 1/3 节先跑)
|
|
27
|
+
- [ ] 大表:测试库同量级演练计时 __ 分钟;磁盘余量 ≥ 表大小×2
|
|
28
|
+
- [ ] 亿级表:gh-ost/pt-osc 方案;限速与暂停点
|
|
29
|
+
- [ ] 变更脚本可重入+回滚脚本配对提交(expand-contract:本次是"加"还是"收缩"阶段?)
|
|
30
|
+
- [ ] schema 兼容上一版代码(eng-release 回滚红线)
|
|
31
|
+
|
|
32
|
+
## 5. 慢查治理登记行(周报用)
|
|
33
|
+
|
|
34
|
+
| SQL 指纹 | 来源模块 | 平均ms | 扫描行 | 病因(无索引/隐式转换/N+1/深分页) | 处置 | Owner |
|
|
35
|
+
|---|---|---|---|---|---|---|
|
|
36
|
+
|
|
37
|
+
> ORM 生成的 SQL 也抽查 EXPLAIN;生产库禁裸 DML(工单+复核+快照)。
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eng-develop
|
|
3
|
+
description: 开发子链总控(领任务→分支→编码→自测→自评→提交 PR 全流程、语言无关编码规范通则、DoD 完成定义、AI 结对纪律;按技术栈路由 13 条孙链:通用工具链/Java/Python/C#/前端/Node/Go/Rust/C++/移动端/跨端/鸿蒙/PHP)。工程链开发环节入口:动手写码前、跨语言协作、不确定用哪条语言链时载入。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 开发子链总控
|
|
8
|
+
|
|
9
|
+
engineering-chain 的开发环节子链,也是 12 条语言/工具孙链的路由入口。
|
|
10
|
+
输入:验收标准(eng-requirements)+方案与落点(eng-architecture);产出:可评审的 PR。
|
|
11
|
+
|
|
12
|
+
## 语言/工具孙链路由表
|
|
13
|
+
|
|
14
|
+
| 技术栈 | 孙链 | 一句定位 |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| 语言无关工具底座 | **dev-toolchain** | Git 进阶/调试方法论/构建缓存/私服镜像/pre-commit/AI 结对 |
|
|
17
|
+
| Java | **dev-java** | JDK 版本策略/Spring 事务八坑/线程池公式/JVM 与 arthas |
|
|
18
|
+
| Python | **dev-python** | uv 环境/类型渐进/pytest/asyncio 判据/pandas 内存 |
|
|
19
|
+
| C#/.NET | **dev-csharp** | .NET LTS/DI 生命周期/EF Core 三宝/async 全链/AOT |
|
|
20
|
+
| 前端(JS/TS) | **dev-frontend** | Vite 工程化/状态分层判据/Core Web Vitals/请求层规范 |
|
|
21
|
+
| Node 服务端 | **dev-node** | 事件循环阻塞/流与背压/优雅退出/容器内存对齐 |
|
|
22
|
+
| Go | **dev-go** | 错误包装惯例/context 纪律/goroutine 泄漏防治/pprof |
|
|
23
|
+
| Rust | **dev-rust** | 所有权心智/thiserror-anyhow 分工/tokio 要点/unsafe 纪律 |
|
|
24
|
+
| C/C++ | **dev-cpp** | 现代 CMake/RAII 所有权/UB 清单/sanitizers 全家桶 |
|
|
25
|
+
| 移动端原生 | **dev-mobile** | 双端 MVVM/启动与包体积/隐私合规/灰度热修判据 |
|
|
26
|
+
| 跨端/小程序 | **dev-cross-platform** | Flutter/RN/uni-app/Electron 判据表/小程序专项 |
|
|
27
|
+
| 鸿蒙 | **dev-harmony** | ArkTS 约束与迁移/Stage 与包结构/一多真伪需求/三端并存策略 |
|
|
28
|
+
| PHP | **dev-php** | PHP8 现代化/FPM 调参/安全 TOP/Swoole 常驻心智 |
|
|
29
|
+
| AI/LLM 应用 | **eng-ai** 域 | LLM 接入/RAG/Agent/提示/评测/服务运维(ai-* 六孙链入口) |
|
|
30
|
+
|
|
31
|
+
路由纪律:语言特定问题(依赖治理/性能画像/框架坑)直载对应孙链;多语言项目按当前要动的代码路由;
|
|
32
|
+
新项目选语言=选型决策,走 **eng-research** 评分卡而不是凭偏好。
|
|
33
|
+
|
|
34
|
+
## 开发全流程(领任务 → PR 合入)
|
|
35
|
+
|
|
36
|
+
1. **领任务核对**:验收标准读一遍,判不了 PASS/FAIL 的先打回 eng-requirements;
|
|
37
|
+
2. **摸落点**:existing 代码先 explain-codebase(调用链/数据流/惯例),**看不懂的代码不改**;
|
|
38
|
+
3. **分支**:从主干拉 `feature|fix|hotfix/工单号-简述`,寿命目标 <3 天(eng-release 分支策略);
|
|
39
|
+
4. **测试先行**:关键逻辑先写失败用例再实现(write-tests);
|
|
40
|
+
5. **小步提交**:每提交一个意图、可构建可测试、可独立回滚;禁攒一周一把梭;
|
|
41
|
+
6. **自测**:跑本地全量相关测试+手工过一遍验收标准主路径;
|
|
42
|
+
7. **自评 diff**:提 PR 前自己逐行 review 一遍(捞掉调试残留/误改/console),**自评能拦一半评审意见**;
|
|
43
|
+
8. **提交**:commit-and-pr 规范(消息说 why 不复述 diff);PR 描述贴验收标准勾选情况。
|
|
44
|
+
|
|
45
|
+
## 编码规范通则(语言无关,语言细则见孙链)
|
|
46
|
+
|
|
47
|
+
- **命名**:意图优先、可搜索(全局搜 `tmpFlag` 应唯一命中);布尔名回答问题(isXxx/hasXxx);反例:data2、doProcess、flag。
|
|
48
|
+
- **函数**:单一职责;参考值 ≤40 行、参数 ≤4 个,超了先怀疑职责混杂;圈复杂度高的先拆再改。
|
|
49
|
+
- **错误处理**:不吞异常(空 catch=定时炸弹);失败早暴露(fail fast);错误信息三要素:在做什么/输入是什么/期望是什么;每个错误只在一处记日志(层层重复打=日志洪水)。
|
|
50
|
+
- **日志**:结构化、分级准确(见 eng-observability 分级纪律)、禁敏感信息(密码/证件/手机号);关键业务动作 INFO 留痕。
|
|
51
|
+
- **注释**:只写"为什么"(权衡/约束/陷阱),不写"是什么"(代码自己会说);过期注释比没注释毒。
|
|
52
|
+
- **常量**:魔法数字与字符串入常量并命名其含义;配置与代码分离(可变的进配置)。
|
|
53
|
+
- **TODO**:必须挂工单号+人名,裸 TODO 门禁拦截(dev-toolchain pre-commit)。
|
|
54
|
+
- **复用优先**:写新代码前先搜仓库同类实现;重复第三次才抽象(过早抽象比重复更难拆)。
|
|
55
|
+
|
|
56
|
+
## DoD 完成定义(说"做完了"之前逐项勾)
|
|
57
|
+
|
|
58
|
+
功能过全部验收标准 / 新逻辑有单测且全绿 / 静态检查零新增告警 / 涉接口更新契约文档(api-design) /
|
|
59
|
+
涉配置与部署更新说明 / 无调试残留(打印/断点/临时开关/注释掉的代码) / 埋点按需求就位 / 自评过。
|
|
60
|
+
|
|
61
|
+
## AI 结对纪律
|
|
62
|
+
|
|
63
|
+
- 上下文喂足再要产出:相关文件、项目惯例、约束条件——垃圾进垃圾出;
|
|
64
|
+
- **AI 产出逐行读懂才许提交**,读不懂=不是你的代码,出了事故你背不动;
|
|
65
|
+
- 测试先行让 AI 补实现,比让 AI 连测试一起编更可靠(自产自测=既当运动员又当裁判);
|
|
66
|
+
- 边界条件亲自过一遍(空/极值/并发/权限),AI 的盲区高度集中在这里;
|
|
67
|
+
- 密钥、内部数据、未公开代码不出内网喂外部模型(eng-security);
|
|
68
|
+
- 深耕(任务适配判据表/上下文工程/代理模式任务书/提效度量)载 **ai-coding**。
|
|
69
|
+
|
|
70
|
+
**作业包**:`references/dod-checklist.md`(DoD 逐项勾/PR 描述模板/自评九查(空值边界并发越权事务超时幂等))。
|
|
71
|
+
|
|
72
|
+
## 使用纪律
|
|
73
|
+
|
|
74
|
+
红灯(构建/测试失败)期间不合入新功能;每个 PR 讲得出"为什么这么改"而不只是"改了什么";
|
|
75
|
+
遇到设计层面的疑问回 eng-architecture 而不是"先绕过去";写码中发现的债记台账不顺手大改
|
|
76
|
+
(**一个 PR 只干一件事**——重构与功能分开提)。
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 开发完成定义与自评单(eng-develop 落笔件:提 PR 前逐项勾)
|
|
2
|
+
|
|
3
|
+
## DoD 完成定义(说"做完了"之前)
|
|
4
|
+
|
|
5
|
+
- [ ] 功能过全部验收标准(对着 story-templates 的 Gherkin 逐条勾)
|
|
6
|
+
- [ ] 新逻辑有单测且全绿;关键路径先写失败用例再实现
|
|
7
|
+
- [ ] 静态检查零新增告警;格式化通过(工具管,评审不吵空格)
|
|
8
|
+
- [ ] 涉接口:契约文档已更新(api-design 同源)
|
|
9
|
+
- [ ] 涉配置/部署:变更说明已写(部署说明进 PR 描述)
|
|
10
|
+
- [ ] 埋点按需求就位;日志分级正确且无敏感信息
|
|
11
|
+
- [ ] 无调试残留:print/console/断点/临时开关/注释掉的代码
|
|
12
|
+
- [ ] 自评过:自己逐行 review 一遍 diff(能拦一半评审意见)
|
|
13
|
+
|
|
14
|
+
## PR 描述模板
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
## 为什么(Why)
|
|
18
|
+
<业务/技术动因,关联需求 REQ-__ 或工单 __>
|
|
19
|
+
|
|
20
|
+
## 改了什么(What)
|
|
21
|
+
<一句话概述;大改动列模块清单>
|
|
22
|
+
|
|
23
|
+
## 怎么验证(How verified)
|
|
24
|
+
<验收标准勾选情况 / 测试证据 / 复现步骤>
|
|
25
|
+
|
|
26
|
+
## 风险与回滚
|
|
27
|
+
<影响面;能否一键回滚;涉 schema 是否兼容上一版(eng-release 红线)>
|
|
28
|
+
|
|
29
|
+
## AI 参与度
|
|
30
|
+
<无/补全/对话/代理生成,重点抽查区提示(ai-coding 评审适配)>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 自评九查(高频翻车点速扫)
|
|
34
|
+
|
|
35
|
+
- [ ] 空值/空集合路径 - [ ] 边界(0/1/最大/超长) - [ ] 重复提交与并发双击
|
|
36
|
+
- [ ] 权限:水平越权(资源属主)+垂直越权(角色)——前端隐藏≠控制
|
|
37
|
+
- [ ] 事务边界:该原子的原子了;事务内无 RPC/HTTP(db 链)
|
|
38
|
+
- [ ] 超时:每个外部调用有超时(eng-reliability 判据表)
|
|
39
|
+
- [ ] 错误信息三要素:做什么/输入啥/期望啥;不吞异常
|
|
40
|
+
- [ ] 幂等:写接口重试安全(arch-distributed 四模式)
|
|
41
|
+
- [ ] 大数据量:列表有分页;循环内无 IO/查询(N+1)
|
|
42
|
+
|
|
43
|
+
> 一 PR 一意图;>400 行拆分(eng-collaboration);看不懂的代码不改(先 explain-codebase)。
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eng-docs
|
|
3
|
+
description: 技术文档与知识链(Diátaxis 四象限文档类型判据→docs-as-code 同仓同评审→关键文档清单(README 六要素/Runbook 结构/API 文档同源)→图 as code→文档腐化治理与保鲜期→新人上手路径验收→知识回写闭环汇总→文档度量)。工程链文档深耕:建文档体系、README/Runbook 缺失混乱、新人上手慢、知识都在老员工脑子里时载入。办公 SOP 与知识库运营走 knowledge-sop。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 技术文档与知识链
|
|
8
|
+
|
|
9
|
+
engineering-chain 的文档子链。分工:本链管**工程文档**(代码库伴生的知识),办公 SOP 与通用知识库运营走 knowledge-sop;
|
|
10
|
+
第一原则:**文档是给三个月后的自己和下一个接手的人写的**——写不写的判据是"没有它,别人要走多少弯路"。
|
|
11
|
+
|
|
12
|
+
## 文档类型判据(Diátaxis 四象限,别把四种写成一坨)
|
|
13
|
+
|
|
14
|
+
| 类型 | 回答 | 写法要点 | 反例 |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| 教程 Tutorial | 带我入门 | 保姆级步骤,从零到跑通,每步有预期输出 | 中途冒出三个"高级选项"岔路 |
|
|
17
|
+
| 操作指南 How-to | 怎么完成某任务 | 目标导向,前置条件明确,可复制命令 | 混入原理长篇(读者在救火) |
|
|
18
|
+
| 参考 Reference | 精确查询 | 结构化全量(API/配置项/错误码),从代码生成优先 | 手维护参考=注定过期 |
|
|
19
|
+
| 解释 Explanation | 为什么这样设计 | 背景权衡取舍(ADR 是其一种,eng-architecture) | 写成操作步骤 |
|
|
20
|
+
|
|
21
|
+
写前先问读者带着哪类问题来——同一主题四类可各有一篇,揉成一篇=四类读者都骂。
|
|
22
|
+
|
|
23
|
+
## docs-as-code 纪律
|
|
24
|
+
|
|
25
|
+
文档与代码**同仓、同 PR、同评审**:改行为不改文档=PR 不完整(DoD 项,eng-develop);
|
|
26
|
+
Markdown 为体,渲染为用;图 as code(mermaid:架构图/时序图/状态机),**截图类图三月必过期,代码生成的图跟着改**;
|
|
27
|
+
参考类文档从源生成:API 文档从契约(api-design)、配置说明从配置 schema、错误码表从枚举——**单一事实源,手抄必漂移**;
|
|
28
|
+
文档也有目录设计(信息架构,eng-ux 同法):按读者任务组织,不按团队组织架构组织。
|
|
29
|
+
|
|
30
|
+
## 关键文档清单(每个仓库/服务的标配)
|
|
31
|
+
|
|
32
|
+
- **README 六要素**:这是什么(一句话+边界)/怎么跑起来(本地 quickstart,验收标准=新人半天跑通,dev-toolchain)/怎么测试/怎么部署发布/目录结构导读/求助渠道(Owner+群);
|
|
33
|
+
- **Runbook**(每个告警/预案配一篇,eng-observability 告警三问的"知道怎么动手"落点):结构=症状→影响评估→诊断步骤(带命令)→处置动作(带回滚)→升级路径——**验收标准:新值班照着能独立处置**,恐慌时刻没人读散文;
|
|
34
|
+
- ADR(eng-architecture)/接口契约(api-design)/集成档案(eng-integration)/部署与配置说明(eng-release)/数据字典(data-governance)——各链产物,本链管"有没有、放哪、活没活着";
|
|
35
|
+
- 新人上手路径:第一天(环境+跑通)/第一周(架构导读+首个小任务)/首月(值班跟班)——**上手时长是文档体系的终极验收指标**(eng-efficiency 采样)。
|
|
36
|
+
|
|
37
|
+
## 文档腐化治理(文档最大的问题不是没有,是不可信)
|
|
38
|
+
|
|
39
|
+
每篇关键文档三件套:Owner/最后验证日期/**保鲜期**(教程与 Runbook 90 天,参考类跟代码生成,解释类一年);
|
|
40
|
+
到期例程提醒复核(eng-automation),复核=按文档真跑一遍不是扫一眼;
|
|
41
|
+
过期未复核自动标注"⚠ 可能过时"——**错误的文档比没有文档更危险**(读者按它操作会出事故);
|
|
42
|
+
文档 bug 同缺陷流程(eng-quality):发现错了就提单,顺手能修就修(改文档的 PR 免评审门槛可放宽);
|
|
43
|
+
废弃纪律:下线的功能文档归档不删除(留考古线索),入口移除。
|
|
44
|
+
|
|
45
|
+
## 知识回写闭环(工程链复利的总账房)
|
|
46
|
+
|
|
47
|
+
各链的"回写"落点在这里汇总成体系:
|
|
48
|
+
复盘→根因模式库(eng-ops)/坑清单(各 dev-* 链)/估时校准库(eng-planning)/调研报告与雷达(eng-research)/
|
|
49
|
+
ADR 后果回填(eng-architecture)/评测坏例集(ai-eval)——
|
|
50
|
+
**回写三纪律**:当场写(过周即忘)/写在别人找得到的地方(挂对应链的台账不是个人笔记)/下次真的先查(会前查库是流程步骤不是美德);
|
|
51
|
+
高频被问的问题=文档缺口信号(答三遍就写下来,答案链接化——"看这篇"比重复口述省十倍)。
|
|
52
|
+
|
|
53
|
+
## 协作与评审
|
|
54
|
+
|
|
55
|
+
文档评审看三点:读者对不对(类型判据)/新人视角能不能跑通(找个没上下文的人试读)/与代码一致否;
|
|
56
|
+
术语表全仓统一(同物同名,新词入表);
|
|
57
|
+
会议纪要与决策记录:决策+理由+行动项三要素落文档(meeting-minutes 承接),**口头决策=没有决策**。
|
|
58
|
+
|
|
59
|
+
## 度量(轻量,别为度量而度量)
|
|
60
|
+
|
|
61
|
+
新人上手时长(每位新人记录,趋势看体系);文档命中率(被搜到且解决问题的比例,搜索日志高频无结果词=缺口清单,eng-ux 同法);
|
|
62
|
+
Runbook 覆盖率(P1P2 告警配 Runbook 的比例,目标 100%);保鲜达标率(未过期占比);
|
|
63
|
+
**不度量字数与篇数**(文档以少而准为荣,eng-efficiency 反模式同理)。
|
|
64
|
+
|
|
65
|
+
**作业包**:`references/runbook-template.md`(Runbook 模板(症状→诊断→处置→升级,新值班能独立执行)+README 六要素+保鲜头部)。
|
|
66
|
+
|
|
67
|
+
## 使用纪律
|
|
68
|
+
|
|
69
|
+
改行为必改文档(DoD);关键文档有 Owner 有保鲜期;参考类一律代码生成;
|
|
70
|
+
每次"问了三遍的问题"沉淀成文;每次因文档过期导致的事故,保鲜期减半重核——
|
|
71
|
+
**文档体系的验收不是"写了多少",是"新人多快独立、值班多稳、老知识多可信"**。
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Runbook 与 README 模板(eng-docs 落笔件)
|
|
2
|
+
|
|
3
|
+
## 1. Runbook 模板(一告警/预案一篇;验收=新值班照着能独立处置)
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
# RB-__: <告警名/场景名>
|
|
7
|
+
> Owner: __ | 最后验证: __(保鲜期 90 天,到期真跑一遍不是扫一眼) | 关联告警: __
|
|
8
|
+
|
|
9
|
+
## 症状
|
|
10
|
+
<值班看到什么:告警文案/大盘形态/用户表现>
|
|
11
|
+
|
|
12
|
+
## 影响评估(30 秒判级)
|
|
13
|
+
<影响谁/多大面 → P 级判定(eng-ops 分级看影响不看原因)>
|
|
14
|
+
|
|
15
|
+
## 诊断步骤(带命令,恐慌时刻没人读散文)
|
|
16
|
+
1. <命令/看哪个盘> → 若 __ 则 __
|
|
17
|
+
2. <一键体检: quick-triage.sh / k8s-triage.sh / 对应 db 巡检>
|
|
18
|
+
3. <变更嫌疑: 查变更日历最近 __ 小时>
|
|
19
|
+
|
|
20
|
+
## 处置动作(带回滚)
|
|
21
|
+
- 止血: <四板斧哪一斧,预案开关编号>
|
|
22
|
+
- 若无效: <下一招>
|
|
23
|
+
- 回滚方式: <怎么退回来>
|
|
24
|
+
|
|
25
|
+
## 升级路径
|
|
26
|
+
<15min 无进展 → __;30min → __;P1 立即 __>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 2. README 六要素骨架
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
# <项目名>
|
|
33
|
+
<一句话:这是什么+边界(不做什么)>
|
|
34
|
+
|
|
35
|
+
## 快速开始 <!-- 验收:新人半天跑通 -->
|
|
36
|
+
<环境要求(版本锁定文件指路) / 三条命令: make setup / make test / make run>
|
|
37
|
+
|
|
38
|
+
## 测试与质量
|
|
39
|
+
<怎么跑测试/门禁有哪些>
|
|
40
|
+
|
|
41
|
+
## 部署与发布
|
|
42
|
+
<怎么发/发布单模板指路/回滚方式>
|
|
43
|
+
|
|
44
|
+
## 目录导读
|
|
45
|
+
<关键目录一行一句>
|
|
46
|
+
|
|
47
|
+
## 求助
|
|
48
|
+
<Owner/群/FAQ 链接;文档缺口提这里>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 3. 文档保鲜头部(关键文档统一加)
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
> Owner: __ | 类型: 教程|操作|参考|解释 | 最后验证: YYYY-MM-DD | 保鲜期: 90天|跟代码|1年
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
> 参考类从代码生成不手抄;改行为必改文档(DoD);高频被问三遍的问题→沉淀成文答链接。
|