Kunthawat Greethong
8b84378fe1
feat: SaaS foundation for CrowdSight
...
Elevate MiroFish/CrowdSight from single-container dev to a SaaS foundation:
- Local memory backend (Zep-compatible): memory services/models, local graph
builder + updater, AgentActivity seam, import-boundary isolation; Zep stays
default, local is opt-in behind MEMORY_BACKEND. Semantic parity not yet proven.
- Durable product persistence: projects/simulations/reports schema (migration
0007) + tenant/owner-scoped ProductRepository + dual-write + scoped_project
read-first + ArtifactStore abstraction; durable JobQueue + worker.py.
- SaaS hardening: durable RateLimiter (wired to login), UsageService (LLM
accounting), redacted AuditService, idempotency, CORS allowlist, safe API
errors, single-use PasswordResetService + endpoints (covers invite-pending).
- Exactly 3 roles (super_admin/admin/user) with tenant authz policy.
- Admin UI: GET/POST/PATCH /api/admin/users + GET/PUT /api/admin/settings
(super-admin only, encrypted/masked); AdminView.vue + SettingsView.vue with
admin/super-admin route guards, th/en i18n.
- Production deploy topology: multi-stage Dockerfile (frontend build + gunicorn
wsgi + nginx SPA-proxy + supervisord worker), backend/wsgi.py, gunicorn dep.
Backend 197 passed; frontend 10 tests + build green. ruff unavailable (gap).
No commit of credentials; secrets handled via env/.env.example.
Deferred: Zep semantic A/B parity, object storage cutover, mobile QA, EasyPanel
container build of deploy topology.
2026-08-31 13:05:21 +07:00
Kunthawat Greethong
c9f76babeb
Phase 4.4: Context-aware entity filtering in Step 1
...
- OntologyGenerator.generate() now accepts template_filter_rules parameter
- When template_id is provided, API loads filter rules from templates.json
- Filter rules injected into ontology system prompt:
- exclude_self: don't create entity for the business/brand that uploaded data
- exclude_types: don't create specific entity types
- focus: guide LLM to focus on specific entity categories
- API endpoint accepts template_id in form data
2026-06-26 11:46:37 +07:00
Kunthawat Greethong
596a75c229
Phase 1+2: Rename CrowdSight + fix Thai vocabulary
...
Phase 1: Rename MiroFish → CrowdSight across all files
- 39 files, 114+ occurrences replaced
- Frontend, backend, locales, config, README, docker-compose
Phase 2: Fix difficult Thai vocabulary
- เมล็ดพันธุ์แห่งความจริง → ข้อมูลตั้งต้น
- สกัดเอนทิตี → ดึงตัวละคร
- ฉีดความจำ → เพิ่มความจำ
- ออนโทโลยี → โครงสร้างข้อมูล
- เอนทิตี → ตัวละคร
- พลวัตกลุ่ม → พฤติกรรมกลุ่ม
- โลกคู่ขนาน → โลกจำลอง
Only string changes, no logic changes.
2026-06-26 10:27:48 +07:00
ghostubborn
7c07237544
fix(i18n): pass locale to background threads via thread-local storage
...
Background threads (graph building, simulation prep, report generation,
profile generation) now inherit the requesting user's locale preference.
Previously these fell back to 'zh' because Flask request context was
unavailable in spawned threads.
2026-04-01 16:55:51 +08:00
ghostubborn
9d43b77511
feat(i18n): replace hardcoded Chinese in backend SSE progress messages
2026-04-01 16:32:10 +08:00
ghostubborn
74f673a238
feat(i18n): replace hardcoded Chinese in backend API responses with t() calls
2026-04-01 15:32:24 +08:00
666ghj
c60e6e1089
Refactor project creation process in API documentation and code
...
- Updated README.md to reflect the removal of the project creation endpoint, adjusting the workflow steps accordingly.
- Removed the `create_project` function from graph.py, streamlining the project management API by eliminating deprecated functionality.
2025-11-29 00:47:54 +08:00
666ghj
08f417f3b7
Introduce Project ID for context management, finalizing the stateful API pipeline from file submission to graph construction.
2025-11-28 17:21:08 +08:00