Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Huawei Technical Tender Comparison Tool

A private, localhost-only workspace for cataloging verified Huawei technical evidence and comparing tender requirements against solution configurations. The application does not call an AI service: it generates strict prompts for an external LLM, validates the returned JSON, and performs every comparison deterministically on your computer.

What is included

  • Ten OceanStor Pacific models: 9928, 9920, 9926, 9550, 9546, 9540, 9340, 9346, 9350 from V800R001C20 datasheet pages 6–9, plus 9520 from the Huawei product-page Unstructured/Structured table.
  • Twelve OceanStor Dorado per-model stubs (New-Gen 3000/5000/6000/8000/18000, V6 equivalents, 2000, 2100) ready for datasheet evidence later.
  • Two OceanStor AI Storage systems, A800 and A600, with official Huawei PDF and current product-page evidence for AI training and inference.
  • Eight Huawei Data Protection products across five distinct portfolio lines: OceanProtect E8000; OceanProtect X3000/X6000/X8000/X9000; OceanCyber 300; OceanProtect DataBackup; and OceanStor BCManager.
  • Nineteen Huawei IdeaHub screen-size SKUs across ES3, ES2 Plus, ES2, S2, K3, B3, and Board 3 Pro, normalized from their model-specific specification tables.
  • More than 300 source-linked model facts covering file/object/HDFS, video file/object, and block service profiles without mixing profile-specific values.
  • The supplied object-storage tender normalized into 36 atomic technical requirements.
  • Versioned canonical schema shared by Datasheet and Tender extraction prompts.
  • Product catalog with model-, group-, and series-scoped source evidence.
  • Solution configuration builder for chassis, nodes, sites, support, and solution-level evidence.
  • Deterministic MATCH / FAIL / UNKNOWN / NOT APPLICABLE engine.
  • Mandatory compliance, weighted technical match, data coverage, ranking, override audit history, JSON/CSV export, and full local backup/restore.

App routes

Page Path
Dashboard /dashboard
OceanStor Pacific /storage/pacific
OceanStor AI Storage /storage/ai-storage
Data Protection (all lines) /storage/data-protection
OceanProtect E8000 /storage/data-protection/e8000
OceanProtect Backup Storage /storage/data-protection/backup-storage
OceanCyber /storage/data-protection/oceancyber
OceanProtect DataBackup /storage/data-protection/databackup
OceanStor BCManager /storage/data-protection/bcmanager
Dorado New-Gen /storage/new-gen
Dorado V6 /storage/v6
Dorado Entry /storage/entry
All Dorado /storage/dorado
IdeaHub /ideahub
Solutions /solutions
Tenders /tenders
Comparison /comparison
History /history
Schema & Settings /settings

/ redirects to /dashboard.

Requirements

  • macOS, Windows, or Linux
  • Node.js 22.13 or newer
  • npm (included with Node.js)
  • About 1 GB free disk space for dependencies and build output

No Docker, cloud account, API key, or online database is required.

First-time setup

  1. Download or clone this repository.

  2. Open Terminal (macOS/Linux) or PowerShell (Windows) in the project folder.

  3. Install dependencies:

    npm install
  4. Start the local development server:

    npm run dev
  5. Open http://localhost:3000 in a browser.

The first request creates data/huawei-ebg-tool.sqlite and loads the Pacific, Dorado, AI Storage, Data Protection, and IdeaHub catalogs plus the initial object-storage tender automatically.

Normal daily use

Run:

npm run dev

Keep that terminal window open while using the tool. Stop it with Ctrl+C.

The intended workflow is:

  1. Open Tenders and copy the schema-generated Tender Prompt.
  2. Attach the tender and prompt to ChatGPT, Claude, Gemini, or another capable LLM.
  3. Paste or upload the returned JSON in the tool.
  4. Review and edit the extracted requirements before scoring.
  5. Create a Solution Configuration and add verified product/solution evidence.
  6. Run Comparison, review UNKNOWN items, and record any justified human override.
  7. Export the result as JSON or CSV.

For a future product datasheet, use Copy Datasheet Prompt from Product Catalog or Solutions. Datasheet and Tender prompts are always generated from the same live canonical field registry.

Production-style local run

Build once:

npm run build

Then start the optimized local server:

npm start

Open http://localhost:3000. Rebuild after pulling code updates.

Tests and verification

Run deterministic engine and schema tests:

npm test

Run tests and a complete production build:

npm run test:all

The tests cover unit conversion, raw-versus-usable capacity separation, unknown evidence, mandatory failures, prompt/schema alignment, strict import validation, duplicate canonical fields, Data Protection product taxonomy, official-source evidence completeness, and committed PDF checksums.

Data Protection evidence policy

  • Catalog schema version 1.4.0 keeps hardware, appliance, and software product forms explicit. The X3000/X6000/X8000/X9000 entries remain separate integrated-appliance profiles rather than being merged with software products.
  • Every seeded Data Protection fact is marked verified and records an official Huawei URL, document title, exact source excerpt, evidence scope, and a page number for PDF-backed facts.
  • Values not explicitly supported by the cited source are left absent; for example, X3000 does not inherit the X6000-and-above ransomware-detection claim.
  • Official source PDFs and their SHA-256 checksums are recorded in datasheets/oceanprotect/SOURCES.txt. Product imagery is intentionally omitted because redistribution permission was not established.
  • Existing local state is migrated to schema 1.4.0 on startup. Seed facts refresh from the audited catalog, manually entered evidence is preserved, custom categories/fields/products remain intact, and saved comparison caches are recalculated.

Database, backup, and restore

The SQLite database is stored at:

data/huawei-ebg-tool.sqlite

SQLite WAL files may appear next to it while the server is running. The entire data/ directory is excluded from Git.

Recommended backup method:

  1. Open Schema & Settings.
  2. Select Download backup.
  3. Store the resulting JSON file somewhere safe.

To restore, use Restore backup on the same page. This portable JSON backup includes categories, canonical fields, products, evidence, solution configurations, tenders, comparison history, and human overrides.

You may also copy the SQLite file while the server is stopped. JSON backup/restore is safer between app versions.

Transfer to another computer

  1. On the current computer, download a JSON backup from Schema & Settings.
  2. Clone or copy the repository to the new computer. Do not copy node_modules or .next.
  3. Install Node.js 22.13+.
  4. In the project folder, run npm install and then npm run dev.
  5. Open the tool and restore the JSON backup.

Original PDF/DOCX documents and the local SQLite database are excluded from Git by default. The normalized seed data contains short evidence excerpts and source-page references, not the original source files.

Optional configuration

The default database path can be overridden:

DATABASE_PATH=/absolute/path/my-database.sqlite npm run dev

On Windows PowerShell:

$env:DATABASE_PATH="C:\data\my-database.sqlite"
npm run dev

Data and scoring rules

  • Mandatory weight: 5; Preferred: 3; Optional: 1.
  • Technical Match uses verified MATCH/FAIL weight only.
  • Data Coverage shows how much applicable weight has verified evidence.
  • Any mandatory FAIL makes the solution NOT COMPLIANT.
  • Mandatory UNKNOWN produces NEEDS REVIEW.
  • Decimal TB/PB and MB/s/GB/s convert automatically. Binary TiB/PiB/GiB/s remain distinct.
  • Raw capacity is never compared with usable capacity.
  • Maximum or generic bandwidth is never treated as sustained read/write throughput.
  • Unverified manual values remain UNKNOWN.
  • A human override preserves the calculated result and requires a reason.

Important privacy note

The app has no authentication because it only listens on your local machine by default. Do not expose port 3000 to the public internet. Prompts are copied to your clipboard, but documents and results are never uploaded by the app.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages