内容
# LibreJustice
自由司法搜索引擎,专注于**法国司法判决** —— 行政部门(TA/CAA/CE)和司法部门(最高法院、上诉法院、司法法院、商业法院)—— 基于**Postgres + ParadeDB + VectorChord**的单服务器节点,通过Web界面和**MCP**端点提供服务。
## 技术栈
纯Rust工作空间,分为两个根目录:
- `packages/` — 库:
- `lj-core` — 纯核心:解析/标准化/提取,摘要,法律引用。
- `lj-sources` — I/O源(Judilibre JSON,ZIP/XML开放数据)。
- `lj-store` — Postgres访问(tokio-postgres + deadpool)+ 迁移。
- `lj-llm` — 嵌入式后端 + 缓存 + 量化 + Mistral客户端(聊天/OCR)。
- `lj-dtos` — API ↔ Web接口(serde)。
- `lj-telemetry` — 跟踪 + OTLP导出。
- `lj-api` — API层(Axum + MCP rmcp + OAuth)。
- `lj-web` — Leptos前端(SSR + WASM注入),Tailwind。
- `apps/` — 可交付二进制文件:
- `lj-server` — 统一部署:API + MCP/OAuth + SSR + TLS。
- `lj-ingest` — ingestion CLI + cron运行器。
## 构建与开发
Rust工具链由`rust-toolchain.toml`固定。我们使用[`mise`](https://mise.jdx.dev)进行任务:
```bash
mise run test # rustfmt --check + clippy -D warnings + cargo test --workspace
mise run dev # 合并lj-server(cargo leptos watch,:3000)
```
本地数据库:`podman compose -f infra/docker-compose.yml up -d postgres`。
## 部署
通过**podman compose**(`infra/docker-compose.yml`)进行单服务器部署:Postgres(ParadeDB + VectorChord),合并二进制文件`lj-server`和ingestion cron。配置`.env`(参见`.env.example`),然后:
```bash
podman compose -f infra/docker-compose.yml --profile prod up -d --build
podman compose -f infra/docker-compose.yml exec -T cron lj-ingest migrate # 迁移
```
`lj-server`提供API,MCP/OAuth,SSR和资产(TLS进程内)。
## 许可证
[Apache-2.0](LICENSE)。