docs(i18n): translate readme tagline and rename chinese assets

Replace the chinese tagline on README.md and README-EN.md with the
existing english subtitle (collapsing the duplicate stack), and switch
the package.json and backend/pyproject.toml description fields to
english so the project's metadata surface no longer surprises
non-chinese readers.

Rename nine chinese-named static image files under static/image/ to
ASCII slugs (six screenshots, two video covers, the QQ-group image)
via git mv so rename history is preserved, and update every <img src>
in README.md, README-EN.md, and README-ZH.md to the new paths. The
chinese body text of README-ZH.md is preserved by design.

A ripgrep scan for chinese characters in README.md and README-EN.md
(excluding the language-switcher line) now returns zero matches,
satisfying the ticket's acceptance criteria.

Closes #12
This commit is contained in:
Dominik Seemann 2026-05-07 19:39:30 +00:00
parent 348140859d
commit 8442a58f9d
20 changed files with 624 additions and 33 deletions

View File

@ -0,0 +1,222 @@
# Design Document — i18n-readme-tagline-and-assets
## Overview
**Purpose**: Eliminate the remaining Chinese surface text from the project's English-facing entry points (`README.md`, `README-EN.md`, `package.json`, `backend/pyproject.toml`) and replace Chinese-named image assets under `static/image/` with ASCII-only equivalents, so that visitors landing on the GitHub repo or installing the npm package see English-only metadata and so that asset URLs are tooling- and CDN-friendly.
**Users**: Non-Chinese-reading visitors arriving at the GitHub README, downstream consumers reading `package.json` / `backend/pyproject.toml` metadata, and any tool (CDNs, link-rotters, screenshot-rendering bots) that handles repo asset URLs.
**Impact**: Documentation surface and static image filenames change; no runtime, API, or pipeline behavior is affected. The Chinese-language entry point (`README-ZH.md`) keeps its Chinese body text but its asset references are updated to point at the renamed files.
### Goals
- Replace the Chinese tagline with English on `README.md`, `README-EN.md`, `package.json`, `backend/pyproject.toml`.
- Rename nine Chinese-named assets under `static/image/` to ASCII filenames, preserving byte content.
- Update every `<img src>` reference in `README.md`, `README-EN.md`, and `README-ZH.md` to the new ASCII paths.
- Verifiable acceptance: a Chinese-character scan over `README.md` and `README-EN.md` returns zero matches outside the language-switcher line.
### Non-Goals
- Translating the body of `README-ZH.md` (Chinese variant by design).
- Changing the Chinese tagline value in `locales/zh.json` (legitimate Chinese locale content).
- Re-encoding or re-cropping any image (rename only).
- Adding a CI guard that enforces ASCII filenames or no-Chinese-in-EN-README (tracked separately as #26).
## Boundary Commitments
### This Spec Owns
- The English-language tagline string used in `README.md`, `README-EN.md`, `package.json`, `backend/pyproject.toml`.
- The ASCII filenames for the nine renamed assets under `static/image/`.
- All `<img src>` references inside the three READMEs that point to the renamed files.
### Out of Boundary
- Any asset under `static/image/` that already uses an ASCII name (`MiroFish_logo*.jpeg`, `shanda_logo.png`).
- Code-level i18n initiatives (frontend strings, backend logs, agent prompts) — those are owned by sibling i18n specs.
- README content beyond the lines explicitly identified in §"Modified Files".
### Allowed Dependencies
- Git (`git mv` for rename-with-history).
- No new project dependencies.
### Revalidation Triggers
- Any future change that adds another Chinese-named asset under `static/image/` referenced from a README — the verification scan in this spec must be re-run.
- Any future change to the structure of the language-switcher line — the R4 verification regex tolerance for `[中文文档]` may need adjusting.
## Architecture
### Existing Architecture Analysis
This is a documentation- and asset-rename change. There is no architectural component to extend or replace. The relevant existing patterns to respect:
- **Per `.claude/rules/file-paths.md`**: shell commands that touch paths with non-ASCII characters must quote the paths.
- **Per `.kiro/steering/structure.md`**: `static/` is the project's image asset root; READMEs reference it via relative paths from repo root.
- **Per `.claude/rules/commits.md`**: Conventional Commits, lowercase, imperative, max 72 chars, no `Co-Authored-By:` watermark.
### Architecture Pattern & Boundary Map
No new architecture is introduced. The flow is a one-shot edit:
```mermaid
flowchart LR
A[Chinese-named<br/>asset files] -->|git mv| B[ASCII-named<br/>asset files]
C[README.md / README-EN.md /<br/>README-ZH.md / package.json /<br/>backend/pyproject.toml] -->|Edit tool| D[Updated text +<br/>updated img src paths]
B --> D
D --> E[Verify: rg Chinese-char scan<br/>returns only language-switcher line]
```
### Technology Stack
| Layer | Choice / Version | Role in Feature | Notes |
|-------|------------------|-----------------|-------|
| Frontend / CLI | — | n/a | No code changes. |
| Backend / Services | — | n/a | No code changes. |
| Data / Storage | — | n/a | No data model changes. |
| Messaging / Events | — | n/a | n/a |
| Infrastructure / Runtime | git ≥ 2.x | `git mv` for renames | Already a project prerequisite. |
| Documentation | Markdown / HTML-in-MD | Edit READMEs, `package.json`, `backend/pyproject.toml` | No new tooling. |
## File Structure Plan
### Directory Structure
No new files or directories are created. The existing layout is preserved:
```
static/image/
├── MiroFish_logo.jpeg (unchanged)
├── MiroFish_logo_compressed.jpeg (unchanged)
├── shanda_logo.png (unchanged)
├── qq-group.png (renamed from "QQ群.png")
├── wuhan-university-simulation-cover.png (renamed from "武大模拟演示封面.png")
├── dream-of-the-red-chamber-simulation-cover.jpg (renamed from "红楼梦模拟推演封面.jpg")
└── Screenshot/
├── screenshot1.png (renamed from "运行截图1.png")
├── screenshot2.png (renamed from "运行截图2.png")
├── screenshot3.png (renamed from "运行截图3.png")
├── screenshot4.png (renamed from "运行截图4.png")
├── screenshot5.png (renamed from "运行截图5.png")
└── screenshot6.png (renamed from "运行截图6.png")
```
### Modified Files
- `README.md`
- Lines 78: delete the Chinese tagline line and the `</br>` separator; the existing `<em>` line on (former) line 9 becomes the lone tagline.
- Lines 52, 53, 56, 57, 60, 61: replace `Screenshot/运行截图{N}.png` with `Screenshot/screenshot{N}.png`.
- Line 71: replace `武大模拟演示封面.png` with `wuhan-university-simulation-cover.png`.
- Line 79: replace `红楼梦模拟推演封面.jpg` with `dream-of-the-red-chamber-simulation-cover.jpg`.
- Line 220: replace `QQ群.png` with `qq-group.png`.
- `README-EN.md` — identical edit set as `README.md`.
- `README-ZH.md`
- Lines 52, 53, 56, 57, 60, 61, 71, 79, 220: same nine `<img src>` replacements as above. Tagline and Chinese body text unchanged.
- `package.json`
- Line 4: replace the `description` value with `MiroFish - A Simple and Universal Swarm Intelligence Engine, Predicting Anything`.
- `backend/pyproject.toml`
- Line 4: replace the `description` value with `MiroFish - A Simple and Universal Swarm Intelligence Engine, Predicting Anything`.
### Renamed Files (via `git mv`)
| Old (quoted) | New |
|---|---|
| `"static/image/QQ群.png"` | `static/image/qq-group.png` |
| `"static/image/武大模拟演示封面.png"` | `static/image/wuhan-university-simulation-cover.png` |
| `"static/image/红楼梦模拟推演封面.jpg"` | `static/image/dream-of-the-red-chamber-simulation-cover.jpg` |
| `"static/image/Screenshot/运行截图1.png"` | `static/image/Screenshot/screenshot1.png` |
| `"static/image/Screenshot/运行截图2.png"` | `static/image/Screenshot/screenshot2.png` |
| `"static/image/Screenshot/运行截图3.png"` | `static/image/Screenshot/screenshot3.png` |
| `"static/image/Screenshot/运行截图4.png"` | `static/image/Screenshot/screenshot4.png` |
| `"static/image/Screenshot/运行截图5.png"` | `static/image/Screenshot/screenshot5.png` |
| `"static/image/Screenshot/运行截图6.png"` | `static/image/Screenshot/screenshot6.png` |
## System Flows
Not applicable. No runtime flows are introduced or changed.
## Requirements Traceability
| Requirement | Summary | Components | Interfaces | Flows |
|-------------|---------|------------|------------|-------|
| 1.1 | English tagline in README.md | README.md L79 edit | n/a | n/a |
| 1.2 | English tagline in README-EN.md | README-EN.md L79 edit | n/a | n/a |
| 1.3 | English description in package.json | package.json L4 edit | n/a | n/a |
| 1.4 | English description in backend/pyproject.toml | backend/pyproject.toml L4 edit | n/a | n/a |
| 1.5 | README-ZH.md tagline preserved | README-ZH.md (no L7 edit) | n/a | n/a |
| 2.1 | Rename screenshot{1..6} | `git mv` of six files | n/a | n/a |
| 2.2 | Rename Wuhan video cover | `git mv` of one file | n/a | n/a |
| 2.3 | Rename Red Chamber video cover | `git mv` of one file | n/a | n/a |
| 2.4 | Rename QQ group image | `git mv` of one file | n/a | n/a |
| 2.5 | Byte-preserving rename | `git mv` mechanism choice | n/a | n/a |
| 2.6 | No duplicate copies | `git mv` (atomic rename) + `git status` verification | n/a | n/a |
| 3.1 | README.md image references updated | README.md L5261, 71, 79, 220 edits | n/a | n/a |
| 3.2 | README-EN.md image references updated | README-EN.md L5261, 71, 79, 220 edits | n/a | n/a |
| 3.3 | README-ZH.md image references updated | README-ZH.md L5261, 71, 79, 220 edits | n/a | n/a |
| 3.4 | No broken images on render | Post-edit verification step | n/a | n/a |
| 4.1 | No Chinese chars in README.md body (excl. switcher) | Verification scan | n/a | n/a |
| 4.2 | No Chinese chars in README-EN.md body (excl. switcher) | Verification scan | n/a | n/a |
| 4.3 | Reviewer-runnable scan returns zero matches | `rg` command in design + commit message | n/a | n/a |
## Components and Interfaces
This spec has no software components, services, or APIs. The "components" reduce to two textual operations (translate + rename) and one verification.
| Operation | Layer | Intent | Req Coverage | Key Dependencies | Contracts |
|-----------|-------|--------|--------------|------------------|-----------|
| Tagline translation | Docs / Metadata | Replace Chinese tagline with English in 4 files | 1.1, 1.2, 1.3, 1.4 | Edit tool | n/a |
| Asset rename + reference update | Static assets / Docs | Rename 9 files; update `<img src>` in 3 READMEs | 2.12.6, 3.13.4 | `git mv`, Edit tool | n/a |
| Verification scan | Acceptance gate | Confirm no residual Chinese in EN READMEs body | 4.1, 4.2, 4.3 | ripgrep | Commit message records the scan command and result |
### Verification Contract
The acceptance gate is a single ripgrep invocation, runnable by any reviewer:
```
rg --pcre2 '[\x{4e00}-\x{9fff}]' README.md README-EN.md \
| rg -v 'README-ZH\.md'
```
**Preconditions**: All edits and renames committed.
**Postconditions**: The pipeline returns zero lines (the only Chinese characters left are in `[中文文档](./README-ZH.md)`, which the second `rg` filters out by matching the `README-ZH.md` substring on the same line).
**Invariants**: `README-ZH.md` body is not modified by this scan logic; the language-switcher line in the EN READMEs is the sole expected exemption.
## Data Models
Not applicable. No data structures are added or modified.
## Error Handling
### Error Strategy
Failure modes are limited to (a) a `git mv` failing because a path was mistyped (immediately visible at command-execution time) and (b) a `<img src>` left pointing at an old Chinese-named filename (caught by the verification scan).
### Error Categories and Responses
- **Mistyped rename target**: `git mv` fails with a clear error; re-run with the correct path.
- **Missed reference update**: Verification scan returns the offending file/line; fix and re-scan.
- **Accidental binary re-encoding**: `git diff --stat` of the asset file shows non-zero content delta; abandon the change and redo with `git mv`.
### Monitoring
Not applicable for a one-shot docs change. The PR diff plus the verification-scan output in the PR description serve as the audit trail.
## Testing Strategy
This is a documentation/asset change with no executable code. Testing is review-time:
- **Verification scan (mandatory)**: Run the ripgrep command in §"Verification Contract" against the working tree before commit; expect zero output. Re-run once more in CI / on the PR branch.
- **Rendered-preview check (mandatory)**: Open `README.md`, `README-EN.md`, `README-ZH.md` in GitHub's rendered-markdown view (or a local Markdown previewer) on the feature branch and confirm:
1. The tagline appears once, in English, on `README.md` and `README-EN.md`.
2. All six screenshot tiles render.
3. Both video-cover thumbnails render.
4. The QQ group image renders.
5. `README-ZH.md` still renders identically except for the new ASCII image URLs.
- **`git diff --stat` check (mandatory)**: For each of the nine asset files, the stat must show `0 insertions(+), 0 deletions(-)` (pure rename). If any asset shows a content delta, the rename was performed incorrectly.
## Optional Sections
### Migration Strategy
No data migration. The "migration" is a single PR containing all renames + edits. There is no rollback step beyond a normal `git revert` of the merge commit if a broken image is reported post-merge.

View File

@ -0,0 +1,131 @@
# Gap Analysis — i18n-readme-tagline-and-assets
## 1. Current State Investigation
### Scope ground truth
Ripgrep `[\x{4e00}-\x{9fff}]` over `README.md`, `README-EN.md`, `package.json`, and `backend/pyproject.toml` returns the following Chinese-character lines that fall under this feature's mandate:
| File | Line | Content (excerpt) | Category |
| --- | ---: | --- | --- |
| `README.md` | 7 | `简洁通用的群体智能引擎,预测万物` | Tagline |
| `README.md` | 23 | `[English](./README.md) \| [中文文档](./README-ZH.md)` | Language switcher (allowed) |
| `README.md` | 5261 | `./static/image/Screenshot/运行截图{1..6}.png` (×6) | Asset path |
| `README.md` | 71 | `./static/image/武大模拟演示封面.png` | Asset path |
| `README.md` | 79 | `./static/image/红楼梦模拟推演封面.jpg` | Asset path |
| `README.md` | 220 | `./static/image/QQ群.png` | Asset path (not listed in ticket scope, see Gap §3) |
| `README-EN.md` | 7, 23, 5261, 71, 79, 220 | identical structure to README.md | Same categories |
| `package.json` | 4 | `"description": "MiroFish - 简洁通用的群体智能引擎,预测万物"` | Tagline |
| `backend/pyproject.toml` | 4 | `description = "MiroFish - 简洁通用的群体智能引擎,预测万物"` | Tagline (twin string, not in original ticket) |
`README-ZH.md` carries Chinese body text by design (out of scope) but its asset paths must still be updated to point at the renamed ASCII files.
### Tracked image files (`git ls-files static/image/`)
```
static/image/MiroFish_logo.jpeg
static/image/MiroFish_logo_compressed.jpeg
static/image/QQ群.png
static/image/Screenshot/运行截图{1..6}.png
static/image/shanda_logo.png
static/image/武大模拟演示封面.png
static/image/红楼梦模拟推演封面.jpg
```
Nine files have Chinese names: six screenshots + `QQ群.png` + `武大模拟演示封面.png` + `红楼梦模拟推演封面.jpg`.
### Tagline structure observation
`README.md` lines 79 currently read:
```
简洁通用的群体智能引擎,预测万物
</br>
<em>A Simple and Universal Swarm Intelligence Engine, Predicting Anything</em>
```
The English equivalent already exists immediately below the Chinese as italic subtitle. Naive replacement would produce a duplicate (English in plain text + the same English in italic). The natural i18n collapse is to delete the Chinese line plus the `</br>` separator and let the existing `<em>` line stand alone. `README-EN.md` has the identical structure.
### Conventions to respect (from steering)
- `tech.md`: 4-space indent, no enforced linter, "match the surrounding file's style". Shell scripts must quote paths with spaces / non-ASCII characters per `.claude/rules/file-paths.md`.
- `commits.md`: Conventional Commits, lowercase, imperative, max 72 chars, no `Co-Authored-By:` footer. Branch `<type>/<ticket>-<desc>` — ticket dictates `chore/i18n-12-readme-tagline-and-assets` (or similar).
- `dev-guidelines.md`: kebab-case filenames for assets is consistent with the project's frontend file conventions.
### Existing precedent in the same i18n epic
Recently merged child issues of epic #11 (`#7`, `#9`, `#3`, `#5`, `#6`) have all been small, focused docs/tooling PRs. This is consistent with treating #12 as an S-effort docs cleanup.
## 2. Requirements Feasibility Analysis
### Per-requirement asset map
| Req | What it needs | Where it lives | Gap |
| --- | --- | --- | --- |
| R1 (tagline) | English tagline | `README.md:7-9`, `README-EN.md:7-9`, `package.json:4`, `backend/pyproject.toml:4` | **Editorial** — straight string edit. No code paths affected. |
| R2 (asset rename) | Rename 8 files (6 screenshots + 2 video covers) | `static/image/Screenshot/`, `static/image/` | **`git mv`** — preserves history. No callers outside READMEs found by grep. |
| R3 (README references updated) | Update `<img src>` paths | `README.md`, `README-EN.md`, `README-ZH.md` | **Editorial** — straight string edits. |
| R4 (no residual Chinese in EN READMEs) | Verifiable scan | Both `README.md` and `README-EN.md` | **Constraint surfaces extra asset**`QQ群.png` (line 220) is not in the explicit ticket asset list but its src path contains Chinese, which would fail R4's verification. See Gap §3. |
### Gaps tagged
- **Constraint:** `static/image/QQ群.png` is referenced by all three READMEs but is **not explicitly listed in the ticket's scope bullets**, while the ticket's own acceptance criterion ("No Chinese characters in `README.md`, `README-EN.md` body text") would still flag its src path. Either we (a) expand scope to rename it as well or (b) accept a deviation. Recommendation: expand scope — same shape of fix, trivial cost, satisfies the literal acceptance criterion.
- **Constraint:** `backend/pyproject.toml:4` carries the identical Chinese tagline string as `package.json:4`. Not in original ticket bullets but is the obvious twin and would surprise a reviewer reading the diff. Already incorporated into requirements.md R1 acceptance criterion 4.
- **Unknown / Research Needed (minor):** Confirm GitHub Pages, the live demo site, and any external link to the screenshots do not deep-link into Chinese-named asset URLs. Quick `gh` / web check during design phase will resolve.
## 3. Implementation Approach Options
This is a docs/asset-rename feature. There is no algorithm to design — the only real decision is whether the renames go through `git mv` (preserves history) or `git rm`/`git add` (loses history). And whether to expand scope to `QQ群.png`.
### Option A — Strict ticket scope (no QQ群.png rename)
- Rename only the eight assets explicitly listed: `运行截图{1..6}.png`, `武大模拟演示封面.png`, `红楼梦模拟推演封面.jpg`.
- Translate taglines in `README.md`, `README-EN.md`, `package.json`, `backend/pyproject.toml`.
- Skip `QQ群.png`.
**Trade-offs:**
- ✅ Smallest possible diff; no scope creep.
- ❌ Acceptance criterion R4 ("no Chinese characters in README body outside language switcher") fails because line 220 still contains `QQ群` in the src path.
### Option B — Expanded scope including QQ群.png (RECOMMENDED)
- Same as Option A, plus rename `static/image/QQ群.png``static/image/qq-group.png` (or similar) and update its three references.
**Trade-offs:**
- ✅ Satisfies the ticket's own R4 acceptance criterion literally.
- ✅ One additional `git mv` + 3 string edits — negligible cost.
- ❌ Slightly broader than the ticket bullets (but explicitly justified by the ticket's own acceptance criteria).
### Option C — Hybrid (rename listed + leave QQ群 + edit alt-only)
Not viable: there is no way to leave the file in place and still satisfy R4 without renaming.
### Decision direction
Recommend Option B. Update requirements R2/R3 to include `QQ群.png` explicitly so the spec is internally consistent with R4.
## 4. Out-of-Scope for Gap Analysis
- Choice of exact ASCII filename slugs (decided in design phase).
- Whether to re-encode any image (No — bytes-preserving rename only, per R2.4).
## 5. Implementation Complexity & Risk
- **Effort:** **S (≈ half-day).** All work is text edits + `git mv` of 9 files + 3 README string-substitution passes + 2 description-field edits. No code changes, no tests.
- **Risk:** **Low.** Single failure mode is broken image links; mitigated by a simple grep + rendered-preview check before commit. No runtime, dependency, or pipeline impact. `git mv` preserves history.
## 6. Recommendations for Design Phase
- Adopt **Option B** (expanded scope including `QQ群.png`).
- Use `git mv` for all renames so history follows.
- Pick deterministic ASCII slugs; propose:
- `Screenshot/screenshot{1..6}.png`
- `wuhan-university-simulation-cover.png`
- `dream-of-the-red-chamber-simulation-cover.jpg`
- `qq-group.png`
- Collapse the duplicated tagline lines in `README.md` / `README-EN.md`: delete the Chinese line + `</br>` separator and let the existing `<em>` English subtitle become the lone tagline (avoids a verbatim-duplicate line).
- Verification step: re-run `rg '[\x{4e00}-\x{9fff}]' README.md README-EN.md package.json backend/pyproject.toml` after edits and confirm only the language-switcher line on each README returns a hit.
## Research items to carry forward
- (Light) confirm no off-repo deep-link into the renamed assets (live demo site, social cards). If a deep link is found, decide whether to leave a redirect / note in the PR.

View File

@ -0,0 +1,65 @@
# Requirements Document
## Project Description (Input)
Translate the Chinese tagline in README.md, README-EN.md, and package.json to English, and rename Chinese-named image asset files in static/image/Screenshot/ to ASCII filenames (Option A from the ticket), updating all references in README.md and README-ZH.md. Acceptance: no Chinese characters in README.md or README-EN.md body text (except the language switcher link to README-ZH.md); package.json description in English; all image links work. Source: GitHub issue #12 (.ticket/12.md).
## Introduction
This feature removes the remaining Chinese surface text from the English documentation entry points (`README.md`, `README-EN.md`) and from the npm package metadata (`package.json`), and replaces Chinese-named image asset filenames under `static/image/` with ASCII equivalents so that asset URLs are CDN- and tooling-friendly. References to those assets are updated in all three READMEs (`README.md`, `README-EN.md`, `README-ZH.md`) so that the Chinese-language entry point continues to render correctly. The Chinese-language README (`README-ZH.md`) keeps its Chinese body text by design.
## Boundary Context
- **In scope**:
- English tagline replacing Chinese tagline in `README.md`, `README-EN.md`, and `package.json` `description`.
- Renaming `static/image/Screenshot/运行截图{1..6}.png` to ASCII filenames.
- Renaming `static/image/武大模拟演示封面.png` and `static/image/红楼梦模拟推演封面.jpg` to ASCII filenames.
- Renaming `static/image/QQ群.png` to an ASCII filename (added per gap-analysis: required by R4 because the existing src path on README.md:220 / README-EN.md:220 contains Chinese characters and would fail the "no Chinese characters in body text" check).
- Updating all `<img src="...">` references to those renamed files in `README.md`, `README-EN.md`, and `README-ZH.md`.
- Updating `backend/pyproject.toml` `description` field, which carries an identical Chinese tagline string (adjacent twin of `package.json`).
- **Out of scope**:
- Translating the body of `README-ZH.md` (Chinese variant by design).
- Translating the language switcher link label `[中文文档]` (allowed by acceptance criteria).
- Touching `locales/zh.json` Chinese tagline value (legitimate Chinese locale content).
- **Adjacent expectations**:
- The ticket recommends Option A (rename to ASCII). This spec adopts Option A.
- This work is a child of the i18n epic (#11) and follows the project's existing `i18n-*` spec naming.
## Requirements
### Requirement 1: English tagline in English-facing documentation
**Objective:** As a non-Chinese-reading visitor landing on the GitHub repo or installing the npm package, I want the tagline in the English README files and the npm package metadata to be in English, so that I am not surprised by untranslated Chinese strings on the entry surface.
#### Acceptance Criteria
1. The README.md file shall contain the English tagline `A Simple and Universal Swarm Intelligence Engine, Predicting Anything` in place of the Chinese tagline `简洁通用的群体智能引擎,预测万物` on the same line.
2. The README-EN.md file shall contain the same English tagline replacement on the corresponding line.
3. The package.json `description` field shall contain an English description (no Chinese characters).
4. The backend/pyproject.toml `description` field shall contain the same English description used in package.json.
5. The README-ZH.md file shall keep its Chinese tagline unchanged.
### Requirement 2: ASCII filenames for screenshot and video-cover assets
**Objective:** As a developer cloning the repo or a CDN serving these assets, I want all image filenames under `static/image/` referenced from the READMEs to be ASCII, so that paths are URL-safe, copy-pasteable, and friendly to tools that mishandle non-ASCII filenames.
#### Acceptance Criteria
1. The `static/image/Screenshot/运行截图{N}.png` files (for N from 1 to 6) shall be renamed to `static/image/Screenshot/screenshot{N}.png`.
2. The `static/image/武大模拟演示封面.png` file shall be renamed to `static/image/wuhan-university-simulation-cover.png`.
3. The `static/image/红楼梦模拟推演封面.jpg` file shall be renamed to `static/image/dream-of-the-red-chamber-simulation-cover.jpg`.
4. The `static/image/QQ群.png` file shall be renamed to `static/image/qq-group.png`.
5. The renamed asset files shall preserve the original byte content (rename only, no re-encoding).
6. The static/image/ directory shall not contain duplicate copies of the renamed files (the original Chinese-named files are removed, not kept alongside).
### Requirement 3: All README references updated to the ASCII filenames
**Objective:** As a reader of any README variant, I want the screenshot and video-cover images to render correctly, so that the documentation remains visually intact after the rename.
#### Acceptance Criteria
1. The README.md file shall reference each renamed image at its new ASCII path; no `<img src="...">` in the file shall point to a Chinese-named file under `static/image/`.
2. The README-EN.md file shall reference each renamed image at its new ASCII path; no `<img src="...">` in the file shall point to a Chinese-named file under `static/image/`.
3. The README-ZH.md file shall reference each renamed image at its new ASCII path; no `<img src="...">` in the file shall point to a Chinese-named file under `static/image/`.
4. When a reader views the rendered README on GitHub after the change, the system shall display every screenshot and video-cover image without a broken-image placeholder.
### Requirement 4: No residual Chinese in English README body text
**Objective:** As a reviewer verifying acceptance, I want a single objective check that confirms `README.md` and `README-EN.md` body text contains no Chinese characters (apart from the explicit allowance for the language-switcher link), so that the acceptance criteria from the ticket are unambiguously satisfied.
#### Acceptance Criteria
1. The README.md file shall contain no Chinese characters (Unicode CJK Unified Ideographs blocks U+4E00U+9FFF and adjacent CJK punctuation) outside of the language-switcher link `[中文文档](./README-ZH.md)`.
2. The README-EN.md file shall contain no Chinese characters outside of the same language-switcher link.
3. If a reviewer runs a Chinese-character scan over `README.md` and `README-EN.md` excluding the language-switcher line, the scan shall report zero matches.

View File

@ -0,0 +1,107 @@
# Research & Design Decisions — i18n-readme-tagline-and-assets
## Summary
- **Feature**: `i18n-readme-tagline-and-assets`
- **Discovery Scope**: Simple Addition (docs cleanup + asset rename, no runtime code paths)
- **Key Findings**:
- The duplicate Chinese-tagline / English-`<em>` structure on lines 79 of `README.md` and `README-EN.md` means a verbatim translation produces a duplicate; a structural collapse is preferable.
- `git ls-files` shows nine Chinese-named assets under `static/image/`; only the eight visible in READMEs need renaming for this spec (the `MiroFish_logo` files and `shanda_logo.png` already use ASCII names).
- `backend/pyproject.toml:4` is a twin of `package.json:4` (identical Chinese tagline string); leaving it untranslated would visibly contradict the spec's intent.
## Research Log
### Topic — Inventory of Chinese-named assets and references
- **Context**: Confirm the full set of files and references the spec must touch so no broken-image regression slips in.
- **Sources Consulted**: `git ls-files static/image/`, `rg '[\x{4e00}-\x{9fff}]'` over `README.md`, `README-EN.md`, `README-ZH.md`, `package.json`, `backend/pyproject.toml`.
- **Findings**:
- Tracked Chinese-named files (9): `QQ群.png`, six `Screenshot/运行截图{N}.png`, `武大模拟演示封面.png`, `红楼梦模拟推演封面.jpg`.
- Each Chinese-named asset is referenced exactly three times — once in each README. No code path or test references them.
- `locales/zh.json:36` contains the tagline as a Chinese-locale value (legitimate, out of scope).
- **Implications**: The rename is a closed set: 9 file moves + (3 README × N references) edits. No runtime impact.
### Topic — Tagline structure on lines 79
- **Context**: Decide the cleanest replacement for the Chinese tagline on the English-facing READMEs.
- **Sources Consulted**: `README.md:7-9`, `README-EN.md:7-9`.
- **Findings**: The current structure is `<chinese tagline>\n</br>\n<em>English equivalent</em>`. The English subtitle already exists. Naive replacement (substitute Chinese with English on line 7) produces `<english>\n</br>\n<em>English</em>` — visible duplicate.
- **Implications**: Collapse to the single existing `<em>` line by deleting the Chinese tagline line and the `</br>` separator on both files.
### Topic — `git mv` vs. `rm`/`add` for renames
- **Context**: Choose a rename mechanism that preserves blame/history on the assets.
- **Sources Consulted**: Project commit history shows `git mv` usage for prior renames (no formal rule, but consistent practice).
- **Findings**: `git mv "old" "new"` records a rename in the index. Git's heuristic file-move detection also picks up `rm + add` of identical bytes, but `git mv` is unambiguous and preserves rename detection across thresholds.
- **Implications**: Use `git mv` for all nine renames. Quote source paths (rule from `.claude/rules/file-paths.md`) since they contain non-ASCII characters.
### Topic — Off-repo deep links to renamed assets (light check)
- **Context**: The ticket's gap analysis flagged a research item: confirm no external pages deep-link the Chinese-named files.
- **Sources Consulted**: `git grep` of repo (no off-repo references). The bilibili links in the READMEs point to videos, not to the cover images. The `mirofish-live-demo` site and `Trendshift` badge are independent assets hosted elsewhere.
- **Findings**: No in-repo references outside the READMEs. Out-of-repo deep links are not enumerable from inside the repo; the cost of a broken external deep link is low (a missing image on someone else's page) and accepted. If a deep link surfaces post-merge, a same-day re-add of a redirect symlink resolves it.
- **Implications**: Proceed with hard renames; no redirect/copy-on-rename needed.
## Architecture Pattern Evaluation
| Option | Description | Strengths | Risks / Limitations | Notes |
|--------|-------------|-----------|---------------------|-------|
| Strict ticket scope | Rename only the 8 explicitly listed assets; leave `QQ群.png` | Smallest diff | Fails the ticket's own R4 acceptance criterion | Rejected |
| Expanded scope (selected) | Also rename `QQ群.png` and update `backend/pyproject.toml` | Internally consistent with R4; trivial cost | Slightly broader than ticket bullets | Selected |
| Hybrid (allow exception in R4) | Rename the 8 listed, exempt `QQ群` in the verification scan | Preserves the ticket bullets exactly | Adds an explicit ad-hoc exception that future readers must decode | Rejected |
## Design Decisions
### Decision: Rename `static/image/QQ群.png` to ASCII despite not being in the ticket's bullet list
- **Context**: Acceptance criterion R4 ("no Chinese characters in `README.md` / `README-EN.md` body") would fail because `QQ群` appears in the `<img src>` path on line 220 of both files.
- **Alternatives Considered**:
1. Strict scope — leave `QQ群.png` and accept R4 fail.
2. Expand scope — rename and update.
3. Exempt `QQ群.png` in R4's verification scope with explicit allow-list.
- **Selected Approach**: Expand scope. Rename `static/image/QQ群.png``static/image/qq-group.png`, update three references.
- **Rationale**: Trivial cost; same fix shape as the listed assets; the ticket's own acceptance criterion is the source of truth.
- **Trade-offs**: One extra file move. None material.
- **Follow-up**: None.
### Decision: Translate `backend/pyproject.toml:4` description in the same PR
- **Context**: `backend/pyproject.toml` carries the identical Chinese tagline as `package.json`. Leaving it untranslated produces a half-finished diff.
- **Alternatives Considered**:
1. Leave it for a follow-up ticket.
2. Translate it now alongside `package.json`.
- **Selected Approach**: Translate now.
- **Rationale**: Identical string, identical fix, same review surface. Splitting would create needless coordination.
- **Trade-offs**: One additional one-line diff. None material.
- **Follow-up**: None.
### Decision: Collapse duplicate tagline structure rather than substitute in place
- **Context**: Lines 79 of `README.md` and `README-EN.md` would yield a verbatim duplicate after a one-for-one Chinese-to-English substitution.
- **Alternatives Considered**:
1. Substitute Chinese line in place (produces duplicate).
2. Delete Chinese line + `</br>` separator; let the existing `<em>` line stand alone.
3. Delete the existing `<em>` line; keep a single non-italic English tagline on line 7.
- **Selected Approach**: Option 2 — delete lines 7 and 8, keep line 9 (`<em>` English tagline).
- **Rationale**: Preserves the existing visual treatment (italic subtitle below the Trendshift badge). Avoids style drift on a docs-only PR.
- **Trade-offs**: Slightly different visual weight (italic only) vs. the prior bilingual stack (plain Chinese + italic English). Acceptable for an English-facing doc.
- **Follow-up**: None.
### Decision: Use `git mv` for all renames
- **Context**: Need to preserve rename detection.
- **Alternatives Considered**: `git mv` vs. shell `mv` + `git rm` / `git add`.
- **Selected Approach**: `git mv "old" "new"` with quoted paths.
- **Rationale**: Unambiguous record in the index; matches existing project practice.
- **Trade-offs**: None.
- **Follow-up**: None.
## Risks & Mitigations
- **Risk:** Broken images on rendered GitHub README after merge. **Mitigation:** Post-edit grep to confirm zero remaining Chinese-named asset references in any README; preview rendered markdown locally or on a branch before merge.
- **Risk:** Off-repo deep links to old asset URLs (Trendshift cards, social previews). **Mitigation:** Accepted; cost is a single missing image on an external page.
- **Risk:** Diff churn from accidentally re-encoding a binary on macOS or Windows checkout. **Mitigation:** Use `git mv` (no content transform); verify `git diff --stat` shows only renames for the asset files (no content delta).
## References
- Ticket source: `.ticket/12.md` / GitHub issue #12.
- Project rule on quoting paths: `.claude/rules/file-paths.md`.
- Project commit conventions: `.claude/rules/commits.md` and `.kiro/steering/structure.md`.

View File

@ -0,0 +1,23 @@
{
"feature_name": "i18n-readme-tagline-and-assets",
"created_at": "2026-05-07T19:24:24Z",
"updated_at": "2026-05-07T19:32:00Z",
"language": "en",
"phase": "tasks-generated",
"ticket": "12",
"approvals": {
"requirements": {
"generated": true,
"approved": true
},
"design": {
"generated": true,
"approved": true
},
"tasks": {
"generated": true,
"approved": false
}
},
"ready_for_implementation": true
}

View File

@ -0,0 +1,47 @@
# Implementation Plan
- [x] 1. Translate Chinese taglines to English in the project's English-facing metadata
- In `README.md`, delete the Chinese tagline line and the immediately following `</br>` line so the existing italic English subtitle on the next line stands as the lone tagline; verify the result still renders with one tagline visible above the Shanda badge
- Apply the identical edit to `README-EN.md`
- In `package.json`, set the `description` value to `MiroFish - A Simple and Universal Swarm Intelligence Engine, Predicting Anything`
- In `backend/pyproject.toml`, set the `description` value to the same English string used in `package.json`
- Leave `README-ZH.md` line 7 (the Chinese tagline) untouched
- Observable completion: a ripgrep scan for `[\x{4e00}-\x{9fff}]` over `README.md`, `README-EN.md`, `package.json`, and `backend/pyproject.toml` returns hits **only** on the language-switcher line of the two READMEs
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5_
- [x] 2. (P) Rename Chinese-named static image assets to ASCII filenames using git mv
- Move the six screenshot files `static/image/Screenshot/运行截图{1..6}.png` to `static/image/Screenshot/screenshot{1..6}.png`
- Move `static/image/武大模拟演示封面.png` to `static/image/wuhan-university-simulation-cover.png`
- Move `static/image/红楼梦模拟推演封面.jpg` to `static/image/dream-of-the-red-chamber-simulation-cover.jpg`
- Move `static/image/QQ群.png` to `static/image/qq-group.png`
- Quote source paths in shell invocations because they contain non-ASCII characters
- Use `git mv` (not shell `mv` + `git add`) so rename detection is recorded directly in the index
- Observable completion: `git status` reports nine `renamed:` entries with no other file modifications; `git diff --stat -M` shows zero content-line delta for each asset
- _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6_
- _Boundary: static/image/_
- [x] 3. Update README image references to point at the renamed ASCII asset paths
- In `README.md`, rewrite the nine `<img src="...">` paths on lines 5261, 71, 79, and 220 so each points at the corresponding ASCII filename from task 2
- Apply the identical nine edits to `README-EN.md`
- Apply the identical nine edits to `README-ZH.md` (asset path updates only — Chinese body text and Chinese alt attributes preserved)
- Observable completion: a ripgrep search for `运行截图|武大模拟演示封面|红楼梦模拟推演封面|QQ群` in `README.md`, `README-EN.md`, and `README-ZH.md` returns zero matches
- _Requirements: 3.1, 3.2, 3.3_
- _Depends: 2_
- [x] 4. Verify acceptance gates before commit
- [x] 4.1 Run the Chinese-character verification scan and confirm zero residual hits in the EN READMEs body
- Execute `rg --pcre2 '[\x{4e00}-\x{9fff}]' README.md README-EN.md | rg -v 'README-ZH\.md'` from the repo root
- Observable completion: the pipeline produces zero output lines, confirming the only Chinese characters left in the EN READMEs are inside the language-switcher link to `README-ZH.md`
- _Requirements: 4.1, 4.2, 4.3_
- [x] 4.2 Confirm asset renames are byte-preserving and unambiguous
- Run `git diff --stat -M` and verify each of the nine asset files appears as a pure rename (no `+` or `-` line counts)
- Run `git status` and confirm there are no untracked Chinese-named files left behind in `static/image/` or `static/image/Screenshot/`
- Observable completion: nine `renamed:` entries in `git status`; zero untracked Chinese-named asset files; zero content delta on the asset rows of `git diff --stat`
- _Requirements: 2.5, 2.6, 3.4_
- [x] 4.3 Confirm rendered images by spot-checking the README in a Markdown previewer
- Open `README.md`, `README-EN.md`, and `README-ZH.md` in a Markdown preview (GitHub preview on the feature branch or local previewer) and inspect the screenshot grid, the two video-cover thumbnails, and the QQ group image on each file
- Observable completion: every `<img>` element renders an actual image (no broken-image placeholder) on all three READMEs
- _Requirements: 3.4_
- **Note**: This task ran in an autonomous environment where no Markdown previewer was available; instead, every `<img src>` path in all three READMEs was cross-checked against the working tree and all 33 references resolved to existing files (zero broken paths). A reviewer should still spot-check on the GitHub-rendered PR preview.

View File

@ -4,8 +4,6 @@
<a href="https://trendshift.io/repositories/16144" target="_blank"><img src="https://trendshift.io/api/badge/repositories/16144" alt="666ghj%2FMiroFish | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> <a href="https://trendshift.io/repositories/16144" target="_blank"><img src="https://trendshift.io/api/badge/repositories/16144" alt="666ghj%2FMiroFish | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
简洁通用的群体智能引擎,预测万物
</br>
<em>A Simple and Universal Swarm Intelligence Engine, Predicting Anything</em> <em>A Simple and Universal Swarm Intelligence Engine, Predicting Anything</em>
<a href="https://www.shanda.com/" target="_blank"><img src="./static/image/shanda_logo.png" alt="666ghj%2MiroFish | Shanda" height="40"/></a> <a href="https://www.shanda.com/" target="_blank"><img src="./static/image/shanda_logo.png" alt="666ghj%2MiroFish | Shanda" height="40"/></a>
@ -49,16 +47,16 @@ Welcome to visit our online demo environment and experience a prediction simulat
<div align="center"> <div align="center">
<table> <table>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图1.png" alt="Screenshot 1" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot1.png" alt="Screenshot 1" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图2.png" alt="Screenshot 2" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot2.png" alt="Screenshot 2" width="100%"/></td>
</tr> </tr>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图3.png" alt="Screenshot 3" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot3.png" alt="Screenshot 3" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图4.png" alt="Screenshot 4" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot4.png" alt="Screenshot 4" width="100%"/></td>
</tr> </tr>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图5.png" alt="Screenshot 5" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot5.png" alt="Screenshot 5" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图6.png" alt="Screenshot 6" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot6.png" alt="Screenshot 6" width="100%"/></td>
</tr> </tr>
</table> </table>
</div> </div>
@ -68,7 +66,7 @@ Welcome to visit our online demo environment and experience a prediction simulat
### 1. Wuhan University Public Opinion Simulation + MiroFish Project Introduction ### 1. Wuhan University Public Opinion Simulation + MiroFish Project Introduction
<div align="center"> <div align="center">
<a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/武大模拟演示封面.png" alt="MiroFish Demo Video" width="75%"/></a> <a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/wuhan-university-simulation-cover.png" alt="MiroFish Demo Video" width="75%"/></a>
Click the image to watch the complete demo video for prediction using BettaFish-generated "Wuhan University Public Opinion Report" Click the image to watch the complete demo video for prediction using BettaFish-generated "Wuhan University Public Opinion Report"
</div> </div>
@ -76,7 +74,7 @@ Click the image to watch the complete demo video for prediction using BettaFish-
### 2. Dream of the Red Chamber Lost Ending Simulation ### 2. Dream of the Red Chamber Lost Ending Simulation
<div align="center"> <div align="center">
<a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/红楼梦模拟推演封面.jpg" alt="MiroFish Demo Video" width="75%"/></a> <a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/dream-of-the-red-chamber-simulation-cover.jpg" alt="MiroFish Demo Video" width="75%"/></a>
Click the image to watch MiroFish's deep prediction of the lost ending based on hundreds of thousands of words from the first 80 chapters of "Dream of the Red Chamber" Click the image to watch MiroFish's deep prediction of the lost ending based on hundreds of thousands of words from the first 80 chapters of "Dream of the Red Chamber"
</div> </div>
@ -217,7 +215,7 @@ npm run frontend # Start frontend only
## 📬 Join the Conversation ## 📬 Join the Conversation
<div align="center"> <div align="center">
<img src="./static/image/QQ群.png" alt="QQ Group" width="60%"/> <img src="./static/image/qq-group.png" alt="QQ Group" width="60%"/>
</div> </div>
&nbsp; &nbsp;

View File

@ -49,16 +49,16 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
<div align="center"> <div align="center">
<table> <table>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图1.png" alt="截图1" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot1.png" alt="截图1" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图2.png" alt="截图2" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot2.png" alt="截图2" width="100%"/></td>
</tr> </tr>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图3.png" alt="截图3" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot3.png" alt="截图3" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图4.png" alt="截图4" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot4.png" alt="截图4" width="100%"/></td>
</tr> </tr>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图5.png" alt="截图5" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot5.png" alt="截图5" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图6.png" alt="截图6" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot6.png" alt="截图6" width="100%"/></td>
</tr> </tr>
</table> </table>
</div> </div>
@ -68,7 +68,7 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
### 1. 武汉大学舆情推演预测 + MiroFish项目讲解 ### 1. 武汉大学舆情推演预测 + MiroFish项目讲解
<div align="center"> <div align="center">
<a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/武大模拟演示封面.png" alt="MiroFish Demo Video" width="75%"/></a> <a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/wuhan-university-simulation-cover.png" alt="MiroFish Demo Video" width="75%"/></a>
点击图片查看使用微舆BettaFish生成的《武大舆情报告》进行预测的完整演示视频 点击图片查看使用微舆BettaFish生成的《武大舆情报告》进行预测的完整演示视频
</div> </div>
@ -76,7 +76,7 @@ MiroFish 致力于打造映射现实的群体智能镜像,通过捕捉个体
### 2. 《红楼梦》失传结局推演预测 ### 2. 《红楼梦》失传结局推演预测
<div align="center"> <div align="center">
<a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/红楼梦模拟推演封面.jpg" alt="MiroFish Demo Video" width="75%"/></a> <a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/dream-of-the-red-chamber-simulation-cover.jpg" alt="MiroFish Demo Video" width="75%"/></a>
点击图片查看基于《红楼梦》前80回数十万字MiroFish深度预测失传结局 点击图片查看基于《红楼梦》前80回数十万字MiroFish深度预测失传结局
</div> </div>
@ -217,7 +217,7 @@ npm run frontend # 仅启动前端
## 📬 更多交流 ## 📬 更多交流
<div align="center"> <div align="center">
<img src="./static/image/QQ群.png" alt="QQ交流群" width="60%"/> <img src="./static/image/qq-group.png" alt="QQ交流群" width="60%"/>
</div> </div>
&nbsp; &nbsp;

View File

@ -4,8 +4,6 @@
<a href="https://trendshift.io/repositories/16144" target="_blank"><img src="https://trendshift.io/api/badge/repositories/16144" alt="666ghj%2FMiroFish | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> <a href="https://trendshift.io/repositories/16144" target="_blank"><img src="https://trendshift.io/api/badge/repositories/16144" alt="666ghj%2FMiroFish | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
简洁通用的群体智能引擎,预测万物
</br>
<em>A Simple and Universal Swarm Intelligence Engine, Predicting Anything</em> <em>A Simple and Universal Swarm Intelligence Engine, Predicting Anything</em>
<a href="https://www.shanda.com/" target="_blank"><img src="./static/image/shanda_logo.png" alt="666ghj%2MiroFish | Shanda" height="40"/></a> <a href="https://www.shanda.com/" target="_blank"><img src="./static/image/shanda_logo.png" alt="666ghj%2MiroFish | Shanda" height="40"/></a>
@ -49,16 +47,16 @@ Welcome to visit our online demo environment and experience a prediction simulat
<div align="center"> <div align="center">
<table> <table>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图1.png" alt="Screenshot 1" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot1.png" alt="Screenshot 1" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图2.png" alt="Screenshot 2" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot2.png" alt="Screenshot 2" width="100%"/></td>
</tr> </tr>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图3.png" alt="Screenshot 3" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot3.png" alt="Screenshot 3" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图4.png" alt="Screenshot 4" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot4.png" alt="Screenshot 4" width="100%"/></td>
</tr> </tr>
<tr> <tr>
<td><img src="./static/image/Screenshot/运行截图5.png" alt="Screenshot 5" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot5.png" alt="Screenshot 5" width="100%"/></td>
<td><img src="./static/image/Screenshot/运行截图6.png" alt="Screenshot 6" width="100%"/></td> <td><img src="./static/image/Screenshot/screenshot6.png" alt="Screenshot 6" width="100%"/></td>
</tr> </tr>
</table> </table>
</div> </div>
@ -68,7 +66,7 @@ Welcome to visit our online demo environment and experience a prediction simulat
### 1. Wuhan University Public Opinion Simulation + MiroFish Project Introduction ### 1. Wuhan University Public Opinion Simulation + MiroFish Project Introduction
<div align="center"> <div align="center">
<a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/武大模拟演示封面.png" alt="MiroFish Demo Video" width="75%"/></a> <a href="https://www.bilibili.com/video/BV1VYBsBHEMY/" target="_blank"><img src="./static/image/wuhan-university-simulation-cover.png" alt="MiroFish Demo Video" width="75%"/></a>
Click the image to watch the complete demo video for prediction using BettaFish-generated "Wuhan University Public Opinion Report" Click the image to watch the complete demo video for prediction using BettaFish-generated "Wuhan University Public Opinion Report"
</div> </div>
@ -76,7 +74,7 @@ Click the image to watch the complete demo video for prediction using BettaFish-
### 2. Dream of the Red Chamber Lost Ending Simulation ### 2. Dream of the Red Chamber Lost Ending Simulation
<div align="center"> <div align="center">
<a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/红楼梦模拟推演封面.jpg" alt="MiroFish Demo Video" width="75%"/></a> <a href="https://www.bilibili.com/video/BV1cPk3BBExq" target="_blank"><img src="./static/image/dream-of-the-red-chamber-simulation-cover.jpg" alt="MiroFish Demo Video" width="75%"/></a>
Click the image to watch MiroFish's deep prediction of the lost ending based on hundreds of thousands of words from the first 80 chapters of "Dream of the Red Chamber" Click the image to watch MiroFish's deep prediction of the lost ending based on hundreds of thousands of words from the first 80 chapters of "Dream of the Red Chamber"
</div> </div>
@ -217,7 +215,7 @@ npm run frontend # Start frontend only
## 📬 Join the Conversation ## 📬 Join the Conversation
<div align="center"> <div align="center">
<img src="./static/image/QQ群.png" alt="QQ Group" width="60%"/> <img src="./static/image/qq-group.png" alt="QQ Group" width="60%"/>
</div> </div>
&nbsp; &nbsp;

View File

@ -1,7 +1,7 @@
[project] [project]
name = "mirofish-backend" name = "mirofish-backend"
version = "0.1.0" version = "0.1.0"
description = "MiroFish - 简洁通用的群体智能引擎,预测万物" description = "MiroFish - A Simple and Universal Swarm Intelligence Engine, Predicting Anything"
requires-python = ">=3.11" requires-python = ">=3.11"
license = { text = "AGPL-3.0" } license = { text = "AGPL-3.0" }
authors = [ authors = [

View File

@ -1,7 +1,7 @@
{ {
"name": "mirofish", "name": "mirofish",
"version": "0.1.0", "version": "0.1.0",
"description": "MiroFish - 简洁通用的群体智能引擎,预测万物", "description": "MiroFish - A Simple and Universal Swarm Intelligence Engine, Predicting Anything",
"scripts": { "scripts": {
"setup": "npm install && cd frontend && npm install", "setup": "npm install && cd frontend && npm install",
"setup:backend": "cd backend && uv sync", "setup:backend": "cd backend && uv sync",

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 246 KiB

View File

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 255 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

View File

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

View File

Before

Width:  |  Height:  |  Size: 450 KiB

After

Width:  |  Height:  |  Size: 450 KiB

View File

Before

Width:  |  Height:  |  Size: 454 KiB

After

Width:  |  Height:  |  Size: 454 KiB

View File

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 199 KiB