Diagram Studio
Visualize architecture, flows, and entity relationships.
Module
Dependency
Active Flow
Press enter or space to select a node.You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
Node Details
Select a node in the diagram to view detailed properties and linked artifacts.
AI CopilotBeta
Hello! I'm your AI modernization copilot. I have context on your legacy CRM codebase. How can I help you today?
Explain the billing flow and identify the 3 riskiest assumptions.
The billing flow in your legacy PHP app is primarily centered around `src/billing/invoice_gen.php`.
**Flow Overview:**
1. A cron job triggers the billing run.
2. It fetches all active subscriptions using a large raw SQL join.
3. For each customer, it calculates the usage and generates a PDF using a legacy library.
4. It calls the Stripe API (v2015-04-07) to process payments.
**Riskiest Assumptions:**
- **Database Consistency:** The SQL query assumes that all records in `subscriptions` have a matching `customer_id` in the `users` table, but there are no foreign keys in the legacy schema.
- **API Availability:** The Stripe API call is synchronous and lacks a retry mechanism. If Stripe is down, the billing run fails mid-way without recording progress.
- **Concurrency:** The billing run is not idempotent. Running it twice on the same day will double-charge customers.
#repo#analysis#pseudo