chore(task): archive 07-09-ai-fee-frontend

This commit is contained in:
2026-07-09 17:20:41 -07:00
parent ef4dd21d32
commit b8d08cd461
6 changed files with 2 additions and 2 deletions

View File

@@ -0,0 +1 @@
{"_example": "Fill with {\"file\": \"<path>\", \"reason\": \"<why>\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."}

View File

@@ -0,0 +1,80 @@
# AI Presentation And Fee Workspace Design
## Scope
This task keeps the current AI product surface and adds one new frontend-only fee workspace. It intentionally does not add a separate AI center, a billing database schema, or external finance integrations.
## AI Boundary
The visible AI workflow remains split across the existing layers:
- `modules/ai/server/analysis.ts` keeps permission checks, elder context lookup, prepared structured outputs, persisted history metadata, and audit logging.
- `modules/ai/components/ElderAiAnalysisDialog.tsx` keeps loading history and requesting a refreshed analysis through the existing API.
- `modules/dashboard/components/DashboardHome.tsx` continues to present the organization-scoped prepared analysis board.
- `modules/ai/components/KnowledgeManagementClient.tsx` remains persisted knowledge CRUD, but user-facing copy describes business value rather than retrieval chunks or implementation details.
No external model provider is called by the visible analysis path. The implementation pass will audit visible wording and remove provider, local retrieval, seed, synthetic, mock, and demo language without weakening permission or restricted-result behavior.
## Fee Workspace Boundary
Create a new `modules/billing/` frontend domain:
- `types.ts` owns fee account, charge item, payment, status, and summary types plus display constants and pure calculation helpers.
- `lib/presentation-data.ts` owns the initial organization fee ledger used by the workspace.
- `components/BillingWorkspaceClient.tsx` owns all browser-session interactions.
Create routes:
- `app/(app)/app/billing/page.tsx`
- `app/(app)/app/[organizationSlug]/billing/page.tsx`
The server route performs the normal authentication and organization checks, gates the page with `admission:manage`, and passes the initial ledger into the client component. No API route or database table is added.
## Navigation
Add `费用管理` to the operations group after `床位房间`. Reuse `admission:manage` so only current institution administrators and operations managers see and operate the workspace. Add a Lucide wallet/receipt icon through the existing sidebar icon map.
## Fee Data Model
Each resident statement contains:
- statement id, resident identity, room/bed label, billing period, due date
- charge items with category, description, quantity, unit price, and amount
- payment records with amount, method, time, reference, operator, and note
- invoice state and receipt count
Totals and status are derived from charge and payment records:
- `paid`: outstanding amount is zero
- `partial`: at least one payment exists and an outstanding amount remains
- `pending`: no payment and not past due
- `overdue`: outstanding amount remains after the due date
All currency is represented as integer cents internally and formatted as CNY for display.
## Interactions
The fee workspace provides:
- overview metrics for current receivables, collected amount, outstanding amount, and overdue households
- resident/statement search and status filtering
- statement detail dialog with itemized charges and payment history
- charge registration dialog that appends a new item and recalculates totals
- payment registration dialog with amount and method validation, then local statement/status updates
- receipt and invoice actions that update the current browser-session record and return credible product feedback
Controls must not be decorative. Every visible command either changes local state, opens usable detail, or returns explicit success/error feedback.
## Responsive Layout
- Use the existing `max-w-7xl`, operational header, metric cards, table, badge, select, input, button, and dialog patterns.
- Keep tables horizontally scrollable with explicit minimum widths.
- Stack toolbar controls and dialog form fields at narrow widths.
- Keep touch targets at least the existing button height and avoid text overlap.
## Compatibility And Rollback
- Existing AI API and database contracts remain unchanged.
- No migration or production data backfill is required.
- Rollback consists of removing the billing route/module/nav item and reverting the small AI copy edits.
- The task-specific requirement for a frontend-only fee presentation workspace is an intentional exception to the generic persisted-operational-module guideline.

View File

@@ -0,0 +1 @@
{"_example": "Fill with {\"file\": \"<path>\", \"reason\": \"<why>\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."}

View File

@@ -0,0 +1,44 @@
# AI Presentation And Fee Workspace Implementation Plan
## 1. AI Surface Audit
- [x] Confirm the visible elder analysis path has no external provider call.
- [x] Replace technical knowledge retrieval and failure-history wording with product-facing copy.
- [x] Keep analysis history, refresh/generate behavior, citations, and permission redaction intact.
- [x] Add or adjust focused assertions for user-visible AI copy where practical.
## 2. Fee Domain
- [x] Add billing types, labels, currency helpers, status derivation, and summary calculations.
- [x] Add realistic initial resident statements with itemized fees and payments.
- [x] Add unit tests for amount totals, payment application, and status derivation.
## 3. Fee Workspace UI
- [x] Build overview metrics, search, filters, and responsive statements table.
- [x] Build statement detail with charge items and payment history.
- [x] Build charge registration and payment registration flows with validation.
- [x] Build receipt and invoice actions with state updates and visible feedback.
## 4. Routing And Navigation
- [x] Add scoped and unscoped billing routes with authentication and `admission:manage` gating.
- [x] Add `费用管理` and a Lucide icon to the operations navigation.
- [x] Verify workspace breadcrumbs and organization-scoped links resolve correctly.
## 5. Validation
- [x] Run focused billing and AI tests.
- [x] Run `pnpm lint`.
- [x] Run `pnpm type-check`.
- [x] Run `pnpm test`.
- [x] Run `pnpm build`.
- [x] Start the development server and smoke-test AI and billing flows in the browser at desktop and mobile widths.
- [x] Check browser console errors, text clipping, dialog geometry, and interactive state updates.
## Risk And Rollback Points
- Keep the billing domain isolated so removal does not affect persisted modules.
- Do not change `Permission`, role seed, schema, or migrations for the frontend-only workspace.
- Reuse `admission:manage`; changing authorization is out of scope.
- Do not alter AI API response shapes or stored analysis records.

View File

@@ -0,0 +1,43 @@
# AI Presentation And Fee Workspace PRD
## Goal
Make the product presentation-ready by clarifying and stabilizing the visible AI workflows, then add a complete-looking fee management workspace that behaves like a normal product feature without exposing implementation shortcuts in the UI.
## Background
- The current elder AI analysis no longer calls an external model provider. `modules/ai/server/analysis.ts` builds prepared structured analysis outputs while preserving permission checks, elder context lookup, history records, and audit behavior.
- The dashboard AI board also renders prepared analysis content and fills missing records with generated presentation data.
- The elder AI dialog still uses the AI API for history loading and analysis generation, and knowledge management still uses persisted CRUD APIs.
- The product has no fee, billing, payment, invoice, or receipt workspace, permission, API, or database model.
- Earlier project scope treated fee records as a useful complete-product capability while payment settlement, insurance integration, and external finance integrations were deferred.
## Requirements
1. Audit all visible AI entry points and remove wording or interaction behavior that exposes provider, seed, synthetic, mock, or demo implementation details.
2. Keep AI interactions stable and immediately usable in a presentation environment without depending on an external model service.
3. Preserve the existing authorization and resident data-scope presentation behavior for AI analysis.
4. Add a discoverable fee management workspace under the main operations navigation.
5. Implement the fee workspace as frontend-only interactive state with realistic resident account data and no new database schema or payment integration.
6. The fee workspace must cover an operational loop rather than a static screen: overview metrics, account search/filtering, charge detail, payment registration, and receipt/invoice-oriented actions.
7. All user-visible labels and messages must read as production product copy. Do not display `mock`, `demo`, `sample`, `seed`, `synthetic`, `placeholder`, or equivalent Chinese wording.
8. Keep visual structure consistent with the existing quiet operational dashboard, table, badge, dialog, and responsive layout patterns.
## Acceptance Criteria
- [x] Every visible AI route and action has been classified as prepared/local, persisted backend, or external-provider dependent, and the final visible workflow has no external-provider dependency.
- [x] Elder AI analysis opens with usable history, can produce a new structured result, and never exposes implementation-specific wording.
- [x] Knowledge management remains coherent with the chosen AI presentation scope and contains no technical copy about local retrieval chunks or provider configuration.
- [x] A `费用管理` navigation entry opens in both scoped and unscoped workspace routes.
- [x] The fee page shows realistic totals for receivables, collected amount, outstanding amount, and overdue accounts.
- [x] Users can search and filter resident accounts, open a statement/detail view, register a payment, and see the affected account totals/status update in the current browser session.
- [x] Users can invoke receipt or invoice-oriented actions with credible success feedback and without dead controls.
- [x] The fee workspace is usable at desktop and mobile widths without overlapping controls or clipped text.
- [x] Lint, type-check, focused tests, production build, and browser smoke verification pass.
## Out Of Scope
- Persisting fee data to PostgreSQL.
- Real payment gateways, refunds, reconciliation files, tax invoices, insurance, or medical reimbursement integrations.
- Changing the core authorization model solely for the frontend fee workspace.
- Adding a new external AI provider path or restoring model calls.

View File

@@ -0,0 +1,26 @@
{
"id": "ai-fee-frontend",
"name": "ai-fee-frontend",
"title": "梳理 AI 功能并补齐费用前端",
"description": "",
"status": "completed",
"dev_type": null,
"scope": null,
"package": null,
"priority": "P2",
"creator": "TalexDreamSoul",
"assignee": "TalexDreamSoul",
"createdAt": "2026-07-09",
"completedAt": "2026-07-09",
"branch": null,
"base_branch": "main",
"worktree_path": null,
"commit": null,
"pr_url": null,
"subtasks": [],
"children": [],
"parent": null,
"relatedFiles": [],
"notes": "",
"meta": {}
}