Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
모로코 기업용 무료 회계 프로그램, Windows용 Wheat를 다운로드해 실용 가이드를 확인하세요
La comptabilité gratuite sur votre ordinateur, pensée pour les entreprises marocaines. Téléchargez Wheat pour Windows et découvrez les guides pratiques.
금융TypeScript · JavaScriptGitHub @haggouchmustapha-sketch온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Wheat is a Windows-first, local accounting desktop application for Moroccan small businesses, fiduciaires and accounting offices. It uses Electron, React, TypeScript, Prisma and SQLite. The packaged app keeps its accounting, OCR, reporting, reconciliation, tax-workpaper, import, backup and assistant workflows on the computer; none of them requires a cloud account or a subscription.
Wheat is not certified by the DGI or another authority, and it does not replace review by a qualified Moroccan accounting or tax professional. See Known limitations.README 전문 보기 ↗Wheat is a Windows-first, local accounting desktop application for Moroccan small businesses, fiduciaires and accounting offices. It uses Electron, React, TypeScript, Prisma and SQLite. The packaged app keeps its accounting, OCR, reporting, reconciliation, tax-workpaper, import, backup and assistant workflows on the computer; none of them requires a cloud account or a subscription.
Wheat is not certified by the DGI or another authority, and it does not replace review by a qualified Moroccan accounting or tax professional. See Known limitations.
Wheat 2.0 is an interface release: the accounting engine, tax rules, reconciliation, imports, exports, OCR behaviour and database meaning are unchanged, and no feature was removed.
src/styles/tokens.css. Light and dark mode are both first-class, built from the official Wheat palette.Automatic — free models ranks verified free models and fails over when one is rate-limited, exhausted or withdrawn.The exact 2.0 implementation, evidence and known limits are recorded in the Wheat 2.0 implementation report.
xlrd 2.0.2. Corrupt workbooks and ambiguous PDF/OCR layouts fail with actionable messages rather than guessed accounting data. Scanned PDFs proceed only when PaddleOCR recognizes a bank header with a date and monetary columns; every row still requires mapping, validation, duplicate review, and explicit confirmation.The historical 2.0 runtime delta and format status are recorded in the fix report and feature matrix.
Detailed changes are in the Wheat 1.4 release notes.
.wheatbackup (and the legacy .atlasbackup) archives also include referenced ledger-import source files and verify every managed file against its SQLite provenance before backup and after staged restore.The Wheat 1.3 release notes document the underlying books, controlled imports, audit chain, and hardened desktop boundary.
BigInt integer centimes. New subledger inputs accept exact decimal text and reject JavaScript floating-point numbers at the service boundary.REVIEW_REQUIRED; Wheat does not invent accounting evidence for them..wheatbackup (and the legacy .atlasbackup) archive containing the SQLite database, referenced OCR attachments, and managed source bank statements. A SHA-256 manifest is verified before the archive is accepted.The Wheat 1.2 release notes document the underlying subledger, reconciliation, archive, and local-lock release.
On a fresh packaged installation:
Créer mon espace comptable.To inspect sample workflows, select Explorer une société exemple. This replaces the current local workspace; it is not a second isolated company. Create and protect a .wheatbackup (and the legacy .atlasbackup) archive first if the current workspace matters.
If database loading fails, Wheat shows recovery information instead of substituting browser/demo records. Running the React renderer outside Electron remains a clearly marked, non-persistent preview.
LEGACY and marked for review. Where a reliable historical payment date existed, the migration creates a legacy payment/allocation; it does not fabricate a posted accounting entry.UNRECONCILED, PARTIAL, RECONCILED, EXCLUDED, or REVIEW_REQUIRED.Use Réglages → Sauvegarder to create a complete .wheatbackup (and the legacy .atlasbackup) archive. Wheat checkpoints and disconnects the database, snapshots it, includes referenced OCR documents and source bank statements under Wheat's managed documents directory, hashes every payload file, writes a manifest, and validates the finished archive.
The archive intentionally does not sweep arbitrary files from disk. It excludes:
If a referenced managed attachment is missing, Wheat rejects the backup instead of producing a knowingly incomplete archive. Store important backups off the computer and test restoration under your own retention policy; Wheat does not automatically create an off-device copy.
Use Réglages → Restaurer to select either a .wheatbackup (and the legacy .atlasbackup) archive or an older .sqlite/.db backup. Complete archives are extracted into a private staging directory, checked against their manifest, migrated, and validated for SQLite integrity and foreign keys before replacement. Included attachments are restored under Wheat's managed documents directory. Wheat attempts a full rollback archive of the current workspace before replacement and restores the prior live database if the swap fails.
A legacy SQLite restore remains database-only. It cannot recover attachment files that were never included in the old backup.
Wheat does not ship a hidden “current rate” table. Before posting a VAT-bearing invoice, create and activate an effective-dated configuration under TVA → Règles, enter the rules you have verified, and select the matching configuration and rate on the invoice line. Posted invoices snapshot the chosen configuration revision and rate metadata.
The 1.4 workpaper engine is deliberately limited to the collection basis. It constructs period evidence from actual posted settlements and linked credit/reversal events, supports reasoned adjustments with hashed documents, detects stale sources before review or filing, and records only a filing performed outside Wheat. Monthly and quarterly workpapers must cover complete civil periods.
Fiscal close is a separate controlled workflow. Preview the checks, resolve blockers, then confirm with the exact preview hash. Closing locks the fiscal year and creates an integrity checkpoint. Reopening requires a reason and does not erase the close run.
The lock can be enabled from Settings with a PIN of 6–64 characters. The app stores a random salt and scrypt-derived verifier, not the PIN itself. Settings can enable startup locking and choose an inactivity timeout; the app can also be locked immediately. Failed unlock attempts receive an increasing retry delay.
This feature only gates normal use through the running Wheat interface. It does not:
wheat.sqlite (the historical database filename) or attachment files at rest;Use a protected Windows account, full-disk/device encryption, and protected backups for actual data-at-rest protection.
Development database:
prisma\dev.db
Wheat stores everything under %APPDATA%\Wheat\. An installation created before the rename is migrated automatically on first launch: the whole %APPDATA%\Wheat\ directory is moved across in one atomic step, keeping its database, documents, backups and updater state, and the database file is renamed to wheat.sqlite. Nothing is merged and nothing is deleted.
Packaged database and startup log:
%APPDATA%\Wheat\wheat.sqlite
%APPDATA%\Wheat\atlas-ledger-startup.log
Local update feed, updater state, staged installers, logs, and the most recent program-file rollback snapshot:
%APPDATA%\Wheat\updates\
%APPDATA%\Wheat\updater\state.json
%APPDATA%\Wheat\updater\updater.log
%APPDATA%\Wheat\updater\staging\
%APPDATA%\Wheat\updater\rollback\
Updater files are deliberately separate from the database, documents, backups, fiscal packages, imports, and Wheat AI data.
Wheat-managed document copies and restored archive attachments are under:
%APPDATA%\Wheat\documents\
Automatic migration, restore, and sample-reset rollback files are under:
%APPDATA%\Wheat\backups\
Migration housekeeping retains the untracked legacy baseline plus one checkpoint for every embedded migration in the current release (ten for 2.0.0). User-selected .wheatbackup (and the legacy .atlasbackup) files are written wherever the user chooses.
Requirements: Windows, Node.js, and npm.
npm install
npm run dev
npm run dev generates the Prisma client and launches the Vite/Electron development app.
Database commands:
npm run prisma:generate
npm run db:push
npm run db:seed
npm run db:reset
npm run db:reset is destructive: it recreates prisma\dev.db and loads the development/sample fixture. It is not the packaged application's clean first-run path.
npm run lint
npm run build
npm run test:updater
npx playwright test tests/wheat-migration-operational.spec.cjs tests/wheat-archive-unit.spec.cjs tests/wheat-subledger-unit.spec.cjs tests/wheat-reconciliation-unit.spec.cjs tests/wheat-local-security-unit.spec.cjs --reporter=line
npx playwright test tests/wheat-migration-compliance.spec.cjs tests/wheat-credit-artifacts-unit.spec.cjs tests/wheat-compliance-unit.spec.cjs tests/wheat-electron-integration-compliance.spec.cjs --reporter=line
npx playwright test tests/wheat-foundations.spec.cjs tests/wheat-migration-fiscal.spec.cjs tests/wheat-electron-integration.spec.cjs tests/wheat-runtime-restart.spec.cjs --reporter=line
npm run test:desktop
npm run test:ocr
The build outputs are dist\ and dist-electron\.
Wheat ships as one product in two editions, built from this one source tree:
| Standard | Lightweight | |
|---|---|---|
| Accounting features, database, dossier format, version | identical | identical |
| Reads a scanned page | locally (PaddleOCR) | in the cloud, with the user's own provider |
| Installer | ~1334 MB | ~293 MB |
| Installed footprint | ~3149 MB, 27 457 files | ~1074 MB, 402 files |
| Interface | full motion, blur, depth | economical profile |
The edition selects execution strategy, packaging and presentation, never
accounting. src/wheatEdition.ts is the source of truth and the value is
compiled into the build. Full detail: docs/wheat-editions.md.
npm run build:standard # renderer + main, compiled as Standard
npm run build:lightweight
npm run dist:standard # db:reset, icon, build, package
npm run dist:lightweight
npm run installer # unchanged; produces Standard
npm run portable
npm run pack
Expected outputs:
release\2.7.0\Wheat-Standard-2.7.0-Setup.exe
release\2.7.0\Wheat-Lightweight-2.7.0-Setup.exe
release\2.7.0\win-unpacked\
Both editions share one appId, one productName, one install directory and
one %APPDATA%\Wheat\, so installing the other edition over this one is an
ordinary in-place upgrade that keeps the dossier, the documents, the backups and
the settings.
package.json.version is the single product-version source of truth. Electron, About, updater metadata, and artifact names derive the SemVer 2.0.0 from it; Windows may represent the file version with a padded fourth component internally.
Packaging commands run npm run db:reset so the bundled sample fixture is current. This resets the development database. A fresh packaged profile still starts empty unless the user explicitly requests the sample workspace.
Locally generated executables are not code-signed, so Windows SmartScreen may request confirmation.
package.json.version to the next SemVer (for example 2.2.0).-, *, or • markers are accepted.npm run dist:standard
npm run update:package -- --notes-file docs\wheat-2.0-release-notes.md --minimum-version 2.0.0
A local feed serves one edition; --edition lightweight (after
npm run dist:lightweight) rehearses the other. A development build of one
edition reading a feed that publishes only the other finds nothing to install,
which is the intended behaviour: Wheat never crosses editions during an update.
--minimum-version is optional. Notes can alternatively be passed with repeated --note "..." arguments. Use --no-publish to create only the repository feed, --output <directory> for an alternate repository/test feed, or set WHEAT_LOCAL_UPDATE_DIR for the installed-app feed. Replacing different bytes for an already-published version is refused unless --force is explicitly supplied; publishing a new version is preferred.
The command calculates SHA-256 and creates:
updates\
latest.json
2.2.0\
Wheat-Standard-2.2.0-Setup.exe
release.json
On Windows it also mirrors that feed to %APPDATA%\Wheat\updates, where an installed Wheat checks on startup. Development reads the repository updates directory (or WHEAT_UPDATES_DIR) and fully validates/stages a release, but never runs the installer or overwrites source files.
For a packaged update, the main process validates schema, compatibility, artifact size, and SHA-256 before copying the installer into updater staging. A separate bundled PowerShell helper waits for Electron and Prisma/OCR workers to close, snapshots the current program directory, invokes the existing Electron Builder NSIS installer with app-data preservation, and relaunches Wheat. On installer failure it restores the snapshot where possible and relaunches the previous executable. The new app must start with the expected package.json.version before the one-time release-notes modal is enabled. Database changes continue exclusively through the existing embedded, checksummed migration runner.
These application safeguards do not replace access controls, independent backups, accounting review, or regulatory validation.
The local-first OCR stack uses bundled PaddleOCR 3.7/PP-StructureV3 as its main engine for text, layout, and table recognition. It includes a pinned portable Python 3.12/PaddlePaddle CPU runtime and offline models in full builds. Tesseract.js with bundled French, English, and Arabic data runs only if PaddleOCR is unavailable or returns no usable text; pdf-parse, sharp preprocessing, rule-based classification and field extraction, local document organization, manual correction, duplicate review, and exports remain in the pipeline.
PaddleOCR runs as a hidden local worker over newline-delimited JSON. Documents are passed by local path or private temporary file, the temporary copy is removed after inference, and the worker cannot persist accounting records. Use npm run paddle:setup to prepare/update the portable runtime and models, and npm run paddle:check for the local health check. The Documents page reports whether PaddleOCR or the Tesseract fallback is active.
An OCR result is a proposal. Invoice extraction creates a reviewable purchase-invoice draft through the desktop bridge; a person must verify identity, dates, totals, VAT, account mapping, and the source image before posting.
Architecture notes are in Smart OCR research.
electron/
accounting.ts Exact money conversion, entry lifecycle, IPC serialization
archive.ts .atlasbackup creation, manifest validation, safe extraction
database.ts Database path, embedded migrations, checks, rollback retention
localSecurity.ts Optional local PIN-lock state and throttling
main.ts Electron integration and accounting/document/backup IPC
paddleOcr.ts Secure lifecycle, health, timeout, and temp-file bridge for local PaddleOCR
preload.ts Context-isolated renderer API bridge
updater/ Provider-neutral validation, staging, state, and Windows installer orchestration
reconciliation.ts Statement import and immutable reconciliation service
reporting.ts Exact paginated books, aging, and integrity checks
smartOcr.ts Local OCR and document extraction
subledger.ts Counterparty, invoice, payment, and settlement service
creditNotes14.ts Linked credits and immutable invoice artifact service
compliance14.ts Versioned TVA workpapers, fiscal close, and local seals
prisma/
migrations/ Versioned, checksummed SQLite migrations
schema.prisma Accounting domain model
seed.ts Explicit fictitious sample workspace
resources/paddleocr/
worker.py Local PaddleOCR/PP-StructureV3 JSON-line worker
requirements.txt Pinned PaddleOCR and PaddlePaddle runtime versions
resources/updater/
update-helper.ps1 Out-of-process NSIS replacement and failure recovery helper
src/
App.tsx Desktop shell, onboarding, recovery, and feature pages
components/ Operational accounting, books, reconciliation, and compliance workspaces
data/ Non-persistent browser-preview data
types/ Preload API typing
tests/
atlas-1.2-*.spec.cjs
atlas-1.3-*.spec.cjs
atlas-1.4-*.spec.cjs
electron-smoke.spec.cjs
ocr-meaningful.spec.cjs
updater.spec.cjs
updater-electron.spec.cjs
Copyright © 2026 Wheat contributors.
Wheat is free software: no subscription, licence key, paid cloud service, or usage fee is required. The source code is licensed under the GNU General Public License v3.0 or later, so users may run, inspect, modify, and redistribute it under those terms. Wheat is provided without warranty.
.wheatbackup (and the legacy .atlasbackup) includes only database-referenced files inside Wheat's managed documents directory. Unmanaged and unreferenced files require a separate retention decision.