Commit Graph

45 Commits

Author SHA1 Message Date
liyizhouAI 9efdced7f2 fix: report prompt alignment + auto-report trigger + failed report redirect
1. Report prompt now extracts user's core questions from simulation_requirement
   and structures the report to directly answer them (e.g. "will it go well?",
   "where are the problems?") instead of generic future-prediction questions.

2. Step3Simulation auto-triggers report generation 1.5s after simulation completes.

3. ReportView auto-redirects to latest successful report when current report
   has failed, via /api/report/check/<simulation_id> endpoint.
2026-04-17 13:16:03 +08:00
liyizhouAI 8b77a7b9ba fix: report 429 retry + theme toggle on all pages
- LLMClient: increase retries 5→8, backoff 1s→2s, max 30s→60s for GLM rate limit recovery
- Report agent: add 3s delay between sections to avoid sustained 429
- Add theme-toggle-anchor to SimulationRun/Report/Interaction/Replay views
- All pages now have dark/light theme toggle button
2026-04-17 08:36:58 +08:00
liyizhouAI f1f2ea4ea5 fix: v0.3.1 - 7 bug fixes unblock end-to-end production flow
First successful E2E test uncovered 7 blocking bugs. All fixed and deployed
to production server. User confirmed full pipeline now runs through.

## Bug Fixes

### #1 LLMClient exponential backoff retry
- recognize RateLimitError / 429 / 5xx / 1302 / timeout / connection errors
- 5 retries with 1→2→4→8→16s backoff + random jitter
- file: backend/app/utils/llm_client.py

### #2 GLM → Qwen 32B dual-LLM fallback (ontology generation)
- primary LLM (智谱 GLM-4-Flash) retries exhausted → single attempt fallback to
  SiliconFlow Qwen 2.5-32B via GRAPHITI_LLM_* config
- solves GLM low RPM quota intermittent throttling
- fallback does NOT retry (avoid cascade)
- file: backend/app/services/ontology_generator.py

### #3 Qwen 32K context overflow
- MAX_TEXT_LENGTH_FOR_LLM 50000 → 28000 chars
- ensures prompt+response stays under 32768 tokens
- truncated docs get marker line "[文档已截断以适应 LLM 上下文窗口]"
- file: backend/app/services/ontology_generator.py

### #4 Neo4j entity summary flatten via monkey-patch
- Qwen occasionally returns {summary: {value, type, title, description}}
  which Neo4j rejects (properties must be primitives)
- monkey-patch Neo4jEntityNodeOperations.save / save_bulk
- recursive _flatten_entity_property extracts .value from nested dicts,
  json.dumps as string fallback
- file: backend/app/services/graphiti_client.py

### #5 Frontend stuck at /process/new with no pending state
- pendingUpload is in-memory reactive, lost on refresh / direct URL
- MainView.handleNewProject early-returned on empty state without navigating,
  leaving UI permanently in "waiting for ontology" limbo
- fix: detect empty state, log redirect msg, router.replace to Home after 800ms
- file: frontend/src/views/MainView.vue

### #6 Semaphore 100 → 30 (OASIS simulation)
- high concurrency triggered GLM rate limit cascade during profile/action LLM calls
- drop to 30 eliminates 1302 retries, total runtime impact < 10%
- file: backend/scripts/run_parallel_simulation.py

### #7 SimulationReplayView redesigned to Manus cinematic style
- previous 3-column analyst panel felt like a dashboard, not a replay
- new single-column immersive layout matching Manus's "observation window":
  - top breadcrumb: "Foresight is running Reddit simulation · Round 8/15"
  - main stage: browser chrome + native-style platform post card
    (Reddit subreddit header / Twitter tweet header)
  - action type badges, agent avatars with gradient palettes
  - stage meta bar: per-round action counts by type
- bottom scrubber row: timestamp chip + Jump to live button + live indicator
  (pulsing green dot when sim is running) + step/play/step buttons + 5 speed levels
- bottom task bar: current pipeline step icon/label/progress
- dark theme (#0A0A0B base + #FF5722 accent)
- analyst mode toggle (◫/▦) preserves original 3-column view
- auto-polling every 10s while sim is running, auto-tracks live position
- file: frontend/src/views/SimulationReplayView.vue

## Docs
- PRD.md bumped to v0.3.1 with full hotfix changelog + decision log entries
2026-04-15 13:25:05 +08:00
liyizhouAI 1fef01d979 feat: v0.3 - Manus replay + token tracking + SIGTERM fix + accelerate button
This is the v0.3 milestone commit before the v0.4 big version push.
Major themes: process replay, runtime stability, cost observability.

## New Features

- **Manus-style process replay** (frontend + backend)
  - `GET /api/simulation/<id>/replay` returns full workflow + agents + rounds + aggregate
  - `frontend/src/views/SimulationReplayView.vue` 3-column layout (workflow / actions / stats)
  - bottom scrubber with play/pause/step + 5 speed levels (0.5x-10x)
  - filters out stale actions from previous runs via latest simulation_start timestamp

- **Token usage tracking** (`backend/app/utils/token_tracker.py`)
  - process-wide stage→model→tokens counter
  - LLMClient auto-records prompt/completion tokens after each call
  - stages tagged at API entry: step1_ontology, step2_graph_build, step3_prepare, step5_report
  - `GET /api/usage/summary` for live stats + CNY cost estimate
  - `GET /api/usage/estimate-simulation` for OASIS subprocess estimation
  - pricing table for GLM/SiliconFlow/MiniMax/OpenAI/Anthropic models
  - documented as internal-use, removed from customer-facing builds

- **Step 2 "Skip & Continue" button**
  - lets user stop profile generation early and proceed with what's already generated
  - `simulation_manager.request_accelerate()` + cancel_check in oasis_profile_generator
  - new endpoint `POST /api/simulation/prepare/accelerate`

## Critical Bug Fix

- **SIGTERM no longer kills running simulation subprocess**
  - root cause: `SimulationRunner.register_cleanup()` registered SIGTERM/SIGINT/SIGHUP handlers
    that called `os.killpg` on every tracked sim child, even though spawn already used
    `start_new_session=True` to give children isolated sessions
  - fix: neutered `register_cleanup` to a no-op; `cleanup_all_simulations` itself preserved
    for explicit stop_simulation paths
  - validated: killed Flask backend twice, simulation subprocess kept running
  - impact: hot-reload backend code without interrupting in-flight simulations

## Performance & Tuning

- semaphore 30 → 100 (twitter + reddit) for higher LLM concurrency
- discovered 200 agents as memory/cost/statistical sweet spot for 8G server
  (503 agents OOMs both platforms; 200 agents fits cleanly with 95% confidence margin)

## Documentation

- **PRD.md** rewritten as v0.3 baseline (10 chapters + 2 appendices, 639 lines)
  - product positioning across 3 usage modes (one-shot / model-reuse / SaaS)
  - v0.4 roadmap: domestic platforms (douyin/wechat/xiaohongshu/weibo), fork sim, multi-tenant
  - operational lessons: HF mirror, Tencent PyPI mirror, GLM-4-Flash choice, agent count
  - decision log with dates
  - per-stage token/cost breakdown for typical 200-agent run
- **README.md / README-ZH.md** updated with replay step + Graphiti+Neo4j

## Files Touched

19 files changed, 1105 insertions(+), 246 deletions(-)
2026-04-15 09:37:22 +08:00
liyizhouAI a245106514 feat: add error recovery UI + HTTPS API endpoint
- Add retry/home buttons when errors occur in graph building
- Improve error messages: Network Error, timeout, missing files
- Clear guidance for users when page refresh loses upload state
- API endpoint switched from HTTP to HTTPS (api.foresight.yizhou.chat)

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-04-13 23:00:15 +08:00
liyizhouAI ded715feb2 feat: merge upstream i18n + rebrand MiroFish → Foresight 先见之明
- Merge 41 upstream commits (i18n for 7 languages, security fixes, new features)
- Rebrand all MiroFish references to Foresight/先见之明 across 37 files
- Re-apply dark theme CSS overhaul (pure black/gray, no blue tints)
- Re-apply Teleport-based theme toggle (inline with brand, 20px gap)
- Restore Foresight logo and favicon
- Update GitHub links to liyizhouAI/foresight
- Update locale files, README, package.json

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-04-11 16:40:13 +08:00
ghostubborn 2421010fe1 fix(i18n): fix English workflow desc font size with correct CSS selectors 2026-04-01 19:11:22 +08:00
ghostubborn 3929c3ade2 fix(i18n): further shorten English metrics and improve workflow layout 2026-04-01 19:07:19 +08:00
ghostubborn 21922da6cc fix(i18n): improve English layout for homepage left-pane and report title
- Add sans-serif font for English left-pane (status, workflow sections)
- Shorten English workflow step descriptions
- Reduce English report title font-size from 36px to 28px
2026-04-01 19:04:38 +08:00
ghostubborn 6db3f98a48 fix(i18n): fix English homepage layout with proper font and shorter copy
- Use sans-serif font for English titles, descriptions and navbar
- Shorten English hero text to avoid overflow
- Fix :global() scoped CSS issue that was setting root font-size to 3.5rem
- Use separate unscoped style block for html[lang] selectors
2026-04-01 18:04:05 +08:00
ghostubborn 3a8451c119 feat(i18n): replace remaining hardcoded Chinese in frontend addLog calls 2026-04-01 17:21:55 +08:00
ghostubborn e1db8bacc2 feat(i18n): replace hardcoded Chinese in frontend addLog() messages 2026-04-01 16:35:35 +08:00
ghostubborn ffe6369c52 fix(i18n): fix curly quotes in Home.vue and remove unused dark theme from LanguageSwitcher 2026-04-01 16:23:52 +08:00
ghostubborn 70833821a2 feat(i18n): replace hardcoded Chinese in frontend views with i18n calls 2026-04-01 15:36:29 +08:00
ghostubborn 3d5e5d024d feat(i18n): add language switcher component to navigation 2026-04-01 15:24:58 +08:00
666ghj a795405428 style(home): add overflow-y property to upload zone and adjust alignment for files 2026-02-22 23:40:40 +08:00
666ghj ede410620a fix(Home.vue): update version text from V1.0 to v0.1 for accuracy 2026-01-14 15:16:52 +08:00
666ghj e6da45ee63 feat(history): 添加首页历史项目展示组件
- 新增 HistoryDatabase.vue 组件,实现扇形堆叠到网格展开的动画效果
- 后端 simulation.py 添加历史模拟数据 API 支持
- 修复 SimulationManager 过滤隐藏文件问题
- 前端 simulation.js 添加获取历史模拟数据的 API 方法
- Home.vue 集成历史项目展示组件
- 实现正方形网格背景装饰效果
2025-12-31 17:54:39 +08:00
666ghj 1987f535ce Update font weights in Home.vue for improved visual hierarchy and consistency. 2025-12-26 17:41:18 +08:00
666ghj 44424f29ba Update font styles across the application to include 'Noto Sans SC' for improved typography consistency. 2025-12-26 17:35:09 +08:00
666ghj e8491831da Update Home.vue to change GitHub link to the correct repository URL for accurate navigation. 2025-12-23 11:18:40 +08:00
666ghj 9d09a34895 Update Home.vue to remove trailing punctuation in hero description for improved readability 2025-12-19 16:02:25 +08:00
666ghj 70922a3525 Implement interaction features in Step5Interaction component and add routing for interaction view
- Introduced the Step5Interaction component for user interaction with report agents and simulation profiles.
- Added chat functionality to communicate with report agents and selected simulation agents.
- Implemented a survey feature to gather responses from multiple agents.
- Enhanced routing by adding a new InteractionView for seamless navigation to the interaction interface.
- Updated the router configuration to include the new interaction route.
- Improved UI elements and styles for better user experience in the interaction process.
2025-12-16 17:50:43 +08:00
666ghj f904407741 Implement report generation features and UI enhancements
- Added a new API for generating reports, including functions to retrieve report status, agent logs, console logs, and report details.
- Enhanced the Step3Simulation component to manage report generation with loading indicators and improved user feedback during the process.
- Introduced a new Step4Report component to display report details and logs, providing a comprehensive view of the report generation workflow.
- Updated routing to include a dedicated report view, improving navigation and user experience in the application.
2025-12-13 21:49:34 +08:00
666ghj 307990d7b6 Update profile display logic in Step2EnvSetup and modal components for consistency
- Changed profile display from 'realname' to 'username' and 'name' for better clarity and consistency across the application.
- Enhanced CSS for header alignment in multiple views, ensuring a centered layout for improved visual appeal.
2025-12-12 18:51:08 +08:00
666ghj f590784345 Enhance Step3Simulation and Step2EnvSetup components for improved clarity and user experience
- Updated estimated time messages in Step2EnvSetup.vue to specify agent scale for better context.
- Refactored Step3Simulation.vue to improve action tracking, including clearer labels and enhanced UI elements.
- Introduced a tooltip for available actions, providing users with quick reference during simulations.
- Improved styling and layout for better readability and interaction, including adjustments to button and card designs.
2025-12-12 18:19:45 +08:00
666ghj ec418c1def Implement simulation environment management features in frontend
- Added new API functions for closing the simulation environment and retrieving its status.
- Enhanced the SimulationRunView and SimulationView components to gracefully handle simulation termination when navigating between steps.
- Introduced logging for better user feedback during the simulation closure process, including attempts to force stop if graceful closure fails.
2025-12-12 16:25:28 +08:00
666ghj 0577ecdae8 Add new JSON data file and enhance simulation management features
- Introduced a new JSON data file containing detailed actions and quotes related to the 武大声誉修复基金 initiative.
- Updated the OasisProfileGenerator to ensure compatibility with the new JSON format, emphasizing the inclusion of user_id.
- Modified simulation management to support independent tracking of Twitter and Reddit platforms, including completion status and round information.
- Enhanced the SimulationRunner to accurately reflect the completion state of each platform and added checks for overall simulation completion.
- Improved the GraphPanel and Step3Simulation components to provide real-time updates and better user feedback during simulations.
2025-12-12 16:13:08 +08:00
666ghj f8a58819fa Enhance simulation functionality and frontend components for improved user experience
- Updated the simulation API to include a new 'force' parameter, allowing users to restart simulations while cleaning up previous logs.
- Enhanced the simulation status detail retrieval to include all actions and platform-specific actions for better monitoring.
- Introduced a new SimulationRunView component to manage the simulation process, providing a clear interface for users to start and monitor simulations.
- Improved the Step3Simulation component with detailed logging and progress indicators, ensuring users receive real-time updates during the simulation.
- Added new API endpoints for retrieving simulation posts and actions, enhancing the overall functionality and user engagement.
2025-12-12 14:44:10 +08:00
666ghj fdbb0e2dc4 Update Step1GraphBuild.vue and Step2EnvSetup.vue with API endpoint notes and enhanced styling
- Added API endpoint notes for simulation creation and preparation in Step1GraphBuild.vue and Step2EnvSetup.vue respectively.
- Updated badge styling for processing state to improve visibility.
- Enhanced the narrative box layout and added a custom checkbox for configuring simulation rounds in Step2EnvSetup.vue.
- Introduced a new section for simulation rounds configuration, including user-defined options and estimated time for completion.
2025-12-11 23:55:54 +08:00
666ghj 01d94f3d21 Update simulation components and descriptions for clarity and functionality
- Added a new method in simulation.js for retrieving detailed run status.
- Revised descriptions in Step1GraphBuild.vue and Step2EnvSetup.vue for improved clarity on simulation processes.
- Updated titles and labels in Step2EnvSetup.vue to better reflect the initialization and setup stages.
- Enhanced styling and layout in Step2EnvSetup.vue for a more cohesive user experience.
- Adjusted descriptions in Home.vue to accurately represent the simulation workflow.
2025-12-11 17:02:17 +08:00
666ghj fc95cc6595 Add simulation API and environment setup components
- Introduced simulation.js API for creating and managing simulations, including methods for creating, preparing, and retrieving simulation statuses.
- Added Step1GraphBuild.vue and Step2EnvSetup.vue components to facilitate the graph building and environment setup processes, enhancing user interaction and workflow.
- Updated MainView.vue to integrate new components and manage the simulation workflow, including step indicators and navigation between steps.
- Created SimulationView.vue for displaying simulation details and managing the simulation environment, improving overall user experience and functionality.
2025-12-11 15:09:24 +08:00
666ghj ba6f63fcbd Enhance MainView.vue with workflow step indicators and improved styling
- Updated button labels to display localized text for different view modes.
- Added a workflow step indicator to provide users with progress context.
- Enhanced styling for header elements, including font adjustments and layout improvements for better visual consistency.
2025-12-11 13:54:30 +08:00
666ghj 35da38e1c9 Add GraphPanel and WorkbenchPanel components for enhanced visualization and interaction
- Introduced GraphPanel.vue for dynamic graph visualization, featuring real-time updates, node and edge detail panels, and loading states.
- Added WorkbenchPanel.vue to manage ontology generation and graph building processes, including progress tracking and system logs.
- Updated MainView.vue to integrate both panels, allowing users to switch between graph and workbench views seamlessly.
- Enhanced styling across components for improved user experience and visual consistency.
2025-12-11 11:39:42 +08:00
666ghj a661046779 Refactor Process.vue layout and enhance full-screen functionality
- Updated the navigation bar to include a centralized step indicator for improved visibility.
- Introduced a full-screen toggle feature, allowing users to expand the graph display for better interaction.
- Enhanced styling for panels and buttons, including adjustments to dimensions, colors, and hover effects for a more cohesive user experience.
- Improved layout responsiveness and added transitions for smoother visual effects during state changes.
2025-12-10 21:34:46 +08:00
666ghj a90b683a44 Enhance graph data retrieval and detail display in Process.vue and graph_builder.py
- Updated the `get_graph_data` method in `graph_builder.py` to include additional attributes such as creation time, validity periods, and episodes for nodes and edges, improving the richness of the graph data.
- Modified the detail panel in `Process.vue` to present new attributes, including properties, episodes, and timestamps, enhancing user interaction and data visibility.
- Improved styling for the detail panel to better organize and present the comprehensive information for selected nodes and edges.
2025-12-10 19:26:30 +08:00
666ghj 8565f04d22 Add detailed node and edge information panel in Process.vue
- Implemented a detail panel that displays comprehensive information for selected nodes and edges, enhancing user interaction and data visibility.
- Introduced functions to select nodes and edges, allowing users to view specific attributes such as UUID, creation date, and labels.
- Added styling for the detail panel to improve layout and readability, ensuring a better user experience during graph interactions.
- Included functionality to close the detail panel and format dates for better presentation of temporal data.
2025-12-10 18:59:28 +08:00
666ghj b7db395dfc Enhance graph data handling and user interaction in Process.vue
- Updated graph data display to include fallback options for node and edge counts, improving robustness.
- Introduced a manual refresh button for graph data, enhancing user control and experience.
- Adjusted polling interval for graph data fetching from 3 seconds to 10 seconds, optimizing performance.
- Improved progress tracking and logging during graph construction, providing clearer feedback to users.
2025-12-10 18:46:33 +08:00
666ghj 23927dc64b Enhance graph visualization and data polling in Process.vue
- Added real-time graph data visualization with loading and waiting states to improve user feedback during graph construction.
- Implemented a polling mechanism to fetch graph data every 3 seconds, ensuring the graph updates dynamically as data becomes available.
- Improved error handling and rendering logic to manage different graph states effectively.
- Enhanced styling for loading indicators and graph elements for better user experience.
2025-12-10 18:34:49 +08:00
666ghj 5a27b7ca71 Add D3.js dependency and implement pending upload state management
- Added D3.js as a dependency in `package.json` and `package-lock.json` for data visualization capabilities.
- Introduced a new `pendingUpload.js` store to manage files and simulation requirements before initiating the simulation process.
- Updated `Home.vue` to store pending uploads and navigate to the `Process` page immediately, deferring API calls for improved user experience.
- Enhanced `Process.vue` to handle new project initialization and display project status effectively, including progress tracking for ontology generation and graph building.
2025-12-10 18:17:26 +08:00
666ghj d4dd4b3dae Revise Home.vue content and layout for enhanced clarity and engagement
- Updated section descriptions to better reflect simulation capabilities and processes.
- Changed metric values and labels to provide clearer insights into performance and cost.
- Enhanced workflow steps with more detailed descriptions for improved user understanding.
- Renamed upload section label for better contextual relevance.
- Adjusted styling for improved layout and readability across components.
2025-12-10 17:06:38 +08:00
666ghj 81e2f3d33d Implement scroll functionality and enhance button styling in Home.vue
- Added a scroll-to-bottom feature for improved navigation experience.
- Refactored the start simulation button layout by wrapping it in a new console section for better organization.
- Enhanced button styles with animations and improved disabled state appearance for a more engaging user interface.
2025-12-10 16:28:30 +08:00
666ghj 81b3fb3195 Revamp homepage content and styling
- Updated the navigation bar to include a link to the project's GitHub page, enhancing accessibility.
- Redesigned the hero section with a new title and description, emphasizing the capabilities of MiroFish.
- Improved text styling and layout for better readability and visual appeal, including adjustments to font sizes and weights.
- Added new CSS classes for enhanced styling of elements, including highlights and animations, to create a more engaging user experience.
2025-12-10 16:11:16 +08:00
666ghj 6226cbac16 Enhance homepage layout and styling
- Updated `index.html` to include Google Fonts for improved typography.
- Refactored `App.vue` to utilize new font styles and added a white background for better contrast.
- Redesigned `Home.vue` to introduce a navigation bar, a hero section with a new logo, and a structured dashboard layout for project simulation steps.
- Added a new logo image `MiroFish_logo_left.jpeg` to enhance branding.
- Improved overall styling and responsiveness across components for a more cohesive user experience.
2025-12-10 15:15:44 +08:00
666ghj b67e14cced Add project status report and frontend documentation
- Introduced `PROJECT_STATUS.md` to provide a comprehensive overview of the MiroFish project, detailing the current status, completed features, and future development plans.
- Added multiple documentation files in the frontend directory, including detailed descriptions of the homepage functionality, startup guide, and project completion summary.
- Implemented a structured approach to document the project's architecture, API integration, and user interaction processes, enhancing clarity for developers and users alike.
- Included a `.gitignore` file to manage ignored files and directories in the frontend project, improving project organization and cleanliness.
2025-12-10 14:49:11 +08:00