Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
튀니스·다카르용 주권 AI SaaS 편집기
É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를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.