diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml
new file mode 100644
index 00000000..aad6a23e
--- /dev/null
+++ b/.github/workflows/claude-code-review.yml
@@ -0,0 +1,35 @@
+name: Claude Code Review
+
+on:
+ pull_request:
+ types: [opened, synchronize]
+
+jobs:
+ claude-review:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: read
+ issues: read
+ id-token: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+
+ - name: Run Claude Code Review
+ id: claude-review
+ uses: anthropics/claude-code-action@v1
+ with:
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
+ prompt: |
+ Please review this pull request and provide feedback on:
+ - Code quality and best practices
+ - Potential bugs or issues
+ - Performance considerations
+ - Security concerns
+ - Test coverage
+
+ Be constructive and specific in your feedback. Use inline comments
+ to highlight specific lines where relevant.
diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml
new file mode 100644
index 00000000..0c70af76
--- /dev/null
+++ b/.github/workflows/claude.yml
@@ -0,0 +1,38 @@
+name: Claude Code
+
+on:
+ issue_comment:
+ types: [created]
+ pull_request_review_comment:
+ types: [created]
+ issues:
+ types: [opened, assigned]
+ pull_request_review:
+ types: [submitted]
+
+jobs:
+ claude:
+ # Only run when someone mentions @claude in a comment, issue, or review
+ if: |
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
+ (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
+ (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
+ (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: read
+ issues: read
+ id-token: write
+ actions: read # Required for Claude to read CI results on PRs
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+
+ - name: Run Claude Code
+ id: claude
+ uses: anthropics/claude-code-action@v1
+ with:
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
diff --git a/CLAUDE.md b/CLAUDE.md
index d2086efa..7fc95705 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -72,3 +72,6 @@ npm install && npm run dev
- Status: green/blue/yellow/red
- Charts: Custom SVG, CSS Grid for layouts
- No emojis in UI
+
+## Code Style
+- Always document non-obvious logic changes with comments
diff --git a/client/src/App.vue b/client/src/App.vue
index c2da05a5..e3ed2a69 100644
--- a/client/src/App.vue
+++ b/client/src/App.vue
@@ -16,6 +16,9 @@
| Order # | +Items | +Status | +Order Date | +Expected Delivery | +Lead Time | +Total Value | +
|---|---|---|---|---|---|---|
| {{ order.order_number }} | +
+
+
+ {{ order.items.length }} item{{ order.items.length !== 1 ? 's' : '' }}+
+
+
+ {{ item.name }}
+
+
+ |
+ Processing | +{{ formatDate(order.order_date) }} | +{{ formatDate(order.expected_delivery) }} | +{{ order.lead_time_days }} days | +${{ order.total_value.toLocaleString() }} | +
Set a budget and get item recommendations based on demand growth forecasts and current stock levels.
+| + | SKU | +Item | +Category | +Demand Growth | +Rec. Qty | +Unit Cost | +Est. Cost | +Lead Time | +
|---|---|---|---|---|---|---|---|---|
| + + | +{{ item.sku }} |
+ {{ item.item_name }} | +{{ item.category }} | ++ +{{ item.demand_growth_pct.toFixed(1) }}% + | +{{ item.recommended_qty.toLocaleString() }} | +${{ item.unit_cost.toFixed(2) }} | +${{ item.estimated_cost.toLocaleString() }} | +{{ item.lead_days }} days | +
Full-stack demo · Vue 3 frontend · Python FastAPI backend · In-memory mock data
+ + +