Éditeur SaaS d'IA souveraine, Tunis et Dakar. Suivi-évaluation institutionnel, reporting réglementaire bancaire, comptabilité augmentée : chaque chiffre rattaché à sa source, chaque décision reconstru
翻譯準備中
金融TypeScript · PLpgSQLGitHub @ALGORIA-FACTORY上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Malica Office · Comptabilité augmentée pour PME et cabinets · un vertical ALGORIA Factory
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Suite comptable augmentée pour les PME et leurs experts-comptables. La PME photographie une pièce ; le Socle en tire l'écriture, la TVA et l'échéance ; le cabinet supervise et tranche. Vertical de Factory Tower (Algoria Factory).
Marché initial : Tunisie — Système Comptable Tunisien, code TVA tunisien. Extension prévue à l'UEMOA et à l'OHADA par packs de juridiction versionnés.
Un chiffre qui lie relève du Socle ; un texte qui explique relève de Malica.
Le Socle est un ensemble de moteurs déterministes en TypeScript — lecture, écriture, TVA, P&L, échéances, rapprochement, change. Mêmes entrées, même sortie, toujours. Aucun modèle de langage n'y intervient.
Malica est la couche agentique. Elle perçoit, organise, rappelle et explique — mais ne calcule jamais. Pour tout chiffre, elle appelle un moteur du Socle et restitue le résultat avec sa citation.
Cette séparation n'est pas une préférence de style : c'est ce qui permet d'être conversationnel et proactif à l'endroit précis — la comptabilité et le fisc — où inventer un chiffre est interdit.
La lecture se fait en deux passes, et la garantie tient à ce que la seconde ne voit jamais la pièce.
Passe 1 — le relevé. Ce qui est écrit, mot par mot, avec sa boîte. Trois chemins, un seul contrat de sortie :
| Pièce | Relevé par | Coût |
|---|---|---|
| PDF natif | sa propre couche de texte (pdf.js) | aucun — ni modèle ni réseau |
| PDF scanné | image extraite sans canvas, puis l'œil | un appel |
| Image | l'œil (Qwen-VL-OCR) | un appel |
Passe 2 — la désignation. Le raisonneur reçoit le plan de tokens, jamais
l'image. Il ne renvoie que des couples page/ordinal. Aucun montant ne
traverse sa réponse : les valeurs sont relues dans le plan. Une désignation
qui ne correspond à aucun token devient un drapeau, jamais une valeur.
Halluciner un montant est donc structurellement impossible — ce n'est pas un filtrage après coup.
apps/
web/ l'application — PME et cabinet, React + Vite
api/ Express + pg — remplace PostgREST et GoTrue
packages/
socle/ les contrats, les moteurs, les ports et le dictionnaire — partagés
db/
migrations/ le schéma : la source de vérité, rejouée telle quelle
local/ la couche d'authentification et de rôles, rejouable
corpus/ le chargement du corpus juridique, qui s'alimente à part
dev/ le jeu d'essai : un cabinet, deux dossiers, de quoi voir
docs/ maquettes et marque
Un espace de travail npm, une seule règle de style à la racine. packages/socle
est né le jour où l'API est devenue le second consommateur des moteurs : la
lecture citée et Malica y tournent désormais, à côté de l'application. Le
paquet ne se compile pas — Node en décape les types, Vite les résout — et il ne
déclare que decimal.js et zod.
Prérequis : Node.js 22 et PostgreSQL 17 (ou 16).
npm ci
npm run dev # l'application, sur le port 8080
npm run dev:api # l'API, sur le port 3000
La coque Android — le bundle embarqué, puis le projet android/ synchronisé :
npm run coque:staging # build:coque:staging, puis cap sync android
npm run coque:ouvrir # Android Studio sur android/
cd android && ./gradlew assemblePiloteDebug -PversionName=0.1.0 # un APK de débogage, sans Android Studio
Voir docs/coque-native.md pour l'outillage (JDK 21, SDK), et docs/exploitation.md pour les serveurs.
Copiez .env.example en apps/web/.env et apps/api/.env, puis renseignez
les valeurs. Aucun .env n'est suivi par git.
Les trois portes que la CI exécute à chaque poussée :
npm run lint # tout le dépôt
npm run typecheck # les deux applications
npm test # les deux applications
Les tests de l'API ont leur propre base, malica_test, montée depuis les
migrations seules : lancez npm run base-de-test une fois avant npm test,
et chaque fois que vous voulez repartir d'une base vierge. Ils refusent de
s'exécuter contre malica_local, la base de travail.
Les épreuves (outils/epreuves/*.mjs, npm run verifier,
npm run epreuve:bout-en-bout), elles, parcourent l'application en marche et
écrivent donc dans malica_local. Depuis la remise à zéro du métier du
11 septembre 2026, elles sont attendues en échec jusqu'à ce que le parcours
d'onboarding ait recréé un cabinet et sa PME : ne les lancez pas entre les deux,
elles recréeraient les organisations d'essai que la remise à zéro a vidées.
Copiez .env.example en .env et renseignez les valeurs. Le fichier .env
n'est jamais suivi par git.
Le schéma se rejoue depuis les migrations du dépôt — aucune donnée client n'est copiée depuis un environnement distant. Le référentiel fiscal, lui, est semé par les migrations : la base locale est fonctionnelle telle quelle.
$env:PGPASSWORD = '<mot de passe local>'
powershell -File db/local/charger.ps1 -Recreate
Un PostgreSQL nu ne connaît ni auth.uid(), ni les rôles authenticated et
service_role dont dépendent les politiques RLS : db/local/ les recrée
avec la même sémantique.
Les règles d'architecture sont dans AGENTS.md. Elles ne sont pas des conventions : chacune est exécutable, et la CI échoue si elle est violée.