How 6931503045-design/lumen_line works
JOD tang is a Thai personal-finance bot with a LINE interface and a same-origin web dashboard. Its main flow is: a LINE message is authenticated and dispatched, fixed commands or the quick parser handle supported input, transaction services apply finance rules and persist results, and LINE replies with text or a card. README documents additional AI-assisted interpretation and receipt reading, but the sampled AI router is a stub and image handling was not sampled, so those branches are shown as documented capabilities without invented call wiring. The tree also shows email import, recurring transactions, savings plans, budgets, summaries, and scheduled jobs; the sampled job registry does not include daily summaries.
Main entry points: textHandler.ts Text handler · api.ts Web API · queries Database queries · transaction.service.ts Transactions
Components 29
LINE interaction
- Webhook endpoint
src/routes/webhook.ts - Text handler
src/handlers/textHandler.ts - Postback handler
src/handlers/postbackHandler.ts - LINE replies
src/line/reply.ts - LINE push
src/line/push.ts
Finance services
- Commands
src/services/command.service.ts - Quick parser
src/utils/regexParser.ts - Transactions
src/services/transaction.service.ts - Budgets
src/services/budget.service.ts - Categories
src/services/category.service.ts - Summaries
src/services/summary.service.ts - Savings plans
src/services/plan.service.ts - Recurring rules
src/services/recurring.service.ts
AI and imports
- AI interpretation
src/services/ai/router.ts - AI safeguards
src/services/ai/guard.ts - Receipt vision
src/services/ai/vision.ts - Bank email import
src/services/email.service.ts
Web and jobs
- Web dashboard
web/js/app.js - Web API
src/routes/api.ts - Job endpoint
src/routes/jobs.ts - Job registry
src/jobs/index.ts - Recurring job
src/jobs/recurringJob.ts - Email polling job
src/jobs/emailPoll.ts - Cleanup job
src/jobs/cleanup.ts - Plan check job
src/jobs/planCheck.ts
Persistence
- Database queries
src/db/queries - Supabase client
src/db/supabase.ts - Supabase database
Other components
- LINE user
Connections 43
- LINE user → Webhook endpoint: sends events
- Webhook endpoint → Text handler: dispatches text
- Webhook endpoint → Postback handler: dispatches postback
- Text handler → Commands: checks commands
- Text handler → Quick parser: parses text
- Text handler → Transactions: creates transaction
- Text handler → Budgets: formats alert
- Text handler → LINE replies: sends reply
- Text handler → LINE replies: sends card
- Postback handler → Transactions: undoes transaction
- Postback handler → Savings plans: saves to plan
- Postback handler → LINE replies: sends reply
- Commands → Summaries: requests summary
- Commands → Savings plans: runs savings command
- Transactions → Database queries: reads and writes
- Budgets → Database queries: reads and writes
- Categories → Database queries: reads and writes
- Summaries → Database queries: reads data
- Savings plans → Database queries: reads and writes
- Savings plans → Transactions: creates transfer
- Recurring rules → Database queries: reads and writes
- Web dashboard → Web API: requests data
- Web API → Transactions: manages transactions
- Web API → Budgets: manages budgets
- Web API → Categories: manages categories
- Web API → Summaries: requests summaries
- Web API → Savings plans: manages plans
- Web API → Recurring rules: manages rules
- Job endpoint → Job registry: dispatches jobs
- Job registry → Recurring job: runs recurring
- Job registry → Email polling job: runs email poll
- Job registry → Cleanup job: runs cleanup
- Job registry → Plan check job: runs plan check
- Recurring job → Recurring rules: creates due entries
- Email polling job → Bank email import: polls email
- Bank email import → Transactions: imports transactions
- Database queries → Supabase client: uses client
- Supabase client → Supabase database: queries
- Text handler → AI interpretation: interprets fallback
- AI interpretation → AI safeguards: uses safeguards
- LINE user → Receipt vision: sends receipt image
- Receipt vision → LINE replies: returns for confirmation
- LINE push → LINE user: sends notifications